From f84e3ef3669a281acf03aee1b27b8ff3bbe9fdb3 Mon Sep 17 00:00:00 2001 From: Giuseppe Nucifora Date: Wed, 23 Oct 2019 01:07:16 +0200 Subject: [PATCH] - Upgrade Libraries --- Example/Podfile | 2 +- Example/Podfile.lock | 58 +- .../Bolts/Bolts/Common/BFCancellationToken.h | 42 - .../Bolts/Bolts/Common/BFCancellationToken.m | 144 - .../Common/BFCancellationTokenRegistration.h | 29 - .../Common/BFCancellationTokenRegistration.m | 79 - .../Bolts/Common/BFCancellationTokenSource.h | 60 - .../Bolts/Common/BFCancellationTokenSource.m | 64 - Example/Pods/Bolts/Bolts/Common/BFExecutor.h | 62 - Example/Pods/Bolts/Bolts/Common/BFExecutor.m | 136 - Example/Pods/Bolts/Bolts/Common/BFGeneric.h | 25 - Example/Pods/Bolts/Bolts/Common/BFTask.h | 266 - Example/Pods/Bolts/Bolts/Common/BFTask.m | 465 - .../Bolts/Common/BFTaskCompletionSource.h | 75 - .../Bolts/Common/BFTaskCompletionSource.m | 79 - Example/Pods/Bolts/Bolts/Common/Bolts.h | 39 - Example/Pods/Bolts/Bolts/Common/Bolts.m | 17 - Example/Pods/Bolts/Bolts/iOS/BFAppLink.h | 49 - Example/Pods/Bolts/Bolts/iOS/BFAppLink.m | 62 - .../Bolts/Bolts/iOS/BFAppLinkNavigation.h | 114 - .../Bolts/Bolts/iOS/BFAppLinkNavigation.m | 284 - .../Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h | 30 - .../iOS/BFAppLinkReturnToRefererController.h | 88 - .../iOS/BFAppLinkReturnToRefererController.m | 230 - .../Bolts/iOS/BFAppLinkReturnToRefererView.h | 78 - .../Bolts/iOS/BFAppLinkReturnToRefererView.m | 268 - .../Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h | 33 - .../Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m | 33 - .../Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h | 45 - .../Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m | 62 - Example/Pods/Bolts/Bolts/iOS/BFURL.h | 75 - Example/Pods/Bolts/Bolts/iOS/BFURL.m | 142 - .../Bolts/iOS/BFWebViewAppLinkResolver.h | 26 - .../Bolts/iOS/BFWebViewAppLinkResolver.m | 296 - .../BFAppLinkReturnToRefererView_Internal.h | 17 - .../Bolts/iOS/Internal/BFAppLink_Internal.h | 32 - .../Internal/BFMeasurementEvent_Internal.h | 19 - .../Bolts/Bolts/iOS/Internal/BFURL_Internal.h | 15 - Example/Pods/Bolts/LICENSE | 30 - Example/Pods/Bolts/README.md | 683 -- .../{ => AppEvents}/FBSDKAppEvents.h | 399 +- .../{ => AppEvents}/FBSDKAppEvents.m | 549 +- .../Internal/AAM/FBSDKMetadataIndexer.h} | 8 +- .../Internal/AAM/FBSDKMetadataIndexer.m | 323 + .../Internal}/Codeless/FBSDKCodelessIndexer.h | 11 +- .../Internal}/Codeless/FBSDKCodelessIndexer.m | 30 +- .../Internal}/Codeless/FBSDKCodelessMacros.h | 0 .../FBSDKCodelessParameterComponent.h | 1 + .../FBSDKCodelessParameterComponent.m | 0 .../Codeless/FBSDKCodelessPathComponent.h | 1 + .../Codeless/FBSDKCodelessPathComponent.m | 0 .../Internal}/Codeless/FBSDKEventBinding.h | 1 + .../Internal}/Codeless/FBSDKEventBinding.m | 7 +- .../Codeless/FBSDKEventBindingManager.h | 2 +- .../Codeless/FBSDKEventBindingManager.m | 15 +- .../Internal}/Codeless/FBSDKViewHierarchy.h | 1 + .../Internal}/Codeless/FBSDKViewHierarchy.m | 40 +- .../Internal}/FBSDKAppEvents+Internal.h | 42 +- .../Internal}/FBSDKAppEventsDeviceInfo.h | 1 + .../Internal}/FBSDKAppEventsDeviceInfo.m | 3 +- .../Internal}/FBSDKAppEventsState.h | 3 +- .../Internal}/FBSDKAppEventsState.m | 7 +- .../Internal}/FBSDKAppEventsStateManager.h | 1 + .../Internal}/FBSDKAppEventsStateManager.m | 3 +- .../Internal}/FBSDKAppEventsUtility.h | 18 +- .../Internal}/FBSDKAppEventsUtility.m | 72 +- ...FBSDKHybridAppEventsScriptMessageHandler.h | 1 + ...FBSDKHybridAppEventsScriptMessageHandler.m | 6 +- .../Internal}/FBSDKPaymentObserver.h | 1 + .../Internal}/FBSDKPaymentObserver.m | 307 +- .../Internal}/FBSDKTimeSpentData.h | 1 + .../Internal}/FBSDKTimeSpentData.m | 8 +- .../AppEvents/Internal/FBSDKUserDataStore.h | 48 + .../AppEvents/Internal/FBSDKUserDataStore.m | 199 + .../FBSDKRestrictiveDataFilterManager.h} | 19 +- .../FBSDKRestrictiveDataFilterManager.m | 165 + .../FBSDKCoreKit/{ => AppLink}/FBSDKAppLink.h | 26 +- .../FBSDKCoreKit/{ => AppLink}/FBSDKAppLink.m | 0 .../{ => AppLink}/FBSDKAppLinkNavigation.h | 84 +- .../{ => AppLink}/FBSDKAppLinkNavigation.m | 8 +- .../AppLink/FBSDKAppLinkResolver.h | 66 + .../{ => AppLink}/FBSDKAppLinkResolver.m | 133 +- .../{ => AppLink}/FBSDKAppLinkResolving.h | 14 +- .../FBSDKAppLinkReturnToRefererController.h | 45 +- .../FBSDKAppLinkReturnToRefererController.m | 0 .../FBSDKAppLinkReturnToRefererView.h | 32 +- .../FBSDKAppLinkReturnToRefererView.m | 7 +- .../{ => AppLink}/FBSDKAppLinkTarget.h | 21 +- .../{ => AppLink}/FBSDKAppLinkTarget.m | 0 .../{ => AppLink}/FBSDKAppLinkUtility.h | 35 +- .../{ => AppLink}/FBSDKAppLinkUtility.m | 18 +- .../FBSDKWebViewAppLinkResolver.h | 10 +- .../FBSDKWebViewAppLinkResolver.m | 111 +- .../Internal/FBSDKMeasurementEventListener.h} | 12 +- .../Internal/FBSDKMeasurementEventListener.m} | 33 +- .../Instrument/FBSDKCrashHandler.h} | 14 +- .../Basics/Instrument/FBSDKCrashHandler.m | 322 + .../Basics/Instrument/FBSDKCrashObserving.h | 34 + .../Basics/Instrument/FBSDKLibAnalyzer.h | 32 + .../Basics/Instrument/FBSDKLibAnalyzer.m | 218 + .../Basics/Internal/FBSDKBasicUtility.h | 135 + .../Basics/Internal/FBSDKBasicUtility.m | 341 + .../{ => Basics}/Internal/FBSDKTypeUtility.h | 1 + .../{ => Basics}/Internal/FBSDKTypeUtility.m | 2 +- .../Internal/FBSDKURLSession.h} | 29 +- .../Basics/Internal/FBSDKURLSession.m | 71 + .../Basics/Internal/FBSDKURLSessionTask.h | 45 + .../Basics/Internal/FBSDKURLSessionTask.m | 60 + .../FBSDKCoreKit/FBSDKAccessToken.h | 137 +- .../FBSDKCoreKit/FBSDKAccessToken.m | 74 +- .../FBSDKCoreKit/FBSDKAppLinkResolver.h | 107 - .../FBSDKCoreKit/FBSDKApplicationDelegate.h | 32 +- .../FBSDKCoreKit/FBSDKApplicationDelegate.m | 677 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h | 5 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m | 22 +- .../FBSDKCoreKit/FBSDKConstants.h | 165 +- .../FBSDKCoreKit/FBSDKConstants.m | 14 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h | 5 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h | 5 +- .../FBSDKGraphErrorRecoveryProcessor.h | 27 +- .../FBSDKGraphErrorRecoveryProcessor.m | 33 +- .../FBSDKCoreKit/FBSDKGraphRequest.h | 64 +- .../FBSDKCoreKit/FBSDKGraphRequest.m | 47 +- .../FBSDKGraphRequestConnection.h | 120 +- .../FBSDKGraphRequestConnection.m | 348 +- .../FBSDKGraphRequestDataAttachment.h | 5 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h | 19 - .../FBSDKCoreKit/FBSDKMeasurementEvent.h | 48 +- .../FBSDKCoreKit/FBSDKMeasurementEvent.m | 12 +- .../FBSDKCoreKit/FBSDKMutableCopying.h | 5 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h | 100 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m | 32 +- .../FBSDKCoreKit/FBSDKProfilePictureView.h | 7 +- .../FBSDKCoreKit/FBSDKProfilePictureView.m | 60 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h | 265 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m | 264 +- .../FBSDKCoreKit/FBSDKTestUsersManager.h | 42 +- .../FBSDKCoreKit/FBSDKTestUsersManager.m | 43 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.h | 36 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m | 6 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h | 22 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m | 60 +- .../Internal/AppEvents/FBSDKUserDataStore.m | 204 - .../FBSDKBoltsMeasurementEventListener.h | 23 - .../Internal/Base64/FBSDKBase64.h | 1 + .../Internal/BridgeAPI/FBSDKBridgeAPI.h | 58 + .../Internal/BridgeAPI/FBSDKBridgeAPI.m | 435 + .../Internal/BridgeAPI/FBSDKBridgeAPICrypto.m | 130 - .../BridgeAPI/FBSDKBridgeAPIProtocol.h | 1 + .../BridgeAPI/FBSDKBridgeAPIProtocolType.h | 2 +- .../BridgeAPI/FBSDKBridgeAPIRequest.h | 1 + .../BridgeAPI/FBSDKBridgeAPIRequest.m | 13 +- .../BridgeAPI/FBSDKBridgeAPIResponse.h | 1 + .../BridgeAPI/FBSDKBridgeAPIResponse.m | 9 +- .../Internal/BridgeAPI/FBSDKURLOpening.h | 1 + .../FBSDKBridgeAPIProtocolNativeV1.h | 3 +- .../FBSDKBridgeAPIProtocolNativeV1.m | 48 +- .../FBSDKBridgeAPIProtocolWebV1.h | 1 + .../FBSDKBridgeAPIProtocolWebV1.m | 14 +- .../FBSDKBridgeAPIProtocolWebV2.h | 1 + .../FBSDKBridgeAPIProtocolWebV2.m | 13 +- .../Internal/Cryptography/FBSDKCrypto.h | 32 +- .../Internal/Cryptography/FBSDKCrypto.m | 234 - .../FBSDKErrorRecoveryAttempter.h | 1 + .../Internal/FBSDKAppLink_Internal.h | 2 +- .../FBSDKApplicationDelegate+Internal.h | 29 +- ...PICrypto.h => FBSDKApplicationObserving.h} | 22 +- .../Internal/FBSDKAudioResourceLoader.h | 12 +- .../Internal/FBSDKContainerViewController.h | 8 +- .../Internal/FBSDKCoreKit+Internal.h | 110 +- .../Internal/FBSDKDeviceRequestsHelper.h | 7 +- .../Internal/FBSDKDeviceRequestsHelper.m | 12 +- .../Internal/FBSDKDynamicFrameworkLoader.h | 223 +- .../FBSDKCoreKit/Internal/FBSDKError.h | 117 +- .../FBSDKCoreKit/Internal/FBSDKError.m | 319 +- .../Internal/FBSDKFeatureManager.h | 78 + .../Internal/FBSDKFeatureManager.m | 104 + .../Internal/FBSDKImageDownloader.h | 18 +- .../Internal/FBSDKImageDownloader.m | 12 +- .../Internal/FBSDKInternalUtility.h | 211 +- .../Internal/FBSDKInternalUtility.m | 254 +- .../FBSDKCoreKit/Internal/FBSDKLogger.h | 7 +- .../FBSDKCoreKit/Internal/FBSDKLogger.m | 16 +- .../FBSDKCoreKit/Internal/FBSDKMath.h | 5 + .../Internal/FBSDKMeasurementEvent_Internal.h | 4 +- .../Internal/FBSDKMonotonicTime.m | 7 +- .../Internal/FBSDKProfile+Internal.h | 8 +- .../Internal/FBSDKSettings+Internal.h | 7 +- .../FBSDKCoreKit/Internal/FBSDKSwizzler.h | 1 + .../FBSDKCoreKit/Internal/FBSDKSwizzler.m | 329 +- .../Internal/FBSDKSystemAccountStoreAdapter.h | 76 - .../Internal/FBSDKSystemAccountStoreAdapter.m | 278 - .../FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h | 2 +- .../CrashReport/FBSDKCrashObserver.h} | 10 +- .../CrashReport/FBSDKCrashObserver.m | 79 + .../Instrument/ErrorReport/FBSDKErrorReport.h | 36 + .../Instrument/ErrorReport/FBSDKErrorReport.m | 137 + .../FBSDKInstrumentManager.h} | 8 +- .../Instrument/FBSDKInstrumentManager.m | 46 + .../Network/FBSDKGraphRequest+Internal.h | 1 - .../Internal/Network/FBSDKGraphRequestBody.h | 3 + .../Internal/Network/FBSDKGraphRequestBody.m | 15 +- .../Network/FBSDKGraphRequestMetadata.h | 7 +- .../Network/FBSDKGraphRequestMetadata.m | 2 +- .../FBSDKGraphRequestPiggybackManager.h | 5 +- .../FBSDKGraphRequestPiggybackManager.m | 14 +- .../Internal/Network/FBSDKURLSessionTask.m | 150 - .../FBSDKDialogConfiguration.h | 1 + .../FBSDKErrorConfiguration.h | 1 + .../FBSDKErrorConfiguration.m | 3 +- .../FBSDKErrorRecoveryConfiguration.h | 1 + .../FBSDKGateKeeperManager.h | 11 +- .../FBSDKGateKeeperManager.m | 144 +- .../FBSDKServerConfiguration.h | 5 + .../FBSDKServerConfiguration.m | 12 + .../FBSDKServerConfigurationManager.h | 6 +- .../FBSDKServerConfigurationManager.m | 51 +- .../TokenCaching/FBSDKAccessTokenCache.h | 1 + .../TokenCaching/FBSDKAccessTokenCache.m | 107 +- .../TokenCaching/FBSDKAccessTokenCacheV3.m | 80 - .../TokenCaching/FBSDKAccessTokenCacheV3_17.m | 63 - .../TokenCaching/FBSDKAccessTokenCacheV3_21.m | 66 - .../TokenCaching/FBSDKAccessTokenCacheV4.m | 99 - .../TokenCaching/FBSDKAccessTokenCaching.h | 1 + .../TokenCaching/FBSDKAccessTokenExpirer.h | 1 + .../TokenCaching/FBSDKAccessTokenExpirer.m | 4 +- .../TokenCaching/FBSDKKeychainStore.h | 1 + .../TokenCaching/FBSDKKeychainStore.m | 198 +- .../FBSDKKeychainStoreViaBundleID.h | 1 + .../FBSDKKeychainStoreViaBundleID.m | 2 +- .../Internal/UI/FBSDKButton+Subclass.h | 1 + .../FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h | 1 + .../FBSDKCoreKit/Internal/UI/FBSDKIcon.h | 1 + .../FBSDKCoreKit/Internal/UI/FBSDKLogo.h | 1 + .../FBSDKCoreKit/Internal/UI/FBSDKLogo.m | 76 +- .../Internal/UI/FBSDKMaleSilhouetteIcon.h | 1 + .../FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h | 14 +- .../Internal/UI/FBSDKViewImpressionTracker.h | 1 + .../Internal/UI/FBSDKViewImpressionTracker.m | 4 +- .../Internal/WebDialog/FBSDKWebDialog.h | 5 +- .../Internal/WebDialog/FBSDKWebDialog.m | 12 +- .../Internal/WebDialog/FBSDKWebDialogView.h | 2 + .../Internal/WebDialog/FBSDKWebDialogView.m | 44 +- .../Resources/en.lproj/FacebookSDK.strings | Bin 9104 -> 8672 bytes Example/Pods/FBSDKCoreKit/README.md | 10 +- .../FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h | 1 + .../FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m | 2 +- .../FBSDKLoginKit/FBSDKDeviceLoginManager.h | 9 +- .../FBSDKLoginKit/FBSDKDeviceLoginManager.m | 31 +- .../FBSDKDeviceLoginManagerResult.h | 1 + .../FBSDKLoginKit/FBSDKLoginButton.h | 32 +- .../FBSDKLoginKit/FBSDKLoginButton.m | 36 +- .../FBSDKLoginKit/FBSDKLoginConstants.h | 44 +- .../FBSDKLoginKit/FBSDKLoginManager.h | 122 +- .../FBSDKLoginKit/FBSDKLoginManager.m | 449 +- .../FBSDKLoginManagerLoginResult.h | 17 +- .../FBSDKLoginManagerLoginResult.m | 8 +- .../FBSDKLoginKit/FBSDKLoginTooltipView.h | 8 +- .../FBSDKLoginKit/FBSDKLoginTooltipView.m | 4 + .../FBSDKLoginKit/FBSDKTooltipView.h | 22 +- .../FBSDKLoginKit/FBSDKTooltipView.m | 4 + .../Internal/FBSDKLoginCompletion+Internal.h | 3 +- .../Internal/FBSDKLoginCompletion.h | 41 +- .../Internal/FBSDKLoginCompletion.m | 154 +- .../FBSDKLoginKit/Internal/FBSDKLoginError.h | 1 - .../FBSDKLoginKit/Internal/FBSDKLoginError.m | 51 +- .../Internal/FBSDKLoginManager+Internal.h | 52 +- .../Internal/FBSDKLoginManagerLogger.h | 7 +- .../Internal/FBSDKLoginManagerLogger.m | 62 +- .../Internal/FBSDKLoginUtility.h | 1 + .../Internal/FBSDKLoginUtility.m | 10 +- .../Internal/_FBSDKLoginRecoveryAttempter.h | 4 + Example/Pods/FBSDKLoginKit/README.md | 10 +- .../FBSDKPlacesKit/FBSDKPlacesKitConstants.h | 541 +- .../FBSDKPlacesKit/FBSDKPlacesKitConstants.m | 94 +- .../FBSDKPlacesKit/FBSDKPlacesManager.h | 55 +- .../FBSDKPlacesKit/FBSDKPlacesManager.m | 54 +- .../Internal/FBSDKPlacesBluetoothScanner.h | 15 +- .../Internal/FBSDKPlacesBluetoothScanner.m | 10 +- .../FBSDKShareKit/FBSDKAppGroupAddDialog.h | 100 - .../FBSDKShareKit/FBSDKAppGroupAddDialog.m | 191 - .../FBSDKShareKit/FBSDKAppGroupContent.h | 10 +- .../FBSDKShareKit/FBSDKAppGroupContent.m | 4 + .../FBSDKShareKit/FBSDKAppGroupJoinDialog.h | 92 - .../FBSDKShareKit/FBSDKAppGroupJoinDialog.m | 169 - .../FBSDKShareKit/FBSDKAppInviteContent.h | 22 +- .../FBSDKShareKit/FBSDKAppInviteContent.m | 14 +- .../FBSDKShareKit/FBSDKAppInviteDialog.h | 118 - .../FBSDKShareKit/FBSDKAppInviteDialog.m | 85 - .../FBSDKCameraEffectArguments.h | 15 +- .../FBSDKCameraEffectArguments.m | 10 +- .../FBSDKShareKit/FBSDKCameraEffectTextures.h | 10 +- .../FBSDKShareKit/FBSDKCameraEffectTextures.m | 4 + .../FBSDKShareKit/FBSDKGameRequestContent.h | 29 +- .../FBSDKShareKit/FBSDKGameRequestContent.m | 42 +- .../FBSDKShareKit/FBSDKGameRequestDialog.h | 31 +- .../FBSDKShareKit/FBSDKGameRequestDialog.m | 44 +- .../FBSDKShareKit/FBSDKHashtag.h | 8 +- .../FBSDKShareKit/FBSDKHashtag.m | 4 + .../FBSDKShareKit/FBSDKLikeButton.h | 45 - .../FBSDKShareKit/FBSDKLikeButton.m | 294 - .../FBSDKShareKit/FBSDKLikeControl.h | 142 - .../FBSDKShareKit/FBSDKLikeControl.m | 664 -- .../FBSDKShareKit/FBSDKLikeObjectType.h | 9 +- .../FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h | 9 +- .../FBSDKShareKit/FBSDKMessageDialog.h | 20 +- .../FBSDKShareKit/FBSDKMessageDialog.m | 52 +- .../FBSDKShareKit/FBSDKSendButton.h | 7 + .../FBSDKShareKit/FBSDKSendButton.m | 7 + .../FBSDKShareKit/FBSDKShareAPI.h | 26 +- .../FBSDKShareKit/FBSDKShareAPI.m | 219 +- .../FBSDKShareKit/FBSDKShareButton.h | 5 + .../FBSDKShareKit/FBSDKShareButton.m | 4 + .../FBSDKShareCameraEffectContent.h | 5 + .../FBSDKShareCameraEffectContent.m | 40 +- .../FBSDKShareKit/FBSDKShareConstants.h | 25 +- .../FBSDKShareKit/FBSDKShareDialog.h | 21 +- .../FBSDKShareKit/FBSDKShareDialog.m | 244 +- .../FBSDKShareKit/FBSDKShareDialogMode.h | 13 +- .../FBSDKShareKit/FBSDKShareDialogMode.m | 4 + .../FBSDKShareKit/FBSDKShareKit.h | 6 +- .../FBSDKShareKit/FBSDKShareLinkContent.h | 42 +- .../FBSDKShareKit/FBSDKShareLinkContent.m | 69 +- .../FBSDKShareKit/FBSDKShareMediaContent.h | 15 +- .../FBSDKShareKit/FBSDKShareMediaContent.m | 36 +- .../FBSDKShareMessengerActionButton.h | 7 + ...BSDKShareMessengerGenericTemplateContent.h | 10 +- ...BSDKShareMessengerGenericTemplateContent.m | 33 +- ...BSDKShareMessengerGenericTemplateElement.h | 14 +- ...BSDKShareMessengerGenericTemplateElement.m | 3 + .../FBSDKShareMessengerMediaTemplateContent.h | 18 +- .../FBSDKShareMessengerMediaTemplateContent.m | 46 +- ...reMessengerOpenGraphMusicTemplateContent.h | 8 +- ...reMessengerOpenGraphMusicTemplateContent.m | 23 +- .../FBSDKShareMessengerURLActionButton.h | 10 +- .../FBSDKShareMessengerURLActionButton.m | 7 + .../FBSDKShareKit/FBSDKShareOpenGraphAction.h | 15 + .../FBSDKShareKit/FBSDKShareOpenGraphAction.m | 23 +- .../FBSDKShareOpenGraphContent.h | 7 +- .../FBSDKShareOpenGraphContent.m | 30 +- .../FBSDKShareKit/FBSDKShareOpenGraphObject.h | 7 +- .../FBSDKShareOpenGraphValueContainer.h | 99 +- .../FBSDKShareOpenGraphValueContainer.m | 12 +- .../FBSDKShareKit/FBSDKSharePhoto.h | 28 +- .../FBSDKShareKit/FBSDKSharePhoto.m | 44 +- .../FBSDKShareKit/FBSDKSharePhotoContent.h | 9 +- .../FBSDKShareKit/FBSDKSharePhotoContent.m | 16 +- .../FBSDKShareKit/FBSDKShareVideo.h | 16 +- .../FBSDKShareKit/FBSDKShareVideo.m | 36 +- .../FBSDKShareKit/FBSDKShareVideoContent.h | 12 +- .../FBSDKShareKit/FBSDKShareVideoContent.m | 64 +- .../FBSDKShareKit/FBSDKSharing.h | 9 +- .../FBSDKShareKit/FBSDKSharingButton.h | 7 +- .../FBSDKShareKit/FBSDKSharingContent.h | 32 +- .../FBSDKShareKit/FBSDKSharingScheme.h | 9 +- .../FBSDKShareKit/FBSDKSharingValidation.h | 7 +- .../FBSDKCameraEffectArguments+Internal.h | 2 +- .../Internal/FBSDKCheckmarkIcon.h | 5 + ...SDKGameRequestFrictionlessRecipientCache.h | 1 + ...SDKGameRequestFrictionlessRecipientCache.m | 4 + .../Internal/FBSDKLikeActionController.h | 2 +- .../Internal/FBSDKLikeActionController.m | 103 +- .../Internal/FBSDKLikeActionControllerCache.h | 1 + .../Internal/FBSDKLikeBoxBorderView.h | 1 + .../Internal/FBSDKLikeBoxBorderView.m | 4 + .../FBSDKShareKit/Internal/FBSDKLikeBoxView.h | 3 +- .../FBSDKShareKit/Internal/FBSDKLikeBoxView.m | 4 + .../Internal/FBSDKLikeButton+Internal.h | 3 +- .../Internal/FBSDKLikeButtonPopWAV.h | 24 - .../Internal/FBSDKLikeButtonPopWAV.m | 36 - .../FBSDKShareKit/Internal/FBSDKLikeDialog.h | 4 +- .../FBSDKShareKit/Internal/FBSDKLikeDialog.m | 32 +- .../Internal/FBSDKMessengerIcon.h | 5 + .../Internal/FBSDKShareLinkContent+Internal.h | 26 - .../FBSDKShareMessengerContentUtility.h | 13 + .../FBSDKShareMessengerContentUtility.m | 42 +- ...SDKShareOpenGraphValueContainer+Internal.h | 4 +- .../Internal/FBSDKShareUtility.h | 9 +- .../Internal/FBSDKShareUtility.m | 161 +- .../Internal/FBSDKVideoUploader.h | 5 +- .../Internal/FBSDKVideoUploader.m | 44 +- Example/Pods/FBSDKShareKit/README.md | 10 +- .../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/BFExecutor.h | 1 - .../Pods/Headers/Private/Bolts/BFGeneric.h | 1 - .../Private/Bolts/BFMeasurementEvent.h | 1 - .../Bolts/BFMeasurementEvent_Internal.h | 1 - Example/Pods/Headers/Private/Bolts/BFTask.h | 1 - .../Private/Bolts/BFTaskCompletionSource.h | 1 - Example/Pods/Headers/Private/Bolts/BFURL.h | 1 - .../Headers/Private/Bolts/BFURL_Internal.h | 1 - .../Private/Bolts/BFWebViewAppLinkResolver.h | 1 - Example/Pods/Headers/Private/Bolts/Bolts.h | 1 - .../FBSDKCoreKit/FBSDKAccessTokenCacheV3.h | 1 - .../FBSDKCoreKit/FBSDKAccessTokenCacheV3_17.h | 1 - .../FBSDKCoreKit/FBSDKAccessTokenCacheV3_21.h | 1 - .../FBSDKCoreKit/FBSDKAccessTokenCacheV4.h | 1 - .../FBSDKCoreKit/FBSDKAppEvents+Internal.h | 2 +- .../Private/FBSDKCoreKit/FBSDKAppEvents.h | 2 +- .../FBSDKCoreKit/FBSDKAppEventsDeviceInfo.h | 2 +- .../FBSDKCoreKit/FBSDKAppEventsState.h | 2 +- .../FBSDKCoreKit/FBSDKAppEventsStateManager.h | 2 +- .../FBSDKCoreKit/FBSDKAppEventsUtility.h | 2 +- .../Private/FBSDKCoreKit/FBSDKAppLink.h | 2 +- .../FBSDKCoreKit/FBSDKAppLinkNavigation.h | 2 +- .../FBSDKCoreKit/FBSDKAppLinkResolver.h | 2 +- .../FBSDKCoreKit/FBSDKAppLinkResolving.h | 2 +- .../FBSDKAppLinkReturnToRefererController.h | 2 +- .../FBSDKAppLinkReturnToRefererView.h | 2 +- .../Private/FBSDKCoreKit/FBSDKAppLinkTarget.h | 2 +- .../FBSDKCoreKit/FBSDKAppLinkUtility.h | 2 +- .../FBSDKCoreKit/FBSDKApplicationObserving.h | 1 + .../Private/FBSDKCoreKit/FBSDKBasicUtility.h | 1 + .../FBSDKBoltsMeasurementEventListener.h | 1 - .../Private/FBSDKCoreKit/FBSDKBridgeAPI.h | 1 + .../FBSDKCoreKit/FBSDKBridgeAPICrypto.h | 1 - .../FBSDKCoreKit/FBSDKCodelessIndexer.h | 2 +- .../FBSDKCoreKit/FBSDKCodelessMacros.h | 2 +- .../FBSDKCodelessParameterComponent.h | 2 +- .../FBSDKCoreKit/FBSDKCodelessPathComponent.h | 2 +- .../Private/FBSDKCoreKit/FBSDKCrashHandler.h | 1 + .../Private/FBSDKCoreKit/FBSDKCrashObserver.h | 1 + .../FBSDKCoreKit/FBSDKCrashObserving.h | 1 + .../Private/FBSDKCoreKit/FBSDKErrorReport.h | 1 + .../Private/FBSDKCoreKit/FBSDKEventBinding.h | 2 +- .../FBSDKCoreKit/FBSDKEventBindingManager.h | 2 +- .../FBSDKCoreKit/FBSDKFeatureManager.h | 1 + ...FBSDKHybridAppEventsScriptMessageHandler.h | 2 +- .../FBSDKCoreKit/FBSDKInstrumentManager.h | 1 + .../Private/FBSDKCoreKit/FBSDKLibAnalyzer.h | 1 + .../Private/FBSDKCoreKit/FBSDKMacros.h | 1 - .../FBSDKMeasurementEventListener.h | 1 + .../FBSDKCoreKit/FBSDKMetadataIndexer.h | 1 + .../FBSDKCoreKit/FBSDKPaymentObserver.h | 2 +- .../FBSDKRestrictiveDataFilterManager.h | 1 + .../FBSDKSystemAccountStoreAdapter.h | 1 - .../Private/FBSDKCoreKit/FBSDKTimeSpentData.h | 2 +- .../Private/FBSDKCoreKit/FBSDKTypeUtility.h | 2 +- .../Private/FBSDKCoreKit/FBSDKURLSession.h | 1 + .../FBSDKCoreKit/FBSDKURLSessionTask.h | 2 +- .../Private/FBSDKCoreKit/FBSDKUserDataStore.h | 2 +- .../Private/FBSDKCoreKit/FBSDKViewHierarchy.h | 2 +- .../FBSDKWebViewAppLinkResolver.h | 2 +- .../FBSDKShareKit/FBSDKAppGroupAddDialog.h | 1 - .../FBSDKShareKit/FBSDKAppGroupJoinDialog.h | 1 - .../FBSDKShareKit/FBSDKAppInviteDialog.h | 1 - .../FBSDKShareKit/FBSDKLikeButton.h | 1 - .../FBSDKShareKit/FBSDKLikeButtonPopWAV.h | 1 - .../FBSDKShareKit/FBSDKLikeControl+Internal.h | 1 - .../FBSDKShareKit/FBSDKLikeControl.h | 1 - .../FBSDKShareLinkContent+Internal.h | 1 - Example/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 - .../Headers/Public/Bolts/BFAppLinkTarget.h | 1 - .../Public/Bolts/BFCancellationToken.h | 1 - .../Bolts/BFCancellationTokenRegistration.h | 1 - .../Public/Bolts/BFCancellationTokenSource.h | 1 - .../Pods/Headers/Public/Bolts/BFExecutor.h | 1 - Example/Pods/Headers/Public/Bolts/BFGeneric.h | 1 - .../Headers/Public/Bolts/BFMeasurementEvent.h | 1 - Example/Pods/Headers/Public/Bolts/BFTask.h | 1 - .../Public/Bolts/BFTaskCompletionSource.h | 1 - Example/Pods/Headers/Public/Bolts/BFURL.h | 1 - .../Public/Bolts/BFWebViewAppLinkResolver.h | 1 - Example/Pods/Headers/Public/Bolts/Bolts.h | 1 - .../Public/FBSDKCoreKit/FBSDKAppEvents.h | 2 +- .../Public/FBSDKCoreKit/FBSDKAppLink.h | 2 +- .../FBSDKCoreKit/FBSDKAppLinkNavigation.h | 2 +- .../FBSDKCoreKit/FBSDKAppLinkResolver.h | 2 +- .../FBSDKCoreKit/FBSDKAppLinkResolving.h | 2 +- .../FBSDKAppLinkReturnToRefererController.h | 2 +- .../FBSDKAppLinkReturnToRefererView.h | 2 +- .../Public/FBSDKCoreKit/FBSDKAppLinkTarget.h | 2 +- .../Public/FBSDKCoreKit/FBSDKAppLinkUtility.h | 2 +- .../Headers/Public/FBSDKCoreKit/FBSDKMacros.h | 1 - .../FBSDKWebViewAppLinkResolver.h | 2 +- .../FBSDKShareKit/FBSDKAppGroupAddDialog.h | 1 - .../FBSDKShareKit/FBSDKAppGroupJoinDialog.h | 1 - .../FBSDKShareKit/FBSDKAppInviteDialog.h | 1 - .../FBSDKShareKit/FBSDKLikeButton.h | 1 - .../FBSDKShareKit/FBSDKLikeControl.h | 1 - .../Pods/Local Podspecs/PNObject.podspec.json | 6 +- Example/Pods/Manifest.lock | 58 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 9982 ++++++++--------- .../PureLayout/PureLayout/ALView+PureLayout.h | 2 + .../PureLayout/PureLayout/ALView+PureLayout.m | 7 +- .../NSLayoutConstraint+PureLayout.m | 40 +- .../AFNetworking/AFNetworking.xcconfig | 1 + .../Target Support Files/Bolts/Bolts-dummy.m | 5 - .../Bolts/Bolts-prefix.pch | 12 - .../Target Support Files/Bolts/Bolts.xcconfig | 9 - .../CodFis-Helper/CodFis-Helper.xcconfig | 1 + .../DDDKeychainWrapper.xcconfig | 1 + .../DJLocalization/DJLocalization.xcconfig | 1 + .../Expecta/Expecta.xcconfig | 1 + .../FBSDKCoreKit/FBSDKCoreKit.xcconfig | 3 +- .../FBSDKLoginKit/FBSDKLoginKit.xcconfig | 4 +- .../FBSDKPlacesKit/FBSDKPlacesKit.xcconfig | 4 +- .../FBSDKShareKit/FBSDKShareKit.xcconfig | 4 +- .../NSDataAES/NSDataAES.xcconfig | 1 + .../NSDate_Utils/NSDate_Utils.xcconfig | 1 + .../NSString-Helper/NSString-Helper.xcconfig | 1 + .../PEAR-FileManager-iOS.xcconfig | 1 + .../PNObject/PNObject.xcconfig | 3 +- ...PNObject_Example-acknowledgements.markdown | 33 - ...ds-PNObject_Example-acknowledgements.plist | 39 - .../Pods-PNObject_Example-frameworks.sh | 146 - .../Pods-PNObject_Example.debug.xcconfig | 7 +- .../Pods-PNObject_Example.release.xcconfig | 7 +- .../Pods-PNObject_Tests-frameworks.sh | 146 - .../Pods-PNObject_Tests-resources.sh | 118 - .../Pods-PNObject_Tests.debug.xcconfig | 5 +- .../Pods-PNObject_Tests.release.xcconfig | 5 +- .../PureLayout/PureLayout.xcconfig | 1 + .../RZDataBinding/RZDataBinding.xcconfig | 1 + .../Specta/Specta.xcconfig | 1 + .../StrongestPasswordValidator.xcconfig | 1 + .../UIDevice-Utils/UIDevice-Utils.xcconfig | 1 + .../nv-ios-http-status.xcconfig | 1 + .../Pod/Classes/UIDevice-Hardware.m | 56 +- PNObject.podspec | 4 +- PNObject/Classes/PNClasses/PNUser.m | 5 +- 535 files changed, 14099 insertions(+), 19527 deletions(-) delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFCancellationToken.h delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFCancellationToken.m delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFExecutor.h delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFExecutor.m delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFGeneric.h delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFTask.h delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFTask.m delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.h delete mode 100644 Example/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.m delete mode 100644 Example/Pods/Bolts/Bolts/Common/Bolts.h delete mode 100644 Example/Pods/Bolts/Bolts/Common/Bolts.m delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLink.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLink.m delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.m delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.m delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.m delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFURL.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFURL.m delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.m delete mode 100644 Example/Pods/Bolts/Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/Internal/BFAppLink_Internal.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/Internal/BFMeasurementEvent_Internal.h delete mode 100644 Example/Pods/Bolts/Bolts/iOS/Internal/BFURL_Internal.h delete mode 100644 Example/Pods/Bolts/LICENSE delete mode 100644 Example/Pods/Bolts/README.md rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppEvents}/FBSDKAppEvents.h (73%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppEvents}/FBSDKAppEvents.m (66%) rename Example/Pods/{FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h => FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.h} (91%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.m rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKCodelessIndexer.h (86%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKCodelessIndexer.m (94%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKCodelessMacros.h (100%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKCodelessParameterComponent.h (97%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKCodelessParameterComponent.m (100%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKCodelessPathComponent.h (98%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKCodelessPathComponent.m (100%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKEventBinding.h (98%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKEventBinding.m (97%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKEventBindingManager.h (97%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKEventBindingManager.m (98%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKViewHierarchy.h (98%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/Codeless/FBSDKViewHierarchy.m (94%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKAppEvents+Internal.h (88%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKAppEventsDeviceInfo.h (97%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKAppEventsDeviceInfo.m (98%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKAppEventsState.h (94%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKAppEventsState.m (96%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKAppEventsStateManager.h (97%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKAppEventsStateManager.m (95%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKAppEventsUtility.h (83%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKAppEventsUtility.m (83%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKHybridAppEventsScriptMessageHandler.h (96%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKHybridAppEventsScriptMessageHandler.m (94%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKPaymentObserver.h (97%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKPaymentObserver.m (53%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKTimeSpentData.h (98%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents => AppEvents/Internal}/FBSDKTimeSpentData.m (96%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.h create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.m rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/Network/FBSDKURLSessionTask.h => AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.h} (71%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.m rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLink.h (77%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLink.m (100%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkNavigation.h (73%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkNavigation.m (98%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.h rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkResolver.m (54%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkResolving.h (77%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkReturnToRefererController.h (84%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkReturnToRefererController.m (100%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkReturnToRefererView.h (87%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkReturnToRefererView.m (96%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkTarget.h (75%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkTarget.m (100%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkUtility.h (78%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKAppLinkUtility.m (89%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKWebViewAppLinkResolver.h (89%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => AppLink}/FBSDKWebViewAppLinkResolver.m (78%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/TokenCaching/FBSDKAccessTokenCacheV3.h => AppLink/Internal/FBSDKMeasurementEventListener.h} (81%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppLink/FBSDKBoltsMeasurementEventListener.m => AppLink/Internal/FBSDKMeasurementEventListener.m} (70%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/TokenCaching/FBSDKAccessTokenCacheV4.h => Basics/Instrument/FBSDKCrashHandler.h} (80%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.m create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashObserving.h create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.h create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.m create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.h create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.m rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => Basics}/Internal/FBSDKTypeUtility.h (98%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{ => Basics}/Internal/FBSDKTypeUtility.m (98%) rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/{Internal/AppEvents/FBSDKUserDataStore.h => Basics/Internal/FBSDKURLSession.h} (63%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.m create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.h create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.h create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/{BridgeAPI/FBSDKBridgeAPICrypto.h => FBSDKApplicationObserving.h} (65%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.h create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/{TokenCaching/FBSDKAccessTokenCacheV3_17.h => Instrument/CrashReport/FBSDKCrashObserver.h} (87%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.m create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.h create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.m rename Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/{TokenCaching/FBSDKAccessTokenCacheV3_21.h => Instrument/FBSDKInstrumentManager.h} (91%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFAppLink.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFAppLinkNavigation.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFAppLinkResolving.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererController.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView_Internal.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFAppLinkTarget.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFAppLink_Internal.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFCancellationToken.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFCancellationTokenRegistration.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFCancellationTokenSource.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFExecutor.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFGeneric.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFMeasurementEvent.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFMeasurementEvent_Internal.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFTask.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFTaskCompletionSource.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFURL.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFURL_Internal.h delete mode 120000 Example/Pods/Headers/Private/Bolts/BFWebViewAppLinkResolver.h delete mode 120000 Example/Pods/Headers/Private/Bolts/Bolts.h delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3.h delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3_17.h delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3_21.h delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV4.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKApplicationObserving.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBasicUtility.h delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBoltsMeasurementEventListener.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBridgeAPI.h delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBridgeAPICrypto.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashHandler.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashObserver.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashObserving.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKErrorReport.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKFeatureManager.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKInstrumentManager.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKLibAnalyzer.h delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMacros.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMeasurementEventListener.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMetadataIndexer.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKRestrictiveDataFilterManager.h delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKSystemAccountStoreAdapter.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLSession.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButtonPopWAV.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent+Internal.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFAppLink.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFAppLinkNavigation.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFAppLinkResolving.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererController.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFAppLinkTarget.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFCancellationToken.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFCancellationTokenRegistration.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFCancellationTokenSource.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFExecutor.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFGeneric.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFMeasurementEvent.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFTask.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFTaskCompletionSource.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFURL.h delete mode 120000 Example/Pods/Headers/Public/Bolts/BFWebViewAppLinkResolver.h delete mode 120000 Example/Pods/Headers/Public/Bolts/Bolts.h delete mode 120000 Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKMacros.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h delete mode 100644 Example/Pods/Target Support Files/Bolts/Bolts-dummy.m delete mode 100644 Example/Pods/Target Support Files/Bolts/Bolts-prefix.pch delete mode 100644 Example/Pods/Target Support Files/Bolts/Bolts.xcconfig delete mode 100755 Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-frameworks.sh delete mode 100755 Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests-frameworks.sh delete mode 100755 Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests-resources.sh diff --git a/Example/Podfile b/Example/Podfile index 42efe28..33699eb 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -1,4 +1,4 @@ -platform :ios, '9.0' +platform :ios, '10.0' target 'PNObject_Example' do pod 'PNObject', :path => '../' diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 3f2be17..8ba7027 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -14,33 +14,35 @@ PODS: - AFNetworking/Serialization (3.2.1) - AFNetworking/UIKit (3.2.1): - AFNetworking/NSURLSession - - Bolts (1.9.0): - - Bolts/AppLinks (= 1.9.0) - - Bolts/Tasks (= 1.9.0) - - Bolts/AppLinks (1.9.0): - - Bolts/Tasks - - Bolts/Tasks (1.9.0) - CodFis-Helper (0.1.3) - DDDKeychainWrapper (1.0.0) - DJLocalization (1.2.2): - DJLocalization/Core (= 1.2.2) - DJLocalization/Core (1.2.2) - Expecta (1.0.6) - - FBSDKCoreKit (4.41.0): - - Bolts (~> 1.9) - - FBSDKLoginKit (4.41.0): - - FBSDKCoreKit - - FBSDKPlacesKit (4.41.0): - - FBSDKCoreKit - - FBSDKShareKit (4.41.0): - - FBSDKCoreKit + - FBSDKCoreKit (5.8.0): + - FBSDKCoreKit/Basics (= 5.8.0) + - FBSDKCoreKit/Core (= 5.8.0) + - FBSDKCoreKit/Basics (5.8.0) + - FBSDKCoreKit/Core (5.8.0): + - FBSDKCoreKit/Basics + - FBSDKLoginKit (5.8.0): + - FBSDKLoginKit/Login (= 5.8.0) + - FBSDKLoginKit/Login (5.8.0): + - FBSDKCoreKit (~> 5.0) + - FBSDKPlacesKit (5.3.0): + - FBSDKCoreKit (~> 5.0) + - FBSDKShareKit (5.8.0): + - FBSDKShareKit/Share (= 5.8.0) + - FBSDKShareKit/Share (5.8.0): + - FBSDKCoreKit (~> 5.0) - NSDataAES (0.2.2) - NSDate_Utils (1.1.0): - DJLocalization - NSString-Helper (1.2.0) - nv-ios-http-status (0.0.1) - PEAR-FileManager-iOS (1.3.1) - - PNObject (2.6.4): + - PNObject (2.6.5): - AFNetworking - CodFis-Helper - DDDKeychainWrapper @@ -57,11 +59,11 @@ PODS: - RZDataBinding - StrongestPasswordValidator - UIDevice-Utils - - PureLayout (3.1.4) + - PureLayout (3.1.5) - RZDataBinding (2.1.1) - Specta (1.0.7) - StrongestPasswordValidator (0.1.2) - - UIDevice-Utils (1.0.9) + - UIDevice-Utils (1.1.0) DEPENDENCIES: - Expecta @@ -70,9 +72,8 @@ DEPENDENCIES: - Specta SPEC REPOS: - https://github.com/cocoapods/specs.git: + trunk: - AFNetworking - - Bolts - CodFis-Helper - DDDKeychainWrapper - DJLocalization @@ -98,27 +99,26 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057 - Bolts: ac6567323eac61e203f6a9763667d0f711be34c8 CodFis-Helper: 28be4c74d7202542459d72354f59b1215871de87 DDDKeychainWrapper: e681a4daba6448786fa83b4941f58102a33b1897 DJLocalization: 0c84029af375647d4104a42ae36be87194c46c47 Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5 - FBSDKCoreKit: 974810fe3806173f3777c68062fa8ed6fa59b59d - FBSDKLoginKit: 159a5c2eebe6a0774c3b128f5085128679233d2b - FBSDKPlacesKit: 8dc2ca787f8934c021876d9e51bf3a5508b0675c - FBSDKShareKit: 79dfd0c51f1a241f33e219fcc39e7cc69534b900 + FBSDKCoreKit: e7dcac0aabcfb09d0166998edd95fe3b05a0ce5d + FBSDKLoginKit: 1b0cf04df0370b37404213157b060d6666ede814 + FBSDKPlacesKit: 0388766304ff7a89630bcc211db9f500d549f403 + FBSDKShareKit: abc29e1bb4f9f59f679adf1ae191006d68455f96 NSDataAES: 967ea3337476a80e9838a533c25d570a06855ed0 NSDate_Utils: c858a89da6e204ecf53aca48dbccb4da4d25bc9e NSString-Helper: 1c259caa6c845e79e0bb45ee25e34f95d86d2317 nv-ios-http-status: b6c2b5fc8656cc19e0d3000dadce2080b99d0e2f PEAR-FileManager-iOS: 3bc403f68a53483f5629aa822f4649e40275c4d3 - PNObject: 5d8947012a711816bceedce57d07762327ac57c6 - PureLayout: f08c01b8dec00bb14a1fefa3de4c7d9c265df85e + PNObject: 050cb74316db4833c551ae9732db81f6fb8c6416 + PureLayout: 9b4ad47b2f0388c84ff534af23d96e720c1b875a RZDataBinding: 289e2fbdce8b9585afef69def83425c5d380ffbd Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66 StrongestPasswordValidator: 921e42615bdf353513c6f925bffd4fc29865dbd7 - UIDevice-Utils: 6ba44475416a1e823f214a8ed26fc9a0761db096 + UIDevice-Utils: 9efdf0f9fb3c07a53595d39981d3c04ce39aba5f -PODFILE CHECKSUM: eec9c921f7aee591fd1fdea1fd3e5a191b74a436 +PODFILE CHECKSUM: 1dc1681e732f85afd3765f49346295b2d8460102 -COCOAPODS: 1.6.0 +COCOAPODS: 1.8.4 diff --git a/Example/Pods/Bolts/Bolts/Common/BFCancellationToken.h b/Example/Pods/Bolts/Bolts/Common/BFCancellationToken.h deleted file mode 100644 index bda32ee..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFCancellationToken.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 - -NS_ASSUME_NONNULL_BEGIN - -/*! - A block that will be called when a token is cancelled. - */ -typedef void(^BFCancellationBlock)(void); - -/*! - 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 - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFCancellationToken.m b/Example/Pods/Bolts/Bolts/Common/BFCancellationToken.m deleted file mode 100644 index 4acd589..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFCancellationToken.m +++ /dev/null @@ -1,144 +0,0 @@ -/* - * 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" - -NS_ASSUME_NONNULL_BEGIN - -@interface BFCancellationToken () - -@property (nullable, 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 - -@synthesize cancellationRequested = _cancellationRequested; - -#pragma mark - Initializer - -- (instancetype)init { - self = [super init]; - if (!self) return self; - - _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.registrations makeObjectsPerformSelector:@selector(dispose)]; - self.registrations = nil; - self.disposed = YES; - } -} - -- (void)throwIfDisposed { - if (self.disposed) { - [NSException raise:NSInternalInconsistencyException format:@"Object already disposed"]; - } -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h b/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h deleted file mode 100644 index fa6090f..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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 - -NS_ASSUME_NONNULL_BEGIN - -/*! - 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 - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m b/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m deleted file mode 100644 index f396c1c..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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" - -NS_ASSUME_NONNULL_BEGIN - -@interface BFCancellationTokenRegistration () - -@property (nonatomic, weak) BFCancellationToken *token; -@property (nullable, 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 { - self = [super init]; - if (!self) return self; - - _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 - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h b/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h deleted file mode 100644 index 4627e99..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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 - -NS_ASSUME_NONNULL_BEGIN - -@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 - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m b/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m deleted file mode 100644 index ee05cf0..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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" - -NS_ASSUME_NONNULL_BEGIN - -@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 self; - - _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 - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFExecutor.h b/Example/Pods/Bolts/Bolts/Common/BFExecutor.h deleted file mode 100644 index 694c8a5..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFExecutor.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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 - -NS_ASSUME_NONNULL_BEGIN - -/*! - 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)(void)))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(^)(void))block; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFExecutor.m b/Example/Pods/Bolts/Bolts/Common/BFExecutor.m deleted file mode 100644 index 05d49f1..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFExecutor.m +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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" - -#import - -NS_ASSUME_NONNULL_BEGIN - -/*! - Get the remaining stack-size of the current thread. - - @param totalSize The total stack size of the current thread. - - @return The remaining size, in bytes, available to the current thread. - - @note This function cannot be inlined, as otherwise the internal implementation could fail to report the proper - remaining stack space. - */ -__attribute__((noinline)) static size_t remaining_stack_size(size_t *restrict totalSize) { - pthread_t currentThread = pthread_self(); - - // NOTE: We must store stack pointers as uint8_t so that the pointer math is well-defined - uint8_t *endStack = pthread_get_stackaddr_np(currentThread); - *totalSize = pthread_get_stacksize_np(currentThread); - - // NOTE: If the function is inlined, this value could be incorrect - uint8_t *frameAddr = __builtin_frame_address(0); - - return (*totalSize) - (size_t)(endStack - frameAddr); -} - -@interface BFExecutor () - -@property (nonatomic, copy) void(^block)(void(^block)(void)); - -@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)(void)) { - // 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 remaining stack space - // is less than 10% of the total space, we dispatch to another GCD queue. - size_t totalStackSize = 0; - size_t remainingStackSize = remaining_stack_size(&totalStackSize); - - if (remainingStackSize < (totalStackSize / 10)) { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block); - } else { - @autoreleasepool { - block(); - } - } - }]; - }); - return defaultExecutor; -} - -+ (instancetype)immediateExecutor { - static BFExecutor *immediateExecutor = NULL; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - immediateExecutor = [self executorWithBlock:^void(void(^block)(void)) { - block(); - }]; - }); - return immediateExecutor; -} - -+ (instancetype)mainThreadExecutor { - static BFExecutor *mainThreadExecutor = NULL; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - mainThreadExecutor = [self executorWithBlock:^void(void(^block)(void)) { - if (![NSThread isMainThread]) { - dispatch_async(dispatch_get_main_queue(), block); - } else { - @autoreleasepool { - block(); - } - } - }]; - }); - return mainThreadExecutor; -} - -+ (instancetype)executorWithBlock:(void(^)(void(^block)(void)))block { - return [[self alloc] initWithBlock:block]; -} - -+ (instancetype)executorWithDispatchQueue:(dispatch_queue_t)queue { - return [self executorWithBlock:^void(void(^block)(void)) { - dispatch_async(queue, block); - }]; -} - -+ (instancetype)executorWithOperationQueue:(NSOperationQueue *)queue { - return [self executorWithBlock:^void(void(^block)(void)) { - [queue addOperation:[NSBlockOperation blockOperationWithBlock:block]]; - }]; -} - -#pragma mark - Initializer - -- (instancetype)initWithBlock:(void(^)(void(^block)(void)))block { - self = [super init]; - if (!self) return self; - - _block = block; - - return self; -} - -#pragma mark - Execution - -- (void)execute:(void(^)(void))block { - self.block(block); -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFGeneric.h b/Example/Pods/Bolts/Bolts/Common/BFGeneric.h deleted file mode 100644 index 99b2cf7..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFGeneric.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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 - -#pragma once - -/** - This exists to use along with `BFTask` and `BFTaskCompletionSource`. - - 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 'BFVoid', which will always have a value of `nil`. - - This allows you to provide a more enforced API contract to the caller, - as sending any message to `BFVoid` will result in a compile time error. - */ -@class _BFVoid_Nonexistant; -typedef _BFVoid_Nonexistant *BFVoid; diff --git a/Example/Pods/Bolts/Bolts/Common/BFTask.h b/Example/Pods/Bolts/Bolts/Common/BFTask.h deleted file mode 100644 index 074c182..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFTask.h +++ /dev/null @@ -1,266 +0,0 @@ -/* - * 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 - -NS_ASSUME_NONNULL_BEGIN - -/*! - Error domain used if there was multiple errors on . - */ -extern NSString *const BFTaskErrorDomain; - -/*! - An error code used for , if there were multiple errors. - */ -extern NSInteger const kBFMultipleErrorsError; - -/*! - An error userInfo key used if there were multiple errors on . - Value type is `NSArray *`. - */ -extern NSString *const BFTaskMultipleErrorsUserInfoKey; - -@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<__covariant ResultType> : NSObject - -/*! - A block that can act as a continuation for a task. - */ -typedef __nullable id(^BFContinuationBlock)(BFTask *t); - -/*! - Creates a task that is already completed with the given result. - @param result The result for the task. - */ -+ (instancetype)taskWithResult:(nullable ResultType)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 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:(nullable 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:(nullable NSArray *)tasks; - -/*! - Returns a task that will be completed once there is at least one successful task. - The first task to successuly complete will set the result, all other tasks results are - ignored. - @param tasks An `NSArray` of the tasks to use as an input. - */ -+ (instancetype)taskForCompletionOfAnyTask:(nullable 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). - */ -+ (BFTask *)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). - */ -+ (BFTask *)taskWithDelay:(int)millis cancellationToken:(nullable 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:(nullable id (^)(void))block; - -// Properties that will be set on the task once it is completed. - -/*! - The result of a successful task. - */ -@property (nullable, nonatomic, strong, readonly) ResultType result; - -/*! - The error of a failed task. - */ -@property (nullable, nonatomic, strong, readonly) NSError *error; - -/*! - Whether this task has been cancelled. - */ -@property (nonatomic, assign, readonly, getter=isCancelled) BOOL cancelled; - -/*! - Whether this task has completed due to an error. - */ -@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. - */ -- (BFTask *)continueWithBlock:(BFContinuationBlock)block NS_SWIFT_NAME(continueWith(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. - */ -- (BFTask *)continueWithBlock:(BFContinuationBlock)block - cancellationToken:(nullable BFCancellationToken *)cancellationToken NS_SWIFT_NAME(continueWith(block: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. - */ -- (BFTask *)continueWithExecutor:(BFExecutor *)executor - withBlock:(BFContinuationBlock)block NS_SWIFT_NAME(continueWith(executor: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. - */ -- (BFTask *)continueWithExecutor:(BFExecutor *)executor - block:(BFContinuationBlock)block - cancellationToken:(nullable BFCancellationToken *)cancellationToken -NS_SWIFT_NAME(continueWith(executor:block:cancellationToken:)); - -/*! - Identical to continueWithBlock:, except that the block is only run - if this task did not produce a cancellation or an error. - 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. - */ -- (BFTask *)continueWithSuccessBlock:(BFContinuationBlock)block NS_SWIFT_NAME(continueOnSuccessWith(block:)); - -/*! - Identical to continueWithBlock:, except that the block is only run - if this task did not produce a cancellation or an error. - 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. - */ -- (BFTask *)continueWithSuccessBlock:(BFContinuationBlock)block - cancellationToken:(nullable BFCancellationToken *)cancellationToken -NS_SWIFT_NAME(continueOnSuccessWith(block:cancellationToken:)); - -/*! - Identical to continueWithExecutor:withBlock:, except that the block - is only run if this task did not produce a cancellation, error, or an error. - 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. - */ -- (BFTask *)continueWithExecutor:(BFExecutor *)executor - withSuccessBlock:(BFContinuationBlock)block NS_SWIFT_NAME(continueOnSuccessWith(executor:block:)); - -/*! - Identical to continueWithExecutor:withBlock:, except that the block - is only run if this task did not produce a cancellation or an error. - 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. - */ -- (BFTask *)continueWithExecutor:(BFExecutor *)executor - successBlock:(BFContinuationBlock)block - cancellationToken:(nullable BFCancellationToken *)cancellationToken -NS_SWIFT_NAME(continueOnSuccessWith(executor:block: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 - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFTask.m b/Example/Pods/Bolts/Bolts/Common/BFTask.m deleted file mode 100644 index 0d6bd4c..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFTask.m +++ /dev/null @@ -1,465 +0,0 @@ -/* - * 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" - -NS_ASSUME_NONNULL_BEGIN - -__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"; -NSInteger const kBFMultipleErrorsError = 80175001; - -NSString *const BFTaskMultipleErrorsUserInfoKey = @"errors"; - -@interface BFTask () { - id _result; - NSError *_error; -} - -@property (nonatomic, assign, readwrite, getter=isCancelled) BOOL cancelled; -@property (nonatomic, assign, readwrite, getter=isFaulted) BOOL faulted; -@property (nonatomic, 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 { - self = [super init]; - if (!self) return self; - - _lock = [[NSObject alloc] init]; - _condition = [[NSCondition alloc] init]; - _callbacks = [NSMutableArray array]; - - return self; -} - -- (instancetype)initWithResult:(nullable id)result { - self = [super init]; - if (!self) return self; - - [self trySetResult:result]; - - return self; -} - -- (instancetype)initWithError:(NSError *)error { - self = [super init]; - if (!self) return self; - - [self trySetError:error]; - - return self; -} - -- (instancetype)initCancelled { - self = [super init]; - if (!self) return self; - - [self trySetCancelled]; - - return self; -} - -#pragma mark - Task Class methods - -+ (instancetype)taskWithResult:(nullable id)result { - return [[self alloc] initWithResult:result]; -} - -+ (instancetype)taskWithError:(NSError *)error { - return [[self alloc] initWithError:error]; -} - -+ (instancetype)cancelledTask { - return [[self alloc] initCancelled]; -} - -+ (instancetype)taskForCompletionOfAllTasks:(nullable 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]; - - BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; - for (BFTask *task in tasks) { - [task continueWithBlock:^id(BFTask *t) { - if (t.error) { - @synchronized (lock) { - [errors addObject:t.error]; - } - } else if (t.cancelled) { - OSAtomicIncrement32Barrier(&cancelled); - } - - if (OSAtomicDecrement32Barrier(&total) == 0) { - if (errors.count > 0) { - if (errors.count == 1) { - tcs.error = [errors firstObject]; - } else { - NSError *error = [NSError errorWithDomain:BFTaskErrorDomain - code:kBFMultipleErrorsError - userInfo:@{ BFTaskMultipleErrorsUserInfoKey: errors }]; - tcs.error = error; - } - } else if (cancelled > 0) { - [tcs cancel]; - } else { - tcs.result = nil; - } - } - return nil; - }]; - } - return tcs.task; -} - -+ (instancetype)taskForCompletionOfAllTasksWithResults:(nullable NSArray *)tasks { - return [[self taskForCompletionOfAllTasks:tasks] continueWithSuccessBlock:^id(BFTask * __unused task) { - return [tasks valueForKey:@"result"]; - }]; -} - -+ (instancetype)taskForCompletionOfAnyTask:(nullable NSArray *)tasks -{ - __block int32_t total = (int32_t)tasks.count; - if (total == 0) { - return [self taskWithResult:nil]; - } - - __block int completed = 0; - __block int32_t cancelled = 0; - - NSObject *lock = [NSObject new]; - NSMutableArray *errors = [NSMutableArray new]; - - BFTaskCompletionSource *source = [BFTaskCompletionSource taskCompletionSource]; - for (BFTask *task in tasks) { - [task continueWithBlock:^id(BFTask *t) { - if (t.error != nil) { - @synchronized(lock) { - [errors addObject:t.error]; - } - } else if (t.cancelled) { - OSAtomicIncrement32Barrier(&cancelled); - } else { - if(OSAtomicCompareAndSwap32Barrier(0, 1, &completed)) { - [source setResult:t.result]; - } - } - - if (OSAtomicDecrement32Barrier(&total) == 0 && - OSAtomicCompareAndSwap32Barrier(0, 1, &completed)) { - if (cancelled > 0) { - [source cancel]; - } else if (errors.count > 0) { - if (errors.count == 1) { - source.error = errors.firstObject; - } else { - NSError *error = [NSError errorWithDomain:BFTaskErrorDomain - code:kBFMultipleErrorsError - userInfo:@{ @"errors": errors }]; - source.error = error; - } - } - } - // Abort execution of per tasks continuations - return nil; - }]; - } - return source.task; -} - - -+ (BFTask *)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; -} - -+ (BFTask *)taskWithDelay:(int)millis cancellationToken:(nullable 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:(nullable id (^)(void))block { - return [[self taskWithResult:nil] continueWithExecutor:executor withBlock:^id(BFTask *task) { - return block(); - }]; -} - -#pragma mark - Custom Setters/Getters - -- (nullable id)result { - @synchronized(self.lock) { - return _result; - } -} - -- (BOOL)trySetResult:(nullable id)result { - @synchronized(self.lock) { - if (self.completed) { - return NO; - } - self.completed = YES; - _result = result; - [self runContinuations]; - return YES; - } -} - -- (nullable NSError *)error { - @synchronized(self.lock) { - return _error; - } -} - -- (BOOL)trySetError:(NSError *)error { - @synchronized(self.lock) { - if (self.completed) { - return NO; - } - self.completed = YES; - self.faulted = YES; - _error = error; - [self runContinuations]; - return YES; - } -} - -- (BOOL)isCancelled { - @synchronized(self.lock) { - return _cancelled; - } -} - -- (BOOL)isFaulted { - @synchronized(self.lock) { - return _faulted; - } -} - -- (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)runContinuations { - @synchronized(self.lock) { - [self.condition lock]; - [self.condition broadcast]; - [self.condition unlock]; - for (void (^callback)(void) in self.callbacks) { - callback(); - } - [self.callbacks removeAllObjects]; - } -} - -#pragma mark - Chaining methods - -- (BFTask *)continueWithExecutor:(BFExecutor *)executor withBlock:(BFContinuationBlock)block { - return [self continueWithExecutor:executor block:block cancellationToken:nil]; -} - -- (BFTask *)continueWithExecutor:(BFExecutor *)executor - block:(BFContinuationBlock)block - cancellationToken:(nullable BFCancellationToken *)cancellationToken { - BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; - - // Capture all of the state that needs to used when the continuation is complete. - dispatch_block_t executionBlock = ^{ - if (cancellationToken.cancellationRequested) { - [tcs cancel]; - return; - } - - id result = block(self); - if ([result isKindOfClass:[BFTask class]]) { - - id (^setupWithTask) (BFTask *) = ^id(BFTask *task) { - if (cancellationToken.cancellationRequested || task.cancelled) { - [tcs cancel]; - } 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:[^{ - [executor execute:executionBlock]; - } copy]]; - } - } - if (completed) { - [executor execute:executionBlock]; - } - - return tcs.task; -} - -- (BFTask *)continueWithBlock:(BFContinuationBlock)block { - return [self continueWithExecutor:[BFExecutor defaultExecutor] block:block cancellationToken:nil]; -} - -- (BFTask *)continueWithBlock:(BFContinuationBlock)block cancellationToken:(nullable BFCancellationToken *)cancellationToken { - return [self continueWithExecutor:[BFExecutor defaultExecutor] block:block cancellationToken:cancellationToken]; -} - -- (BFTask *)continueWithExecutor:(BFExecutor *)executor - withSuccessBlock:(BFContinuationBlock)block { - return [self continueWithExecutor:executor successBlock:block cancellationToken:nil]; -} - -- (BFTask *)continueWithExecutor:(BFExecutor *)executor - successBlock:(BFContinuationBlock)block - cancellationToken:(nullable 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]; -} - -- (BFTask *)continueWithSuccessBlock:(BFContinuationBlock)block { - return [self continueWithExecutor:[BFExecutor defaultExecutor] successBlock:block cancellationToken:nil]; -} - -- (BFTask *)continueWithSuccessBlock:(BFContinuationBlock)block cancellationToken:(nullable 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]; - } - // TODO: (nlutsenko) Restructure this to use Bolts-Swift thread access synchronization architecture - // In the meantime, it's absolutely safe to get `_completed` aka an ivar, as long as it's a `BOOL` aka less than word size. - while (!_completed) { - [self.condition wait]; - } - [self.condition unlock]; -} - -#pragma mark - NSObject - -- (NSString *)description { - // Acquire the data from the locked properties - BOOL completed; - BOOL cancelled; - BOOL faulted; - NSString *resultDescription = nil; - - @synchronized(self.lock) { - completed = self.completed; - cancelled = self.cancelled; - faulted = self.faulted; - resultDescription = completed ? [NSString stringWithFormat:@" result = %@", self.result] : @""; - } - - // 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", - resultDescription]; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.h b/Example/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.h deleted file mode 100644 index f94c18f..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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 - -NS_ASSUME_NONNULL_BEGIN - -@class BFTask<__covariant ResultType>; - -/*! - 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<__covariant ResultType> : NSObject - -/*! - Creates a new unfinished task. - */ -+ (instancetype)taskCompletionSource; - -/*! - The task associated with this TaskCompletionSource. - */ -@property (nonatomic, strong, readonly) BFTask *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:(nullable ResultType)result NS_SWIFT_NAME(set(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 NS_SWIFT_NAME(set(error:)); - -/*! - 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:(nullable ResultType)result NS_SWIFT_NAME(trySet(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 NS_SWIFT_NAME(trySet(error:)); - -/*! - Sets the cancellation state of the task if it wasn't already completed. - @returns whether the new value was set. - */ -- (BOOL)trySetCancelled; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.m b/Example/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.m deleted file mode 100644 index 33a6f89..0000000 --- a/Example/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.m +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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" - -NS_ASSUME_NONNULL_BEGIN - -@interface BFTask (BFTaskCompletionSource) - -- (BOOL)trySetResult:(nullable id)result; -- (BOOL)trySetError:(NSError *)error; -- (BOOL)trySetCancelled; - -@end - -@implementation BFTaskCompletionSource - -#pragma mark - Initializer - -+ (instancetype)taskCompletionSource { - return [[self alloc] init]; -} - -- (instancetype)init { - self = [super init]; - if (!self) return self; - - _task = [[BFTask alloc] init]; - - return self; -} - -#pragma mark - Custom Setters/Getters - -- (void)setResult:(nullable id)result { - if (![self.task trySetResult:result]) { - [NSException raise:NSInternalInconsistencyException - format:@"Cannot set the result on a completed task."]; - } -} - -- (void)setError:(NSError *)error { - if (![self.task trySetError:error]) { - [NSException raise:NSInternalInconsistencyException - format:@"Cannot set the error on a completed task."]; - } -} - -- (void)cancel { - if (![self.task trySetCancelled]) { - [NSException raise:NSInternalInconsistencyException - format:@"Cannot cancel a completed task."]; - } -} - -- (BOOL)trySetResult:(nullable id)result { - return [self.task trySetResult:result]; -} - -- (BOOL)trySetError:(NSError *)error { - return [self.task trySetError:error]; -} - -- (BOOL)trySetCancelled { - return [self.task trySetCancelled]; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/Bolts.h b/Example/Pods/Bolts/Bolts/Common/Bolts.h deleted file mode 100644 index a3f2bd6..0000000 --- a/Example/Pods/Bolts/Bolts/Common/Bolts.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 - -#if __has_include() && TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV -#import -#import -#import -#import -#import -#import -#import -#import -#import -#endif - - -NS_ASSUME_NONNULL_BEGIN - -/** - A string containing the version of the Bolts Framework used by the current application. - */ -extern NSString *const BoltsFrameworkVersionString; - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/Common/Bolts.m b/Example/Pods/Bolts/Bolts/Common/Bolts.m deleted file mode 100644 index c202687..0000000 --- a/Example/Pods/Bolts/Bolts/Common/Bolts.m +++ /dev/null @@ -1,17 +0,0 @@ -/* - * 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" - -NS_ASSUME_NONNULL_BEGIN - -NSString *const BoltsFrameworkVersionString = @"1.9.0"; - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/Bolts/Bolts/iOS/BFAppLink.h b/Example/Pods/Bolts/Bolts/iOS/BFAppLink.h deleted file mode 100644 index aa89efc..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLink.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/BFAppLink.m b/Example/Pods/Bolts/Bolts/iOS/BFAppLink.m deleted file mode 100644 index 77fd311..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLink.m +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.h b/Example/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.h deleted file mode 100644 index 4b8a71e..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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. - */ -NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension") -@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; - -/*! - Creates an NSDictionary with the correct format for iOS callback URLs, - to be used as 'appLinkData' argument in the call to navigationWithAppLink:extras:appLinkData: - */ -+ (NSDictionary *)callbackAppLinkDataForAppWithName:(NSString *)appName url:(NSString *)url; - -/*! 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; - -/*! - Returns a BFAppLinkNavigationType based on a BFAppLink. - It's essentially a no-side-effect version of navigateToAppLink:error:, - allowing apps to determine flow based on the link type (e.g. open an - internal web view instead of going straight to the browser for regular links.) - */ -+ (BFAppLinkNavigationType)navigationTypeForLink:(BFAppLink *)link; - -/*! - Return navigation type for current instance. - No-side-effect version of navigate: - */ -- (BFAppLinkNavigationType)navigationType; - -/*! 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/Example/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.m b/Example/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.m deleted file mode 100644 index 7ea12de..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.m +++ /dev/null @@ -1,284 +0,0 @@ -/* - * 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 "BFAppLinkNavigation.h" - -#import - -#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; -FOUNDATION_EXPORT NSString *const BFAppLinkRefererAppLink; -FOUNDATION_EXPORT NSString *const BFAppLinkRefererAppName; -FOUNDATION_EXPORT NSString *const BFAppLinkRefererUrl; - -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; -} - -+ (NSDictionary *)callbackAppLinkDataForAppWithName:(NSString *)appName url:(NSString *)url { - return @{BFAppLinkRefererAppLink: @{BFAppLinkRefererAppName: appName, BFAppLinkRefererUrl: url}}; -} - -- (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 %@", BoltsFrameworkVersionString]; - } - 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]; -} - -+ (BFAppLinkNavigationType)navigationTypeForLink:(BFAppLink *)link { - return [[self navigationWithAppLink:link extras:nil appLinkData:nil] navigationType]; -} - -- (BFAppLinkNavigationType)navigationType { - BFAppLinkTarget *eligibleTarget = nil; - for (BFAppLinkTarget *target in self.appLink.targets) { - if ([[UIApplication sharedApplication] canOpenURL:target.URL]) { - eligibleTarget = target; - break; - } - } - - if (eligibleTarget != nil) { - NSURL *appLinkURL = [self appLinkURLWithTargetURL:eligibleTarget.URL error:nil]; - if (appLinkURL != nil) { - return BFAppLinkNavigationTypeApp; - } else { - return BFAppLinkNavigationTypeFailure; - } - } - - if (self.appLink.webURL != nil) { - NSURL *appLinkURL = [self appLinkURLWithTargetURL:eligibleTarget.URL error:nil]; - if (appLinkURL != nil) { - return BFAppLinkNavigationTypeBrowser; - } else { - return BFAppLinkNavigationTypeFailure; - } - } - - return BFAppLinkNavigationTypeFailure; -} - -+ (id)defaultResolver { - if (defaultResolver) { - return defaultResolver; - } - return [BFWebViewAppLinkResolver sharedInstance]; -} - -+ (void)setDefaultResolver:(id)resolver { - defaultResolver = resolver; -} - -@end diff --git a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h b/Example/Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h deleted file mode 100644 index 5c78bff..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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 NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension"); - -@end diff --git a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h b/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h deleted file mode 100644 index 436c528..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * 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. - */ -NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension") -@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/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.m b/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.m deleted file mode 100644 index d380635..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.m +++ /dev/null @@ -1,230 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h b/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h deleted file mode 100644 index f62bc66..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * 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. - */ -NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension") -@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/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.m b/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.m deleted file mode 100644 index f2d0e79..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.m +++ /dev/null @@ -1,268 +0,0 @@ -/* - * 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; - -@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/Example/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h b/Example/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h deleted file mode 100644 index 6172126..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m b/Example/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m deleted file mode 100644 index 5518cba..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h b/Example/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h deleted file mode 100644 index b3173fc..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m b/Example/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m deleted file mode 100644 index e3e6cde..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/BFURL.h b/Example/Pods/Bolts/Bolts/iOS/BFURL.h deleted file mode 100644 index 924c91d..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFURL.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/BFURL.m b/Example/Pods/Bolts/Bolts/iOS/BFURL.m deleted file mode 100644 index 14a1384..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFURL.m +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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" - -@implementation BFURL - -- (instancetype)initWithURL:(NSURL *)url forOpenInboundURL:(BOOL)forOpenURLEvent sourceApplication:(NSString *)sourceApplication forRenderBackToReferrerBar:(BOOL)forRenderBackToReferrerBar { - self = [super init]; - if (!self) return nil; - - _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 *appLinkTarget = [BFAppLinkTarget appLinkTargetWithURL:[NSURL URLWithString:refererURLString] - appStoreId:nil - appName:refererAppName]; - _appLinkReferer = [BFAppLink appLinkWithSourceURL:[NSURL URLWithString:refererURLString] - targets:@[ appLinkTarget ] - 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/Example/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h b/Example/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h deleted file mode 100644 index 3782ae2..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.m b/Example/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.m deleted file mode 100644 index 0e0d58c..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.m +++ /dev/null @@ -1,296 +0,0 @@ -/* - * 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 NS_EXTENSION_UNAVAILABLE_IOS("") { - 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 (NSUInteger 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; - - const UIUserInterfaceIdiom idiom = UI_USER_INTERFACE_IDIOM(); - if (idiom == UIUserInterfaceIdiomPad) { - platformData = @[ appLinkDict[BFWebViewAppLinkResolverIPadKey] ?: @{}, - appLinkDict[BFWebViewAppLinkResolverIOSKey] ?: @{} ]; - } else if (idiom == UIUserInterfaceIdiomPhone) { - platformData = @[ appLinkDict[BFWebViewAppLinkResolverIPhoneKey] ?: @{}, - appLinkDict[BFWebViewAppLinkResolverIOSKey] ?: @{} ]; - } else { - // Future-proofing. Other User Interface idioms should only hit ios. - platformData = @[ appLinkDict[BFWebViewAppLinkResolverIOSKey] ?: @{} ]; - } - - 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/Example/Pods/Bolts/Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h b/Example/Pods/Bolts/Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h deleted file mode 100644 index 8b85823..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/Internal/BFAppLink_Internal.h b/Example/Pods/Bolts/Bolts/iOS/Internal/BFAppLink_Internal.h deleted file mode 100644 index aeeaa53..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/Internal/BFAppLink_Internal.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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 - -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; - -@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/Example/Pods/Bolts/Bolts/iOS/Internal/BFMeasurementEvent_Internal.h b/Example/Pods/Bolts/Bolts/iOS/Internal/BFMeasurementEvent_Internal.h deleted file mode 100644 index 7d46fd0..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/Internal/BFMeasurementEvent_Internal.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * 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/Example/Pods/Bolts/Bolts/iOS/Internal/BFURL_Internal.h b/Example/Pods/Bolts/Bolts/iOS/Internal/BFURL_Internal.h deleted file mode 100644 index 03b6bc6..0000000 --- a/Example/Pods/Bolts/Bolts/iOS/Internal/BFURL_Internal.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * 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/Example/Pods/Bolts/LICENSE b/Example/Pods/Bolts/LICENSE deleted file mode 100644 index e1a5831..0000000 --- a/Example/Pods/Bolts/LICENSE +++ /dev/null @@ -1,30 +0,0 @@ -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/Example/Pods/Bolts/README.md b/Example/Pods/Bolts/README.md deleted file mode 100644 index 5e972c8..0000000 --- a/Example/Pods/Bolts/README.md +++ /dev/null @@ -1,683 +0,0 @@ -Bolts -============ -[![Build Status](https://img.shields.io/travis/BoltsFramework/Bolts-ObjC/master.svg?style=flat)](https://travis-ci.org/BoltsFramework/Bolts-ObjC) -[![Coverage Status](https://codecov.io/github/BoltsFramework/Bolts-ObjC/coverage.svg?branch=master)](https://codecov.io/github/BoltsFramework/Bolts-ObjC?branch=master) -[![Pod Platform](https://img.shields.io/cocoapods/p/Bolts.svg?style=flat)](https://cocoapods.org/pods/Bolts) -[![Pod License](https://img.shields.io/cocoapods/l/Bolts.svg?style=flat)](https://github.com/BoltsFramework/Bolts-ObjC/blob/master/LICENSE) -[![Reference Status](https://www.versioneye.com/objective-c/bolts/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/bolts/references) - -[![Pod Version](https://img.shields.io/cocoapods/v/Bolts.svg?style=flat)](https://cocoapods.org/pods/Bolts) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) - -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://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 != nil { - // 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 != nil { - // 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 `BFTaskCompletionSource`, 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://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://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 navigation-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-ObjC/releases). - -Bolts is also available through [CocoaPods](https://cocoapods.org/). To install it simply add the following line to your Podfile: - - pod 'Bolts' diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.h similarity index 73% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.h index 4216bfd..37ff15e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.h @@ -24,23 +24,28 @@ #import +NS_ASSUME_NONNULL_BEGIN + @class FBSDKAccessToken; @class FBSDKGraphRequest; #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 /** NSNotificationCenter name indicating a result of a failed log flush attempt. The posted object will be an NSError instance. */ -FOUNDATION_EXPORT NSNotificationName const FBSDKAppEventsLoggingResultNotification; +FOUNDATION_EXPORT NSNotificationName const FBSDKAppEventsLoggingResultNotification +NS_SWIFT_NAME(AppEventsLoggingResult); #else /** NSNotificationCenter name indicating a result of a failed log flush attempt. The posted object will be an NSError instance. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventsLoggingResultNotification; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsLoggingResultNotification +NS_SWIFT_NAME(AppEventsLoggingResultNotification); #endif /** optional plist key ("FacebookLoggingOverrideAppID") for setting `loggingOverrideAppID` */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventsOverrideAppIDBundleKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsOverrideAppIDBundleKey +NS_SWIFT_NAME(AppEventsOverrideAppIDBundleKey); /** @@ -59,8 +64,7 @@ typedef NS_ENUM(NSUInteger, FBSDKAppEventsFlushBehavior) events are persisted and re-established at activation, but they will only be written with an explicit call to `flush`. */ FBSDKAppEventsFlushBehaviorExplicitOnly, - -}; +} NS_SWIFT_NAME(AppEvents.FlushBehavior); /** NS_ENUM(NSUInteger, FBSDKProductAvailability) @@ -88,7 +92,7 @@ typedef NS_ENUM(NSUInteger, FBSDKProductAvailability) * Discontinued */ FBSDKProductAvailabilityDiscontinued, -}; +} NS_SWIFT_NAME(AppEvents.ProductAvailability); /** NS_ENUM(NSUInteger, FBSDKProductCondition) @@ -99,208 +103,266 @@ typedef NS_ENUM(NSUInteger, FBSDKProductCondition) FBSDKProductConditionNew = 0, FBSDKProductConditionRefurbished, FBSDKProductConditionUsed, -}; +} NS_SWIFT_NAME(AppEvents.ProductCondition); /** @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. */ +/// typedef for FBSDKAppEventName +typedef NSString *const FBSDKAppEventName NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.Name); + /** Log this event when the user has achieved a level in the app. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAchievedLevel; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAchievedLevel; /** Log this event when the user has entered their payment info. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAddedPaymentInfo; +FOUNDATION_EXPORT FBSDKAppEventName 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. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAddedToCart; +FOUNDATION_EXPORT FBSDKAppEventName 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. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAddedToWishlist; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAddedToWishlist; /** Log this event when a user has completed registration with the app. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameCompletedRegistration; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameCompletedRegistration; /** Log this event when the user has completed a tutorial in the app. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameCompletedTutorial; +FOUNDATION_EXPORT FBSDKAppEventName 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. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameInitiatedCheckout; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameInitiatedCheckout; + +/** Log this event when the user has completed a transaction. The valueToSum passed to logEvent should be the total price of the transaction. */ +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNamePurchased; /** Log this event when the user has rated an item in the app. The valueToSum passed to logEvent should be the numeric rating. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameRated; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameRated; /** Log this event when a user has performed a search within the app. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSearched; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSearched; /** Log this event when the user has spent app credits. The valueToSum passed to logEvent should be the number of credits spent. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSpentCredits; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSpentCredits; /** Log this event when the user has unlocked an achievement in the app. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameUnlockedAchievement; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameUnlockedAchievement; /** Log this event when a user has viewed a form of content in the app. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameViewedContent; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameViewedContent; /** A telephone/SMS, email, chat or other type of contact between a customer and your business. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameContact; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameContact; /** The customization of products through a configuration tool or other application your business owns. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameCustomizeProduct; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameCustomizeProduct; /** The donation of funds to your organization or cause. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameDonate; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameDonate; /** When a person finds one of your locations via web or application, with an intention to visit (example: find product at a local store). */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFindLocation; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameFindLocation; /** The booking of an appointment to visit one of your locations. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSchedule; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSchedule; + +/** The subsequent subscriptions after the start of a paid subscription for a product or service you offer. */ +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSubscriptionHeartbeat __attribute((deprecated("This attribute is no longer used."))); /** The start of a free trial of a product or service you offer (example: trial subscription). */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameStartTrial; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameStartTrial; /** The submission of an application for a product, service or program you offer (example: credit card, educational program or job). */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSubmitApplication; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSubmitApplication; /** The start of a paid subscription for a product or service you offer. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSubscribe; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSubscribe; /** Log this event when the user views an ad. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAdImpression; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAdImpression; /** Log this event when the user clicks an ad. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAdClick; +FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAdClick; /** @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. */ +/// typedef for FBSDKAppEventParameterName +typedef NSString *const FBSDKAppEventParameterName NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.ParameterName); + /** * Parameter key used to specify data for the one or more pieces of content being logged about. * Data should be a JSON encoded string. * Example: * "[{\"id\": \"1234\", \"quantity\": 2, \"item_price\": 5.99}, {\"id\": \"5678\", \"quantity\": 1, \"item_price\": 9.99}]" */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameContent; +FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameContent; /** 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. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameContentID; +FOUNDATION_EXPORT FBSDKAppEventParameterName 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. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameContentType; +FOUNDATION_EXPORT FBSDKAppEventParameterName 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 . */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameCurrency; +FOUNDATION_EXPORT FBSDKAppEventParameterName 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. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameDescription; +FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameDescription; /** Parameter key used to specify the level achieved in a `FBAppEventNameAchieved` event. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameLevel; +FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameLevel; /** Parameter key used to specify the maximum rating available for the `FBAppEventNameRate` event. E.g., "5" or "10". */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameMaxRatingValue; +FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameMaxRatingValue; /** Parameter key used to specify how many items are being processed for an `FBAppEventNameInitiatedCheckout` or `FBAppEventNamePurchased` event. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameNumItems; +FOUNDATION_EXPORT FBSDKAppEventParameterName 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. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNamePaymentInfoAvailable; +FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNamePaymentInfoAvailable; /** Parameter key used to specify method user has used to register for the app, e.g., "Facebook", "email", "Twitter", etc */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameRegistrationMethod; +FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameRegistrationMethod; /** Parameter key used to specify the string provided by the user for a search operation. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameSearchString; +FOUNDATION_EXPORT FBSDKAppEventParameterName 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. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameSuccess; +FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameSuccess; /** @methodgroup Predefined event name parameters for common additional information to accompany events logged through the `logProductItem` method on `FBSDKAppEvents`. */ +/// typedef for FBSDKAppEventParameterProduct +typedef NSString *const FBSDKAppEventParameterProduct NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.ParameterProduct); + +/** Parameter key used to specify the product item's category. */ +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCategory; + /** Parameter key used to specify the product item's custom label 0. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel0; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel0; /** Parameter key used to specify the product item's custom label 1. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel1; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel1; /** Parameter key used to specify the product item's custom label 2. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel2; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel2; /** Parameter key used to specify the product item's custom label 3. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel3; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel3; /** Parameter key used to specify the product item's custom label 4. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel4; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel4; /** Parameter key used to specify the product item's AppLink app URL for iOS. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIOSUrl; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIOSUrl; /** Parameter key used to specify the product item's AppLink app ID for iOS App Store. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIOSAppStoreID; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIOSAppStoreID; /** Parameter key used to specify the product item's AppLink app name for iOS. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIOSAppName; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIOSAppName; /** Parameter key used to specify the product item's AppLink app URL for iPhone. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPhoneUrl; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPhoneUrl; /** Parameter key used to specify the product item's AppLink app ID for iPhone App Store. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPhoneAppStoreID; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPhoneAppStoreID; /** Parameter key used to specify the product item's AppLink app name for iPhone. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPhoneAppName; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPhoneAppName; /** Parameter key used to specify the product item's AppLink app URL for iPad. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPadUrl; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPadUrl; /** Parameter key used to specify the product item's AppLink app ID for iPad App Store. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPadAppStoreID; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPadAppStoreID; /** Parameter key used to specify the product item's AppLink app name for iPad. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPadAppName; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPadAppName; /** Parameter key used to specify the product item's AppLink app URL for Android. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkAndroidUrl; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkAndroidUrl; /** Parameter key used to specify the product item's AppLink fully-qualified package name for intent generation. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkAndroidPackage; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkAndroidPackage; /** Parameter key used to specify the product item's AppLink app name for Android. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkAndroidAppName; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkAndroidAppName; /** Parameter key used to specify the product item's AppLink app URL for Windows Phone. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneUrl; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkWindowsPhoneUrl; /** Parameter key used to specify the product item's AppLink app ID, as a GUID, for App Store. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneAppID; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkWindowsPhoneAppID; /** Parameter key used to specify the product item's AppLink app name for Windows Phone. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneAppName; +FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkWindowsPhoneAppName; /* @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. */ +/// typedef for FBSDKAppEventParameterValue +typedef NSString *const FBSDKAppEventParameterValue NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.ParameterValue); + /** Yes-valued parameter value to be used with parameter keys that need a Yes/No value */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterValueYes; +FOUNDATION_EXPORT FBSDKAppEventParameterValue FBSDKAppEventParameterValueYes; /** No-valued parameter value to be used with parameter keys that need a Yes/No value */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterValueNo; +FOUNDATION_EXPORT FBSDKAppEventParameterValue FBSDKAppEventParameterValueNo; /** Parameter key used to specify the type of ad in an FBSDKAppEventNameAdImpression * or FBSDKAppEventNameAdClick event. * E.g. "banner", "interstitial", "rewarded_video", "native" */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameAdType; +FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameAdType; /** Parameter key used to specify the unique ID for all events within a subscription * in an FBSDKAppEventNameSubscribe or FBSDKAppEventNameStartTrial event. */ -FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; +FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameOrderID; + +/* + @methodgroup Predefined values to assign to user data store + */ + +/// typedef for FBSDKAppEventUserDataType +typedef NSString *const FBSDKAppEventUserDataType NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.UserDataType); + +/** Parameter key used to specify user's email. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventEmail; + +/** Parameter key used to specify user's first name. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventFirstName; + +/** Parameter key used to specify user's last name. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventLastName; + +/** Parameter key used to specify user's phone. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventPhone; + +/** Parameter key used to specify user's date of birth. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventDateOfBirth; + +/** Parameter key used to specify user's gender. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventGender; + +/** Parameter key used to specify user's city. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventCity; + +/** Parameter key used to specify user's state. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventState; + +/** Parameter key used to specify user's zip. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventZip; + +/** Parameter key used to specify user's country. */ +FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventCountry; /** @@ -351,8 +413,45 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; + The length of each parameter value can be no more than on the order of 100 characters. */ + +NS_SWIFT_NAME(AppEvents) @interface FBSDKAppEvents : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +/* + * Control over event batching/flushing + */ + +/** + + The current event flushing behavior specifying when events are sent back to Facebook servers. + */ +@property (class, nonatomic, assign) FBSDKAppEventsFlushBehavior flushBehavior; + +/** + Set the 'override' App ID for App Event logging. + + + + 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. + */ +@property (class, nonatomic, copy, nullable) NSString *loggingOverrideAppID; + +/* + The custom user ID to associate with all app events. + + The userID is persisted until it is cleared by passing nil. + */ +@property (class, nonatomic, copy, nullable) NSString *userID; + /* * Basic event logging */ @@ -365,7 +464,7 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; are given in the `FBSDKAppEvents` documentation. */ -+ (void)logEvent:(NSString *)eventName; ++ (void)logEvent:(FBSDKAppEventName)eventName; /** @@ -377,7 +476,7 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; @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 ++ (void)logEvent:(FBSDKAppEventName)eventName valueToSum:(double)valueToSum; @@ -394,8 +493,8 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; 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; ++ (void)logEvent:(FBSDKAppEventName)eventName + parameters:(NSDictionary *)parameters; /** @@ -414,9 +513,9 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; are provided in `FBSDKAppEventParameterName*` constants. */ -+ (void)logEvent:(NSString *)eventName ++ (void)logEvent:(FBSDKAppEventName)eventName valueToSum:(double)valueToSum - parameters:(NSDictionary *)parameters; + parameters:(NSDictionary *)parameters; /** @@ -439,10 +538,10 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; @param accessToken The optional access token to log the event as. */ -+ (void)logEvent:(NSString *)eventName - valueToSum:(NSNumber *)valueToSum - parameters:(NSDictionary *)parameters - accessToken:(FBSDKAccessToken *)accessToken; ++ (void)logEvent:(FBSDKAppEventName)eventName + valueToSum:(nullable NSNumber *)valueToSum + parameters:(NSDictionary *)parameters + accessToken:(nullable FBSDKAccessToken *)accessToken; /* * Purchase logging @@ -489,7 +588,7 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; */ + (void)logPurchase:(double)purchaseAmount currency:(NSString *)currency - parameters:(NSDictionary *)parameters; + parameters:(NSDictionary *)parameters; /** @@ -516,8 +615,8 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; */ + (void)logPurchase:(double)purchaseAmount currency:(NSString *)currency - parameters:(NSDictionary *)parameters - accessToken:(FBSDKAccessToken *)accessToken; + parameters:(NSDictionary *)parameters + accessToken:(nullable FBSDKAccessToken *)accessToken; /* @@ -574,10 +673,10 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; title:(NSString *)title priceAmount:(double)priceAmount currency:(NSString *)currency - gtin:(NSString *)gtin - mpn:(NSString *)mpn - brand:(NSString *)brand - parameters:(NSDictionary *)parameters; + gtin:(nullable NSString *)gtin + mpn:(nullable NSString *)mpn + brand:(nullable NSString *)brand + parameters:(nullable NSDictionary *)parameters; /** @@ -624,52 +723,8 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; @param deviceTokenString Device token string. */ -+ (void)setPushNotificationsDeviceTokenString:(NSString *)deviceTokenString; - -/* - * Control over event batching/flushing - */ - -/** - - Get the current event flushing behavior specifying when events are sent back to Facebook servers. - */ -+ (FBSDKAppEventsFlushBehavior)flushBehavior; - -/** - - 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; - -/** - Set the 'override' App ID for App Event logging. - - - - 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; - -/** - Get the 'override' App ID for App Event logging. - - -@see setLoggingOverrideAppID: - - */ -+ (NSString *)loggingOverrideAppID; - ++ (void)setPushNotificationsDeviceTokenString:(NSString *)deviceTokenString +NS_SWIFT_NAME(setPushNotificationsDeviceToken(_:)); /** Explicitly kick off flushing of events to Facebook. This is an asynchronous method, but it does initiate an immediate @@ -682,11 +737,6 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; 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. - - - 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 @@ -699,49 +749,17 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; 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; -/* - Sets a custom user ID to associate with all app events. - - The userID is persisted until it is cleared by passing nil. + @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. */ -+ (void)setUserID:(NSString *)userID; ++ (nullable FBSDKGraphRequest *)requestForCustomAudienceThirdPartyIDWithAccessToken:(nullable FBSDKAccessToken *)accessToken; /* Clears the custom user ID to associate with all app events. */ + (void)clearUserID; -/* - Returns the set custom user ID. - */ -+ (NSString *)userID; - -/* - Sets custom user data to associate with all app events. All user data are hashed - and used to match Facebook user from this instance of an application. - - The user data will be persisted between application instances. - - @param userData user data to identify the user. User data should be formated as - a NSDictionary of data type name and value. - Supported data types and names are: - Email: em - First Name: fn - Last Name: ln - Phone: ph - Date of Birth: db - Gender: ge - City: ct - State: st - Zip: zp - Country: country - */ -+ (void)setUserData:(NSDictionary *)userData - DEPRECATED_MSG_ATTRIBUTE("Renamed `setUserEmail:firstName: ...`"); - /* Sets custom user data to associate with all app events. All user data are hashed and used to match Facebook user from this instance of an application. @@ -759,26 +777,45 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; @param zip user's zip @param country user's country */ -+ (void)setUserEmail:(NSString *)email - firstName:(NSString *)firstName - lastName:(NSString *)lastName - phone:(NSString *)phone - dateOfBirth:(NSString *)dateOfBirth - gender:(NSString *)gender - city:(NSString *)city - state:(NSString *)state - zip:(NSString *)zip - country:(NSString *)country; ++ (void)setUserEmail:(nullable NSString *)email + firstName:(nullable NSString *)firstName + lastName:(nullable NSString *)lastName + phone:(nullable NSString *)phone + dateOfBirth:(nullable NSString *)dateOfBirth + gender:(nullable NSString *)gender + city:(nullable NSString *)city + state:(nullable NSString *)state + zip:(nullable NSString *)zip + country:(nullable NSString *)country +NS_SWIFT_NAME(setUser(email:firstName:lastName:phone:dateOfBirth:gender:city:state:zip:country:)); + /* Returns the set user data else nil */ -+ (NSString *)getUserData; ++ (nullable NSString *)getUserData; /* Clears the current user data */ + (void)clearUserData; +/* + Sets custom user data to associate with all app events. All user data are hashed + and used to match Facebook user from this instance of an application. + + The user data will be persisted between application instances. + + @param data data + @param type data type, e.g. FBSDKAppEventEmail, FBSDKAppEventPhone + */ ++ (void)setUserData:(nullable NSString *)data + forType:(FBSDKAppEventUserDataType)type; + +/* + Clears the current user data of certain type + */ ++ (void)clearUserDataForType:(FBSDKAppEventUserDataType)type; + /* Sends a request to update the properties for the current user, set by `setUserID:` @@ -786,7 +823,7 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; @param properties the custom user properties @param handler the optional completion handler */ -+ (void)updateUserProperties:(NSDictionary *)properties handler:(FBSDKGraphRequestHandler)handler; ++ (void)updateUserProperties:(NSDictionary *)properties handler:(nullable FBSDKGraphRequestBlock)handler; #if !TARGET_OS_TV /* @@ -820,3 +857,5 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; + (void)sendEventBindingsToUnity; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.m similarity index 66% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.m index 416cd82..631896b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.m @@ -18,7 +18,7 @@ #import "FBSDKAppEvents.h" #import "FBSDKAppEvents+Internal.h" - +#import "FBSDKApplicationDelegate+Internal.h" #import #import @@ -30,9 +30,11 @@ #import "FBSDKConstants.h" #import "FBSDKDynamicFrameworkLoader.h" #import "FBSDKError.h" +#import "FBSDKFeatureManager.h" #import "FBSDKGraphRequest+Internal.h" #import "FBSDKInternalUtility.h" #import "FBSDKLogger.h" +#import "FBSDKRestrictiveDataFilterManager.h" #import "FBSDKPaymentObserver.h" #import "FBSDKServerConfiguration.h" #import "FBSDKServerConfigurationManager.h" @@ -51,162 +53,178 @@ // // 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 FBSDKAppEventNameContact = @"Contact"; -NSString *const FBSDKAppEventNameCustomizeProduct = @"CustomizeProduct"; -NSString *const FBSDKAppEventNameDonate = @"Donate"; -NSString *const FBSDKAppEventNameFindLocation = @"FindLocation"; -NSString *const FBSDKAppEventNameSchedule = @"Schedule"; -NSString *const FBSDKAppEventNameStartTrial = @"StartTrial"; -NSString *const FBSDKAppEventNameSubmitApplication = @"SubmitApplication"; -NSString *const FBSDKAppEventNameSubscribe = @"Subscribe"; -NSString *const FBSDKAppEventNameAdImpression = @"AdImpression"; -NSString *const FBSDKAppEventNameAdClick = @"AdClick"; +FBSDKAppEventName FBSDKAppEventNameCompletedRegistration = @"fb_mobile_complete_registration"; +FBSDKAppEventName FBSDKAppEventNameViewedContent = @"fb_mobile_content_view"; +FBSDKAppEventName FBSDKAppEventNameSearched = @"fb_mobile_search"; +FBSDKAppEventName FBSDKAppEventNameRated = @"fb_mobile_rate"; +FBSDKAppEventName FBSDKAppEventNameCompletedTutorial = @"fb_mobile_tutorial_completion"; +FBSDKAppEventName FBSDKAppEventNameContact = @"Contact"; +FBSDKAppEventName FBSDKAppEventNameCustomizeProduct = @"CustomizeProduct"; +FBSDKAppEventName FBSDKAppEventNameDonate = @"Donate"; +FBSDKAppEventName FBSDKAppEventNameFindLocation = @"FindLocation"; +FBSDKAppEventName FBSDKAppEventNameSchedule = @"Schedule"; +FBSDKAppEventName FBSDKAppEventNameStartTrial = @"StartTrial"; +FBSDKAppEventName FBSDKAppEventNameSubmitApplication = @"SubmitApplication"; +FBSDKAppEventName FBSDKAppEventNameSubscribe = @"Subscribe"; +FBSDKAppEventName FBSDKAppEventNameSubscriptionHeartbeat = @"SubscriptionHeartbeat"; +FBSDKAppEventName FBSDKAppEventNameAdImpression = @"AdImpression"; +FBSDKAppEventName FBSDKAppEventNameAdClick = @"AdClick"; // 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"; -NSString *const FBSDKAppEventNameProductCatalogUpdate = @"fb_mobile_catalog_update"; +FBSDKAppEventName FBSDKAppEventNameAddedToCart = @"fb_mobile_add_to_cart"; +FBSDKAppEventName FBSDKAppEventNameAddedToWishlist = @"fb_mobile_add_to_wishlist"; +FBSDKAppEventName FBSDKAppEventNameInitiatedCheckout = @"fb_mobile_initiated_checkout"; +FBSDKAppEventName FBSDKAppEventNameAddedPaymentInfo = @"fb_mobile_add_payment_info"; +FBSDKAppEventName FBSDKAppEventNameProductCatalogUpdate = @"fb_mobile_catalog_update"; +FBSDKAppEventName FBSDKAppEventNamePurchased = @"fb_mobile_purchase"; // Gaming related -NSString *const FBSDKAppEventNameAchievedLevel = @"fb_mobile_level_achieved"; -NSString *const FBSDKAppEventNameUnlockedAchievement = @"fb_mobile_achievement_unlocked"; -NSString *const FBSDKAppEventNameSpentCredits = @"fb_mobile_spent_credits"; +FBSDKAppEventName FBSDKAppEventNameAchievedLevel = @"fb_mobile_level_achieved"; +FBSDKAppEventName FBSDKAppEventNameUnlockedAchievement = @"fb_mobile_achievement_unlocked"; +FBSDKAppEventName 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 FBSDKAppEventParameterNameContent = @"fb_content"; -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"; -NSString *const FBSDKAppEventParameterLaunchSource = @"fb_mobile_launch_source"; -NSString *const FBSDKAppEventParameterNameAdType = @"ad_type"; -NSString *const FBSDKAppEventParameterNameOrderID = @"fb_order_id"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameCurrency = @"fb_currency"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameRegistrationMethod = @"fb_registration_method"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameContentType = @"fb_content_type"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameContent = @"fb_content"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameContentID = @"fb_content_id"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameSearchString = @"fb_search_string"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameSuccess = @"fb_success"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameMaxRatingValue = @"fb_max_rating_value"; +FBSDKAppEventParameterName FBSDKAppEventParameterNamePaymentInfoAvailable = @"fb_payment_info_available"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameNumItems = @"fb_num_items"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameLevel = @"fb_level"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameDescription = @"fb_description"; +FBSDKAppEventParameterName FBSDKAppEventParameterLaunchSource = @"fb_mobile_launch_source"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameAdType = @"ad_type"; +FBSDKAppEventParameterName FBSDKAppEventParameterNameOrderID = @"fb_order_id"; // // Public event parameter names for DPA Catalog // -NSString *const FBSDKAppEventParameterProductCustomLabel0 = @"fb_product_custom_label_0"; -NSString *const FBSDKAppEventParameterProductCustomLabel1 = @"fb_product_custom_label_1"; -NSString *const FBSDKAppEventParameterProductCustomLabel2 = @"fb_product_custom_label_2"; -NSString *const FBSDKAppEventParameterProductCustomLabel3 = @"fb_product_custom_label_3"; -NSString *const FBSDKAppEventParameterProductCustomLabel4 = @"fb_product_custom_label_4"; -NSString *const FBSDKAppEventParameterProductAppLinkIOSUrl = @"fb_product_applink_ios_url"; -NSString *const FBSDKAppEventParameterProductAppLinkIOSAppStoreID = @"fb_product_applink_ios_app_store_id"; -NSString *const FBSDKAppEventParameterProductAppLinkIOSAppName = @"fb_product_applink_ios_app_name"; -NSString *const FBSDKAppEventParameterProductAppLinkIPhoneUrl = @"fb_product_applink_iphone_url"; -NSString *const FBSDKAppEventParameterProductAppLinkIPhoneAppStoreID = @"fb_product_applink_iphone_app_store_id"; -NSString *const FBSDKAppEventParameterProductAppLinkIPhoneAppName = @"fb_product_applink_iphone_app_name"; -NSString *const FBSDKAppEventParameterProductAppLinkIPadUrl = @"fb_product_applink_ipad_url"; -NSString *const FBSDKAppEventParameterProductAppLinkIPadAppStoreID = @"fb_product_applink_ipad_app_store_id"; -NSString *const FBSDKAppEventParameterProductAppLinkIPadAppName = @"fb_product_applink_ipad_app_name"; -NSString *const FBSDKAppEventParameterProductAppLinkAndroidUrl = @"fb_product_applink_android_url"; -NSString *const FBSDKAppEventParameterProductAppLinkAndroidPackage = @"fb_product_applink_android_package"; -NSString *const FBSDKAppEventParameterProductAppLinkAndroidAppName = @"fb_product_applink_android_app_name"; -NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneUrl = @"fb_product_applink_windows_phone_url"; -NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneAppID = @"fb_product_applink_windows_phone_app_id"; -NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneAppName = @"fb_product_applink_windows_phone_app_name"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel0 = @"fb_product_custom_label_0"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel1 = @"fb_product_custom_label_1"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel2 = @"fb_product_custom_label_2"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel3 = @"fb_product_custom_label_3"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel4 = @"fb_product_custom_label_4"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCategory = @"fb_product_category"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIOSUrl = @"fb_product_applink_ios_url"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIOSAppStoreID = @"fb_product_applink_ios_app_store_id"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIOSAppName = @"fb_product_applink_ios_app_name"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPhoneUrl = @"fb_product_applink_iphone_url"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPhoneAppStoreID = @"fb_product_applink_iphone_app_store_id"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPhoneAppName = @"fb_product_applink_iphone_app_name"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPadUrl = @"fb_product_applink_ipad_url"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPadAppStoreID = @"fb_product_applink_ipad_app_store_id"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPadAppName = @"fb_product_applink_ipad_app_name"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkAndroidUrl = @"fb_product_applink_android_url"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkAndroidPackage = @"fb_product_applink_android_package"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkAndroidAppName = @"fb_product_applink_android_app_name"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkWindowsPhoneUrl = @"fb_product_applink_windows_phone_url"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkWindowsPhoneAppID = @"fb_product_applink_windows_phone_app_id"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkWindowsPhoneAppName = @"fb_product_applink_windows_phone_app_name"; // // Public event parameter values // -NSString *const FBSDKAppEventParameterValueNo = @"0"; -NSString *const FBSDKAppEventParameterValueYes = @"1"; +FBSDKAppEventParameterValue FBSDKAppEventParameterValueNo = @"0"; +FBSDKAppEventParameterValue FBSDKAppEventParameterValueYes = @"1"; + +// +// Public event user data types +// + +FBSDKAppEventUserDataType FBSDKAppEventEmail = @"em"; +FBSDKAppEventUserDataType FBSDKAppEventFirstName = @"fn"; +FBSDKAppEventUserDataType FBSDKAppEventLastName = @"ln"; +FBSDKAppEventUserDataType FBSDKAppEventPhone = @"ph"; +FBSDKAppEventUserDataType FBSDKAppEventDateOfBirth = @"dob"; +FBSDKAppEventUserDataType FBSDKAppEventGender = @"ge"; +FBSDKAppEventUserDataType FBSDKAppEventCity = @"ct"; +FBSDKAppEventUserDataType FBSDKAppEventState = @"st"; +FBSDKAppEventUserDataType FBSDKAppEventZip = @"zp"; +FBSDKAppEventUserDataType FBSDKAppEventCountry = @"country"; // // Event names internal to this file // -NSString *const FBSDKAppEventNamePurchased = @"fb_mobile_purchase"; +FBSDKAppEventName FBSDKAppEventNameLoginViewUsage = @"fb_login_view_usage"; +FBSDKAppEventName FBSDKAppEventNameShareSheetLaunch = @"fb_share_sheet_launch"; +FBSDKAppEventName FBSDKAppEventNameShareSheetDismiss = @"fb_share_sheet_dismiss"; +FBSDKAppEventName FBSDKAppEventNameShareTrayDidLaunch = @"fb_share_tray_did_launch"; +FBSDKAppEventName FBSDKAppEventNameShareTrayDidSelectActivity = @"fb_share_tray_did_select_activity"; +FBSDKAppEventName FBSDKAppEventNamePermissionsUILaunch = @"fb_permissions_ui_launch"; +FBSDKAppEventName FBSDKAppEventNamePermissionsUIDismiss = @"fb_permissions_ui_dismiss"; +FBSDKAppEventName FBSDKAppEventNameFBDialogsPresentShareDialog = @"fb_dialogs_present_share"; +FBSDKAppEventName FBSDKAppEventNameFBDialogsPresentShareDialogPhoto = @"fb_dialogs_present_share_photo"; +FBSDKAppEventName FBSDKAppEventNameFBDialogsPresentShareDialogOG = @"fb_dialogs_present_share_og"; +FBSDKAppEventName FBSDKAppEventNameFBDialogsPresentLikeDialogOG = @"fb_dialogs_present_like_og"; +FBSDKAppEventName FBSDKAppEventNameFBDialogsPresentMessageDialog = @"fb_dialogs_present_message"; +FBSDKAppEventName FBSDKAppEventNameFBDialogsPresentMessageDialogPhoto = @"fb_dialogs_present_message_photo"; +FBSDKAppEventName FBSDKAppEventNameFBDialogsPresentMessageDialogOG = @"fb_dialogs_present_message_og"; -NSString *const FBSDKAppEventNameLoginViewUsage = @"fb_login_view_usage"; -NSString *const FBSDKAppEventNameShareSheetLaunch = @"fb_share_sheet_launch"; -NSString *const FBSDKAppEventNameShareSheetDismiss = @"fb_share_sheet_dismiss"; -NSString *const FBSDKAppEventNameShareTrayDidLaunch = @"fb_share_tray_did_launch"; -NSString *const FBSDKAppEventNameShareTrayDidSelectActivity = @"fb_share_tray_did_select_activity"; -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"; +FBSDKAppEventName 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"; +FBSDKAppEventName 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"; +FBSDKAppEventName 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"; +FBSDKAppEventName FBSDKAppEventNameFBSessionAuthStart = @"fb_mobile_login_start"; +FBSDKAppEventName FBSDKAppEventNameFBSessionAuthEnd = @"fb_mobile_login_complete"; +FBSDKAppEventName FBSDKAppEventNameFBSessionAuthMethodStart = @"fb_mobile_login_method_start"; +FBSDKAppEventName 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 FBSDKAppEventNameFBSDKLiveStreamingButtonImpression = @"fb_live_streaming_button_impression"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLikeButtonImpression = @"fb_like_button_impression"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLoginButtonImpression = @"fb_login_button_impression"; +FBSDKAppEventName FBSDKAppEventNameFBSDKSendButtonImpression = @"fb_send_button_impression"; +FBSDKAppEventName FBSDKAppEventNameFBSDKShareButtonImpression = @"fb_share_button_impression"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingButtonImpression = @"fb_live_streaming_button_impression"; -NSString *const FBSDKAppEventNameFBSDKSmartLoginService = @"fb_smart_login_service"; +FBSDKAppEventName FBSDKAppEventNameFBSDKSmartLoginService = @"fb_smart_login_service"; -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 FBSDKAppEventNameFBSDKLiveStreamingButtonDidTap = @"fb_live_streaming_button_did_tap"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLikeButtonDidTap = @"fb_like_button_did_tap"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLoginButtonDidTap = @"fb_login_button_did_tap"; +FBSDKAppEventName FBSDKAppEventNameFBSDKSendButtonDidTap = @"fb_send_button_did_tap"; +FBSDKAppEventName FBSDKAppEventNameFBSDKShareButtonDidTap = @"fb_share_button_did_tap"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingButtonDidTap = @"fb_live_streaming_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"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLikeControlDidDisable = @"fb_like_control_did_disable"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLikeControlDidLike = @"fb_like_control_did_like"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLikeControlDidPresentDialog = @"fb_like_control_did_present_dialog"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLikeControlDidTap = @"fb_like_control_did_tap"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLikeControlDidUnlike = @"fb_like_control_did_unlike"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLikeControlError = @"fb_like_control_error"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLikeControlImpression = @"fb_like_control_impression"; +FBSDKAppEventName 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"; +FBSDKAppEventName FBSDKAppEventNameFBSDKEventShareDialogResult = @"fb_dialog_share_result"; +FBSDKAppEventName FBSDKAppEventNameFBSDKEventMessengerShareDialogResult = @"fb_messenger_dialog_share_result"; +FBSDKAppEventName 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"; +FBSDKAppEventName FBSDKAppEventNameFBSDKEventShareDialogShow = @"fb_dialog_share_show"; +FBSDKAppEventName FBSDKAppEventNameFBSDKEventMessengerShareDialogShow = @"fb_messenger_dialog_share_show"; +FBSDKAppEventName FBSDKAppEventNameFBSDKEventAppInviteShareDialogShow = @"fb_app_invite_share_show"; -NSString *const FBSDKAppEventNameFBSessionFASLoginDialogResult = @"fb_mobile_login_fas_dialog_result"; +FBSDKAppEventName FBSDKAppEventNameFBSessionFASLoginDialogResult = @"fb_mobile_login_fas_dialog_result"; -NSString *const FBSDKAppEventNameFBSDKLiveStreamingStart = @"fb_sdk_live_streaming_start"; -NSString *const FBSDKAppEventNameFBSDKLiveStreamingStop = @"fb_sdk_live_streaming_stop"; -NSString *const FBSDKAppEventNameFBSDKLiveStreamingPause = @"fb_sdk_live_streaming_pause"; -NSString *const FBSDKAppEventNameFBSDKLiveStreamingResume = @"fb_sdk_live_streaming_resume"; -NSString *const FBSDKAppEventNameFBSDKLiveStreamingError = @"fb_sdk_live_streaming_error"; -NSString *const FBSDKAppEventNameFBSDKLiveStreamingUpdateStatus = @"fb_sdk_live_streaming_update_status"; -NSString *const FBSDKAppEventNameFBSDKLiveStreamingVideoID = @"fb_sdk_live_streaming_video_id"; -NSString *const FBSDKAppEventNameFBSDKLiveStreamingMic = @"fb_sdk_live_streaming_mic"; -NSString *const FBSDKAppEventNameFBSDKLiveStreamingCamera = @"fb_sdk_live_streaming_camera"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingStart = @"fb_sdk_live_streaming_start"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingStop = @"fb_sdk_live_streaming_stop"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingPause = @"fb_sdk_live_streaming_pause"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingResume = @"fb_sdk_live_streaming_resume"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingError = @"fb_sdk_live_streaming_error"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingUpdateStatus = @"fb_sdk_live_streaming_update_status"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingVideoID = @"fb_sdk_live_streaming_video_id"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingMic = @"fb_sdk_live_streaming_mic"; +FBSDKAppEventName FBSDKAppEventNameFBSDKLiveStreamingCamera = @"fb_sdk_live_streaming_camera"; // Event Parameters internal to this file NSString *const FBSDKAppEventParameterDialogOutcome = @"fb_dialog_outcome"; @@ -220,6 +238,7 @@ NSString *const FBSDKAppEventParameterShareTrayResult = @"fb_share_t NSString *const FBSDKAppEventParameterLogTime = @"_logTime"; NSString *const FBSDKAppEventParameterEventName = @"_eventName"; NSString *const FBSDKAppEventParameterImplicitlyLogged = @"_implicitlyLogged"; +NSString *const FBSDKAppEventParameterInBackground = @"_inBackground"; NSString *const FBSDKAppEventParameterLiveStreamingPrevStatus = @"live_streaming_prev_status"; NSString *const FBSDKAppEventParameterLiveStreamingStatus = @"live_streaming_status"; @@ -228,18 +247,18 @@ NSString *const FBSDKAppEventParameterLiveStreamingVideoID = @"live_stream NSString *const FBSDKAppEventParameterLiveStreamingMicEnabled = @"live_streaming_mic_enabled"; NSString *const FBSDKAppEventParameterLiveStreamingCameraEnabled = @"live_streaming_camera_enabled"; -NSString *const FBSDKAppEventParameterProductItemID = @"fb_product_item_id"; -NSString *const FBSDKAppEventParameterProductAvailability = @"fb_product_availability"; -NSString *const FBSDKAppEventParameterProductCondition = @"fb_product_condition"; -NSString *const FBSDKAppEventParameterProductDescription = @"fb_product_description"; -NSString *const FBSDKAppEventParameterProductImageLink = @"fb_product_image_link"; -NSString *const FBSDKAppEventParameterProductLink = @"fb_product_link"; -NSString *const FBSDKAppEventParameterProductTitle = @"fb_product_title"; -NSString *const FBSDKAppEventParameterProductGTIN = @"fb_product_gtin"; -NSString *const FBSDKAppEventParameterProductMPN = @"fb_product_mpn"; -NSString *const FBSDKAppEventParameterProductBrand = @"fb_product_brand"; -NSString *const FBSDKAppEventParameterProductPriceAmount = @"fb_product_price_amount"; -NSString *const FBSDKAppEventParameterProductPriceCurrency = @"fb_product_price_currency"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductItemID = @"fb_product_item_id"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAvailability = @"fb_product_availability"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCondition = @"fb_product_condition"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductDescription = @"fb_product_description"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductImageLink = @"fb_product_image_link"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductLink = @"fb_product_link"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductTitle = @"fb_product_title"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductGTIN = @"fb_product_gtin"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductMPN = @"fb_product_mpn"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductBrand = @"fb_product_brand"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductPriceAmount = @"fb_product_price_amount"; +FBSDKAppEventParameterProduct FBSDKAppEventParameterProductPriceCurrency = @"fb_product_price_currency"; // Event parameter values internal to this file NSString *const FBSDKAppEventsDialogOutcomeValue_Completed = @"Completed"; @@ -265,6 +284,8 @@ NSString *const FBSDKAppEventsDialogShareContentTypeMessengerMediaTemplate NSString *const FBSDKAppEventsDialogShareContentTypeMessengerOpenGraphMusicTemplate = @"OpenGraphMusicTemplate"; NSString *const FBSDKAppEventsDialogShareContentTypeUnknown = @"Unknown"; +NSString *const FBSDKGateKeeperAppEventsKillSwitch = @"app_events_killswitch"; + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 NSNotificationName const FBSDKAppEventsLoggingResultNotification = @"com.facebook.sdk:FBSDKAppEventsLoggingResultNotification"; @@ -283,8 +304,8 @@ NSString *const FBSDKAppEventsOverrideAppIDBundleKey = @"FacebookLoggingOverride // Activities Endpoint Parameter static NSString *const FBSDKActivitesParameterPushDeviceToken = @"device_token"; // Event Names -static NSString *const FBSDKAppEventNamePushTokenObtained = @"fb_mobile_obtain_push_token"; -static NSString *const FBSDKAppEventNamePushOpened = @"fb_mobile_push_opened"; +static FBSDKAppEventName FBSDKAppEventNamePushTokenObtained = @"fb_mobile_obtain_push_token"; +static FBSDKAppEventName FBSDKAppEventNamePushOpened = @"fb_mobile_push_opened"; // Event Parameter static NSString *const FBSDKAppEventParameterPushCampaign = @"fb_push_campaign"; static NSString *const FBSDKAppEventParameterPushAction = @"fb_push_action"; @@ -301,7 +322,6 @@ NSString *const FBSDKAppEventsWKWebViewMessagesEventKey = @"event"; NSString *const FBSDKAppEventsWKWebViewMessagesParamsKey = @"params"; NSString *const FBSDKAPPEventsWKWebViewMessagesProtocolKey = @"fbmq-0.1"; - #define NUM_LOG_EVENTS_TO_TRY_TO_FLUSH_AFTER 100 #define FLUSH_PERIOD_IN_SECONDS 15 #define USER_ID_USER_DEFAULTS_KEY @"com.facebook.sdk.appevents.userid" @@ -309,11 +329,6 @@ NSString *const FBSDKAPPEventsWKWebViewMessagesProtocolKey = @"fbmq-0.1"; #define FBUnityUtilityClassName "FBUnityUtility" #define FBUnityUtilityUpdateBindingsSelector @"triggerUpdateBindings:" -#define UNINSTALL_TRACKING_DEVICE_ID_KEY @"device_id" -#define UNINSTALL_TRACKING_PLATFORM_KEY @"platform" -#define UNINSTALL_TRACKING_DEVICE_TOKEN_KEY @"device_token" -#define UNINSTALL_TRACKING_TOKEN_ENDPOINT @"app_push_device_token" - static NSString *g_overrideAppID = nil; @interface FBSDKAppEvents () @@ -346,16 +361,17 @@ static NSString *g_overrideAppID = nil; { if (self == [FBSDKAppEvents class]) { g_overrideAppID = [[[NSBundle mainBundle] objectForInfoDictionaryKey:FBSDKAppEventsOverrideAppIDBundleKey] copy]; + [FBSDKBasicUtility anonymousID]; } } -- (FBSDKAppEvents *)init +- (instancetype)init { self = [super init]; if (self) { _flushBehavior = FBSDKAppEventsFlushBehaviorAuto; - typeof(self) __weak weakSelf = self; + __weak FBSDKAppEvents *weakSelf = self; self.flushTimer = [FBSDKUtility startGCDTimerWithInterval:FLUSH_PERIOD_IN_SECONDS block:^{ [weakSelf flushTimerFired:nil]; @@ -397,21 +413,21 @@ static NSString *g_overrideAppID = nil; #pragma mark - Public Methods -+ (void)logEvent:(NSString *)eventName ++ (void)logEvent:(FBSDKAppEventName)eventName { [FBSDKAppEvents logEvent:eventName - parameters:nil]; + parameters:@{}]; } -+ (void)logEvent:(NSString *)eventName ++ (void)logEvent:(FBSDKAppEventName)eventName valueToSum:(double)valueToSum { [FBSDKAppEvents logEvent:eventName valueToSum:valueToSum - parameters:nil]; + parameters:@{}]; } -+ (void)logEvent:(NSString *)eventName ++ (void)logEvent:(FBSDKAppEventName)eventName parameters:(NSDictionary *)parameters { [FBSDKAppEvents logEvent:eventName @@ -420,7 +436,7 @@ static NSString *g_overrideAppID = nil; accessToken:nil]; } -+ (void)logEvent:(NSString *)eventName ++ (void)logEvent:(FBSDKAppEventName)eventName valueToSum:(double)valueToSum parameters:(NSDictionary *)parameters { @@ -430,7 +446,7 @@ static NSString *g_overrideAppID = nil; accessToken:nil]; } -+ (void)logEvent:(NSString *)eventName ++ (void)logEvent:(FBSDKAppEventName)eventName valueToSum:(NSNumber *)valueToSum parameters:(NSDictionary *)parameters accessToken:(FBSDKAccessToken *)accessToken @@ -447,7 +463,7 @@ static NSString *g_overrideAppID = nil; { [FBSDKAppEvents logPurchase:purchaseAmount currency:currency - parameters:nil]; + parameters:@{}]; } + (void)logPurchase:(double)purchaseAmount @@ -494,7 +510,7 @@ static NSString *g_overrideAppID = nil; + (void)logPushNotificationOpen:(NSDictionary *)payload { - [self logPushNotificationOpen:payload action:nil]; + [self logPushNotificationOpen:payload action:@""]; } + (void)logPushNotificationOpen:(NSDictionary *)payload action:(NSString *)action @@ -511,7 +527,7 @@ static NSString *g_overrideAppID = nil; } NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithObject:campaign forKey:FBSDKAppEventParameterPushCampaign]; - if (action) { + if (action && action.length > 0) { parameters[FBSDKAppEventParameterPushAction] = action; } [self logEvent:FBSDKAppEventNamePushOpened parameters:parameters]; @@ -532,7 +548,8 @@ static NSString *g_overrideAppID = nil; gtin:(NSString *)gtin mpn:(NSString *)mpn brand:(NSString *)brand - parameters:(NSDictionary *)parameters { + parameters:(NSDictionary *)parameters +{ if (itemID == nil) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:@"itemID cannot be null"]; @@ -634,7 +651,6 @@ static NSString *g_overrideAppID = nil; // when appropriate, result in logging an "activated app" and "deactivated app" (for the // previous session) App Event. [FBSDKTimeSpentData restore:YES]; - [FBSDKUserDataStore initStore]; } + (void)setPushNotificationsDeviceToken:(NSData *)deviceToken @@ -713,75 +729,82 @@ static NSString *g_overrideAppID = nil; return [[self class] singleton]->_userID; } -+ (void)setUserData:(NSDictionary*)userData ++ (void)setUserEmail:(nullable NSString *)email + firstName:(nullable NSString *)firstName + lastName:(nullable NSString *)lastName + phone:(nullable NSString *)phone + dateOfBirth:(nullable NSString *)dateOfBirth + gender:(nullable NSString *)gender + city:(nullable NSString *)city + state:(nullable NSString *)state + zip:(nullable NSString *)zip + country:(nullable NSString *)country { - [FBSDKUserDataStore setUserDataAndHash:userData]; -} - -+ (void)setUserEmail:(NSString *)email - firstName:(NSString *)firstName - lastName:(NSString *)lastName - phone:(NSString *)phone - dateOfBirth:(NSString *)dateOfBirth - gender:(NSString *)gender - city:(NSString *)city - state:(NSString *)state - zip:(NSString *)zip - country:(NSString *)country -{ - [FBSDKUserDataStore setUserDataAndHash:email - firstName:firstName - lastName:lastName - phone:phone - dateOfBirth:dateOfBirth - gender:gender - city:city - state:state - zip:zip - country:country]; + [FBSDKUserDataStore setAndHashUserEmail:email + firstName:firstName + lastName:lastName + phone:phone + dateOfBirth:dateOfBirth + gender:gender + city:city + state:state + zip:zip + country:country]; } + (NSString*)getUserData { - return [FBSDKUserDataStore getHashedUserData]; + return [FBSDKUserDataStore getHashedData]; } + (void)clearUserData { - [FBSDKUserDataStore setUserDataAndHash:nil - firstName:nil - lastName:nil - phone:nil - dateOfBirth:nil - gender:nil - city:nil - state:nil - zip:nil - country:nil]; + [FBSDKUserDataStore setAndHashUserEmail:nil + firstName:nil + lastName:nil + phone:nil + dateOfBirth:nil + gender:nil + city:nil + state:nil + zip:nil + country:nil]; } -+ (void)updateUserProperties:(NSDictionary *)properties handler:(FBSDKGraphRequestHandler)handler ++ (void)setUserData:(nullable NSString *)data + forType:(FBSDKAppEventUserDataType)type +{ + [FBSDKUserDataStore setAndHashData:data forType:type]; +} + ++ (void)clearUserDataForType:(FBSDKAppEventUserDataType)type +{ + [FBSDKUserDataStore clearDataForType:type]; +} + + ++ (void)updateUserProperties:(NSDictionary *)properties handler:(FBSDKGraphRequestBlock)handler { NSString *userID = [[self class] userID]; if (userID.length == 0) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:@"Missing [FBSDKAppEvents userID] for [FBSDKAppEvents updateUserProperties:]"]; - NSError *error = [NSError fbRequiredArgumentErrorWithName:@"userID" message:@"Missing [FBSDKAppEvents userID] for [FBSDKAppEvents updateUserProperties:]"]; + NSError *error = [FBSDKError requiredArgumentErrorWithName:@"userID" message:@"Missing [FBSDKAppEvents userID] for [FBSDKAppEvents updateUserProperties:]"]; if (handler) { handler(nil, nil, error); } return; } NSMutableDictionary *dataDictionary = [NSMutableDictionary dictionaryWithCapacity:3]; - dataDictionary[@"user_unique_id"] = [FBSDKAppEvents userID]; - [FBSDKInternalUtility dictionary:dataDictionary setObject:[FBSDKAppEventsUtility advertiserID] forKey:@"advertiser_id"]; - [FBSDKInternalUtility dictionary:dataDictionary setObject:properties forKey:@"custom_data"]; + [FBSDKBasicUtility dictionary:dataDictionary setObject:[FBSDKAppEvents userID] forKey:@"user_unique_id"]; + [FBSDKBasicUtility dictionary:dataDictionary setObject:[FBSDKAppEventsUtility advertiserID] forKey:@"advertiser_id"]; + [FBSDKBasicUtility dictionary:dataDictionary setObject:properties forKey:@"custom_data"]; NSError *error; __block NSError *invalidObjectError; - NSString *dataJSONString = [FBSDKInternalUtility JSONStringForObject:@[dataDictionary] error:&error invalidObjectHandler:^id(id object, BOOL *stop) { + NSString *dataJSONString = [FBSDKBasicUtility JSONStringForObject:@[dataDictionary] error:&error invalidObjectHandler:^id(id object, BOOL *stop) { *stop = YES; - invalidObjectError = [NSError fbUnknownErrorWithMessage:@"The values in the properties dictionary must be NSStrings or NSNumbers"]; + invalidObjectError = [FBSDKError unknownErrorWithMessage:@"The values in the properties dictionary must be NSStrings or NSNumbers"]; return nil; }]; if (!error) { @@ -798,7 +821,7 @@ static NSString *g_overrideAppID = nil; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/user_properties", [[self singleton] appID]] parameters:params tokenString:[FBSDKAccessToken currentAccessToken].tokenString - HTTPMethod:@"POST" + HTTPMethod:FBSDKHTTPMethodPOST flags:FBSDKGraphRequestFlagDisableErrorRecovery | FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagSkipClientToken @@ -864,6 +887,74 @@ static NSString *g_overrideAppID = nil; #pragma mark - Internal Methods ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + isImplicitlyLogged:(BOOL)isImplicitlyLogged; +{ + [FBSDKAppEvents logInternalEvent:eventName + parameters:@{} + isImplicitlyLogged:isImplicitlyLogged]; +} + ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + valueToSum:(double)valueToSum + isImplicitlyLogged:(BOOL)isImplicitlyLogged +{ + [FBSDKAppEvents logInternalEvent:eventName + valueToSum:valueToSum + parameters:@{} + isImplicitlyLogged:isImplicitlyLogged]; +} + ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + parameters:(NSDictionary *)parameters + isImplicitlyLogged:(BOOL)isImplicitlyLogged +{ + [FBSDKAppEvents logInternalEvent:eventName + valueToSum:nil + parameters:parameters + isImplicitlyLogged:isImplicitlyLogged + accessToken:nil]; +} + ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + parameters:(NSDictionary *)parameters + isImplicitlyLogged:(BOOL)isImplicitlyLogged + accessToken:(FBSDKAccessToken *)accessToken +{ + [FBSDKAppEvents logInternalEvent:eventName + valueToSum:nil + parameters:parameters + isImplicitlyLogged:isImplicitlyLogged + accessToken:accessToken]; +} + ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + valueToSum:(double)valueToSum + parameters:(NSDictionary *)parameters + isImplicitlyLogged:(BOOL)isImplicitlyLogged +{ + [FBSDKAppEvents logInternalEvent:eventName + valueToSum:@(valueToSum) + parameters:parameters + isImplicitlyLogged:isImplicitlyLogged + accessToken:nil]; +} + ++ (void)logInternalEvent:(NSString *)eventName + valueToSum:(NSNumber *)valueToSum + parameters:(NSDictionary *)parameters + isImplicitlyLogged:(BOOL)isImplicitlyLogged + accessToken:(FBSDKAccessToken *)accessToken +{ + if ([FBSDKSettings isAutoLogAppEventsEnabled]) { + [[FBSDKAppEvents singleton] instanceLogEvent:eventName + valueToSum:valueToSum + parameters:parameters + isImplicitlyLogged:isImplicitlyLogged + accessToken:accessToken]; + } +} + + (void)logImplicitEvent:(NSString *)eventName valueToSum:(NSNumber *)valueToSum parameters:(NSDictionary *)parameters @@ -882,7 +973,7 @@ static NSString *g_overrideAppID = nil; static FBSDKAppEvents *shared = nil; dispatch_once(&pred, ^{ - shared = [[FBSDKAppEvents alloc] init]; + shared = [[self alloc] init]; }); return shared; } @@ -931,7 +1022,7 @@ static NSString *g_overrideAppID = nil; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:path parameters:params tokenString:nil - HTTPMethod:@"POST" + HTTPMethod:FBSDKHTTPMethodPOST flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { @@ -947,9 +1038,10 @@ static NSString *g_overrideAppID = nil; #if !TARGET_OS_TV - (void)enableCodelessEvents { if (_serverConfiguration.isCodelessEventsEnabled) { + [FBSDKCodelessIndexer enable]; + if (!_eventBindingManager) { _eventBindingManager = [[FBSDKEventBindingManager alloc] init]; - [_eventBindingManager start]; } if ([FBSDKInternalUtility isUnity]) { @@ -963,18 +1055,28 @@ static NSString *g_overrideAppID = nil; #endif // app events can use a server configuration up to 24 hours old to minimize network traffic. -- (void)fetchServerConfiguration:(void (^)(void))callback +- (void)fetchServerConfiguration:(FBSDKCodeBlock)callback { [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *error) { self->_serverConfiguration = serverConfiguration; - if (self->_serverConfiguration.implicitPurchaseLoggingEnabled) { + if (self->_serverConfiguration.implicitPurchaseLoggingEnabled && [FBSDKSettings isAutoLogAppEventsEnabled]) { [FBSDKPaymentObserver startObservingTransactions]; } else { [FBSDKPaymentObserver stopObservingTransactions]; } #if !TARGET_OS_TV - [self enableCodelessEvents]; + [FBSDKFeatureManager checkFeature:FBSDKFeatureCodelessEvents completionBlock:^(BOOL enabled) { + if (enabled) { + [self enableCodelessEvents]; + } + }]; + [FBSDKFeatureManager checkFeature:FBSDKFeatureAAM completionBlock:^(BOOL enabled) { + if (enabled) { + // Enable AAM + [FBSDKMetadataIndexer enable]; + } + }]; #endif if (callback) { callback(); @@ -982,12 +1084,21 @@ static NSString *g_overrideAppID = nil; }]; } -- (void)instanceLogEvent:(NSString *)eventName +- (void)instanceLogEvent:(FBSDKAppEventName)eventName valueToSum:(NSNumber *)valueToSum parameters:(NSDictionary *)parameters isImplicitlyLogged:(BOOL)isImplicitlyLogged accessToken:(FBSDKAccessToken *)accessToken { + // Kill events if kill-switch is enabled + if ([FBSDKGateKeeperManager boolForKey:FBSDKGateKeeperAppEventsKillSwitch + defaultValue:NO]) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"FBSDKAppEvents: KillSwitch is enabled and fail to log app event: %@", + eventName]; + return; + } + if (isImplicitlyLogged && _serverConfiguration && !_serverConfiguration.isImplicitLoggingSupported) { return; } @@ -995,12 +1106,7 @@ static NSString *g_overrideAppID = nil; if (!isImplicitlyLogged && !_explicitEventsLoggedYet) { _explicitEventsLoggedYet = YES; } - - __block BOOL failed = NO; - - if (![FBSDKAppEventsUtility validateIdentifier:eventName]) { - failed = YES; - } + __block BOOL failed = ![FBSDKAppEventsUtility validateIdentifier:eventName]; // Make sure parameter dictionary is well formed. Log and exit if not. [parameters enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { @@ -1022,32 +1128,43 @@ static NSString *g_overrideAppID = nil; return; } - NSMutableDictionary *eventDictionary = [NSMutableDictionary dictionaryWithDictionary:parameters]; + parameters = [FBSDKRestrictiveDataFilterManager processParameters:parameters + eventName:eventName]; + + NSMutableDictionary *eventDictionary = [NSMutableDictionary dictionaryWithDictionary:parameters]; eventDictionary[FBSDKAppEventParameterEventName] = eventName; if (!eventDictionary[FBSDKAppEventParameterLogTime]) { eventDictionary[FBSDKAppEventParameterLogTime] = @([FBSDKAppEventsUtility unixTimeNow]); } - [FBSDKInternalUtility dictionary:eventDictionary setObject:valueToSum forKey:@"_valueToSum"]; + [FBSDKBasicUtility dictionary:eventDictionary setObject:valueToSum forKey:@"_valueToSum"]; if (isImplicitlyLogged) { eventDictionary[FBSDKAppEventParameterImplicitlyLogged] = @"1"; } NSString *currentViewControllerName; + UIApplicationState applicationState; 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; + UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController; + vc = vc.presentedViewController ?: vc; if (vc) { currentViewControllerName = [[vc class] description]; } else { currentViewControllerName = @"no_ui"; } + applicationState = [UIApplication sharedApplication].applicationState; } else { currentViewControllerName = @"off_thread"; + applicationState = [FBSDKApplicationDelegate applicationState]; } eventDictionary[@"_ui"] = currentViewControllerName; + if (applicationState == UIApplicationStateBackground) { + eventDictionary[FBSDKAppEventParameterInBackground] = @"1"; + } + NSString *tokenString = [FBSDKAppEventsUtility tokenStringToUseFor:accessToken]; NSString *appID = [self appID]; @@ -1135,7 +1252,7 @@ static NSString *g_overrideAppID = nil; [FBSDKAppEventsUtility ensureOnMainThread:NSStringFromSelector(_cmd) className:NSStringFromClass([self class])]; [self fetchServerConfiguration:^(void) { - NSString *receipt_data = [appEventsState extractReceiptData]; + NSString *receipt_data = appEventsState.extractReceiptData; NSString *encodedEvents = [appEventsState JSONStringForEvents:self->_serverConfiguration.implicitLoggingEnabled]; if (!encodedEvents) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents @@ -1181,7 +1298,7 @@ static NSString *g_overrideAppID = nil; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/activities", appEventsState.appID] parameters:postParameters tokenString:appEventsState.tokenString - HTTPMethod:@"POST" + HTTPMethod:FBSDKHTTPMethodPOST flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { @@ -1297,7 +1414,7 @@ static NSString *g_overrideAppID = nil; // 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]) { + if ([FBSDKAppEventsUtility advertisingTrackingStatus] == FBSDKAdvertisingTrackingDisallowed || FBSDKSettings.shouldLimitEventAndDataUsage) { return nil; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.h similarity index 91% rename from Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.h index 13890a6..7377196 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.h @@ -18,10 +18,12 @@ #import -#import "FBSDKLikeControl.h" +NS_ASSUME_NONNULL_BEGIN -@interface FBSDKLikeControl () +@interface FBSDKMetadataIndexer : NSObject -- (NSDictionary *)analyticsParameters; ++ (void)enable; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.m new file mode 100644 index 0000000..c6c80d2 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.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 "FBSDKMetadataIndexer.h" + +#import +#import +#import + +#import + +#import + +static const int FBSDKMetadataIndexerMaxTextLength = 100; +static const int FBSDKMetadataIndexerMaxIndicatorLength = 100; +static const int FBSDKMetadataIndexerMaxValue = 5; + +static NSString * const FIELD_K = @"k"; +static NSString * const FIELD_V = @"v"; +static NSString * const FIELD_K_DELIMITER = @","; + +FBSDKAppEventUserDataType FBSDKAppEventRule1 = @"r1"; +FBSDKAppEventUserDataType FBSDKAppEventRule2 = @"r2"; + +static NSArray *FBSDKMetadataIndexerKeys; +static NSMutableDictionary *> *_rules; +static NSMutableDictionary *> *_store; +static dispatch_queue_t serialQueue; + +@implementation FBSDKMetadataIndexer + ++ (void)initialize +{ + FBSDKMetadataIndexerKeys = @[FBSDKAppEventRule1, FBSDKAppEventRule2]; + serialQueue = dispatch_queue_create("com.facebook.appevents.MetadataIndexer", DISPATCH_QUEUE_SERIAL); +} + ++ (void)enable +{ + if (FBSDKAdvertisingTrackingAllowed != [FBSDKAppEventsUtility advertisingTrackingStatus]) { + return; + } + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *error) { + if (error) { + return; + } + [FBSDKMetadataIndexer setupWithRules:serverConfiguration.AAMRules]; + }]; +} + ++ (void)setupWithRules:(NSDictionary * _Nullable)rules +{ + if (0 == rules.count) { + return; + } + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [FBSDKMetadataIndexer constructRules:rules]; + [FBSDKMetadataIndexer initStore]; + + BOOL isEnabled = NO; + for (NSString *key in FBSDKMetadataIndexerKeys) { + BOOL isRuleEnabled = (nil != [_rules objectForKey:key]); + if (isRuleEnabled) { + isEnabled = YES; + } + if (!isRuleEnabled) { + [_store removeObjectForKey:key]; + [FBSDKUserDataStore setHashData:nil forType:key]; + } + } + + if (isEnabled) { + [FBSDKMetadataIndexer setupMetadataIndexing]; + } + }); +} + ++ (void)initStore +{ + _store = [[NSMutableDictionary alloc] init]; + for (NSString *key in FBSDKMetadataIndexerKeys) { + NSString *data = [FBSDKUserDataStore getHashedDataForType:key]; + if (data.length > 0) { + _store[key] = [NSMutableArray arrayWithArray:[data componentsSeparatedByString:FIELD_K_DELIMITER]]; + } + } + + for (NSString *key in FBSDKMetadataIndexerKeys) { + if (!_store[key]) { + _store[key] = [[NSMutableArray alloc] init]; + } + } +} + ++ (void)constructRules:(NSDictionary * _Nullable)rules +{ + if (!_rules) { + _rules = [[NSMutableDictionary alloc] init]; + } + + for (NSString *key in rules) { + NSDictionary *value = [FBSDKTypeUtility dictionaryValue:rules[key]]; + if (value && value[FIELD_K].length > 0 && value[FIELD_V].length > 0) { + _rules[key] = value; + } + } +} + ++ (void)setupMetadataIndexing +{ + void (^block)(UIView *) = ^(UIView *view) { + // Indexing when the view is removed from window and conforms to UITextInput, and skip UIFieldEditor, which is an internval view of UITextField + if (![view window] && ![NSStringFromClass([view class]) isEqualToString:@"UIFieldEditor"] && [view conformsToProtocol:@protocol(UITextInput)]) { + NSString *text = [FBSDKViewHierarchy getText:view]; + NSString *placeholder = [FBSDKViewHierarchy getHint:view]; + BOOL secureTextEntry = [self checkSecureTextEntry:view]; + NSArray *labels = [self getLabelsOfView:view]; + UIKeyboardType keyboardType = [self getKeyboardType:view]; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { + [self getMetadataWithText:[self normalizedValue:text] + placeholder:[self normalizeField:placeholder] + labels:labels + secureTextEntry:secureTextEntry + inputType:keyboardType]; + }); + } + }; + + [FBSDKSwizzler swizzleSelector:@selector(didMoveToWindow) onClass:[UIView class] withBlock:block named:@"metadataIndexingUIView"]; + + // iOS 12: UITextField implements didMoveToWindow without calling parent implementation + if (@available(iOS 12, *)) { + [FBSDKSwizzler swizzleSelector:@selector(didMoveToWindow) onClass:[UITextField class] withBlock:block named:@"metadataIndexingUITextField"]; + } else { + [FBSDKSwizzler swizzleSelector:@selector(didMoveToWindow) onClass:[UIControl class] withBlock:block named:@"metadataIndexingUIControl"]; + } +} + ++ (NSArray *)getSiblingViewsOfView:(UIView *)view +{ + NSObject *parent = [FBSDKViewHierarchy getParent:view]; + if (parent) { + NSArray *views = [FBSDKViewHierarchy getChildren:parent]; + if (views) { + NSMutableArray *siblings = [NSMutableArray arrayWithArray:views]; + [siblings removeObject:view]; + return [siblings copy]; + } + } + return nil; +} + ++ (NSArray *)getLabelsOfView:(UIView *)view +{ + NSMutableArray *labels = [[NSMutableArray alloc] init]; + + NSString *placeholder = [self normalizeField:[FBSDKViewHierarchy getHint:view]]; + if (placeholder) { + [labels addObject:placeholder]; + } + + NSArray *siblingViews = [self getSiblingViewsOfView:view]; + for (id sibling in siblingViews) { + if ([sibling isKindOfClass:[UILabel class]]) { + NSString *text = [self normalizeField:[FBSDKViewHierarchy getText:sibling]]; + if (text) { + [labels addObject:text]; + } + } + } + return [labels copy]; +} + ++ (BOOL)checkSecureTextEntry:(UIView *)view +{ + if ([view isKindOfClass:[UITextField class]]) { + return ((UITextField *)view).secureTextEntry; + } + if ([view isKindOfClass:[UITextView class]]) { + return ((UITextView *)view).secureTextEntry; + } + + return NO; +} + ++ (UIKeyboardType)getKeyboardType:(UIView *)view +{ + if ([view isKindOfClass:[UITextField class]]) { + return ((UITextField *)view).keyboardType; + } + if ([view isKindOfClass:[UITextView class]]) { + return ((UITextView *)view).keyboardType; + } + + return UIKeyboardTypeDefault; +} + ++ (void)getMetadataWithText:(NSString *)text + placeholder:(NSString *)placeholder + labels:(NSArray *)labels + secureTextEntry:(BOOL)secureTextEntry + inputType:(UIKeyboardType)inputType +{ + if (secureTextEntry || + [placeholder containsString:@"password"] || + text.length == 0 || + text.length > FBSDKMetadataIndexerMaxTextLength || + placeholder.length >= FBSDKMetadataIndexerMaxIndicatorLength) { + return; + } + + for (NSString *key in _rules) { + NSDictionary *rule = _rules[key]; + BOOL isRuleKMatched = [self checkMetadataHint:placeholder matchRuleK:rule[FIELD_K]] + || [self checkMetadataLabels:labels matchRuleK:rule[FIELD_K]]; + BOOL isRuleVMatched = [self checkMetadataText:text matchRuleV:rule[FIELD_V]]; + if (isRuleKMatched && isRuleVMatched) { + [FBSDKMetadataIndexer checkAndAppendData:text forKey:key]; + } + } +} + +#pragma mark - Helper Methods + ++ (void)checkAndAppendData:(NSString *)data + forKey:(NSString *)key +{ + NSString *hashData = [FBSDKUtility SHA256Hash:data]; + dispatch_async(serialQueue, ^{ + if (hashData.length == 0 || [_store[key] containsObject:hashData]) { + return; + } + + while (_store[key].count >= FBSDKMetadataIndexerMaxValue) { + [_store[key] removeObjectAtIndex:0]; + } + [_store[key] addObject:hashData]; + [FBSDKUserDataStore setHashData:[_store[key] componentsJoinedByString:@","] + forType:key]; + }); +} + ++ (BOOL)checkMetadataLabels:(NSArray *)labels + matchRuleK:(NSString *)ruleK +{ + for (NSString *label in labels) { + if ([self checkMetadataHint:label matchRuleK:ruleK]) { + return YES; + } + } + return NO; +} + ++ (BOOL)checkMetadataHint:(NSString *)hint + matchRuleK:(NSString *)ruleK +{ + if (hint.length > 0 && ruleK) { + NSArray *items = [ruleK componentsSeparatedByString:@","]; + for (NSString *item in items) { + if ([hint containsString:item]) { + return YES; + } + } + } + return NO; +} + ++ (BOOL)checkMetadataText:(NSString *)text + matchRuleV:(NSString *)ruleV +{ + if (text.length > 0 && ruleV) { + NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:ruleV + options:NSRegularExpressionCaseInsensitive + error:nil]; + NSUInteger matches = [regex numberOfMatchesInString:text options:0 range:NSMakeRange(0, text.length)]; + + NSString *prunedText = [[text componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"+- ()."]] componentsJoinedByString:@""]; + NSUInteger prunedMatches = [regex numberOfMatchesInString:prunedText options:0 range:NSMakeRange(0, prunedText.length)]; + + return matches > 0 || prunedMatches > 0; + } + return NO; +} + ++ (NSString *)normalizeField:(NSString *)field +{ + if (!field) { + return nil; + } + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[_-]|\\s" + options:NSRegularExpressionCaseInsensitive + error:nil]; + return [regex stringByReplacingMatchesInString:field + options:0 + range:NSMakeRange(0, field.length) + withTemplate:@""].lowercaseString; +} + ++ (NSString *)normalizedValue:(NSString *)value +{ + if (!value) { + return nil; + } + return [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]].lowercaseString; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessIndexer.h similarity index 86% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessIndexer.h index fcc4f42..d11a6bb 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessIndexer.h @@ -18,10 +18,17 @@ #import -typedef void(^FBSDKCodelessSettingLoadBlock)(BOOL isCodelessSetupEnabled, NSError *error); +NS_ASSUME_NONNULL_BEGIN +typedef void(^FBSDKCodelessSettingLoadBlock)(BOOL isCodelessSetupEnabled, NSError *_Nullable error); + +NS_SWIFT_NAME(CodelessIndexer) @interface FBSDKCodelessIndexer : NSObject -+ (NSString *)extInfo; +@property (class, nonatomic, copy, readonly) NSString *extInfo; + ++ (void)enable; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessIndexer.m similarity index 94% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessIndexer.m index 60ff531..d891432 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessIndexer.m @@ -24,16 +24,16 @@ #import +#import #import #import -#import "FBSDKCoreKit+Internal.h" - @implementation FBSDKCodelessIndexer static BOOL _isCodelessIndexing; static BOOL _isCheckingSession; static BOOL _isCodelessIndexingEnabled; +static BOOL _isGestureSet; static NSMutableDictionary *_codelessSetting; static const NSTimeInterval kTimeout = 4.0; @@ -42,8 +42,11 @@ static NSString *_deviceSessionID; static NSTimer *_appIndexingTimer; static NSString *_lastTreeHash; -+ (void)load ++ (void)enable { + if (_isGestureSet) { + return; + } #if TARGET_OS_SIMULATOR [self setupGesture]; #else @@ -138,6 +141,7 @@ static NSString *_lastTreeHash; + (void)setupGesture { + _isGestureSet = YES; [UIApplication sharedApplication].applicationSupportsShakeToEdit = YES; Class class = [UIApplication class]; @@ -160,8 +164,8 @@ static NSString *_lastTreeHash; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/%@", [FBSDKSettings appID], CODELESS_INDEXING_SESSION_ENDPOINT] - parameters: parameters - HTTPMethod:@"POST"]; + parameters:parameters + HTTPMethod:FBSDKHTTPMethodPOST]; [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { _isCheckingSession = NO; if ([result isKindOfClass:[NSDictionary class]]) { @@ -213,13 +217,13 @@ static NSString *_lastTreeHash; localeString = [NSString stringWithFormat:@"%@_%@", languageCode, countryCode]; } - NSString *extinfo = [FBSDKInternalUtility JSONStringForObject:@[machine, - advertiserID, - debugStatus, - isSimulator, - localeString] - error:NULL - invalidObjectHandler:NULL]; + NSString *extinfo = [FBSDKBasicUtility JSONStringForObject:@[machine, + advertiserID, + debugStatus, + isSimulator, + localeString] + error:NULL + invalidObjectHandler:NULL]; return extinfo ?: @""; } @@ -289,7 +293,7 @@ static NSString *_lastTreeHash; CODELESS_INDEXING_PLATFORM_KEY: @"iOS", CODELESS_INDEXING_SESSION_ID_KEY: [self currentSessionDeviceID] } - HTTPMethod:@"POST"]; + HTTPMethod:FBSDKHTTPMethodPOST]; _isCodelessIndexing = YES; [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { _isCodelessIndexing = NO; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessMacros.h similarity index 100% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessMacros.h diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessParameterComponent.h similarity index 97% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessParameterComponent.h index e2debc5..7366594 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessParameterComponent.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(CodelessParameterComponent) @interface FBSDKCodelessParameterComponent : NSObject @property (nonatomic, copy, readonly) NSString *name; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessParameterComponent.m similarity index 100% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessParameterComponent.m diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessPathComponent.h similarity index 98% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessPathComponent.h index 15bed07..2eb0637 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessPathComponent.h @@ -27,6 +27,7 @@ typedef NS_OPTIONS(int, FBSDKCodelessMatchBitmaskField) FBSDKCodelessMatchBitmaskFieldHint = 1 << 4 }; +NS_SWIFT_NAME(CodelessPathComponent) @interface FBSDKCodelessPathComponent : NSObject @property (nonatomic, copy, readonly) NSString *className; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessPathComponent.m similarity index 100% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessPathComponent.m diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBinding.h similarity index 98% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBinding.h index 19e12f5..b298577 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBinding.h @@ -20,6 +20,7 @@ #import #import +NS_SWIFT_NAME(EventBinding) @interface FBSDKEventBinding : NSObject @property (nonatomic, copy, readonly) NSString *eventName; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBinding.m similarity index 97% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBinding.m index 322b4ef..dbc90c5 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBinding.m @@ -19,6 +19,7 @@ #import "FBSDKEventBinding.h" #import +#import #import "FBSDKAppEventsUtility.h" #import "FBSDKCodelessMacros.h" @@ -175,7 +176,8 @@ pathComponent:(FBSDKCodelessPathComponent *)component if ((pathComponent.matchBitmask & FBSDKCodelessMatchBitmaskFieldText) > 0) { NSString *text = viewPathComponent.text; BOOL match = ((text.length == 0 && pathComponent.text.length == 0) - || [text isEqualToString:pathComponent.text]); + || [text isEqualToString:pathComponent.text] + || [[FBSDKUtility SHA256Hash:text] isEqualToString:pathComponent.text]); if (!match) { return NO; } @@ -189,7 +191,8 @@ pathComponent:(FBSDKCodelessPathComponent *)component if ((pathComponent.matchBitmask & FBSDKCodelessMatchBitmaskFieldHint) > 0) { NSString *hint = viewPathComponent.hint; BOOL match = ((hint.length == 0 && pathComponent.hint.length == 0) - || [hint isEqualToString:pathComponent.hint]); + || [hint isEqualToString:pathComponent.hint] + || [[FBSDKUtility SHA256Hash:hint] isEqualToString:pathComponent.hint]); if (!match) { return NO; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBindingManager.h similarity index 97% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBindingManager.h index 863094e..d038be8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBindingManager.h @@ -18,10 +18,10 @@ #import +NS_SWIFT_NAME(EventBindingManager) @interface FBSDKEventBindingManager : NSObject - (FBSDKEventBindingManager*)initWithJSON:(NSDictionary*)dict; -- (void)start; - (void)updateBindings:(NSArray *)bindings; + (NSArray *)parseArray:(NSArray *)array; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBindingManager.m similarity index 98% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBindingManager.m index 436d0f6..fbd0e2b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBindingManager.m @@ -38,7 +38,11 @@ #define ReactNativeClassRCTTouchHandler "RCTTouchHandler" static void fb_dispatch_on_main_thread(dispatch_block_t block) { - dispatch_async(dispatch_get_main_queue(), block); + if ([NSThread isMainThread]) { + block(); + } else { + dispatch_async(dispatch_get_main_queue(), block); + } } static void fb_dispatch_on_default_thread(dispatch_block_t block) { @@ -122,6 +126,11 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { if (isStarted) { return; } + + if (0 == eventBindings.count) { + return; + } + isStarted = YES; void (^blockToWindow)(id view) = ^(id view) { @@ -382,6 +391,10 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { - (void)updateBindings:(NSArray *)bindings { eventBindings = bindings; [reactBindings removeAllObjects]; + if (!isStarted) { + [self start]; + } + fb_dispatch_on_main_thread(^{ [self rematchBindings]; }); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKViewHierarchy.h similarity index 98% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKViewHierarchy.h index 4f11258..9487e2c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKViewHierarchy.h @@ -19,6 +19,7 @@ #import #import +NS_SWIFT_NAME(ViewHierarchy) @interface FBSDKViewHierarchy : NSObject + (NSObject *)getParent:(NSObject *)obj; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKViewHierarchy.m similarity index 94% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKViewHierarchy.m index 15bcc85..6183b07 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKViewHierarchy.m @@ -22,32 +22,33 @@ #import +#import + #import "FBSDKCodelessMacros.h" #import "FBSDKCodelessPathComponent.h" -#import "FBSDKCoreKit+Internal.h" #define MAX_VIEW_HIERARCHY_LEVEL 35 typedef NS_ENUM(NSUInteger, FBCodelessClassBitmask) { - /*! Indicates that the class is subclass of UIControl */ + /** Indicates that the class is subclass of UIControl */ FBCodelessClassBitmaskUIControl = 1 << 3, - /*! Indicates that the class is subclass of UIControl */ + /** Indicates that the class is subclass of UIControl */ FBCodelessClassBitmaskUIButton = 1 << 4, - /*! Indicates that the class is ReactNative Button */ + /** Indicates that the class is ReactNative Button */ FBCodelessClassBitmaskReactNativeButton = 1 << 6, - /*! Indicates that the class is UITableViewCell */ + /** Indicates that the class is UITableViewCell */ FBCodelessClassBitmaskUITableViewCell = 1 << 7, - /*! Indicates that the class is UICollectionViewCell */ + /** Indicates that the class is UICollectionViewCell */ FBCodelessClassBitmaskUICollectionViewCell = 1 << 8, - /*! Indicates that the class is UILabel */ + /** Indicates that the class is UILabel */ FBCodelessClassBitmaskLabel = 1 << 10, - /*! Indicates that the class is UITextView or UITextField*/ + /** Indicates that the class is UITextView or UITextField*/ FBCodelessClassBitmaskInput = 1 << 11, - /*! Indicates that the class is UIPicker*/ + /** Indicates that the class is UIPicker*/ FBCodelessClassBitmaskPicker = 1 << 12, - /*! Indicates that the class is UISwitch*/ + /** Indicates that the class is UISwitch*/ FBCodelessClassBitmaskSwitch = 1 << 13, - /*! Indicates that the class is UIViewController*/ + /** Indicates that the class is UIViewController*/ FBCodelessClassBitmaskUIViewController = 1 << 17, }; @@ -268,6 +269,11 @@ typedef NS_ENUM(NSUInteger, FBCodelessClassBitmask) { } + (NSMutableDictionary *)getDetailAttributesOf:(NSObject *)obj +{ + return [self getDetailAttributesOf:obj WithHash:YES]; +} + ++ (NSMutableDictionary *)getDetailAttributesOf:(NSObject *)obj WithHash:(BOOL)hash { if (!obj) { return nil; @@ -308,6 +314,12 @@ typedef NS_ENUM(NSUInteger, FBCodelessClassBitmask) { result[CODELESS_VIEW_TREE_TEXT_STYLE_KEY] = textStyle; } + if (hash) { + // hash text and hint + result[CODELESS_VIEW_TREE_TEXT_KEY] = [FBSDKUtility SHA256Hash:result[CODELESS_VIEW_TREE_TEXT_KEY]]; + result[CODELESS_VIEW_TREE_HINT_KEY] = [FBSDKUtility SHA256Hash:result[CODELESS_VIEW_TREE_HINT_KEY]]; + } + return result; } @@ -357,9 +369,9 @@ typedef NS_ENUM(NSUInteger, FBCodelessClassBitmask) { } if (titles.count > 0) { - text = [FBSDKInternalUtility JSONStringForObject:titles - error:NULL - invalidObjectHandler:NULL]; + text = [FBSDKBasicUtility JSONStringForObject:titles + error:NULL + invalidObjectHandler:NULL]; } } else if ([obj isKindOfClass:[UIDatePicker class]]) { UIDatePicker *picker = (UIDatePicker *)obj; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEvents+Internal.h similarity index 88% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEvents+Internal.h index 41ab684..045e761 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEvents+Internal.h @@ -24,8 +24,6 @@ // Internally known event names -FOUNDATION_EXPORT NSString *const FBSDKAppEventNamePurchased; - /** Use to log that the share dialog was launched */ FOUNDATION_EXPORT NSString *const FBSDKAppEventNameShareSheetLaunch; @@ -41,10 +39,10 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventNamePermissionsUIDismiss; /** Use to log that the login view was used */ FOUNDATION_EXPORT NSString *const FBSDKAppEventNameLoginViewUsage; -/*! Use to log that the share tray launched. */ +/** Use to log that the share tray launched. */ FOUNDATION_EXPORT NSString *const FBSDKAppEventNameShareTrayDidLaunch; -/*! Use to log that the person selected a sharing target. */ +/** Use to log that the person selected a sharing target. */ FOUNDATION_EXPORT NSString *const FBSDKAppEventNameShareTrayDidSelectActivity; // Internally known event parameters @@ -105,7 +103,7 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingMic; FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingCamera; /** Use to log the results of a share dialog */ -FOUNDATION_EXPORT NSString *const FBSDLAppEventNameFBSDKEventShareDialogResult; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKEventShareDialogResult; FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKEventMessengerShareDialogResult; FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKEventAppInviteShareDialogResult; @@ -118,11 +116,11 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterDialogShareContentType; FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterDialogShareContentUUID; FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterDialogShareContentPageID; -/*! Use to log parameters for share tray use */ +/** Use to log parameters for share tray use */ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterShareTrayActivityName; FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterShareTrayResult; -/*! Use to log parameters for live streaming*/ +/** Use to log parameters for live streaming*/ FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLiveStreamingPrevStatus; FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLiveStreamingStatus; FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLiveStreamingError; @@ -199,12 +197,40 @@ FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesPixelIDKey; @interface FBSDKAppEvents (Internal) +@property (class, nonatomic, strong, readonly) FBSDKAppEvents *singleton; + ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + isImplicitlyLogged:(BOOL)isImplicitlyLogged; + ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + valueToSum:(double)valueToSum + isImplicitlyLogged:(BOOL)isImplicitlyLogged; + ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + parameters:(NSDictionary *)parameters + isImplicitlyLogged:(BOOL)isImplicitlyLogged; + ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + parameters:(NSDictionary *)parameters + isImplicitlyLogged:(BOOL)isImplicitlyLogged + accessToken:(FBSDKAccessToken *)accessToken; + ++ (void)logInternalEvent:(FBSDKAppEventName)eventName + valueToSum:(double)valueToSum + parameters:(NSDictionary *)parameters + isImplicitlyLogged:(BOOL)isImplicitlyLogged; + ++ (void)logInternalEvent:(NSString *)eventName + valueToSum:(NSNumber *)valueToSum + parameters:(NSDictionary *)parameters + isImplicitlyLogged:(BOOL)isImplicitlyLogged + accessToken:(FBSDKAccessToken *)accessToken; + + (void)logImplicitEvent:(NSString *)eventName valueToSum:(NSNumber *)valueToSum parameters:(NSDictionary *)parameters accessToken:(FBSDKAccessToken *)accessToken; -+ (FBSDKAppEvents *)singleton; - (void)flushForReason:(FBSDKAppEventsFlushReason)flushReason; - (void)registerNotifications; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsDeviceInfo.h similarity index 97% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsDeviceInfo.h index 2de04b8..bd25235 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsDeviceInfo.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(AppEventsDeviceInfo) @interface FBSDKAppEventsDeviceInfo : NSObject + (void)extendDictionaryWithDeviceInfo:(NSMutableDictionary *)dictionary; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsDeviceInfo.m similarity index 98% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsDeviceInfo.m index 11106fa..631fba9 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsDeviceInfo.m @@ -25,6 +25,7 @@ #import #import #endif + #import #import @@ -228,7 +229,7 @@ static const u_int FB_GIGABYTE = 1024 * 1024 * 1024; // bytes _timeZoneName ?: @"" ]; - return [FBSDKInternalUtility JSONStringForObject:arr error:NULL invalidObjectHandler:NULL]; + return [FBSDKBasicUtility JSONStringForObject:arr error:NULL invalidObjectHandler:NULL]; } #pragma mark - Helper Methods diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsState.h similarity index 94% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsState.h index 5bb5c2e..a23dea7 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsState.h @@ -19,13 +19,14 @@ #import // this type is not thread safe. +NS_SWIFT_NAME(AppEventsState) @interface FBSDKAppEventsState : NSObject @property (nonatomic, readonly, copy) NSArray *events; @property (nonatomic, readonly, assign) NSUInteger numSkipped; @property (nonatomic, readonly, copy) NSString *tokenString; @property (nonatomic, readonly, copy) NSString *appID; -@property (nonatomic, readonly) BOOL areAllEventsImplicit; +@property (nonatomic, readonly, getter=areAllEventsImplicit) BOOL allEventsImplicit; - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsState.m similarity index 96% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsState.m index cff1b8a..10aa5e2 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsState.m @@ -18,7 +18,8 @@ #import "FBSDKAppEventsState.h" -#import "FBSDKInternalUtility.h" +#import "FBSDKBasicUtility.h" +#import "FBSDKRestrictiveDataFilterManager.h" #define FBSDK_APPEVENTSTATE_ISIMPLICIT_KEY @"isImplicit" @@ -163,6 +164,8 @@ - (NSString *)JSONStringForEvents:(BOOL)includeImplicitEvents { + [FBSDKRestrictiveDataFilterManager processEvents:_mutableEvents]; + NSMutableArray *events = [[NSMutableArray alloc] initWithCapacity:_mutableEvents.count]; for (NSDictionary *eventAndImplicitFlag in _mutableEvents) { if (!includeImplicitEvents && [eventAndImplicitFlag[FBSDK_APPEVENTSTATE_ISIMPLICIT_KEY] boolValue]) { @@ -175,7 +178,7 @@ [events addObject:event]; } - return [FBSDKInternalUtility JSONStringForObject:events error:NULL invalidObjectHandler:NULL]; + return [FBSDKBasicUtility JSONStringForObject:events error:NULL invalidObjectHandler:NULL]; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsStateManager.h similarity index 97% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsStateManager.h index 4c17a4c..046ff21 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsStateManager.h @@ -20,6 +20,7 @@ @class FBSDKAppEventsState; +NS_SWIFT_NAME(AppEventsStateManager) @interface FBSDKAppEventsStateManager : NSObject + (void)clearPersistedAppEventsStates; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsStateManager.m similarity index 95% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsStateManager.m index 596d7a6..294b558 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsStateManager.m @@ -22,6 +22,7 @@ #import "FBSDKAppEventsState.h" #import "FBSDKAppEventsUtility.h" +#import "FBSDKInternalUtility.h" #import "FBSDKLogger.h" #import "FBSDKSettings.h" @@ -73,6 +74,6 @@ static BOOL g_canSkipDiskCheck = NO; + (NSString *)filePath { - return [FBSDKAppEventsUtility persistenceFilePath:@"com-facebook-sdk-AppEventsPersistedEvents.json"]; + return [FBSDKBasicUtility persistenceFilePath:@"com-facebook-sdk-AppEventsPersistedEvents.json"]; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsUtility.h similarity index 83% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsUtility.h index 42ec8c7..6b0baa2 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsUtility.h @@ -25,7 +25,7 @@ typedef NS_ENUM(NSUInteger, FBSDKAdvertisingTrackingStatus) FBSDKAdvertisingTrackingAllowed, FBSDKAdvertisingTrackingDisallowed, FBSDKAdvertisingTrackingUnspecified -}; +} NS_SWIFT_NAME(AppEventsUtility.AdvertisingTrackingStatus); typedef NS_ENUM(NSUInteger, FBSDKAppEventsFlushReason) { @@ -35,30 +35,32 @@ typedef NS_ENUM(NSUInteger, FBSDKAppEventsFlushReason) FBSDKAppEventsFlushReasonPersistedEvents, FBSDKAppEventsFlushReasonEventThreshold, FBSDKAppEventsFlushReasonEagerlyFlushingEvent -}; +} NS_SWIFT_NAME(AppEventsUtility.FlushReason); +NS_SWIFT_NAME(AppEventsUtility) @interface FBSDKAppEventsUtility : NSObject - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; +@property (class, nonatomic, copy, readonly) NSString *advertiserID; +@property (class, nonatomic, assign, readonly) FBSDKAdvertisingTrackingStatus advertisingTrackingStatus; +@property (class, nonatomic, strong, readonly) NSString *attributionID; +@property (class, nonatomic, assign, readonly) long unixTimeNow; +@property (class, nonatomic, assign, readonly) BOOL isDebugBuild; + + (NSMutableDictionary *)activityParametersDictionaryForEvent:(NSString *)eventCategory implicitEventsOnly:(BOOL)implicitEventsOnly shouldAccessAdvertisingID:(BOOL)shouldAccessAdvertisingID; -+ (NSString *)advertiserID; -+ (FBSDKAdvertisingTrackingStatus)advertisingTrackingStatus; -+ (NSString *)attributionID; + + (void)ensureOnMainThread:(NSString *)methodName className:(NSString *)className; + (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; + (id)getVariable:(NSString *)variableName fromInstance:(NSObject *)instance; + (NSNumber *)getNumberValue:(NSString *)text; -+ (BOOL)isDebugBuild; + (BOOL)isSensitiveUserData:(NSString *)text; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsUtility.m similarity index 83% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsUtility.m index dae2b1b..a353aa5 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsUtility.m @@ -47,21 +47,27 @@ #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0 NSString *attributionID = [[self class] attributionID]; // Only present on iOS 6 and below. - [FBSDKInternalUtility dictionary:parameters setObject:attributionID forKey:@"attribution"]; + [FBSDKBasicUtility dictionary:parameters setObject:attributionID forKey:@"attribution"]; #endif if (!implicitEventsOnly && shouldAccessAdvertisingID) { NSString *advertiserID = [[self class] advertiserID]; - [FBSDKInternalUtility dictionary:parameters setObject:advertiserID forKey:@"advertiser_id"]; + [FBSDKBasicUtility dictionary:parameters setObject:advertiserID forKey:@"advertiser_id"]; } - parameters[FBSDK_APPEVENTSUTILITY_ANONYMOUSID_KEY] = [self anonymousID]; + parameters[FBSDK_APPEVENTSUTILITY_ANONYMOUSID_KEY] = [FBSDKBasicUtility anonymousID]; FBSDKAdvertisingTrackingStatus advertisingTrackingStatus = [[self class] advertisingTrackingStatus]; if (advertisingTrackingStatus != FBSDKAdvertisingTrackingUnspecified) { BOOL allowed = (advertisingTrackingStatus == FBSDKAdvertisingTrackingAllowed); parameters[@"advertiser_tracking_enabled"] = @(allowed).stringValue; } + if (advertisingTrackingStatus == FBSDKAdvertisingTrackingAllowed) { + NSString *userData = [FBSDKAppEvents getUserData]; + if (userData){ + parameters[@"ud"] = userData; + } + } parameters[@"application_tracking_enabled"] = @(!FBSDKSettings.limitEventAndDataUsage).stringValue; @@ -69,10 +75,6 @@ if (userID) { parameters[@"app_user_id"] = userID; } - NSString *userData = [FBSDKAppEvents getUserData]; - if (userData){ - parameters[@"ud"] = userData; - } [FBSDKAppEventsDeviceInfo extendDictionaryWithDeviceInfo:parameters]; @@ -91,7 +93,7 @@ }); if (urlSchemes.count > 0) { - parameters[@"url_schemes"] = [FBSDKInternalUtility JSONStringForObject:urlSchemes error:NULL invalidObjectHandler:NULL]; + parameters[@"url_schemes"] = [FBSDKBasicUtility JSONStringForObject:urlSchemes error:NULL invalidObjectHandler:NULL]; } return parameters; @@ -99,7 +101,7 @@ + (NSString *)advertiserID { - if (![[FBSDKSettings advertiserIDCollectionEnabled] boolValue]) { + if (!FBSDKSettings.isAdvertiserIDCollectionEnabled) { return nil; } @@ -133,22 +135,6 @@ 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 { #if TARGET_OS_TV @@ -158,7 +144,8 @@ #endif } -// for tests only. +#pragma mark - Internal, for testing + + (void)clearLibraryFiles { [[NSFileManager defaultManager] removeItemAtPath:[[self class] persistenceFilePath:FBSDK_APPEVENTSUTILITY_ANONYMOUSIDFILENAME] @@ -218,7 +205,7 @@ } [FBSDKLogger singleShotLogEntry:behaviorToLog logEntry:msg]; - NSError *error = [NSError fbErrorWithCode:FBSDKErrorAppEventsFlush message:msg]; + NSError *error = [FBSDKError errorWithCode:FBSDKErrorAppEventsFlush message:msg]; [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKAppEventsLoggingResultNotification object:error]; } @@ -285,37 +272,6 @@ restOfStringCharacterSet:(NSCharacterSet *)restOfStringCharacterSet return YES; } -+ (void)persistAnonymousID:(NSString *)anonymousID -{ - [[self class] ensureOnMainThread:NSStringFromSelector(_cmd) className:NSStringFromClass(self)]; - 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[0]; - return [docDirectory stringByAppendingPathComponent:filename]; -} - -+ (NSString *)retrievePersistedAnonymousID -{ - [[self class] ensureOnMainThread:NSStringFromSelector(_cmd) className:NSStringFromClass(self)]; - 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[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 diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKHybridAppEventsScriptMessageHandler.h similarity index 96% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKHybridAppEventsScriptMessageHandler.h index 0f6d1c8..e5d73b0 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKHybridAppEventsScriptMessageHandler.h @@ -20,6 +20,7 @@ #import #import +NS_SWIFT_NAME(HybridAppEventsScriptMessageHandler) @interface FBSDKHybridAppEventsScriptMessageHandler : NSObject @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKHybridAppEventsScriptMessageHandler.m similarity index 94% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKHybridAppEventsScriptMessageHandler.m index 3e62dcf..005ace6 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKHybridAppEventsScriptMessageHandler.m @@ -34,7 +34,7 @@ NSString *const FBSDKAppEventsWKWebViewMessagesPixelReferralParamKey = @"_fb_pix NSString *event = message.body[FBSDKAppEventsWKWebViewMessagesEventKey]; if (event.length > 0) { NSString *stringedParams = message.body[FBSDKAppEventsWKWebViewMessagesParamsKey]; - NSMutableDictionary *params = nil; + NSMutableDictionary *params = nil; NSError *jsonParseError = nil; if ([stringedParams isKindOfClass:[NSString class]]) { params = [NSJSONSerialization JSONObjectWithData:[stringedParams dataUsingEncoding:NSUTF8StringEncoding] @@ -54,7 +54,9 @@ NSString *const FBSDKAppEventsWKWebViewMessagesPixelReferralParamKey = @"_fb_pix else { params[FBSDKAppEventsWKWebViewMessagesPixelReferralParamKey] = pixelID; } - [FBSDKAppEvents logEvent:event parameters:params]; + [FBSDKAppEvents logInternalEvent:event + parameters:params + isImplicitlyLogged:NO]; } } } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKPaymentObserver.h similarity index 97% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKPaymentObserver.h index a5f7a77..aae6d63 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKPaymentObserver.h @@ -19,6 +19,7 @@ #import // Class to encapsulate implicit logging of purchase events +NS_SWIFT_NAME(PaymentObserver) @interface FBSDKPaymentObserver : NSObject + (void)startObservingTransactions; + (void)stopObservingTransactions; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKPaymentObserver.m similarity index 53% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKPaymentObserver.m index 858e103..9134a63 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKPaymentObserver.m @@ -20,24 +20,34 @@ #import +#import + #import "FBSDKAppEvents+Internal.h" #import "FBSDKDynamicFrameworkLoader.h" #import "FBSDKLogger.h" #import "FBSDKSettings.h" +static NSString *const FBSDKPaymentObserverOriginalTransactionKey = @"com.facebook.appevents.PaymentObserver.originalTransaction"; +static NSString *const FBSDKPaymentObserverDelimiter = @","; + static NSString *const FBSDKAppEventParameterImplicitlyLoggedPurchase = @"_implicitlyLogged"; static NSString *const FBSDKAppEventNamePurchaseFailed = @"fb_mobile_purchase_failed"; static NSString *const FBSDKAppEventNamePurchaseRestored = @"fb_mobile_purchase_restored"; static NSString *const FBSDKAppEventParameterNameInAppPurchaseType = @"fb_iap_product_type"; static NSString *const FBSDKAppEventParameterNameProductTitle = @"fb_content_title"; +static NSString *const FBSDKAppEventParameterNameOriginalTransactionID = @"fb_original_transaction_id"; static NSString *const FBSDKAppEventParameterNameTransactionID = @"fb_transaction_id"; static NSString *const FBSDKAppEventParameterNameTransactionDate = @"fb_transaction_date"; static NSString *const FBSDKAppEventParameterNameSubscriptionPeriod = @"fb_iap_subs_period"; +static NSString *const FBSDKAppEventParameterNameIsStartTrial = @"fb_iap_is_start_trial"; +static NSString *const FBSDKAppEventParameterNameHasFreeTrial = @"fb_iap_has_free_trial"; static NSString *const FBSDKAppEventParameterNameTrialPeriod = @"fb_iap_trial_period"; static NSString *const FBSDKAppEventParameterNameTrialPrice = @"fb_iap_trial_price"; static int const FBSDKMaxParameterValueLength = 100; static NSMutableArray *g_pendingRequestors; +static NSString *const FBSDKGateKeeperAppEventsIfAutoLogSubs = @"app_events_if_auto_log_subs"; + @interface FBSDKPaymentProductRequestor : NSObject @property (nonatomic, retain) SKPaymentTransaction *transaction; @@ -65,9 +75,7 @@ static NSMutableArray *g_pendingRequestors; [[self singleton] stopObservingTransactions]; } -// -// Internal methods -// +#pragma mark - Internal Methods + (FBSDKPaymentObserver *)singleton { @@ -127,10 +135,6 @@ static NSMutableArray *g_pendingRequestors; - (void)handleTransaction:(SKPaymentTransaction *)transaction { - // Ignore restored transaction - if (transaction.originalTransaction != nil) { - return; - } FBSDKPaymentProductRequestor *productRequest = [[FBSDKPaymentProductRequestor alloc] initWithTransaction:transaction]; [productRequest resolveProducts]; } @@ -142,6 +146,11 @@ static NSMutableArray *g_pendingRequestors; @end @implementation FBSDKPaymentProductRequestor +{ + NSMutableSet *_originalTransactionSet; + NSSet *_eventsWithReceipt; + NSDateFormatter *_formatter; +} + (void)initialize { @@ -155,6 +164,16 @@ static NSMutableArray *g_pendingRequestors; self = [super init]; if (self) { _transaction = transaction; + _formatter = [[NSDateFormatter alloc] init]; + _formatter.dateFormat = @"yyyy-MM-dd HH:mm:ssZ"; + NSString *data = [[NSUserDefaults standardUserDefaults] stringForKey:FBSDKPaymentObserverOriginalTransactionKey]; + _eventsWithReceipt = [NSSet setWithArray:@[FBSDKAppEventNamePurchased, FBSDKAppEventNameSubscribe, + FBSDKAppEventNameStartTrial]]; + if (data) { + _originalTransactionSet = [NSMutableSet setWithArray:[data componentsSeparatedByString:FBSDKPaymentObserverDelimiter]]; + } else { + _originalTransactionSet = [[NSMutableSet alloc] init]; + } } return self; } @@ -192,86 +211,182 @@ static NSMutableArray *g_pendingRequestors; - (void)logTransactionEvent:(SKProduct *)product { - NSString *eventName = nil; + if ([self isSubscription:product] && + [FBSDKGateKeeperManager boolForKey:FBSDKGateKeeperAppEventsIfAutoLogSubs + defaultValue:NO]) { + [self logImplicitSubscribeTransaction:self.transaction ofProduct:product]; + } else { + [self logImplicitPurchaseTransaction:self.transaction ofProduct:product]; + } +} + +- (BOOL)isSubscription:(SKProduct *)product +{ +#if !TARGET_OS_TV +#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_11_1 + if (@available(iOS 11.2, *)) { + return (product.subscriptionPeriod != nil) && ((unsigned long)product.subscriptionPeriod.numberOfUnits > 0); + } +#endif +#endif + return NO; +} + +- (NSMutableDictionary *)getEventParametersOfProduct:(SKProduct *)product + withTransaction:(SKPaymentTransaction *)transaction +{ NSString *transactionID = nil; NSString *transactionDate = nil; - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - formatter.dateFormat = @"yyyy-MM-dd HH:mm:ssZ"; - switch (self.transaction.transactionState) { + switch (transaction.transactionState) { case SKPaymentTransactionStatePurchasing: - eventName = FBSDKAppEventNameInitiatedCheckout; break; case SKPaymentTransactionStatePurchased: - eventName = FBSDKAppEventNamePurchased; transactionID = self.transaction.transactionIdentifier; - transactionDate = [formatter stringFromDate:self.transaction.transactionDate]; + transactionDate = [_formatter stringFromDate:self.transaction.transactionDate]; break; case SKPaymentTransactionStateFailed: - eventName = FBSDKAppEventNamePurchaseFailed; break; case SKPaymentTransactionStateRestored: - eventName = FBSDKAppEventNamePurchaseRestored; - transactionDate = [formatter stringFromDate:self.transaction.transactionDate]; + transactionDate = [_formatter stringFromDate:self.transaction.transactionDate]; break; - case SKPaymentTransactionStateDeferred: - return; + default: break; } - if (!eventName) { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents - formatString:@"FBSDKPaymentObserver logTransactionEvent: event name cannot be nil"]; - return; - } - - SKPayment *payment = self.transaction.payment; + SKPayment *payment = transaction.payment; NSMutableDictionary *eventParameters = [NSMutableDictionary dictionaryWithDictionary: @{ FBSDKAppEventParameterNameContentID: payment.productIdentifier ?: @"", FBSDKAppEventParameterNameNumItems: @(payment.quantity), FBSDKAppEventParameterNameTransactionDate: transactionDate ?: @"", }]; - 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 !TARGET_OS_TV -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_2 - if (@available(iOS 11.2, *)) { - BOOL isSubscription = (product.subscriptionPeriod != nil) && ((unsigned long)product.subscriptionPeriod.numberOfUnits > 0); - if (isSubscription) { - // subs inapp - eventParameters[FBSDKAppEventParameterNameSubscriptionPeriod] = [self lengthOfSubscriptionPeriod:product.subscriptionPeriod]; - eventParameters[FBSDKAppEventParameterNameInAppPurchaseType] = @"subs"; - // trial information for subs - SKProductDiscount *discount = product.introductoryPrice; - if (discount) { - eventParameters[FBSDKAppEventParameterNameTrialPeriod] = [self lengthOfSubscriptionPeriod:discount.subscriptionPeriod]; - eventParameters[FBSDKAppEventParameterNameTrialPrice] = discount.price; - } - } else { - eventParameters[FBSDKAppEventParameterNameInAppPurchaseType] = @"inapp"; - } - } -#endif -#endif if (transactionID) { eventParameters[FBSDKAppEventParameterNameTransactionID] = transactionID; } } - [self logImplicitPurchaseEvent:eventName - valueToSum:totalAmount - parameters:eventParameters]; +#if !TARGET_OS_TV +#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_11_1 + if (@available(iOS 11.2, *)) { + if ([self isSubscription:product]) { + // subs inapp + eventParameters[FBSDKAppEventParameterNameSubscriptionPeriod] = [self durationOfSubscriptionPeriod:product.subscriptionPeriod]; + eventParameters[FBSDKAppEventParameterNameInAppPurchaseType] = @"subs"; + eventParameters[FBSDKAppEventParameterNameIsStartTrial] = [self isStartTrial:transaction ofProduct:product] ? @"1" : @"0"; + // trial information for subs + SKProductDiscount *discount = product.introductoryPrice; + if (discount) { + if (discount.paymentMode == SKProductDiscountPaymentModeFreeTrial) { + eventParameters[FBSDKAppEventParameterNameHasFreeTrial] = @"1"; + } else { + eventParameters[FBSDKAppEventParameterNameHasFreeTrial] = @"0"; + } + eventParameters[FBSDKAppEventParameterNameTrialPeriod] = [self durationOfSubscriptionPeriod:discount.subscriptionPeriod]; + eventParameters[FBSDKAppEventParameterNameTrialPrice] = discount.price; + } + } else { + eventParameters[FBSDKAppEventParameterNameInAppPurchaseType] = @"inapp"; + } + } +#endif +#endif + return eventParameters; } -- (NSString *)lengthOfSubscriptionPeriod:(id)subcriptionPeriod +- (void)appendOriginalTransactionID:(NSString *)transactionID +{ + if (!transactionID) { + return; + } + [_originalTransactionSet addObject:transactionID]; + [[NSUserDefaults standardUserDefaults] setObject:[[_originalTransactionSet allObjects] componentsJoinedByString:FBSDKPaymentObserverDelimiter] + forKey:FBSDKPaymentObserverOriginalTransactionKey]; +} + +- (void)clearOriginalTransactionID:(NSString *)transactionID +{ + if (!transactionID) { + return; + } + [_originalTransactionSet removeObject:transactionID]; + [[NSUserDefaults standardUserDefaults] setObject:[[_originalTransactionSet allObjects] componentsJoinedByString:FBSDKPaymentObserverDelimiter] + forKey:FBSDKPaymentObserverOriginalTransactionKey]; +} + +- (BOOL)isStartTrial:(SKPaymentTransaction *)transaction + ofProduct:(SKProduct *)product { #if !TARGET_OS_TV -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_2 +#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_11_1 +#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_11_4 +#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_12_1 + // promotional offer starting from iOS 12.2 + if (@available(iOS 12.2, *)) { + SKPaymentDiscount *paymentDiscount = transaction.payment.paymentDiscount; + if (paymentDiscount) { + NSArray *discounts = product.discounts; + for (SKProductDiscount *discount in discounts) { + if (discount.paymentMode == SKProductDiscountPaymentModeFreeTrial && + [paymentDiscount.identifier isEqualToString:discount.identifier]) { + return YES; + } + } + } + } +#endif +#endif + // introductory offer starting from iOS 11.2 + if (@available(iOS 11.2, *)) { + if (product.introductoryPrice && + product.introductoryPrice.paymentMode == SKProductDiscountPaymentModeFreeTrial) { + NSString *originalTransactionID = transaction.originalTransaction.transactionIdentifier; + // only consider the very first trial transaction as start trial + if (!originalTransactionID) { + return YES; + } + } + } +#endif +#endif + return NO; +} + +- (BOOL)hasStartTrial:(SKProduct *)product +{ +#if !TARGET_OS_TV +#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_11_1 +#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_11_4 +#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_12_1 + // promotional offer starting from iOS 12.2 + if (@available(iOS 12.2, *)) { + NSArray *discounts = product.discounts; + for (SKProductDiscount *discount in discounts) { + if (discount.paymentMode == SKProductDiscountPaymentModeFreeTrial) { + return YES; + } + } + } +#endif +#endif + // introductory offer starting from iOS 11.2 + if (@available(iOS 11.2, *)) { + if (product.introductoryPrice && (product.introductoryPrice.paymentMode == SKProductDiscountPaymentModeFreeTrial)) { + return YES; + } + } +#endif +#endif + return NO; +} + +- (NSString *)durationOfSubscriptionPeriod:(id)subcriptionPeriod +{ +#if !TARGET_OS_TV +#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_11_1 if (@available(iOS 11.2, *)) { if (subcriptionPeriod && [subcriptionPeriod isKindOfClass:[SKProductSubscriptionPeriod class]]) { SKProductSubscriptionPeriod *period = (SKProductSubscriptionPeriod *)subcriptionPeriod; @@ -323,12 +438,85 @@ static NSMutableArray *g_pendingRequestors; } } -- (void)logImplicitPurchaseEvent:(NSString *)eventName - valueToSum:(double)valueToSum - parameters:(NSDictionary *)parameters { +- (void)logImplicitSubscribeTransaction:(SKPaymentTransaction *)transaction + ofProduct:(SKProduct *)product +{ + NSString *eventName = nil; + NSString *originalTransactionID = transaction.originalTransaction.transactionIdentifier; + switch (transaction.transactionState) { + case SKPaymentTransactionStatePurchasing: + eventName = @"SubscriptionInitiatedCheckout"; + break; + case SKPaymentTransactionStatePurchased: + if ([self isStartTrial:transaction ofProduct:product]) { + eventName = FBSDKAppEventNameStartTrial; + [self clearOriginalTransactionID:originalTransactionID]; + } else { + if (originalTransactionID && [_originalTransactionSet containsObject:originalTransactionID]) { + return; + } + eventName = FBSDKAppEventNameSubscribe; + [self appendOriginalTransactionID:(originalTransactionID ?: transaction.transactionIdentifier)]; + } + break; + case SKPaymentTransactionStateFailed: + eventName = @"SubscriptionFailed"; + break; + case SKPaymentTransactionStateRestored: + eventName = @"SubscriptionRestore"; + break; + case SKPaymentTransactionStateDeferred: + return; + } + + double totalAmount = 0; + if (product) { + totalAmount = transaction.payment.quantity * product.price.doubleValue; + } + + [self logImplicitTransactionEvent:eventName + valueToSum:totalAmount + parameters:[self getEventParametersOfProduct:product withTransaction:transaction]]; +} + +- (void)logImplicitPurchaseTransaction:(SKPaymentTransaction *)transaction + ofProduct:(SKProduct *)product +{ + NSString *eventName = nil; + switch (transaction.transactionState) { + case SKPaymentTransactionStatePurchasing: + eventName = FBSDKAppEventNameInitiatedCheckout; + break; + case SKPaymentTransactionStatePurchased: + eventName = FBSDKAppEventNamePurchased; + break; + case SKPaymentTransactionStateFailed: + eventName = FBSDKAppEventNamePurchaseFailed; + break; + case SKPaymentTransactionStateRestored: + eventName = FBSDKAppEventNamePurchaseRestored; + break; + case SKPaymentTransactionStateDeferred: + return; + } + + double totalAmount = 0; + if (product) { + totalAmount = transaction.payment.quantity * product.price.doubleValue; + } + + [self logImplicitTransactionEvent:eventName + valueToSum:totalAmount + parameters:[self getEventParametersOfProduct:product withTransaction:transaction]]; +} + +- (void)logImplicitTransactionEvent:(NSString *)eventName + valueToSum:(double)valueToSum + parameters:(NSDictionary *)parameters +{ NSMutableDictionary *eventParameters = [NSMutableDictionary dictionaryWithDictionary:parameters]; - if ([eventName isEqualToString:FBSDKAppEventNamePurchased]) { + if ([_eventsWithReceipt containsObject:eventName]) { NSData* receipt = [self fetchDeviceReceipt]; if (receipt) { NSString *base64encodedReceipt = [receipt base64EncodedStringWithOptions:0]; @@ -349,7 +537,8 @@ static NSMutableArray *g_pendingRequestors; } // Fetch the current receipt for this application. -- (NSData*)fetchDeviceReceipt { +- (NSData*)fetchDeviceReceipt +{ NSURL *receiptURL = [NSBundle bundleForClass:[self class]].appStoreReceiptURL; NSData *receipt = [NSData dataWithContentsOfURL:receiptURL]; return receipt; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKTimeSpentData.h similarity index 98% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKTimeSpentData.h index b664af9..0eb583e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKTimeSpentData.h @@ -22,6 +22,7 @@ FOUNDATION_EXPORT 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. +NS_SWIFT_NAME(TimeSpentData) @interface FBSDKTimeSpentData : NSObject + (void)suspend; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKTimeSpentData.m similarity index 96% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKTimeSpentData.m index 366c450..d57c7e9 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKTimeSpentData.m @@ -154,9 +154,9 @@ static const long INACTIVE_SECONDS_QUANTA[] = FBSDKTimeSpentPersistKeySessionID : _sessionID, }; - NSString *content = [FBSDKInternalUtility JSONStringForObject:timeSpentData error:NULL invalidObjectHandler:NULL]; + NSString *content = [FBSDKBasicUtility JSONStringForObject:timeSpentData error:NULL invalidObjectHandler:NULL]; - [content writeToFile:[FBSDKAppEventsUtility persistenceFilePath:FBSDKTimeSpentFilename] + [content writeToFile:[FBSDKBasicUtility persistenceFilePath:FBSDKTimeSpentFilename] atomically:YES encoding:NSASCIIStringEncoding error:nil]; @@ -181,7 +181,7 @@ static const long INACTIVE_SECONDS_QUANTA[] = if (!_isCurrentlyLoaded) { NSString *content = - [[NSString alloc] initWithContentsOfFile:[FBSDKAppEventsUtility persistenceFilePath:FBSDKTimeSpentFilename] + [[NSString alloc] initWithContentsOfFile:[FBSDKBasicUtility persistenceFilePath:FBSDKTimeSpentFilename] usedEncoding:nil error:nil]; @@ -203,7 +203,7 @@ static const long INACTIVE_SECONDS_QUANTA[] = } else { - NSDictionary *results = [FBSDKInternalUtility objectForJSONString:content error:NULL]; + NSDictionary *results = [FBSDKBasicUtility objectForJSONString:content error:NULL]; _lastSuspendTime = [results[FBSDKTimeSpentPersistKeyLastSuspendTime] longValue]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.h new file mode 100644 index 0000000..c026685 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.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 "FBSDKAppEvents+Internal.h" + +NS_ASSUME_NONNULL_BEGIN + +NS_SWIFT_NAME(UserDataStore) +@interface FBSDKUserDataStore : NSObject + ++ (void)setAndHashUserEmail:(nullable NSString *)email + firstName:(nullable NSString *)firstName + lastName:(nullable NSString *)lastName + phone:(nullable NSString *)phone + dateOfBirth:(nullable NSString *)dateOfBirth + gender:(nullable NSString *)gender + city:(nullable NSString *)city + state:(nullable NSString *)state + zip:(nullable NSString *)zip + country:(nullable NSString *)country; ++ (void)setAndHashData:(nullable NSString *)data + forType:(FBSDKAppEventUserDataType)type; ++ (void)setHashData:(nullable NSString *)hashData + forType:(FBSDKAppEventUserDataType)type; ++ (nullable NSString *)getHashedData; ++ (nullable NSString *)getHashedDataForType:(FBSDKAppEventUserDataType)type; ++ (void)clearDataForType:(FBSDKAppEventUserDataType)type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.m new file mode 100644 index 0000000..f49832e --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.m @@ -0,0 +1,199 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKUserDataStore.h" + +#import "FBSDKAppEventsUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings.h" +#import "FBSDKUtility.h" + +static NSString *const FBSDKUserDataKey = @"com.facebook.appevents.UserDataStore.userData"; + +static NSMutableDictionary *hashedUserData; +static dispatch_queue_t serialQueue; + +@implementation FBSDKUserDataStore + ++ (void)initialize +{ + serialQueue = dispatch_queue_create("com.facebook.appevents.UserDataStore", DISPATCH_QUEUE_SERIAL); + NSString *userData = [[NSUserDefaults standardUserDefaults] stringForKey:FBSDKUserDataKey]; + if (userData) { + hashedUserData = (NSMutableDictionary *)[NSJSONSerialization JSONObjectWithData:[userData dataUsingEncoding:NSUTF8StringEncoding] + options:NSJSONReadingMutableContainers + error:nil]; + } + if (!hashedUserData) { + hashedUserData = [[NSMutableDictionary alloc] init]; + } +} + ++ (void)setAndHashUserEmail:(nullable NSString *)email + firstName:(nullable NSString *)firstName + lastName:(nullable NSString *)lastName + phone:(nullable NSString *)phone + dateOfBirth:(nullable NSString *)dateOfBirth + gender:(nullable NSString *)gender + city:(nullable NSString *)city + state:(nullable NSString *)state + zip:(nullable NSString *)zip + country:(nullable NSString *)country +{ + NSMutableDictionary *ud = [[NSMutableDictionary alloc] init]; + if (email) { + ud[FBSDKAppEventEmail] = [FBSDKUserDataStore encryptData:email type:FBSDKAppEventEmail]; + } + if (firstName) { + ud[FBSDKAppEventFirstName] = [FBSDKUserDataStore encryptData:firstName type:FBSDKAppEventFirstName]; + } + if (lastName) { + ud[FBSDKAppEventLastName] = [FBSDKUserDataStore encryptData:lastName type:FBSDKAppEventLastName]; + } + if (phone) { + ud[FBSDKAppEventPhone] = [FBSDKUserDataStore encryptData:phone type:FBSDKAppEventPhone]; + } + if (dateOfBirth) { + ud[FBSDKAppEventDateOfBirth] = [FBSDKUserDataStore encryptData:dateOfBirth type:FBSDKAppEventDateOfBirth]; + } + if (gender) { + ud[FBSDKAppEventGender] = [FBSDKUserDataStore encryptData:gender type:FBSDKAppEventGender]; + } + if (city) { + ud[FBSDKAppEventCity] = [FBSDKUserDataStore encryptData:city type:FBSDKAppEventCity]; + } + if (state) { + ud[FBSDKAppEventState] = [FBSDKUserDataStore encryptData:state type:FBSDKAppEventState]; + } + if (zip) { + ud[FBSDKAppEventZip] = [FBSDKUserDataStore encryptData:zip type:FBSDKAppEventZip]; + } + if (country) { + ud[FBSDKAppEventCountry] = [FBSDKUserDataStore encryptData:country type:FBSDKAppEventCountry]; + } + + dispatch_async(serialQueue, ^{ + hashedUserData = [ud mutableCopy]; + [[NSUserDefaults standardUserDefaults] setObject:[FBSDKUserDataStore stringByHashedData:hashedUserData] + forKey:FBSDKUserDataKey]; + }); +} + ++ (void)setAndHashData:(nullable NSString *)data + forType:(FBSDKAppEventUserDataType)type +{ + [FBSDKUserDataStore setHashData:[FBSDKUserDataStore encryptData:data type:type] + forType:type]; +} + ++ (void)setHashData:(nullable NSString *)hashData + forType:(FBSDKAppEventUserDataType)type +{ + dispatch_async(serialQueue, ^{ + if (!hashData) { + [hashedUserData removeObjectForKey:type]; + } else { + hashedUserData[type] = hashData; + } + [[NSUserDefaults standardUserDefaults] setObject:[FBSDKUserDataStore stringByHashedData:hashedUserData] + forKey:FBSDKUserDataKey]; + }); +} + ++ (void)clearDataForType:(FBSDKAppEventUserDataType)type +{ + [FBSDKUserDataStore setAndHashData:nil forType:type]; +} + ++ (NSString *)getHashedData +{ + __block NSString *hashedUserDataString; + dispatch_sync(serialQueue, ^{ + hashedUserDataString = [FBSDKUserDataStore stringByHashedData:hashedUserData]; + }); + return hashedUserDataString; +} + ++ (NSString *)getHashedDataForType:(FBSDKAppEventUserDataType)type +{ + __block NSString *hashedData; + dispatch_sync(serialQueue, ^{ + hashedData = [hashedUserData objectForKey:type]; + }); + return hashedData; +} + ++ (NSString *)stringByHashedData:(id)hashedData +{ + NSError *error; + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:hashedData + options:0 + error:&error]; + if (jsonData) { + return [[NSString alloc] initWithData:jsonData + encoding:NSUTF8StringEncoding]; + } else { + [FBSDKAppEventsUtility logAndNotify:[NSString stringWithFormat:@"Invalid json object: %@", error]]; + return @""; + } +} + ++ (NSString *)encryptData:(NSString *)data + type:(FBSDKAppEventUserDataType)type +{ + if (data.length == 0 || [FBSDKUserDataStore maybeSHA256Hashed:data]) { + return data; + } + return [FBSDKUtility SHA256Hash:[FBSDKUserDataStore normalizeData:data type:type]]; +} + ++ (NSString *)normalizeData:(NSString *)data + type:(FBSDKAppEventUserDataType)type +{ + NSString *normalizedData = @""; + NSSet *set = [NSSet setWithArray: + @[FBSDKAppEventEmail, FBSDKAppEventFirstName, FBSDKAppEventLastName, FBSDKAppEventCity, FBSDKAppEventState, FBSDKAppEventCountry]]; + if ([set containsObject:type]) { + normalizedData = [data stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + normalizedData = normalizedData.lowercaseString; + } else if ([type isEqualToString:FBSDKAppEventPhone]) { + NSError *error = nil; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^0-9]" + options:NSRegularExpressionCaseInsensitive + error:&error + ]; + normalizedData = [regex stringByReplacingMatchesInString:data + options:0 + range:NSMakeRange(0, data.length) + withTemplate:@"" + ]; + } else if ([type isEqualToString:FBSDKAppEventGender]) { + NSString *temp = [data stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + temp = temp.lowercaseString; + normalizedData = temp.length > 0 ? [temp substringToIndex:1]: @""; + } + return normalizedData; +} + ++ (BOOL)maybeSHA256Hashed:(NSString *)data +{ + NSRange range = [data rangeOfString:@"[A-Fa-f0-9]{64}" options:NSRegularExpressionSearch]; + return (data.length == 64) && (range.location != NSNotFound); +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.h similarity index 71% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.h index d0f35f7..7d34dbf 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.h @@ -18,21 +18,20 @@ #import -typedef void (^FBSDKURLSessionTaskHandler)(NSError *error, - NSURLResponse *response, - NSData *responseData); +NS_ASSUME_NONNULL_BEGIN -@interface FBSDKURLSessionTask : NSObject +@interface FBSDKRestrictiveDataFilterManager : NSObject - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; -- (instancetype)initWithRequest:(NSURLRequest *)request - fromSession:(NSURLSession *)session - completionHandler:(FBSDKURLSessionTaskHandler)handler -NS_DESIGNATED_INITIALIZER; ++ (void)enable; ++ (void)updateFilters:(nullable NSDictionary *)restrictiveParams; -- (void)cancel; -- (void)start; ++ (void)processEvents:(NSMutableArray *> *)events; ++ (nullable NSDictionary *)processParameters:(nullable NSDictionary *)parameters + eventName:(NSString *)eventName; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.m new file mode 100644 index 0000000..d6cb571 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.m @@ -0,0 +1,165 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKRestrictiveDataFilterManager.h" + +#import "FBSDKBasicUtility.h" +#import "FBSDKTypeUtility.h" + +@interface FBSDKRestrictiveEventFilter : NSObject + +@property (nonatomic, readonly, copy) NSString *eventName; +@property (nonatomic, readonly, copy) NSDictionary *eventParams; + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +-(instancetype)initWithEventName:(NSString *)eventName + eventParams:(NSDictionary *)eventParams; + +@end + +@implementation FBSDKRestrictiveEventFilter + +-(instancetype)initWithEventName:(NSString *)eventName + eventParams:(NSDictionary *)eventParams +{ + self = [super init]; + if (self) { + _eventName = eventName; + _eventParams = eventParams; + } + + return self; +} + +@end + +@implementation FBSDKRestrictiveDataFilterManager + +static BOOL isRestrictiveEventFilterEnabled = NO; + +static NSMutableArray *_params; +static NSMutableSet *_deprecatedEvents; + ++ (void)updateFilters:(nullable NSDictionary *)restrictiveParams +{ + if (!isRestrictiveEventFilterEnabled) { + return; + } + if (restrictiveParams.count > 0) { + [_params removeAllObjects]; + [_deprecatedEvents removeAllObjects]; + NSMutableArray *eventFilterArray = [NSMutableArray array]; + NSMutableSet *deprecatedEventSet = [NSMutableSet set]; + for (NSString *eventName in restrictiveParams.allKeys) { + if (restrictiveParams[eventName][@"is_deprecated_event"]) { + [deprecatedEventSet addObject:eventName]; + } + if (restrictiveParams[eventName][@"restrictive_param"]) { + FBSDKRestrictiveEventFilter *restrictiveEventFilter = [[FBSDKRestrictiveEventFilter alloc] initWithEventName:eventName + eventParams:restrictiveParams[eventName][@"restrictive_param"]]; + [eventFilterArray addObject:restrictiveEventFilter]; + } + } + _params = eventFilterArray; + _deprecatedEvents = deprecatedEventSet; + } +} + ++ (nullable NSString *)getMatchedDataTypeWithEventName:(NSString *)eventName + paramKey:(NSString *)paramKey +{ + // match by params in custom events with event name + for (FBSDKRestrictiveEventFilter *filter in _params) { + if ([filter.eventName isEqualToString:eventName]) { + NSString *type = [FBSDKTypeUtility stringValue:filter.eventParams[paramKey]]; + if (type) { + return type; + } + } + } + return nil; +} + ++ (BOOL)isDeprecatedEvent:(NSString *)eventName +{ + return [_deprecatedEvents containsObject:eventName]; +} + ++ (void)processEvents:(NSMutableArray *> *)events +{ + if (!isRestrictiveEventFilterEnabled) { + return; + } + NSArray *> *eventArray = [events copy]; + for (NSDictionary *> *event in eventArray) { + if ([FBSDKRestrictiveDataFilterManager isDeprecatedEvent:event[@"event"][@"_eventName"]]) { + [events removeObject:event]; + } + } +} + ++ (NSDictionary *)processParameters:(NSDictionary *)parameters + eventName:(NSString *)eventName +{ + if (!isRestrictiveEventFilterEnabled) { + return parameters; + } + if (parameters) { + NSMutableDictionary *params = [NSMutableDictionary dictionaryWithDictionary:parameters]; + NSMutableDictionary *restrictedParams = [NSMutableDictionary dictionary]; + + for (NSString *key in [parameters keyEnumerator]) { + NSString *type = [FBSDKRestrictiveDataFilterManager getMatchedDataTypeWithEventName:eventName + paramKey:key]; + if (type) { + [restrictedParams setObject:type forKey:key]; + [params removeObjectForKey:key]; + } + } + + if ([[restrictedParams allKeys] count] > 0) { + NSString *restrictedParamsJSONString = [FBSDKBasicUtility JSONStringForObject:restrictedParams + error:NULL + invalidObjectHandler:NULL]; + [FBSDKBasicUtility dictionary:params setObject:restrictedParamsJSONString forKey:@"_restrictedParams"]; + } + + return [params copy]; + } + + return nil; +} + ++ (void)enable +{ + isRestrictiveEventFilterEnabled = YES; +} + +#pragma mark Helper functions + ++ (BOOL)isMatchedWithPattern:(NSString *)pattern + text:(NSString *)text +{ + NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil]; + NSUInteger matches = [regex numberOfMatchesInString:text options:0 range:NSMakeRange(0, text.length)]; + return matches > 0; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLink.h similarity index 77% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLink.h index 4bd2d01..c5eb50e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLink.h @@ -22,16 +22,21 @@ NS_ASSUME_NONNULL_BEGIN -/*! The version of the App Link protocol that this library supports */ -FOUNDATION_EXPORT NSString *const FBSDKAppLinkVersion; +/** The version of the App Link protocol that this library supports */ +FOUNDATION_EXPORT NSString *const FBSDKAppLinkVersion +NS_SWIFT_NAME(AppLinkVersion); -/*! +/** Contains App Link metadata relevant for navigation on this device derived from the HTML at a given URL. */ +NS_SWIFT_NAME(AppLink) @interface FBSDKAppLink : NSObject -/*! +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +/** Creates a FBSDKAppLink with the given list of FBSDKAppLinkTargets and target URL. Generally, this will only be used by implementers of the FBSDKAppLinkResolving protocol, @@ -42,20 +47,21 @@ FOUNDATION_EXPORT NSString *const FBSDKAppLinkVersion; from App Link metadata. @param webURL the fallback web URL, if any, for the app link. */ -+ (instancetype)appLinkWithSourceURL:(NSURL *)sourceURL ++ (instancetype)appLinkWithSourceURL:(nullable NSURL *)sourceURL targets:(NSArray *)targets - webURL:(nullable NSURL *)webURL; + webURL:(nullable NSURL *)webURL +NS_SWIFT_NAME(init(sourceURL:targets:webURL:)); -/*! The URL from which this FBSDKAppLink was derived */ -@property (nonatomic, strong, readonly) NSURL *sourceURL; +/** The URL from which this FBSDKAppLink was derived */ +@property (nonatomic, strong, readonly, nullable) 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. */ +/** The fallback web URL to use if no targets are installed on this device. */ @property (nonatomic, strong, readonly, nullable) NSURL *webURL; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLink.m similarity index 100% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLink.m diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.h similarity index 73% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.h index daf124f..7331872 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.h @@ -23,17 +23,17 @@ NS_ASSUME_NONNULL_BEGIN -/*! +/** The result of calling navigate on a FBSDKAppLinkNavigation */ typedef NS_ENUM(NSInteger, FBSDKAppLinkNavigationType) { - /*! Indicates that the navigation failed and no app was opened */ + /** Indicates that the navigation failed and no app was opened */ FBSDKAppLinkNavigationTypeFailure, - /*! Indicates that the navigation succeeded by opening the URL in the browser */ + /** Indicates that the navigation succeeded by opening the URL in the browser */ FBSDKAppLinkNavigationTypeBrowser, - /*! Indicates that the navigation succeeded by opening the URL in an app on the device */ + /** Indicates that the navigation succeeded by opening the URL in an app on the device */ FBSDKAppLinkNavigationTypeApp -}; +} NS_SWIFT_NAME(AppLinkNavigation.Type); /** Describes the callback for appLinkFromURLInBackground. @@ -41,67 +41,83 @@ typedef NS_ENUM(NSInteger, FBSDKAppLinkNavigationType) { @param error the error during the request, if any */ -typedef void (^FBSDKAppLinkNavigationHandler)(FBSDKAppLinkNavigationType navType, NSError * _Nullable error); +typedef void (^FBSDKAppLinkNavigationBlock)(FBSDKAppLinkNavigationType navType, NSError * _Nullable error) +NS_SWIFT_NAME(AppLinkNavigationBlock); -/*! +/** 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 FBSDKAppLinkNavigations themselves. */ NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension") +NS_SWIFT_NAME(AppLinkNavigation) @interface FBSDKAppLinkNavigation : NSObject -/*! +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +/** + The default resolver to be used for App Link resolution. If the developer has not set one explicitly, + a basic, built-in FBSDKWebViewAppLinkResolver will be used. + */ +@property (class, nonatomic, strong) id defaultResolver +NS_SWIFT_NAME(default); + +/** 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 */ +/** The AppLink to navigate to */ @property (nonatomic, strong, readonly) FBSDKAppLink *appLink; -/*! +/** Return navigation type for current instance. No-side-effect version of navigate: */ @property (nonatomic, readonly) FBSDKAppLinkNavigationType navigationType; -/*! Creates an AppLinkNavigation with the given link, extras, and App Link data */ +/** Creates an AppLinkNavigation with the given link, extras, and App Link data */ + (instancetype)navigationWithAppLink:(FBSDKAppLink *)appLink extras:(NSDictionary *)extras - appLinkData:(NSDictionary *)appLinkData; + appLinkData:(NSDictionary *)appLinkData +NS_SWIFT_NAME(init(appLink:extras:appLinkData:)); -/*! +/** Creates an NSDictionary with the correct format for iOS callback URLs, to be used as 'appLinkData' argument in the call to navigationWithAppLink:extras:appLinkData: */ + (NSDictionary *> *)callbackAppLinkDataForAppWithName:(NSString *)appName - url:(NSString *)url; + url:(NSString *)url +NS_SWIFT_NAME(callbackAppLinkData(forApp:url:)); -/*! Performs the navigation */ -- (FBSDKAppLinkNavigationType)navigate:(NSError *__autoreleasing *)error; +/** Performs the navigation */ +- (FBSDKAppLinkNavigationType)navigate:(NSError **)error +__attribute__((swift_error(nonnull_error))); -/*! Returns a FBSDKAppLink for the given URL */ -+ (void)resolveAppLink:(NSURL *)destination handler:(FBSDKAppLinkFromURLHandler)handler; +/** Returns a FBSDKAppLink for the given URL */ ++ (void)resolveAppLink:(NSURL *)destination handler:(FBSDKAppLinkBlock)handler; -/*! Returns a FBSDKAppLink for the given URL using the given App Link resolution strategy */ +/** Returns a FBSDKAppLink for the given URL using the given App Link resolution strategy */ + (void)resolveAppLink:(NSURL *)destination resolver:(id)resolver - handler:(FBSDKAppLinkFromURLHandler)handler; + handler:(FBSDKAppLinkBlock)handler; -/*! Navigates to a FBSDKAppLink and returns whether it opened in-app or in-browser */ -+ (FBSDKAppLinkNavigationType)navigateToAppLink:(FBSDKAppLink *)link error:(NSError *__autoreleasing *)error; +/** Navigates to a FBSDKAppLink and returns whether it opened in-app or in-browser */ ++ (FBSDKAppLinkNavigationType)navigateToAppLink:(FBSDKAppLink *)link error:(NSError **)error +__attribute__((swift_error(nonnull_error))); -/*! +/** Returns a FBSDKAppLinkNavigationType based on a FBSDKAppLink. It's essentially a no-side-effect version of navigateToAppLink:error:, allowing apps to determine flow based on the link type (e.g. open an @@ -109,28 +125,16 @@ NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension") */ + (FBSDKAppLinkNavigationType)navigationTypeForLink:(FBSDKAppLink *)link; -/*! Navigates to a URL (an asynchronous action) and returns a FBSDKNavigationType */ -+ (void)navigateToURL:(NSURL *)destination handler:(FBSDKAppLinkNavigationHandler)handler; +/** Navigates to a URL (an asynchronous action) and returns a FBSDKNavigationType */ ++ (void)navigateToURL:(NSURL *)destination handler:(FBSDKAppLinkNavigationBlock)handler; -/*! +/** Navigates to a URL (an asynchronous action) using the given App Link resolution strategy and returns a FBSDKNavigationType */ + (void)navigateToURL:(NSURL *)destination resolver:(id)resolver - handler:(FBSDKAppLinkNavigationHandler)handler; - -/*! - 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 FBSDK. - */ -+ (void)setDefaultResolver:(id)resolver; + handler:(FBSDKAppLinkNavigationBlock)handler; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.m similarity index 98% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.m index 436ceb4..3da574a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.m @@ -208,21 +208,21 @@ static id defaultResolver; + (void)resolveAppLink:(NSURL *)destination resolver:(id)resolver - handler:(FBSDKAppLinkFromURLHandler)handler { + handler:(FBSDKAppLinkBlock)handler { [resolver appLinkFromURL:destination handler:handler]; } -+ (void)resolveAppLink:(NSURL *)destination handler:(FBSDKAppLinkFromURLHandler)handler { ++ (void)resolveAppLink:(NSURL *)destination handler:(FBSDKAppLinkBlock)handler { [self resolveAppLink:destination resolver:[self defaultResolver] handler:handler]; } -+ (void)navigateToURL:(NSURL *)destination handler:(FBSDKAppLinkNavigationHandler)handler { ++ (void)navigateToURL:(NSURL *)destination handler:(FBSDKAppLinkNavigationBlock)handler { [self navigateToURL:destination resolver:[self defaultResolver] handler:handler]; } + (void)navigateToURL:(NSURL *)destination resolver:(id)resolver - handler:(FBSDKAppLinkNavigationHandler)handler { + handler:(FBSDKAppLinkNavigationBlock)handler { dispatch_async(dispatch_get_main_queue(), ^{ [self resolveAppLink:destination diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.h new file mode 100644 index 0000000..85127fd --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.h @@ -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 + +#import "FBSDKAppLinkResolving.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + Describes the callback for appLinkFromURLInBackground. + @param appLinks the FBSDKAppLinks representing the deferred App Links + @param error the error during the request, if any + */ +typedef void (^FBSDKAppLinksBlock)(NSDictionary * appLinks, + NSError * _Nullable error) +NS_SWIFT_NAME(AppLinksBlock); + +/** + + Provides an implementation of the FBSDKAppLinkResolving 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. + + Usage of this type requires a client token. See `[FBSDKSettings setClientToken:]` + */ + +NS_SWIFT_NAME(AppLinkResolver) +@interface FBSDKAppLinkResolver : NSObject + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +/** + Asynchronously resolves App Link data for a given array of URLs. + + @param urls The URLs to resolve into an App Link. + @param handler The completion block that will return an App Link for the given URL. + */ +- (void)appLinksFromURLs:(NSArray *)urls handler:(FBSDKAppLinksBlock)handler +NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension"); + +/** + Allocates and initializes a new instance of FBSDKAppLinkResolver. + */ ++ (instancetype)resolver +NS_SWIFT_NAME(init()); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.m similarity index 54% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.m index b83ec5b..48ecb24 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.m @@ -20,13 +20,9 @@ #import -#import -#import -#import -#import - #import "FBSDKAccessToken.h" #import "FBSDKAppLink.h" +#import "FBSDKAppLinkTarget.h" #import "FBSDKGraphRequest+Internal.h" #import "FBSDKGraphRequestConnection.h" #import "FBSDKInternalUtility.h" @@ -46,47 +42,35 @@ static NSString *const kAppLinksKey = @"app_links"; @interface FBSDKAppLinkResolver () -@property (nonatomic, strong) NSMutableDictionary *cachedBFAppLinks; @property (nonatomic, strong) NSMutableDictionary *cachedFBSDKAppLinks; @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]) { - g_BFTaskCompletionSourceClass = [FBSDKInternalUtility - resolveBoltsClassWithName:@"BFTaskCompletionSource"]; - g_BFAppLinkTargetClass = [FBSDKInternalUtility resolveBoltsClassWithName:@"BFAppLinkTarget"]; - g_BFTaskClass = [FBSDKInternalUtility resolveBoltsClassWithName:@"BFTask"]; - g_BFAppLinkClass = [FBSDKInternalUtility resolveBoltsClassWithName:@"BFAppLink"]; } } - (instancetype)initWithUserInterfaceIdiom:(UIUserInterfaceIdiom)userInterfaceIdiom { if (self = [super init]) { - self.cachedBFAppLinks = [NSMutableDictionary dictionary]; self.cachedFBSDKAppLinks = [NSMutableDictionary dictionary]; self.userInterfaceIdiom = userInterfaceIdiom; } return self; } -- (void)appLinkFromURL:(NSURL *)url handler:(FBSDKAppLinkFromURLHandler)handler +- (void)appLinkFromURL:(NSURL *)url handler:(FBSDKAppLinkBlock)handler { [self appLinksFromURLs:@[url] handler:^(NSDictionary *urls, NSError * _Nullable error) { handler(urls[url], error); }]; } -- (void)appLinksFromURLs:(NSArray *)urls handler:(FBSDKAppLinksFromURLArrayHandler)handler +- (void)appLinksFromURLs:(NSArray *)urls handler:(FBSDKAppLinksBlock)handler { if (![FBSDKSettings clientToken] && ![FBSDKAccessToken currentAccessToken]) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors @@ -166,7 +150,7 @@ static Class g_BFTaskClass; NSURL *fallbackUrl = webFallbackString ? [NSURL URLWithString:webFallbackString] : url; NSNumber *shouldFallback = webTarget[kShouldFallbackKey]; - if (shouldFallback && !shouldFallback.boolValue) { + if (shouldFallback != nil && !shouldFallback.boolValue) { fallbackUrl = nil; } @@ -182,115 +166,6 @@ static Class g_BFTaskClass; }]; } -- (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.cachedBFAppLinks) { - for (NSURL *url in urls) { - if (self.cachedBFAppLinks[url]) { - appLinks[url] = self.cachedBFAppLinks[url]; - } else { - [toFind addObject:url]; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - NSString *toFindString = [url.absoluteString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; -#pragma clang diagnostic pop - if (toFindString) { - [toFindStrings addObject:toFindString]; - } - } - } - } - 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[url.absoluteString][kAppLinksKey]; - NSMutableArray *rawTargets = [NSMutableArray array]; - if (idiomSpecificField) { - [rawTargets addObjectsFromArray:nestedObject[idiomSpecificField]]; - } - [rawTargets addObjectsFromArray:nestedObject[kIOSKey]]; - - NSMutableArray *targets = [NSMutableArray arrayWithCapacity:rawTargets.count]; - for (id rawTarget in rawTargets) { - [targets addObject:[g_BFAppLinkTargetClass appLinkTargetWithURL:[NSURL URLWithString:rawTarget[kURLKey]] - appStoreId:rawTarget[kIOSAppStoreIdKey] - appName:rawTarget[kIOSAppNameKey]]]; - } - - id webTarget = nestedObject[kWebKey]; - NSString *webFallbackString = webTarget[kURLKey]; - NSURL *fallbackUrl = webFallbackString ? [NSURL URLWithString:webFallbackString] : url; - - NSNumber *shouldFallback = webTarget[kShouldFallbackKey]; - if (shouldFallback && !shouldFallback.boolValue) { - fallbackUrl = nil; - } - - BFAppLink *link = [g_BFAppLinkClass appLinkWithSourceURL:url - targets:targets - webURL:fallbackUrl]; - @synchronized (self.cachedBFAppLinks) { - self.cachedBFAppLinks[url] = link; - } - appLinks[url] = link; - } - [tcs setResult:appLinks]; - }]; - return tcs.task; -} - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" -- (BFTask *)appLinkFromURLInBackground:(NSURL *)url -{ - // Implement in terms of appLinksFromURLsInBackground - BFTask *resolveTask = [self appLinksFromURLsInBackground:@[url]]; - return [resolveTask continueWithSuccessBlock:^id(BFTask *task) { - return task.result[url]; - }]; -} -#pragma clang diagnostic pop - + (instancetype)resolver { return [[self alloc] initWithUserInterfaceIdiom:UI_USER_INTERFACE_IDIOM()]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolving.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolving.h similarity index 77% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolving.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolving.h index fac2425..69d5591 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolving.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolving.h @@ -28,22 +28,16 @@ NS_ASSUME_NONNULL_BEGIN @param error the error during the request, if any */ -typedef void (^FBSDKAppLinkFromURLHandler)(FBSDKAppLink * _Nullable appLink, NSError * _Nullable error); +typedef void (^FBSDKAppLinkBlock)(FBSDKAppLink * _Nullable appLink, NSError * _Nullable error) +NS_SWIFT_NAME(AppLinkBlock); /** - Describes the callback for appLinkFromURLInBackground. - @param appLinks the FBSDKAppLinks representing the deferred App Links - @param error the error during the request, if any - */ -typedef void (^FBSDKAppLinksFromURLArrayHandler)(NSDictionary * appLinks, - NSError * _Nullable error); - -/*! 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. */ +NS_SWIFT_NAME(AppLinkResolving) @protocol FBSDKAppLinkResolving /** @@ -52,7 +46,7 @@ typedef void (^FBSDKAppLinksFromURLArrayHandler)(NSDictionary @optional -/*! Called when the user has tapped to navigate, but before the navigation has been performed. */ +/** Called when the user has tapped to navigate, but before the navigation has been performed. */ - (void)returnToRefererController:(FBSDKAppLinkReturnToRefererController *)controller - willNavigateToAppLink:(FBSDKAppLink *)appLink; + willNavigateToAppLink:(FBSDKAppLink *)appLink +NS_SWIFT_NAME(return(to:willNavigateTo:)); -/*! Called after the navigation has been attempted, with an indication of whether the referer +/** Called after the navigation has been attempted, with an indication of whether the referer app link was successfully opened. */ - (void)returnToRefererController:(FBSDKAppLinkReturnToRefererController *)controller didNavigateToAppLink:(FBSDKAppLink *)url - type:(FBSDKAppLinkNavigationType)type; + type:(FBSDKAppLinkNavigationType)type +NS_SWIFT_NAME(return(to:didNavigateTo:type:)); @end -/*! +/** A controller class that implements default behavior for a FBSDKAppLinkReturnToRefererView, including the ability to display the view above the navigation bar for navigation-based apps. */ NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension") +NS_SWIFT_NAME(AppLinkReturnToRefererController) @interface FBSDKAppLinkReturnToRefererController : NSObject -/*! +/** The delegate that will be notified when the user navigates back to the referer. */ @property (nonatomic, weak, nullable) id delegate; -/*! +/** The FBSDKAppLinkReturnToRefererView this controller is controlling. */ @property (nonatomic, strong) FBSDKAppLinkReturnToRefererView *view; -/*! +/** Initializes a controller suitable for controlling a FBSDKAppLinkReturnToRefererView that is to be displayed contained within another UIView (i.e., not displayed above the navigation bar). */ - (instancetype)init NS_DESIGNATED_INITIALIZER; -/*! +/** Initializes a controller suitable for controlling a FBSDKAppLinkReturnToRefererView that is to be displayed displayed above the navigation bar. - */ -- (instancetype)initForDisplayAboveNavController:(UINavigationController *)navController; -/*! + @param navController The Navigation Controller for display above + */ +- (instancetype)initForDisplayAboveNavController:(UINavigationController *)navController +NS_SWIFT_NAME(init(navController:)); + +/** Removes the view entirely from the navigation controller it is currently displayed in. */ - (void)removeFromNavController; -/*! +/** Shows the FBSDKAppLinkReturnToRefererView with the specified referer information. If nil or missing data, the view will not be displayed. */ -- (void)showViewForRefererAppLink:(FBSDKAppLink *)refererAppLink; +- (void)showViewForRefererAppLink:(FBSDKAppLink *)refererAppLink +NS_SWIFT_NAME(showView(forReferer:)); -/*! +/** Shows the FBSDKAppLinkReturnToRefererView 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; +- (void)showViewForRefererURL:(NSURL *)url +NS_SWIFT_NAME(showView(forReferer:)); -/*! +/** Closes the view, possibly animating it. */ - (void)closeViewAnimated:(BOOL)animated; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererController.m similarity index 100% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererController.m diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.h similarity index 87% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.h index c5378b7..e36366a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.h @@ -25,33 +25,35 @@ NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSUInteger, FBSDKIncludeStatusBarInSize) { FBSDKIncludeStatusBarInSizeNever, - FBSDKIncludeStatusBarInSizeIOS7AndLater, FBSDKIncludeStatusBarInSizeAlways, -}; +} NS_SWIFT_NAME(FBAppLinkReturnToRefererView.StatusBarSizeInclude); @class FBSDKAppLinkReturnToRefererView; @class FBSDKURL; -/*! +/** Protocol that a class can implement in order to be notified when the user has navigated back to the referer of an App Link. */ +NS_SWIFT_NAME(AppLinkReturnToRefererViewDelegate) @protocol FBSDKAppLinkReturnToRefererViewDelegate -/*! +/** Called when the user has tapped inside the close button. */ -- (void)returnToRefererViewDidTapInsideCloseButton:(FBSDKAppLinkReturnToRefererView *)view; +- (void)returnToRefererViewDidTapInsideCloseButton:(FBSDKAppLinkReturnToRefererView *)view +NS_SWIFT_NAME(returnToRefererViewDidTapInsideCloseButton(_:)); -/*! +/** Called when the user has tapped inside the App Link portion of the view. */ - (void)returnToRefererViewDidTapInsideLink:(FBSDKAppLinkReturnToRefererView *)view - link:(FBSDKAppLink *)link; + link:(FBSDKAppLink *)link +NS_SWIFT_NAME(returnToRefererView(_:didTapInside:)); @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 @@ -59,31 +61,33 @@ typedef NS_ENUM(NSUInteger, FBSDKIncludeStatusBarInSize) { referer data, it will have zero size and no UI will be displayed. */ NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension") +NS_SWIFT_NAME(FBAppLinkReturnToRefererView) @interface FBSDKAppLinkReturnToRefererView : UIView -/*! +/** The delegate that will be notified when the user navigates back to the referer. */ @property (nonatomic, weak, nullable) id delegate; -/*! +/** The color of the text label and close button. */ @property (nonatomic, strong) UIColor *textColor; @property (nonatomic, strong) FBSDKAppLink *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) FBSDKIncludeStatusBarInSize includeStatusBarInSize; +@property (nonatomic, assign) FBSDKIncludeStatusBarInSize includeStatusBarInSize +NS_SWIFT_NAME(statusBarSizeInclude); -/*! +/** Indicates whether the user has closed the view by clicking the close button. */ -@property (nonatomic, assign) BOOL closed; +@property (nonatomic, assign, getter=isClosed) BOOL closed; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.m similarity index 96% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.m index 82ede34..fa5f2b1 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.m @@ -63,7 +63,7 @@ static const CGFloat FBSDKCloseButtonHeight = 12.0; - (void)commonInit { // Initialization code - _includeStatusBarInSize = FBSDKIncludeStatusBarInSizeIOS7AndLater; + _includeStatusBarInSize = FBSDKIncludeStatusBarInSizeAlways; // iOS 7 system blue color self.backgroundColor = [UIColor colorWithRed:0.0f green:122.0f / 255.0f blue:1.0f alpha:1.0f]; @@ -151,11 +151,6 @@ static const CGFloat FBSDKCloseButtonHeight = 12.0; case FBSDKIncludeStatusBarInSizeAlways: include = YES; break; - case FBSDKIncludeStatusBarInSizeIOS7AndLater: { - float systemVersion = [UIDevice currentDevice].systemVersion.floatValue; - include = (systemVersion >= 7.0); - break; - } case FBSDKIncludeStatusBarInSizeNever: include = NO; break; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkTarget.h similarity index 75% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkTarget.h index 091d66a..af3e5ee 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkTarget.h @@ -20,24 +20,29 @@ NS_ASSUME_NONNULL_BEGIN -/*! +/** Represents a target defined in App Link metadata, consisting of at least a URL, and optionally an App Store ID and name. */ +NS_SWIFT_NAME(AppLinkTarget) @interface FBSDKAppLinkTarget : NSObject -/*! Creates a FBSDKAppLinkTarget with the given app site and target URL. */ -+ (instancetype)appLinkTargetWithURL:(NSURL *)url +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +/** Creates a FBSDKAppLinkTarget with the given app site and target URL. */ ++ (instancetype)appLinkTargetWithURL:(nullable NSURL *)url appStoreId:(nullable NSString *)appStoreId - appName:(NSString *)appName; + appName:(NSString *)appName +NS_SWIFT_NAME(init(url:appStoreId:appName:)); -/*! The URL prefix for this app link target */ -@property (nonatomic, strong, readonly) NSURL *URL; +/** The URL prefix for this app link target */ +@property (nonatomic, strong, readonly, nullable) NSURL *URL; -/*! The app ID for the app store */ +/** The app ID for the app store */ @property (nonatomic, copy, readonly, nullable) NSString *appStoreId; -/*! The name of the app */ +/** The name of the app */ @property (nonatomic, copy, readonly) NSString *appName; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkTarget.m similarity index 100% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkTarget.m diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.h similarity index 78% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.h index 8a971b2..44cc919 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** Describes the callback for fetchDeferredAppLink. @param url the url representing the deferred App Link @@ -27,21 +29,19 @@ 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); - - -/** - Describes the callback for fetchOrganicDeferredAppLink. - @param url the url representing the deferred App Link - */ -typedef void (^FBSDKDeferredAppInviteHandler)(NSURL *url); +typedef void (^FBSDKURLBlock)(NSURL *_Nullable url, NSError *_Nullable error) +NS_SWIFT_NAME(URLBlock); /** Class containing App Links related utility methods. */ +NS_SWIFT_NAME(AppLinkUtility) @interface FBSDKAppLinkUtility : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** 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). @@ -59,21 +59,10 @@ typedef void (^FBSDKDeferredAppInviteHandler)(NSURL *url); been processed (e.g., you should call this method from your application delegate's applicationDidBecomeActive:). */ -+ (void)fetchDeferredAppLink:(FBSDKDeferredAppLinkHandler)handler; - -/** - -@warning This method is no longer available and will always return NO. - */ -+ (BOOL)fetchDeferredAppInvite:(FBSDKDeferredAppInviteHandler)handler -DEPRECATED_MSG_ATTRIBUTE("This method is no longer available."); ++ (void)fetchDeferredAppLink:(nullable FBSDKURLBlock)handler; /* - Call this method to fetch promotion code from the url, if it's present. This function - requires Bolts framework. - - Note: This throws an exception if Bolts.framework is not linked. Add '[BFURL class]' in intialize method - of your AppDelegate. + Call this method to fetch promotion code from the url, if it's present. @param url App Link url that was passed to the app. @@ -84,6 +73,8 @@ DEPRECATED_MSG_ATTRIBUTE("This method is no longer available."); This can be used to fetch the promotion code that was associated with the invite when it was created. This method should be called with the url from the openURL method. */ -+ (NSString*)appInvitePromotionCodeFromURL:(NSURL*)url; ++ (nullable NSString *)appInvitePromotionCodeFromURL:(NSURL *)url; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.m similarity index 89% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.m index 9b180c2..f709296 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.m @@ -18,12 +18,11 @@ #import "FBSDKAppLinkUtility.h" -#import - #import "FBSDKAppEventsUtility.h" #import "FBSDKGraphRequest.h" #import "FBSDKInternalUtility.h" #import "FBSDKSettings.h" +#import "FBSDKURL.h" #import "FBSDKUtility.h" static NSString *const FBSDKLastDeferredAppLink = @"com.facebook.sdk:lastDeferredAppLink%@"; @@ -31,7 +30,7 @@ static NSString *const FBSDKDeferredAppLinkEvent = @"DEFERRED_APP_LINK"; @implementation FBSDKAppLinkUtility {} -+ (void)fetchDeferredAppLink:(FBSDKDeferredAppLinkHandler)handler ++ (void)fetchDeferredAppLink:(FBSDKURLBlock)handler { NSAssert([NSThread isMainThread], @"FBSDKAppLink fetchDeferredAppLink: must be invoked from main thread."); @@ -49,7 +48,7 @@ static NSString *const FBSDKDeferredAppLinkEvent = @"DEFERRED_APP_LINK"; parameters:deferredAppLinkParameters tokenString:nil version:nil - HTTPMethod:@"POST"]; + HTTPMethod:FBSDKHTTPMethodPOST]; [deferredAppLinkRequest startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, @@ -80,14 +79,9 @@ static NSString *const FBSDKDeferredAppLinkEvent = @"DEFERRED_APP_LINK"; }]; } -+ (BOOL)fetchDeferredAppInvite:(FBSDKDeferredAppInviteHandler)handler ++ (NSString *)appInvitePromotionCodeFromURL:(NSURL *)url { - return NO; -} - -+ (NSString*)appInvitePromotionCodeFromURL:(NSURL*)url; -{ - BFURL *parsedUrl = [[FBSDKInternalUtility resolveBoltsClassWithName:@"BFURL"] URLWithURL:url]; + FBSDKURL *parsedUrl = [FBSDKURL URLWithURL:url]; NSDictionary *extras = parsedUrl.appLinkExtras; if (extras) { NSString *deeplinkContextString = extras[@"deeplink_context"]; @@ -95,7 +89,7 @@ static NSString *const FBSDKDeferredAppLinkEvent = @"DEFERRED_APP_LINK"; // Parse deeplinkContext and extract promo code if (deeplinkContextString.length > 0) { NSError *error = nil; - NSDictionary *deeplinkContextData = [FBSDKInternalUtility objectForJSONString:deeplinkContextString error:&error]; + NSDictionary *deeplinkContextData = [FBSDKBasicUtility objectForJSONString:deeplinkContextString error:&error]; if (!error && [deeplinkContextData isKindOfClass:[NSDictionary class]]) { return deeplinkContextData[@"promo_code"]; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.h similarity index 89% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.h index 33eba98..69fd2b5 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.h @@ -22,16 +22,18 @@ NS_ASSUME_NONNULL_BEGIN -/*! - A reference implementation for an App Link resolver that uses a hidden UIWebView +/** + A reference implementation for an App Link resolver that uses a hidden WKWebView to parse the HTML containing App Link metadata. */ +NS_SWIFT_NAME(WebViewAppLinkResolver) @interface FBSDKWebViewAppLinkResolver : NSObject -/*! +/** Gets the instance of a FBSDKWebViewAppLinkResolver. */ -+ (instancetype)sharedInstance; +@property (class, nonatomic, readonly, strong) FBSDKWebViewAppLinkResolver *sharedInstance +NS_SWIFT_NAME(shared); @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.m similarity index 78% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.m index 6b6839a..51279d4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.m @@ -19,6 +19,7 @@ #import "FBSDKWebViewAppLinkResolver.h" #import +#import #import "FBSDKAppLink.h" #import "FBSDKAppLinkTarget.h" @@ -29,7 +30,8 @@ @param error the error during the request, if any */ -typedef void (^FBSDKURLFollowRedirectsHandler)(NSDictionary *result, NSError * _Nullable error); +typedef void (^FBSDKURLFollowRedirectsBlock)(NSDictionary *result, NSError * _Nullable error) +NS_SWIFT_NAME(URLFollowRedirectsBlock); // Defines JavaScript to extract app link tags from HTML content static NSString *const FBSDKWebViewAppLinkResolverTagExtractionJavaScript = @"" @@ -61,40 +63,39 @@ static NSString *const FBSDKWebViewAppLinkResolverIPadKey = @"ipad"; static NSString *const FBSDKWebViewAppLinkResolverWebURLKey = @"url"; static NSString *const FBSDKWebViewAppLinkResolverShouldFallbackKey = @"should_fallback"; -@interface FBSDKWebViewAppLinkResolverWebViewDelegate : NSObject +@interface FBSDKWebViewAppLinkResolverWebViewDelegate : NSObject -@property (nonatomic, copy) void (^didFinishLoad)(UIWebView *webView); -@property (nonatomic, copy) void (^didFailLoadWithError)(UIWebView *webView, NSError *error); +@property (nonatomic, copy) void (^didFinishLoad)(WKWebView *webView); +@property (nonatomic, copy) void (^didFailLoadWithError)(WKWebView *webView, NSError *error); @property (nonatomic, assign) BOOL hasLoaded; @end @implementation FBSDKWebViewAppLinkResolverWebViewDelegate -- (void)webViewDidFinishLoad:(UIWebView *)webView { - if (self.didFinishLoad) { - self.didFinishLoad(webView); - } +- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation +{ + if (self.didFinishLoad) { + self.didFinishLoad(webView); + } } -- (void)webViewDidStartLoad:(UIWebView *)webView { +- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error +{ + if (self.didFailLoadWithError) { + self.didFailLoadWithError(webView, error); + } } -- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { - if (self.didFailLoadWithError) { - self.didFailLoadWithError(webView, error); - } -} +- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler +{ + if (self.hasLoaded) { + self.didFinishLoad(webView); + decisionHandler(WKNavigationActionPolicyCancel); + } -- (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; + self.hasLoaded = YES; + decisionHandler(WKNavigationActionPolicyAllow); } @end @@ -110,7 +111,7 @@ static NSString *const FBSDKWebViewAppLinkResolverShouldFallbackKey = @"should_f return instance; } -- (void)followRedirects:(NSURL *)url handler:(FBSDKURLFollowRedirectsHandler)handler +- (void)followRedirects:(NSURL *)url handler:(FBSDKURLFollowRedirectsBlock)handler { // This task will be resolved with either the redirect NSURL // or a dictionary with the response data to be returned. @@ -145,7 +146,7 @@ static NSString *const FBSDKWebViewAppLinkResolverShouldFallbackKey = @"should_f }] resume]; } -- (void)appLinkFromURL:(NSURL *)url handler:(FBSDKAppLinkFromURLHandler)handler +- (void)appLinkFromURL:(NSURL *)url handler:(FBSDKAppLinkBlock)handler { dispatch_async(dispatch_get_main_queue(), ^{ [self followRedirects:url handler:^(NSDictionary *result, NSError * _Nullable error) { @@ -158,32 +159,41 @@ static NSString *const FBSDKWebViewAppLinkResolverShouldFallbackKey = @"should_f NSData *responseData = result[@"data"]; NSHTTPURLResponse *response = result[@"response"]; - UIWebView *webView = [[UIWebView alloc] init]; + WKWebView *webView = [[WKWebView alloc] init]; + FBSDKWebViewAppLinkResolverWebViewDelegate *listener = [[FBSDKWebViewAppLinkResolverWebViewDelegate alloc] init]; __block FBSDKWebViewAppLinkResolverWebViewDelegate *retainedListener = listener; - listener.didFinishLoad = ^(UIWebView *view) { + listener.didFinishLoad = ^(WKWebView *view) { if (retainedListener) { - NSDictionary *ogData = [self getALDataFromLoadedPage:view]; - [view removeFromSuperview]; - view.delegate = nil; - retainedListener = nil; - handler([self appLinkFromALData:ogData destination:url], nil); + [self getALDataFromLoadedPage:view handler:^(NSDictionary *ogData) { + [view removeFromSuperview]; + view.navigationDelegate = nil; + retainedListener = nil; + handler([self appLinkFromALData:ogData destination:url], nil); + }]; } }; - listener.didFailLoadWithError = ^(UIWebView* view, NSError *loadError) { + listener.didFailLoadWithError = ^(WKWebView *view, NSError *loadError) { if (retainedListener) { [view removeFromSuperview]; - view.delegate = nil; + view.navigationDelegate = nil; retainedListener = nil; handler(nil, loadError); } }; - webView.delegate = listener; + webView.navigationDelegate = listener; webView.hidden = YES; - [webView loadData:responseData - MIMEType:response.MIMEType - textEncodingName:response.textEncodingName - baseURL:response.URL]; + if (@available(iOS 9.0, *)) { + [webView loadData:responseData + MIMEType:response.MIMEType + characterEncodingName:response.textEncodingName + baseURL:response.URL]; + } else { + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request setValue:FBSDKWebViewAppLinkResolverMetaTagPrefix forHTTPHeaderField:FBSDKWebViewAppLinkResolverPreferHeader]; + [webView loadRequest:request]; + } + UIWindow *window = [UIApplication sharedApplication].windows.firstObject; [window addSubview:webView]; }]; @@ -227,15 +237,20 @@ static NSString *const FBSDKWebViewAppLinkResolverShouldFallbackKey = @"should_f return al; } -- (NSDictionary *)getALDataFromLoadedPage:(UIWebView *)webView { - // Run some JavaScript in the webview to fetch the meta tags. - NSString *jsonString = [webView stringByEvaluatingJavaScriptFromString:FBSDKWebViewAppLinkResolverTagExtractionJavaScript]; - NSError *error = nil; - NSArray *> *arr = - [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] - options:0 - error:&error]; - return [self parseALData:arr]; +- (void)getALDataFromLoadedPage:(WKWebView *)webView + handler:(void (^)(NSDictionary *))handler +{ + // Run some JavaScript in the webview to fetch the meta tags. + [webView evaluateJavaScript:FBSDKWebViewAppLinkResolverTagExtractionJavaScript + completionHandler:^(id _Nullable evaluateResult, NSError * _Nullable error) { + NSString *jsonString = [evaluateResult isKindOfClass:[NSString class]] ? evaluateResult : nil; + error = nil; + NSArray *> *arr = + [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] + options:0 + error:&error]; + handler([self parseALData:arr]); + }]; } /* diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/Internal/FBSDKMeasurementEventListener.h similarity index 81% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/Internal/FBSDKMeasurementEventListener.h index 3815831..580cc1e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/Internal/FBSDKMeasurementEventListener.h @@ -18,12 +18,14 @@ #import -#import "FBSDKAccessTokenCaching.h" +NS_ASSUME_NONNULL_BEGIN -FOUNDATION_EXPORT NSString *const FBSDKTokenInformationUUIDKey; +NS_SWIFT_NAME(MeasurementEventListener) +@interface FBSDKMeasurementEventListener : NSObject -@interface FBSDKAccessTokenCacheV3 : NSObject - -+ (FBSDKAccessToken *)accessTokenForV3Dictionary:(NSDictionary *)dictionary; +@property (class, nonatomic, strong, readonly) FBSDKMeasurementEventListener *defaultListener +NS_SWIFT_NAME(default); @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/Internal/FBSDKMeasurementEventListener.m similarity index 70% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/Internal/FBSDKMeasurementEventListener.m index 718e23b..aca125d 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/Internal/FBSDKMeasurementEventListener.m @@ -16,37 +16,37 @@ // IN AN ACTION OF 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 "FBSDKMeasurementEventListener.h" #import "FBSDKAppEvents+Internal.h" #import "FBSDKTimeSpentData.h" #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 -static NSNotificationName const BoltsMeasurementEventNotification = @"com.parse.bolts.measurement_event"; +static NSNotificationName const FBSDKMeasurementEventNotification = @"com.facebook.facebook-objc-sdk.measurement_event"; #else -static NSString *const BoltsMeasurementEventNotification = @"com.parse.bolts.measurement_event"; +static NSString *const FBSDKMeasurementEventNotification = @"com.facebook.facebook-objc-sdk.measurement_event"; #endif -static NSString *const BoltsMeasurementEventName = @"event_name"; -static NSString *const BoltsMeasurementEventArgs = @"event_args"; -static NSString *const BoltsMeasurementEventPrefix = @"bf_"; +static NSString *const FBSDKMeasurementEventName = @"event_name"; +static NSString *const FBSDKMeasurementEventArgs = @"event_args"; +static NSString *const FBSDKMeasurementEventPrefix = @"bf_"; -@implementation FBSDKBoltsMeasurementEventListener +@implementation FBSDKMeasurementEventListener + (instancetype)defaultListener { static dispatch_once_t dispatchOnceLocker = 0; - static FBSDKBoltsMeasurementEventListener *defaultListener = nil; + static FBSDKMeasurementEventListener *defaultListener = nil; dispatch_once(&dispatchOnceLocker, ^{ defaultListener = [[self alloc] init]; NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:defaultListener selector:@selector(logFBAppEventForNotification:) - name:BoltsMeasurementEventNotification + name:FBSDKMeasurementEventNotification object:nil]; }); return defaultListener; @@ -55,15 +55,15 @@ static NSString *const BoltsMeasurementEventPrefix = @"bf_"; - (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 ([note.userInfo[FBSDKMeasurementEventName] isEqualToString:@"al_nav_in"]) { + NSString *sourceApplication = note.userInfo[FBSDKMeasurementEventArgs][@"sourceApplication"]; if (sourceApplication) { [FBSDKTimeSpentData setSourceApplication:sourceApplication isFromAppLink:YES]; } } - NSDictionary *eventArgs = note.userInfo[BoltsMeasurementEventArgs]; - NSMutableDictionary *logData = [[NSMutableDictionary alloc] init]; - for(NSString *key in eventArgs.allKeys) { + NSDictionary *eventArgs = note.userInfo[FBSDKMeasurementEventArgs]; + 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 @@ -73,10 +73,9 @@ static NSString *const BoltsMeasurementEventPrefix = @"bf_"; safeKey = [safeKey stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" -"]]; logData[safeKey] = eventArgs[key]; } - [FBSDKAppEvents logImplicitEvent:[BoltsMeasurementEventPrefix stringByAppendingString:note.userInfo[BoltsMeasurementEventName]] - valueToSum:nil + [FBSDKAppEvents logInternalEvent:[FBSDKMeasurementEventPrefix stringByAppendingString:note.userInfo[FBSDKMeasurementEventName]] parameters:logData - accessToken:nil]; + isImplicitlyLogged:YES]; } - (void)dealloc diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.h similarity index 80% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.h index 7fa7d7f..d8b4efd 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.h @@ -18,9 +18,17 @@ #import -#import "FBSDKAccessToken.h" -#import "FBSDKAccessTokenCaching.h" +#import "FBSDKCrashObserving.h" -@interface FBSDKAccessTokenCacheV4 : NSObject +NS_ASSUME_NONNULL_BEGIN + +@interface FBSDKCrashHandler : NSObject + ++ (void)disable; ++ (void)addObserver:(id)observer; ++ (void)removeObserver:(id)observer; ++ (void)clearCrashReportFiles; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.m new file mode 100644 index 0000000..10b7592 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.m @@ -0,0 +1,322 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKCrashHandler.h" + +#import + +#import + +#import "FBSDKLibAnalyzer.h" + +#define FBSDK_MAX_CRASH_LOGS 5 +#define FBSDK_CRASH_PATH_NAME @"instrument" + +static NSUncaughtExceptionHandler *previousExceptionHandler = NULL; +static NSString *mappingTableIdentifier = NULL; +static NSString *directoryPath; + +NSString *const kFBSDKAppVersion = @"app_version"; +NSString *const kFBSDKCallstack = @"callstack"; +NSString *const kFBSDKCrashReason = @"reason"; +NSString *const kFBSDKCrashTimestamp = @"timestamp"; +NSString *const kFBSDKDeviceModel = @"device_model"; +NSString *const kFBSDKDeviceOSVersion = @"device_os_version"; + +NSString *const kFBSDKMapingTable = @"mapping_table"; +NSString *const kFBSDKMappingTableIdentifier = @"mapping_table_identifier"; + +@implementation FBSDKCrashHandler + +static NSHashTable> *_observers; +static NSArray *> *_processedCrashLogs; +static BOOL _isTurnedOff; + +# pragma mark - Class Methods + ++ (void)initialize +{ + NSString *dirPath = [NSTemporaryDirectory() stringByAppendingPathComponent:FBSDK_CRASH_PATH_NAME]; + if (![[NSFileManager defaultManager] fileExistsAtPath:dirPath]) { + [[NSFileManager defaultManager] createDirectoryAtPath:dirPath withIntermediateDirectories:NO attributes:NULL error:NULL]; + } + directoryPath = dirPath; + NSString *identifier = [[NSUUID UUID] UUIDString]; + mappingTableIdentifier = [identifier stringByReplacingOccurrencesOfString:@"-" withString:@""]; + _observers = [[NSHashTable alloc] init]; +} + ++ (void)sendCrashLogs +{ + NSArray> *observers = [_observers copy]; + for (id observer in observers) { + if (observer && [observer respondsToSelector:@selector(didReceiveCrashLogs:)]) { + NSArray *> *filteredCrashLogs = [self filterCrashLogs:observer.prefixes]; + [observer didReceiveCrashLogs:filteredCrashLogs]; + } + } +} + ++ (NSArray *> *)filterCrashLogs:(NSArray *)prefixList +{ + NSMutableArray *> *crashLogs = [NSMutableArray array]; + for (NSDictionary *crashLog in _processedCrashLogs) { + NSArray *callstack = crashLog[kFBSDKCallstack]; + if ([self callstack:callstack containsPrefix:prefixList]) { + [crashLogs addObject:crashLog]; + } + } + return crashLogs; +} + ++ (BOOL)callstack:(NSArray *)callstack + containsPrefix:(NSArray *)prefixList +{ + NSString *callStackString = [callstack componentsJoinedByString:@""]; + for (NSString *prefix in prefixList) { + if ([callStackString containsString:prefix]) { + return YES; + } + } + return NO; +} + ++ (void)disable +{ + _isTurnedOff = YES; + [FBSDKCrashHandler uninstallExceptionsHandler]; + _observers = nil; +} + ++ (void)addObserver:(id)observer +{ + if (_isTurnedOff || ![self isSafeToGenerateMapping]) { + return; + } + static dispatch_once_t onceToken = 0; + dispatch_once(&onceToken, ^{ + [FBSDKCrashHandler installExceptionsHandler]; + _processedCrashLogs = [self getProcessedCrashLogs]; + }); + if (![_observers containsObject:observer]) { + [_observers addObject:observer]; + [self generateMethodMapping:observer]; + [self sendCrashLogs]; + } +} + ++ (void)removeObserver:(id)observer +{ + if ([_observers containsObject:observer]) { + [_observers removeObject:observer]; + if (_observers.count == 0) { + [FBSDKCrashHandler uninstallExceptionsHandler]; + } + } +} + +# pragma mark handler function + ++ (void)installExceptionsHandler +{ + NSUncaughtExceptionHandler *currentHandler = NSGetUncaughtExceptionHandler(); + + if (currentHandler != FBSDKExceptionHandler) { + previousExceptionHandler = currentHandler; + NSSetUncaughtExceptionHandler(&FBSDKExceptionHandler); + } +} + ++ (void)uninstallExceptionsHandler +{ + NSSetUncaughtExceptionHandler(previousExceptionHandler); + previousExceptionHandler = nil; +} + +static void FBSDKExceptionHandler(NSException *exception) +{ + [FBSDKCrashHandler saveException:exception]; + if (previousExceptionHandler) { + previousExceptionHandler(exception); + } +} + +#pragma mark - Storage + ++ (void)saveException:(NSException *)exception +{ + if (exception.callStackSymbols && exception.name) { + NSArray *stackSymbols = [NSArray arrayWithArray:exception.callStackSymbols]; + [self saveCrashLog:@{ + kFBSDKCallstack : stackSymbols, + kFBSDKCrashReason : exception.name, + }]; + } +} + ++ (void)saveSignal:(int)signal withCallStack:(NSArray *)callStack +{ + if (callStack) { + NSString *signalDescription = [NSString stringWithCString:strsignal(signal) encoding:NSUTF8StringEncoding] ?: [NSString stringWithFormat:@"SIGNUM(%i)", signal]; + [self saveCrashLog:@{ + kFBSDKCallstack : callStack, + kFBSDKCrashReason : signalDescription, + }]; + } +} + ++ (NSArray *> *)getProcessedCrashLogs +{ + NSArray *> *crashLogs = [self loadCrashLogs]; + if (0 == crashLogs.count) { + [self clearCrashReportFiles]; + return nil; + } + NSMutableArray *> *processedCrashLogs = [NSMutableArray array]; + + for (NSDictionary *crashLog in crashLogs) { + NSArray *callstack = crashLog[kFBSDKCallstack]; + NSDictionary *methodMapping = [self loadLibData:crashLog]; + NSArray *symbolicatedCallstack = [FBSDKLibAnalyzer symbolicateCallstack:callstack methodMapping:methodMapping]; + NSMutableDictionary *symbolicatedCrashLog = [NSMutableDictionary dictionaryWithDictionary:crashLog]; + if (symbolicatedCallstack) { + [symbolicatedCrashLog setObject:symbolicatedCallstack forKey:kFBSDKCallstack]; + [symbolicatedCrashLog removeObjectForKey:kFBSDKMappingTableIdentifier]; + [processedCrashLogs addObject:symbolicatedCrashLog]; + } + } + return processedCrashLogs; +} + ++ (NSArray *> *)loadCrashLogs +{ + NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:directoryPath error:NULL]; + NSArray *fileNames = [[self getCrashLogFileNames:files] sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2){ + return [obj2 compare:obj1]; + }]; + NSMutableArray *> *crashLogArray = [NSMutableArray array]; + + for (NSUInteger i = 0; i < MIN(fileNames.count, FBSDK_MAX_CRASH_LOGS); i++) { + NSDictionary *crashLog = [self loadCrashLog:fileNames[i]]; + [crashLogArray addObject:crashLog]; + } + return [crashLogArray copy]; +} + ++ (NSDictionary *)loadCrashLog:(NSString *)fileName +{ + return [NSDictionary dictionaryWithContentsOfFile:[directoryPath stringByAppendingPathComponent:fileName]]; +} + ++ (void)clearCrashReportFiles +{ + NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:directoryPath error:nil]; + + for (NSUInteger i = 0; i < files.count; i++) { + // remove all crash related files except for the current mapping table + if ([files[i] hasPrefix:@"crash_"] && ![files[i] containsString:mappingTableIdentifier]) { + [[NSFileManager defaultManager] removeItemAtPath:[directoryPath stringByAppendingPathComponent:files[i]] error:nil]; + } + } +} + ++ (NSArray *)getCrashLogFileNames:(NSArray *)files +{ + NSMutableArray *fileNames = [NSMutableArray array]; + + for (NSString *fileName in files) { + if ([fileName hasPrefix:@"crash_log_"] && [fileName hasSuffix:@".json"]) { + [fileNames addObject:fileName]; + } + } + + return fileNames; +} + ++ (void)saveCrashLog:(NSDictionary *)crashLog +{ + NSMutableDictionary *completeCrashLog = [NSMutableDictionary dictionaryWithDictionary:crashLog]; + NSString *currentTimestamp = [NSString stringWithFormat:@"%.0lf", [[NSDate date] timeIntervalSince1970]]; + + [completeCrashLog setObject:currentTimestamp forKey:kFBSDKCrashTimestamp]; + [completeCrashLog setObject:mappingTableIdentifier forKey:kFBSDKMappingTableIdentifier]; + + NSBundle *mainBundle = [NSBundle mainBundle]; + NSString *version = [mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; + NSString *build = [mainBundle objectForInfoDictionaryKey:@"CFBundleVersion"]; + [completeCrashLog setObject:[NSString stringWithFormat:@"%@(%@)", version, build] forKey:kFBSDKAppVersion]; + + struct utsname systemInfo; + uname(&systemInfo); + [completeCrashLog setObject:@(systemInfo.machine) forKey:kFBSDKDeviceModel]; + + [completeCrashLog setObject:[UIDevice currentDevice].systemVersion forKey:kFBSDKDeviceOSVersion]; + + [completeCrashLog writeToFile:[self getPathToCrashFile:currentTimestamp] + atomically:YES]; +} + ++ (void)generateMethodMapping:(id)observer +{ + if (observer.prefixes.count == 0) { + return; + } + [[NSUserDefaults standardUserDefaults] setObject:mappingTableIdentifier forKey:kFBSDKMappingTableIdentifier]; + NSDictionary *methodMapping = [FBSDKLibAnalyzer getMethodsTable:observer.prefixes + frameworks:observer.frameworks]; + if (methodMapping.count > 0){ + [methodMapping writeToFile:[self getPathToLibDataFile:mappingTableIdentifier] + atomically:YES]; + } +} + ++ (NSDictionary *)loadLibData:(NSDictionary *)crashLog +{ + NSString *identifier = [crashLog objectForKey:kFBSDKMappingTableIdentifier]; + return [NSDictionary dictionaryWithContentsOfFile:[self getPathToLibDataFile:identifier]]; +} + ++ (NSString *)getPathToCrashFile:(NSString *)timestamp +{ + return [directoryPath stringByAppendingPathComponent: + [NSString stringWithFormat:@"crash_log_%@.json", timestamp]]; +} + ++ (NSString *)getPathToLibDataFile:(NSString *)identifier +{ + return [directoryPath stringByAppendingPathComponent: + [NSString stringWithFormat:@"crash_lib_data_%@.json", identifier]]; + +} + ++ (BOOL)isSafeToGenerateMapping +{ +#if TARGET_OS_SIMULATOR + return YES; +#else + NSString *identifier = [[NSUserDefaults standardUserDefaults] objectForKey:kFBSDKMappingTableIdentifier]; + //first app start + if (!identifier) { + return YES; + } + + return [[NSFileManager defaultManager] fileExistsAtPath:[self getPathToLibDataFile:identifier]]; +#endif +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashObserving.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashObserving.h new file mode 100644 index 0000000..070416c --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashObserving.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 + +NS_ASSUME_NONNULL_BEGIN + +@protocol FBSDKCrashObserving + +@property (nonatomic, copy) NSArray *prefixes; +@property (nonatomic, copy, nullable) NSArray *frameworks; + +@optional + +- (void)didReceiveCrashLogs:(NSArray *> *)crashLogs; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.h new file mode 100644 index 0000000..e6873ad --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.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 + +NS_ASSUME_NONNULL_BEGIN + +@interface FBSDKLibAnalyzer : NSObject + ++ (NSDictionary *)getMethodsTable:(NSArray *)prefixes + frameworks:(NSArray * _Nullable)frameworks; ++ (nullable NSArray *)symbolicateCallstack:(NSArray *)callstack + methodMapping:(NSDictionary *)methodMapping; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.m new file mode 100644 index 0000000..c96fd15 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.m @@ -0,0 +1,218 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLibAnalyzer.h" + +#import + +@implementation FBSDKLibAnalyzer + +static NSMutableDictionary *_methodMapping; + ++ (void)initialize +{ + _methodMapping = [NSMutableDictionary dictionary]; +} + ++ (NSDictionary *)getMethodsTable:(NSArray *)prefixes + frameworks:(NSArray *)frameworks +{ + NSArray *allClasses = [self getClassNames:prefixes frameworks:frameworks]; + for (NSString *className in allClasses) { + Class class = NSClassFromString(className); + if (class) { + [self addClass:class isClassMethod:NO]; + [self addClass:object_getClass(class) isClassMethod:YES]; + } + } + return [_methodMapping copy]; +} + +#pragma mark - private methods + ++ (NSArray *)getClassNames:(NSArray *)prefixes + frameworks:(NSArray *)frameworks +{ + NSMutableArray *classNames = [NSMutableArray new]; + // from main bundle + [classNames addObjectsFromArray:[self getClassesFrom:[[NSBundle mainBundle] executablePath] + prefixes:prefixes]]; + // from dynamic libraries + if (frameworks.count > 0) { + unsigned int count = 0; + const char **images = objc_copyImageNames(&count); + for (int i = 0; i < count; i++) { + NSString *image = [NSString stringWithUTF8String:images[i]]; + for (NSString *framework in frameworks) { + if ([image containsString:framework]) { + [classNames addObjectsFromArray:[self getClassesFrom:image + prefixes:nil]]; + } + } + } + free(images); + } + + return [classNames copy]; +} + ++ (NSArray *)getClassesFrom:(NSString *)image + prefixes:(NSArray *)prefixes +{ + NSMutableArray *classNames = [NSMutableArray array]; + unsigned int count = 0; + const char **classes = objc_copyClassNamesForImage([image UTF8String], &count); + for (unsigned int i = 0; i < count; i++){ + NSString *className = [NSString stringWithUTF8String:classes[i]]; + if (prefixes.count > 0) { + for (NSString *prefix in prefixes) { + if ([className hasPrefix:prefix]) { + [classNames addObject:className]; + break; + } + } + } else { + [classNames addObject:className]; + } + } + free(classes); + return [classNames copy]; +} + ++ (void)addClass:(Class)class + isClassMethod:(BOOL)isClassMethod +{ + unsigned int methodsCount = 0; + Method *methods = class_copyMethodList(class, &methodsCount); + + NSString *methodType = isClassMethod ? @"+" : @"-"; + + for (unsigned int i = 0; i < methodsCount; i++) { + Method method = methods[i]; + + if (method) { + SEL selector = method_getName(method); + + IMP methodImplementation = class_getMethodImplementation(class, selector); + NSString *methodAddress = [NSString stringWithFormat:@"0x%010lx", (unsigned long)methodImplementation]; + NSString *methodName = [NSString stringWithFormat:@"%@[%@ %@]", + methodType, + NSStringFromClass(class), + NSStringFromSelector(selector)]; + + if (methodAddress && methodName) { + [_methodMapping setObject:methodName forKey:methodAddress]; + } + } + } + free(methods); +} + ++ (NSArray *)symbolicateCallstack:(NSArray *)callstack + methodMapping:(NSDictionary *)methodMapping +{ + if (!callstack || !methodMapping) { + return nil; + } + NSArray *sortedAllAddress = [methodMapping.allKeys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { + return [obj1 compare:obj2]; + }]; + + BOOL containsFBSDKFunction = NO; + NSInteger nonSDKMethodCount = 0; + NSMutableArray *symbolicatedCallstack = [NSMutableArray array]; + + for (NSUInteger i = 0; i < callstack.count; i++){ + NSString *rawAddress = [self getAddress:callstack[i]]; + NSString *addressString = [NSString stringWithFormat:@"0x%@",[rawAddress substringWithRange:NSMakeRange(rawAddress.length - 10, 10)]]; + NSString *methodAddress = [self searchMethod:addressString sortedAllAddress:sortedAllAddress]; + + if (methodAddress) { + containsFBSDKFunction = YES; + nonSDKMethodCount == 0 ?: [symbolicatedCallstack addObject:[NSString stringWithFormat:@"(%ld DEV METHODS)", (long)nonSDKMethodCount]]; + nonSDKMethodCount = 0; + NSString *methodName = [methodMapping objectForKey:methodAddress]; + [symbolicatedCallstack addObject:[NSString stringWithFormat:@"%@%@", methodName, [self getOffset:addressString secondString:methodAddress]]]; + } else { + nonSDKMethodCount++; + } + } + nonSDKMethodCount == 0 ?: [symbolicatedCallstack addObject:[NSString stringWithFormat:@"(%ld DEV METHODS)", (long)nonSDKMethodCount]]; + + return containsFBSDKFunction ? symbolicatedCallstack : nil; +} + ++ (NSString *)getAddress:(NSString *)callstackEntry +{ + NSArray *components = [callstackEntry componentsSeparatedByString:@" "]; + for (NSString *component in components) { + if ([component containsString:@"0x"]) { + return component; + } + } + return nil; +} + ++ (NSString *)getOffset:(NSString *)firstString + secondString:(NSString *)secondString +{ + if (!firstString || !secondString) { + return nil; + } + unsigned long long first = 0, second = 0; + NSScanner *scanner = [NSScanner scannerWithString:firstString]; + [scanner scanHexLongLong:&first]; + + scanner = [NSScanner scannerWithString:secondString]; + [scanner scanHexLongLong:&second]; + + unsigned long long difference = first - second; + return [NSString stringWithFormat:@"+%llu", difference]; +} + ++ (NSString *)searchMethod:(NSString *)address + sortedAllAddress:(NSArray *)sortedAllAddress +{ + if (0 == sortedAllAddress.count) { + return nil; + } + NSString *lowestAddress = sortedAllAddress[0]; + NSString *highestAddress = sortedAllAddress[sortedAllAddress.count - 1]; + + if ([address compare:lowestAddress] == NSOrderedAscending || [address compare:highestAddress] == NSOrderedDescending) { + return nil; + } + + if ([address compare:lowestAddress] == NSOrderedSame) { + return lowestAddress; + } + + if ([address compare:highestAddress] == NSOrderedSame) { + return highestAddress; + } + + NSUInteger index = [sortedAllAddress indexOfObject:address + inSortedRange:NSMakeRange(0, sortedAllAddress.count - 1) + options:NSBinarySearchingInsertionIndex + usingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { + return [obj1 compare:obj2]; + }]; + return sortedAllAddress[index - 1]; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.h new file mode 100644 index 0000000..078d3f7 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.h @@ -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 + +NS_ASSUME_NONNULL_BEGIN + +/** + Describes the callback for appLinkFromURLInBackground. + @param object the FBSDKAppLink representing the deferred App Link + @param stop the error during the request, if any + + */ +typedef id _Nullable (^FBSDKInvalidObjectHandler)(id object, BOOL *stop) +NS_SWIFT_NAME(InvalidObjectHandler); + +@interface FBSDKBasicUtility : NSObject + +/** + 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. + */ ++ (nullable NSString *)JSONStringForObject:(id)object + error:(NSError *__autoreleasing *)errorRef + invalidObjectHandler:(nullable FBSDKInvalidObjectHandler)invalidObjectHandler; + +/** + 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:(nullable id)object + forKey:(nullable id)key; + +/** + 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; + +/** + 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:(nullable id)object; + +/** + 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. + */ ++ (nullable id)objectForJSONString:(NSString *)string error:(NSError *__autoreleasing *)errorRef; + +/** + 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. + @return Query string representation of the parameters. + */ ++ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary + error:(NSError *__autoreleasing *)errorRef + invalidObjectHandler:(nullable FBSDKInvalidObjectHandler)invalidObjectHandler; + +/** + Converts simple value types to the string equivalent 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; + +/** + Encodes a value for an URL. + @param value The value to encode. + @return The encoded value. + */ ++ (NSString *)URLEncode:(NSString *)value; + +/** + 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; + +/** + Decodes a value from an URL. + @param value The value to decode. + @return The decoded value. + */ ++ (NSString *)URLDecode:(NSString *)value; + +/** + Gzip data with default compression level if possible. + @param data The raw data. + @return nil if unable to gzip the data, otherwise gzipped data. + */ ++ (nullable NSData *)gzip:(NSData *)data; + ++ (NSString *)anonymousID; ++ (NSString *)persistenceFilePath:(NSString *)filename; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.m new file mode 100644 index 0000000..522b175 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.m @@ -0,0 +1,341 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBasicUtility.h" + +#import + +#import "FBSDKTypeUtility.h" + +#define kChunkSize 1024 + +static NSString *const FBSDK_BASICUTILITY_ANONYMOUSIDFILENAME = @"com-facebook-sdk-PersistedAnonymousID.json"; +static NSString *const FBSDK_BASICUTILITY_ANONYMOUSID_KEY = @"anon_id"; + +@protocol BASIC_FBSDKError + ++ (NSError *)invalidArgumentErrorWithName:(NSString *)name value:(id)value message:(NSString *)message; + +@end + +@implementation FBSDKBasicUtility + ++ (NSString *)JSONStringForObject:(id)object + error:(NSError *__autoreleasing *)errorRef + invalidObjectHandler:(FBSDKInvalidObjectHandler)invalidObjectHandler +{ + if (invalidObjectHandler || ![NSJSONSerialization isValidJSONObject:object]) { + object = [self _convertObjectToJSONObject:object invalidObjectHandler:invalidObjectHandler stop:NULL]; + if (![NSJSONSerialization isValidJSONObject:object]) { + if (errorRef != NULL) { + Class FBSDKErrorClass = NSClassFromString(@"FBSDKError"); + if ([FBSDKErrorClass respondsToSelector:@selector(invalidArgumentErrorWithName:value:message:)]) { + *errorRef = [FBSDKErrorClass 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)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; +} + ++ (id)_convertObjectToJSONObject:(id)object + invalidObjectHandler:(FBSDKInvalidObjectHandler)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)dictionary:(NSMutableDictionary *)dictionary setObject:(id)object forKey:(id)key +{ + if (object && key) { + dictionary[key] = object; + } +} + ++ (void)array:(NSMutableArray *)array addObject:(id)object +{ + if (object) { + [array addObject:object]; + } +} + ++ (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]; +} + ++ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary + error:(NSError *__autoreleasing *)errorRef + invalidObjectHandler:(FBSDKInvalidObjectHandler)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 = [self 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); +} + ++ (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; +} + +#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 + ++ (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 *)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; +} + ++ (NSData *)gzip:(NSData *)data +{ + const void *bytes = data.bytes; + const NSUInteger length = data.length; + + if (!bytes || !length) { + return nil; + } + +#if defined(__LP64__) && __LP64__ + if (length > UINT_MAX) { + return nil; + } +#endif + + // initialze stream + z_stream stream; + bzero(&stream, sizeof(z_stream)); + + if (deflateInit2(&stream, -1, Z_DEFLATED, 31, 8, Z_DEFAULT_STRATEGY) != Z_OK) { + return nil; + } + stream.avail_in = (uint)length; + stream.next_in = (Bytef *)bytes; + + int retCode; + NSMutableData *result = [NSMutableData dataWithCapacity:(length / 4)]; + unsigned char output[kChunkSize]; + do { + stream.avail_out = kChunkSize; + stream.next_out = output; + retCode = deflate(&stream, Z_FINISH); + if (retCode != Z_OK && retCode != Z_STREAM_END) { + deflateEnd(&stream); + return nil; + } + unsigned size = kChunkSize - stream.avail_out; + if (size > 0) { + [result appendBytes:output length:size]; + } + } while (retCode == Z_OK); + + deflateEnd(&stream); + + return result; +} + ++ (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 *)retrievePersistedAnonymousID +{ + NSString *file = [[self class] persistenceFilePath:FBSDK_BASICUTILITY_ANONYMOUSIDFILENAME]; + NSString *content = [[NSString alloc] initWithContentsOfFile:file + encoding:NSASCIIStringEncoding + error:nil]; + NSDictionary *results = [FBSDKBasicUtility objectForJSONString:content error:NULL]; + return results[FBSDK_BASICUTILITY_ANONYMOUSID_KEY]; +} + ++ (NSString *)persistenceFilePath:(NSString *)filename +{ + NSSearchPathDirectory directory = NSLibraryDirectory; + NSArray *paths = NSSearchPathForDirectoriesInDomains(directory, NSUserDomainMask, YES); + NSString *docDirectory = paths[0]; + return [docDirectory stringByAppendingPathComponent:filename]; +} + ++ (void)persistAnonymousID:(NSString *)anonymousID +{ + NSDictionary *data = @{ FBSDK_BASICUTILITY_ANONYMOUSID_KEY : anonymousID }; + NSString *content = [self JSONStringForObject:data error:NULL invalidObjectHandler:NULL]; + + [content writeToFile:[[self class] persistenceFilePath:FBSDK_BASICUTILITY_ANONYMOUSIDFILENAME] + atomically:YES + encoding:NSASCIIStringEncoding + error:nil]; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKTypeUtility.h similarity index 98% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKTypeUtility.h index 425b855..6e36ed0 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKTypeUtility.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(TypeUtility) @interface FBSDKTypeUtility : NSObject - (instancetype)init NS_UNAVAILABLE; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKTypeUtility.m similarity index 98% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKTypeUtility.m index fd6c733..baf61c3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKTypeUtility.m @@ -105,7 +105,7 @@ if ([object isKindOfClass:[NSURL class]]) { return (NSURL *)object; } else if ([object isKindOfClass:[NSString class]]) { - return [[NSURL alloc] initWithString:(NSString *)object]; + return [NSURL URLWithString:(NSString *)object]; } else { return nil; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.h similarity index 63% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.h index 9377089..34707dc 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.h @@ -18,26 +18,27 @@ #import +#import "FBSDKURLSessionTask.h" + NS_ASSUME_NONNULL_BEGIN -@interface FBSDKUserDataStore : NSObject +@interface FBSDKURLSession : NSObject -+ (void)initStore; +@property (atomic, strong, nullable) NSURLSession *session; +@property (nonatomic, weak, nullable) id delegate; +@property (nonatomic, retain, nullable) NSOperationQueue *delegateQueue; -+ (void)setUserDataAndHash:(NSDictionary *)ud; +- (instancetype)initWithDelegate:(id)delegate + delegateQueue:(NSOperationQueue *)delegateQueue; -+ (void)setUserDataAndHash:(nullable NSString *)email - firstName:(nullable NSString *)firstName - lastName:(nullable NSString *)lastName - phone:(nullable NSString *)phone - dateOfBirth:(nullable NSString *)dateOfBirth - gender:(nullable NSString *)gender - city:(nullable NSString *)city - state:(nullable NSString *)state - zip:(nullable NSString *)zip - country:(nullable NSString *)country; +- (void)executeURLRequest:(NSURLRequest *)request + completionHandler:(FBSDKURLSessionTaskBlock)handler; -+ (NSString *) getHashedUserData; +- (void)updateSessionWithBlock:(dispatch_block_t)block; + +- (void)invalidateAndCancel; + +- (BOOL)valid; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.m new file mode 100644 index 0000000..cde4f15 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.m @@ -0,0 +1,71 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKURLSession.h" + +#import "FBSDKBasicUtility.h" +#import "FBSDKURLSessionTask.h" + +@implementation FBSDKURLSession + +- (instancetype)initWithDelegate:(id)delegate + delegateQueue:(NSOperationQueue *)queue +{ + if ((self = [super init])) { + self.delegate = delegate; + self.delegateQueue = queue; + } + return self; +} + +- (void)executeURLRequest:(NSURLRequest *)request + completionHandler:(FBSDKURLSessionTaskBlock)handler +{ + if (!self.valid) { + [self updateSessionWithBlock:^{ + FBSDKURLSessionTask *task = [[FBSDKURLSessionTask alloc] initWithRequest:request fromSession:self.session completionHandler:handler]; + [task start]; + }]; + } else { + FBSDKURLSessionTask *task = [[FBSDKURLSessionTask alloc] initWithRequest:request fromSession:self.session completionHandler:handler]; + [task start]; + } +} + +- (void)updateSessionWithBlock:(dispatch_block_t)block +{ + if (!self.valid) { + self.session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] + delegate:_delegate + delegateQueue:_delegateQueue]; + } + block(); +} + +- (void)invalidateAndCancel +{ + [self.session invalidateAndCancel]; + self.session = nil; +} + +- (BOOL)valid +{ + return self.session != nil; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.h new file mode 100644 index 0000000..252d8b4 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.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 + +typedef void (^FBSDKURLSessionTaskBlock)(NSData *responseData, + NSURLResponse *response, + NSError *error) +NS_SWIFT_NAME(URLSessionTaskBlock); + +NS_SWIFT_NAME(URLSessionTask) +@interface FBSDKURLSessionTask : NSObject + +@property (nonatomic, strong) NSURLSessionTask *task; +@property (atomic, readonly) NSURLSessionTaskState state; +@property (nonatomic, strong, readonly) NSDate *requestStartDate; +@property (nonatomic, copy) FBSDKURLSessionTaskBlock handler; +@property (nonatomic, assign) uint64_t requestStartTime; +@property (nonatomic, assign) NSUInteger loggerSerialNumber; + ++ (instancetype)new NS_UNAVAILABLE; + +- (instancetype)initWithRequest:(NSURLRequest *)request + fromSession:(NSURLSession *)session + completionHandler:(FBSDKURLSessionTaskBlock)handler; + +- (void)start; +- (void)cancel; + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.m new file mode 100644 index 0000000..35f404a --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.m @@ -0,0 +1,60 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKURLSessionTask.h" + +@implementation FBSDKURLSessionTask + +- (instancetype)init +{ + if ((self = [super init])) { + _requestStartDate = [NSDate date]; + } + return self; +} + +- (instancetype)initWithRequest:(NSURLRequest *)request + fromSession:(NSURLSession *)session + completionHandler:(FBSDKURLSessionTaskBlock)handler +{ + if ((self = [self init])) { + self.requestStartTime = (uint64_t)([self.requestStartDate timeIntervalSince1970] * 1000); + self.task = [session dataTaskWithRequest:request completionHandler:handler]; + } + return self; +} + +- (NSURLSessionTaskState)state +{ + return self.task.state; +} + +#pragma mark - Task State + +- (void)start +{ + [self.task resume]; +} + +- (void)cancel +{ + [self.task cancel]; + self.handler = nil; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h index ff73de5..94f9f8f 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h @@ -21,6 +21,8 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 /** @@ -30,19 +32,20 @@ `FBSDKAccessTokenChangeOldKey` and `FBSDKAccessTokenChangeNewKey`. */ -FOUNDATION_EXPORT NSNotificationName const FBSDKAccessTokenDidChangeNotification; +FOUNDATION_EXPORT NSNotificationName const FBSDKAccessTokenDidChangeNotification +NS_SWIFT_NAME(AccessTokenDidChange); #else /** - Notification indicating that the `currentAccessToken` has changed. + Notification indicating that the `currentAccessToken` has changed. the userInfo dictionary of the notification will contain keys `FBSDKAccessTokenChangeOldKey` and `FBSDKAccessTokenChangeNewKey`. */ -FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidChangeNotification; - +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidChangeNotification +NS_SWIFT_NAME(AccessTokenDidChangeNotification); #endif /** @@ -58,89 +61,111 @@ FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidChangeNotification; 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). */ -FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidChangeUserIDKey; - -FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidChangeUserID -DEPRECATED_MSG_ATTRIBUTE("Renamed `FBSDKAccessTokenDidChangeUserIDKey`"); +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidChangeUserIDKey +NS_SWIFT_NAME(AccessTokenDidChangeUserIDKey); /* key in notification's userInfo object for getting the old token. If there was no old token, the key will not be present. */ -FOUNDATION_EXPORT NSString *const FBSDKAccessTokenChangeOldKey; +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenChangeOldKey +NS_SWIFT_NAME(AccessTokenChangeOldKey); /* key in notification's userInfo object for getting the new token. If there is no new token, the key will not be present. */ -FOUNDATION_EXPORT NSString *const FBSDKAccessTokenChangeNewKey; +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenChangeNewKey +NS_SWIFT_NAME(AccessTokenChangeNewKey); /* A key in the notification's userInfo that will be set if and only if the token has expired. */ -FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidExpireKey; - -FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidExpire -DEPRECATED_MSG_ATTRIBUTE("Renamed `FBSDKAccessTokenDidExpireKey`"); +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidExpireKey +NS_SWIFT_NAME(AccessTokenDidExpireKey); /** Represents an immutable access token for using Facebook services. */ +NS_SWIFT_NAME(AccessToken) @interface FBSDKAccessToken : NSObject + +/** + The "global" access token that represents the currently logged in user. + + The `currentAccessToken` is a convenient representation of the token of the + current user and is used by other SDK components (like `FBSDKLoginManager`). + */ +@property (class, nonatomic, copy, nullable) FBSDKAccessToken *currentAccessToken; + +/** + Returns YES if currentAccessToken is not nil AND currentAccessToken is not expired + + */ +@property (class, nonatomic, assign, readonly, getter=isCurrentAccessTokenActive) BOOL currentAccessTokenIsActive; + /** Returns the app ID. */ -@property (readonly, copy, nonatomic) NSString *appID; +@property (nonatomic, copy, readonly) NSString *appID; /** Returns the expiration date for data access */ -@property (readonly, copy, nonatomic) NSDate *dataAccessExpirationDate; +@property (nonatomic, copy, readonly) NSDate *dataAccessExpirationDate; /** Returns the known declined permissions. */ -@property (readonly, copy, nonatomic) NSSet *declinedPermissions; +@property (nonatomic, copy, readonly) NSSet *declinedPermissions +NS_REFINED_FOR_SWIFT; + +/** + Returns the known declined permissions. + */ +@property (nonatomic, copy, readonly) NSSet *expiredPermissions +NS_REFINED_FOR_SWIFT; /** Returns the expiration date. */ -@property (readonly, copy, nonatomic) NSDate *expirationDate; +@property (nonatomic, copy, readonly) NSDate *expirationDate; /** Returns the known granted permissions. */ -@property (readonly, copy, nonatomic) NSSet *permissions; +@property (nonatomic, copy, readonly) NSSet *permissions +NS_REFINED_FOR_SWIFT; /** Returns the date the token was last refreshed. */ -@property (readonly, copy, nonatomic) NSDate *refreshDate; +@property (nonatomic, copy, readonly) NSDate *refreshDate; /** Returns the opaque token string. */ -@property (readonly, copy, nonatomic) NSString *tokenString; +@property (nonatomic, copy, readonly) NSString *tokenString; /** Returns the user ID. */ -@property (readonly, copy, nonatomic) NSString *userID; +@property (nonatomic, copy, readonly) NSString *userID; /** Returns whether the access token is expired by checking its expirationDate property */ -@property (readonly, assign, nonatomic, getter = isExpired) BOOL expired; +@property (readonly, assign, nonatomic, getter=isExpired) BOOL expired; /** Returns whether user data access is still active for the given access token */ -@property (readonly, assign, nonatomic, getter = isDataAccessExpired) BOOL dataAccessExpired; +@property (readonly, assign, nonatomic, getter=isDataAccessExpired) BOOL dataAccessExpired; - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; @@ -152,29 +177,7 @@ DEPRECATED_MSG_ATTRIBUTE("Renamed `FBSDKAccessTokenDidExpireKey`"); 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). - - 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; - -/** - 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 + @param expiredPermissions the expired 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. @@ -188,20 +191,22 @@ DEPRECATED_MSG_ATTRIBUTE("Renamed `FBSDKAccessTokenDidExpireKey`"); along with `+currentAccessToken`. */ - (instancetype)initWithTokenString:(NSString *)tokenString - permissions:(NSArray *)permissions - declinedPermissions:(NSArray *)declinedPermissions + permissions:(NSArray *)permissions + declinedPermissions:(NSArray *)declinedPermissions + expiredPermissions:(NSArray *)expiredPermissions appID:(NSString *)appID userID:(NSString *)userID - expirationDate:(NSDate *)expirationDate - refreshDate:(NSDate *)refreshDate - dataAccessExpirationDate:(NSDate *)dataAccessExpirationDate + expirationDate:(nullable NSDate *)expirationDate + refreshDate:(nullable NSDate *)refreshDate + dataAccessExpirationDate:(nullable NSDate *)dataAccessExpirationDate NS_DESIGNATED_INITIALIZER; /** Convenience getter to determine if a permission has been granted @param permission The permission to check. */ -- (BOOL)hasGranted:(NSString *)permission; +- (BOOL)hasGranted:(NSString *)permission +NS_SWIFT_NAME(hasGranted(permission:)); /** Compares the receiver to another FBSDKAccessToken @@ -210,28 +215,6 @@ NS_DESIGNATED_INITIALIZER; */ - (BOOL)isEqualToAccessToken:(FBSDKAccessToken *)token; -/** - Returns the "global" access token that represents the currently logged in user. - - The `currentAccessToken` is a convenient representation of the token of the - current user and is used by other SDK components (like `FBSDKLoginManager`). - */ -+ (FBSDKAccessToken *)currentAccessToken; - -/** - Returns YES if currentAccessToken is not nil AND currentAccessToken is not expired - - */ -+ (BOOL)currentAccessTokenIsActive; - -/** - Sets the "global" access token that represents the currently logged in user. - @param token The access token to set. - - This will broadcast a notification and save the token to the app keychain. - */ -+ (void)setCurrentAccessToken:(FBSDKAccessToken *)token; - /** Refresh the current access token's permission state and extend the token's expiration date, if possible. @@ -242,6 +225,8 @@ NS_DESIGNATED_INITIALIZER; If a token is already expired, it cannot be refreshed. */ -+ (void)refreshCurrentAccessToken:(FBSDKGraphRequestHandler)completionHandler; ++ (void)refreshCurrentAccessToken:(nullable FBSDKGraphRequestBlock)completionHandler; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m index f26a9e2..71d215a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m @@ -33,18 +33,17 @@ NSString *const FBSDKAccessTokenDidChangeNotification = @"com.facebook.sdk.FBSDK #endif -NSString *const FBSDKAccessTokenDidChangeUserIDKey = @"FBSDKAccessTokenDidChangeUserID"; -NSString *const FBSDKAccessTokenDidChangeUserID = @"FBSDKAccessTokenDidChangeUserID"; +NSString *const FBSDKAccessTokenDidChangeUserIDKey = @"FBSDKAccessTokenDidChangeUserIDKey"; NSString *const FBSDKAccessTokenChangeNewKey = @"FBSDKAccessToken"; NSString *const FBSDKAccessTokenChangeOldKey = @"FBSDKAccessTokenOld"; -NSString *const FBSDKAccessTokenDidExpireKey = @"FBSDKAccessTokenDidExpire"; -NSString *const FBSDKAccessTokenDidExpire = @"FBSDKAccessTokenDidExpire"; +NSString *const FBSDKAccessTokenDidExpireKey = @"FBSDKAccessTokenDidExpireKey"; 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_EXPIREDPERMISSIONS_KEY @"expiredPermissions" #define FBSDK_ACCESSTOKEN_APPID_KEY @"appID" #define FBSDK_ACCESSTOKEN_USERID_KEY @"userID" #define FBSDK_ACCESSTOKEN_REFRESHDATE_KEY @"refreshDate" @@ -57,41 +56,25 @@ static FBSDKAccessToken *g_currentAccessToken; - (instancetype)initWithTokenString:(NSString *)tokenString permissions:(NSArray *)permissions declinedPermissions:(NSArray *)declinedPermissions + expiredPermissions:(NSArray *)expiredPermissions appID:(NSString *)appID userID:(NSString *)userID expirationDate:(NSDate *)expirationDate refreshDate:(NSDate *)refreshDate + dataAccessExpirationDate:(NSDate *)dataAccessExpirationDate { - return [self initWithTokenString:tokenString - permissions:permissions - declinedPermissions:declinedPermissions - appID:appID - userID:userID - expirationDate:expirationDate - refreshDate:refreshDate - dataAccessExpirationDate:[NSDate distantFuture]]; -} - -- (instancetype)initWithTokenString:(NSString *)tokenString - permissions:(NSArray *)permissions - declinedPermissions:(NSArray *)declinedPermissions - appID:(NSString *)appID - userID:(NSString *)userID - expirationDate:(NSDate *)expirationDate - refreshDate:(NSDate *)refreshDate - dataAccessExpirationDate:(NSDate *)dataAccessExpirationDate -{ - 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]; - _dataAccessExpirationDate = [dataAccessExpirationDate copy] ?: [NSDate distantFuture]; - } - return self; + if ((self = [super init])) { + _tokenString = [tokenString copy]; + _permissions = [NSSet setWithArray:permissions]; + _declinedPermissions = [NSSet setWithArray:declinedPermissions]; + _expiredPermissions = [NSSet setWithArray:expiredPermissions]; + _appID = [appID copy]; + _userID = [userID copy]; + _expirationDate = [expirationDate copy] ?: [NSDate distantFuture]; + _refreshDate = [refreshDate copy] ?: [NSDate date]; + _dataAccessExpirationDate = [dataAccessExpirationDate copy] ?: [NSDate distantFuture]; + } + return self; } - (BOOL)hasGranted:(NSString *)permission @@ -119,10 +102,10 @@ static FBSDKAccessToken *g_currentAccessToken; { if (token != g_currentAccessToken) { NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:userInfo setObject:token forKey:FBSDKAccessTokenChangeNewKey]; - [FBSDKInternalUtility dictionary:userInfo setObject:g_currentAccessToken forKey:FBSDKAccessTokenChangeOldKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:token forKey:FBSDKAccessTokenChangeNewKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:g_currentAccessToken forKey:FBSDKAccessTokenChangeOldKey]; // We set this flag also when the current Access Token was not valid, since there might be legacy code relying on it - if (![g_currentAccessToken.userID isEqualToString:token.userID] || ![self currentAccessTokenIsActive]) { + if (![g_currentAccessToken.userID isEqualToString:token.userID] || !self.isCurrentAccessTokenActive) { userInfo[FBSDKAccessTokenDidChangeUserIDKey] = @YES; } @@ -141,22 +124,22 @@ static FBSDKAccessToken *g_currentAccessToken; } } -+ (BOOL)currentAccessTokenIsActive ++ (BOOL)isCurrentAccessTokenActive { FBSDKAccessToken *currentAccessToken = [self currentAccessToken]; return currentAccessToken != nil && !currentAccessToken.isExpired; } -+ (void)refreshCurrentAccessToken:(FBSDKGraphRequestHandler)completionHandler ++ (void)refreshCurrentAccessToken:(FBSDKGraphRequestBlock)completionHandler { if ([FBSDKAccessToken currentAccessToken]) { FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; [FBSDKGraphRequestPiggybackManager addRefreshPiggyback:connection permissionHandler:completionHandler]; [connection start]; - } else { - if (completionHandler) { - completionHandler(nil, nil, [NSError fbErrorWithCode:FBSDKErrorAccessTokenRequired message:@"No current access token to refresh"]); - } + } else if (completionHandler) { + completionHandler(nil, nil, [FBSDKError + errorWithCode:FBSDKErrorAccessTokenRequired + message:@"No current access token to refresh"]); } } @@ -168,6 +151,7 @@ static FBSDKAccessToken *g_currentAccessToken; self.tokenString.hash, self.permissions.hash, self.declinedPermissions.hash, + self.expiredPermissions.hash, self.appID.hash, self.userID.hash, self.refreshDate.hash, @@ -194,6 +178,7 @@ static FBSDKAccessToken *g_currentAccessToken; [FBSDKInternalUtility object:self.tokenString isEqualToObject:token.tokenString] && [FBSDKInternalUtility object:self.permissions isEqualToObject:token.permissions] && [FBSDKInternalUtility object:self.declinedPermissions isEqualToObject:token.declinedPermissions] && + [FBSDKInternalUtility object:self.expiredPermissions isEqualToObject:token.expiredPermissions] && [FBSDKInternalUtility object:self.appID isEqualToObject:token.appID] && [FBSDKInternalUtility object:self.userID isEqualToObject:token.userID] && [FBSDKInternalUtility object:self.refreshDate isEqualToObject:token.refreshDate] && @@ -220,6 +205,7 @@ static FBSDKAccessToken *g_currentAccessToken; { NSString *appID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_ACCESSTOKEN_APPID_KEY]; NSSet *declinedPermissions = [decoder decodeObjectOfClass:[NSSet class] forKey:FBSDK_ACCESSTOKEN_DECLINEDPERMISSIONS_KEY]; + NSSet *expiredPermissions = [decoder decodeObjectOfClass:[NSSet class] forKey:FBSDK_ACCESSTOKEN_EXPIREDPERMISSIONS_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]; @@ -230,6 +216,7 @@ static FBSDKAccessToken *g_currentAccessToken; return [self initWithTokenString:tokenString permissions:permissions.allObjects declinedPermissions:declinedPermissions.allObjects + expiredPermissions:expiredPermissions.allObjects appID:appID userID:userID expirationDate:expirationDate @@ -241,6 +228,7 @@ static FBSDKAccessToken *g_currentAccessToken; { [encoder encodeObject:self.appID forKey:FBSDK_ACCESSTOKEN_APPID_KEY]; [encoder encodeObject:self.declinedPermissions forKey:FBSDK_ACCESSTOKEN_DECLINEDPERMISSIONS_KEY]; + [encoder encodeObject:self.expiredPermissions forKey:FBSDK_ACCESSTOKEN_EXPIREDPERMISSIONS_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]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h deleted file mode 100644 index 39b5dc0..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 "FBSDKAppLinkResolving.h" - -@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. - */ -DEPRECATED_MSG_ATTRIBUTE("Use `FBSDKAppLinkResolving`") -@protocol BFAppLinkResolving - -/** - Asynchronously resolves App Link data for a given URL. - - @param url The URL to resolve into an App Link. - @return A BFTask that will return a BFAppLink for the given URL. - */ -- (BFTask *)appLinkFromURLInBackground:(NSURL *)url -DEPRECATED_MSG_ATTRIBUTE("Use `appLinkFromURL:handler:`"); - -@end - -#endif - -/** - - 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. - - - - Usage of this type requires a client token. See `[FBSDKSettings setClientToken:]` and linking - Bolts.framework - */ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" -@interface FBSDKAppLinkResolver : NSObject -#pragma clang diagnostic pop - -/** - Asynchronously resolves App Link data for multiple URLs. - - @param urls An array of NSURLs to resolve into App Links. - @return A BFTask that will return dictionary mapping input NSURLs to their - corresponding BFAppLink. - - You should set the client token before making this call. See `[FBSDKSettings setClientToken:]` - */ -- (BFTask *)appLinksFromURLsInBackground:(NSArray *)urls -DEPRECATED_MSG_ATTRIBUTE("Use `appLinkFromURLs:handler:`"); - -/** - Asynchronously resolves App Link data for a given URL. - - @param url The URL to resolve into an App Link. - @return A BFTask that will return a BFAppLink for the given URL. - */ -- (BFTask *)appLinkFromURLInBackground:(NSURL *)url -DEPRECATED_MSG_ATTRIBUTE("Use `appLinkFromURL:handler:`"); - -/** - Asynchronously resolves App Link data for a given array of URLs. - - @param urls The URLs to resolve into an App Link. - @param handler The completion block that will return an App Link for the given URL. - */ -- (void)appLinksFromURLs:(NSArray *)urls handler:(FBSDKAppLinksFromURLArrayHandler)handler -NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension"); - -/** - Allocates and initializes a new instance of FBSDKAppLinkResolver. - */ -+ (instancetype)resolver; - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h index c1eca10..f090480 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** The FBSDKApplicationDelegate is designed to post process the results from Facebook Login @@ -29,12 +31,17 @@ 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. */ +NS_SWIFT_NAME(ApplicationDelegate) @interface FBSDKApplicationDelegate : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** - Gets the singleton instance. + Gets the singleton instance. */ -+ (instancetype)sharedInstance; +@property (class, nonatomic, readonly, strong) FBSDKApplicationDelegate *sharedInstance +NS_SWIFT_NAME(shared); /** Call this method from the [UIApplicationDelegate application:openURL:sourceApplication:annotation:] method @@ -53,8 +60,8 @@ */ - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url - sourceApplication:(NSString *)sourceApplication - annotation:(id)annotation; + sourceApplication:(nullable NSString *)sourceApplication + annotation:(nullable id)annotation; #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_9_0 /** @@ -72,7 +79,7 @@ */ - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url - options:(NSDictionary *)options; + options:(NSDictionary *)options; #endif /** @@ -87,6 +94,19 @@ controlled via 'FacebookAutoLogAppEventsEnabled' key in the project info plist f @return YES if the url was intended for the Facebook SDK, NO if not. */ -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; +- (BOOL)application:(UIApplication *)application +didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions; + +/** + Call this method to manually initialize SDK. + As we initialize SDK automatically, this should only be called when auto initialization is disabled, this can be + controlled via 'FacebookAutoInitEnabled' key in the project info plist file. + + @param launchOptions The launchOptions as passed to [UIApplicationDelegate application:didFinishLaunchingWithOptions:]. + Could be nil if you don't call this function from [UIApplicationDelegate application:didFinishLaunchingWithOptions:]. + */ ++ (void)initializeSDK:(nullable NSDictionary *)launchOptions; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m index c80cfd6..cfb3528 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m @@ -21,27 +21,22 @@ #import -#if !TARGET_OS_TV -#import -#endif - #import "FBSDKAppEvents+Internal.h" #import "FBSDKConstants.h" #import "FBSDKDynamicFrameworkLoader.h" #import "FBSDKError.h" +#import "FBSDKFeatureManager.h" #import "FBSDKGateKeeperManager.h" +#import "FBSDKInstrumentManager.h" #import "FBSDKInternalUtility.h" #import "FBSDKLogger.h" #import "FBSDKServerConfiguration.h" #import "FBSDKServerConfigurationManager.h" #import "FBSDKSettings+Internal.h" #import "FBSDKTimeSpentData.h" -#import "FBSDKUtility.h" #if !TARGET_OS_TV -#import "FBSDKBoltsMeasurementEventListener.h" -#import "FBSDKBridgeAPIRequest.h" -#import "FBSDKBridgeAPIResponse.h" +#import "FBSDKMeasurementEventListener.h" #import "FBSDKContainerViewController.h" #import "FBSDKProfile+Internal.h" #endif @@ -57,94 +52,102 @@ NSString *const FBSDKApplicationDidBecomeActiveNotification = @"com.facebook.sdk #endif static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; - -typedef void (^FBSDKAuthenticationCompletionHandler)(NSURL *_Nullable callbackURL, NSError *_Nullable error); - -@protocol FBSDKAuthenticationSession - -- (instancetype)initWithURL:(NSURL *)URL callbackURLScheme:(nullable NSString *)callbackURLScheme completionHandler:(FBSDKAuthenticationCompletionHandler)completionHandler; -- (BOOL)start; -- (void)cancel; - -@end +static NSString *const FBSDKKitsBitmaskKey = @"com.facebook.sdk.kits.bitmask"; +static BOOL g_isSDKInitialized = NO; +static UIApplicationState _applicationState; @implementation FBSDKApplicationDelegate { -#if !TARGET_OS_TV - FBSDKBridgeAPIRequest *_pendingRequest; - FBSDKBridgeAPICallbackBlock _pendingRequestCompletionBlock; - id _pendingURLOpen; - id _authenticationSession NS_AVAILABLE_IOS(11_0); - FBSDKAuthenticationCompletionHandler _authenticationSessionCompletionHandler NS_AVAILABLE_IOS(11_0); -#endif - BOOL _expectingBackground; - BOOL _isRequestingSFAuthenticationSession; - UIViewController *_safariViewController; - BOOL _isDismissingSafariViewController; - BOOL _isAppLaunched; + NSHashTable> *_applicationObservers; + BOOL _isAppLaunched; } #pragma mark - Class Methods + (void)load { + if ([FBSDKSettings isAutoInitEnabled]) { // 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; - - [[self sharedInstance] application:[UIApplication sharedApplication] didFinishLaunchingWithOptions:launchData]; - -#if !TARGET_OS_TV - // Register Listener for Bolts measurement events - [FBSDKBoltsMeasurementEventListener defaultListener]; -#endif - // 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]; - - [FBSDKInternalUtility validateFacebookReservedURLSchemes]; - // Remove the observer - [[NSNotificationCenter defaultCenter] removeObserver:self]; + [self initializeSDK:note.userInfo]; + // Remove the observer + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIApplicationDidFinishLaunchingNotification + object:nil]; } -+ (instancetype)sharedInstance ++ (void)initializeSDK:(NSDictionary *)launchOptions { - static FBSDKApplicationDelegate *_sharedInstance; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _sharedInstance = [[self alloc] _init]; - }); - return _sharedInstance; + if (g_isSDKInitialized) { + // Do nothing if initialized already + return; + } + + g_isSDKInitialized = YES; + + FBSDKApplicationDelegate *delegate = [self sharedInstance]; + + NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; + [defaultCenter addObserver:delegate selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; + [defaultCenter addObserver:delegate selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; + + [[FBSDKAppEvents singleton] registerNotifications]; + + [delegate application:[UIApplication sharedApplication] didFinishLaunchingWithOptions:launchOptions]; + + [FBSDKFeatureManager checkFeature:FBSDKFeatureInstrument completionBlock:^(BOOL enabled) { + if (enabled) { + [FBSDKInstrumentManager enable]; + } + }]; + + [FBSDKFeatureManager checkFeature:FBSDKFeatureRestrictiveDataFiltering completionBlock:^(BOOL enabled) { + if (enabled) { + [FBSDKRestrictiveDataFilterManager enable]; + } + }]; + +#if !TARGET_OS_TV + // Register Listener for App Link measurement events + [FBSDKMeasurementEventListener defaultListener]; +#endif + // Set the SourceApplication for time spent data. This is not going to update the value if the app has already launched. + [FBSDKTimeSpentData setSourceApplication:launchOptions[UIApplicationLaunchOptionsSourceApplicationKey] + openURL:launchOptions[UIApplicationLaunchOptionsURLKey]]; + // Register on UIApplicationDidEnterBackgroundNotification events to reset source application data when app backgrounds. + [FBSDKTimeSpentData registerAutoResetSourceApplication]; + + [FBSDKInternalUtility validateFacebookReservedURLSchemes]; +} + ++ (FBSDKApplicationDelegate *)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]; - - [[FBSDKAppEvents singleton] registerNotifications]; - } - return self; -} - - (instancetype)init { - return nil; + if ((self = [super init]) != nil) { + _applicationObservers = [[NSHashTable alloc] init]; + } + return self; } - (void)dealloc @@ -175,53 +178,33 @@ typedef void (^FBSDKAuthenticationCompletionHandler)(NSURL *_Nullable callbackUR 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 (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 !TARGET_OS_TV - id pendingURLOpen = _pendingURLOpen; - - void (^completePendingOpenURLBlock)(void) = ^{ - self->_pendingURLOpen = nil; - [pendingURLOpen application:application - openURL:url - sourceApplication:sourceApplication - annotation:annotation]; - self->_isDismissingSafariViewController = NO; - }; - // if they completed a SFVC flow, dismiss it. - if (_safariViewController) { - _isDismissingSafariViewController = YES; - [_safariViewController.presentingViewController dismissViewControllerAnimated:YES - completion:completePendingOpenURLBlock]; - _safariViewController = nil; - } else { - if (@available(iOS 11.0, *)) { - if (_authenticationSession != nil) { - [_authenticationSession cancel]; - _authenticationSession = nil; - } - } - completePendingOpenURLBlock(); + BOOL handled = NO; + NSArray> *observers = [_applicationObservers allObjects]; + for (id observer in observers) { + if ([observer respondsToSelector:@selector(application:openURL:sourceApplication:annotation:)]) { + if ([observer application:application + openURL:url + sourceApplication:sourceApplication + annotation:annotation]) { + handled = YES; + } } + } - if ([pendingURLOpen canOpenURL:url - forApplication:application - sourceApplication:sourceApplication - annotation:annotation]) { - return YES; - } - if ([self _handleBridgeAPIResponseURL:url sourceApplication:sourceApplication]) { - return YES; - } -#endif - [self _logIfAppLinkEvent:url]; + if (handled) { + return YES; + } - return NO; + [self _logIfAppLinkEvent:url]; + + return NO; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions @@ -235,348 +218,182 @@ typedef void (^FBSDKAuthenticationCompletionHandler)(NSURL *_Nullable callbackUR [FBSDKAccessToken setCurrentAccessToken:cachedToken]; // fetch app settings [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; - // fetch gate keepers - [FBSDKGateKeeperManager loadGateKeepers]; - if ([FBSDKSettings autoLogAppEventsEnabled].boolValue) { + if (FBSDKSettings.isAutoLogAppEventsEnabled) { [self _logSDKInitialize]; } #if !TARGET_OS_TV FBSDKProfile *cachedProfile = [FBSDKProfile fetchCachedProfile]; [FBSDKProfile setCurrentProfile:cachedProfile]; - - 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]; - } - } #endif - return NO; + NSArray> *observers = [_applicationObservers allObjects]; + BOOL handled = NO; + for (id observer in observers) { + if ([observer respondsToSelector:@selector(application:didFinishLaunchingWithOptions:)]) { + if ([observer application:application didFinishLaunchingWithOptions:launchOptions]) { + handled = YES; + } + } + } + + return handled; } - (void)applicationDidEnterBackground:(NSNotification *)notification { - _isRequestingSFAuthenticationSession = NO; - _active = NO; - _expectingBackground = NO; + _applicationState = UIApplicationStateBackground; + NSArray> *observers = [_applicationObservers allObjects]; + for (id observer in observers) { + if ([observer respondsToSelector:@selector(applicationDidEnterBackground:)]) { + [observer applicationDidEnterBackground:notification.object]; + } + } } - (void)applicationDidBecomeActive:(NSNotification *)notification { - // Auto log basic events in case autoLogAppEventsEnabled is set - if ([FBSDKSettings autoLogAppEventsEnabled].boolValue) { - [FBSDKAppEvents activateApp]; - } - // _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. - BOOL notExpectingBackground = !_expectingBackground && !_safariViewController && !_isDismissingSafariViewController && !_isRequestingSFAuthenticationSession; - if (notExpectingBackground) { - _active = YES; -#if !TARGET_OS_TV - [_pendingURLOpen applicationDidBecomeActive:notification.object]; - [self _cancelBridgeRequest]; -#endif - [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKApplicationDidBecomeActiveNotification object:self]; + _applicationState = UIApplicationStateActive; + // Auto log basic events in case autoLogAppEventsEnabled is set + if (FBSDKSettings.isAutoLogAppEventsEnabled) { + [FBSDKAppEvents activateApp]; + } + + NSArray> *observers = [_applicationObservers copy]; + for (id observer in observers) { + if ([observer respondsToSelector:@selector(applicationDidBecomeActive:)]) { + [observer applicationDidBecomeActive:notification.object]; } + } } #pragma mark - Internal Methods -#pragma mark -- (non-tvos) +#pragma mark - FBSDKApplicationObserving -#if !TARGET_OS_TV - -- (void)openURL:(NSURL *)url sender:(id)sender handler:(void(^)(BOOL, NSError *))handler +- (void)addObserver:(id)observer { - _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 - NSOperatingSystemVersion iOS10Version = { .majorVersion = 10, .minorVersion = 0, .patchVersion = 0 }; - if ([FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS10Version]) { - if (@available(iOS 10.0, *)) { - [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) { - handler(success, nil); - }]; - } - } else { - 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, nil); - } - } - }); + if (![_applicationObservers containsObject:observer]) { + [_applicationObservers addObject:observer]; + } } -- (void)openBridgeAPIRequest:(FBSDKBridgeAPIRequest *)request - useSafariViewController:(BOOL)useSafariViewController - fromViewController:(UIViewController *)fromViewController - completionBlock:(FBSDKBridgeAPICallbackBlock)completionBlock +- (void)removeObserver:(id)observer { - 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, NSError *) = ^(BOOL openedURL, NSError *anError) { - if (!openedURL) { - self->_pendingRequest = nil; - self->_pendingRequestCompletionBlock = nil; - NSError *openedURLError; - if ([request.scheme hasPrefix:@"http"]) { - openedURLError = [NSError fbErrorWithCode:FBSDKErrorBrowserUnavailable - message:@"the app switch failed because the browser is unavailable"]; - } else { - openedURLError = [NSError fbErrorWithCode:FBSDKErrorAppVersionUnsupported - 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]; - } + if ([_applicationObservers containsObject:observer]) { + [_applicationObservers removeObject:observer]; + } } -- (void)openURLWithSafariViewController:(NSURL *)url - sender:(id)sender - fromViewController:(UIViewController *)fromViewController - handler:(void(^)(BOOL, NSError *))handler ++ (UIApplicationState)applicationState { - if (![url.scheme hasPrefix:@"http"]) { - [self openURL:url sender:sender handler:handler]; - return; - } - - _expectingBackground = NO; - _pendingURLOpen = sender; - - if (@available(iOS 11.0, *)) { - if ([sender isAuthenticationURL:url]) { - [self _setSessionCompletionHandlerFromHandler:handler]; - [self _openURLWithAuthenticationSession:url]; - return; - } - } - - // 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]; - if (parent == nil) { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors - formatString:@"There are no valid ViewController to present SafariViewController with", nil]; - return; - } - - NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; - NSURLQueryItem *sfvcQueryItem = [[NSURLQueryItem alloc] initWithName:@"sfvc" value:@"1"]; - components.queryItems = [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. - self->_safariViewController = [[SFSafariViewControllerClass alloc] initWithURL:url]; - // Disable dismissing with edge pan gesture - self->_safariViewController.modalPresentationStyle = UIModalPresentationOverFullScreen; - [self->_safariViewController performSelector:@selector(setDelegate:) withObject:self]; - [container displayChildController:self->_safariViewController]; - [parent presentViewController:container animated:YES completion:nil]; - }]; - } else { - _safariViewController = [[SFSafariViewControllerClass alloc] initWithURL:url]; - // Disable dismissing with edge pan gesture - _safariViewController.modalPresentationStyle = UIModalPresentationOverFullScreen; - [_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, nil); - } - } else { - [self openURL:url sender:sender handler:handler]; - } + return _applicationState; } -- (void)_openURLWithAuthenticationSession:(NSURL *)url -{ - Class AuthenticationSessionClass = fbsdkdfl_ASWebAuthenticationSessionClass(); - - if (!AuthenticationSessionClass) { - AuthenticationSessionClass = fbsdkdfl_SFAuthenticationSessionClass(); - } - - if (AuthenticationSessionClass != nil) { - if (_authenticationSession != nil) { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors - formatString:@"There is already a request for authenticated session. Cancelling active SFAuthenticationSession before starting the new one.", nil]; - [_authenticationSession cancel]; - } - _authenticationSession = [[AuthenticationSessionClass alloc] initWithURL:url - callbackURLScheme:[FBSDKInternalUtility appURLScheme] - completionHandler:_authenticationSessionCompletionHandler]; - _isRequestingSFAuthenticationSession = YES; - [_authenticationSession start]; - } -} - -- (void)_setSessionCompletionHandlerFromHandler:(void(^)(BOOL, NSError *))handler -{ - __weak typeof(self) weakSelf = self; - _authenticationSessionCompletionHandler = ^ (NSURL *aURL, NSError *error) { - typeof(self) strongSelf = weakSelf; - strongSelf->_isRequestingSFAuthenticationSession = NO; - handler(error == nil, error); - if (error == nil) { - [strongSelf application:[UIApplication sharedApplication] openURL:aURL sourceApplication:@"com.apple" annotation:nil]; - } - strongSelf->_authenticationSession = nil; - strongSelf->_authenticationSessionCompletionHandler = nil; - }; -} - -#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]; - } -} - -#endif - #pragma mark - Helper Methods - (void)_logIfAppLinkEvent:(NSURL *)url { - if (!url) { - return; - } - NSDictionary *params = [FBSDKUtility dictionaryWithQueryString:url.query]; - NSString *applinkDataString = params[@"al_applink_data"]; - if (!applinkDataString) { - return; - } + if (!url) { + return; + } + NSDictionary *params = [FBSDKBasicUtility dictionaryWithQueryString:url.query]; + NSString *applinkDataString = params[@"al_applink_data"]; + if (!applinkDataString) { + return; + } - NSDictionary *applinkData = [FBSDKInternalUtility objectForJSONString:applinkDataString error:NULL]; - if (!applinkData) { - return; - } + NSDictionary *applinkData = [FBSDKBasicUtility objectForJSONString:applinkDataString error:NULL]; + if (!applinkData) { + return; + } - NSString *targetURLString = applinkData[@"target_url"]; - NSURL *targetURL = [targetURLString isKindOfClass:[NSString class]] ? [NSURL URLWithString:targetURLString] : nil; + NSString *targetURLString = applinkData[@"target_url"]; + NSURL *targetURL = [targetURLString isKindOfClass:[NSString class]] ? [NSURL URLWithString:targetURLString] : nil; - NSMutableDictionary *logData = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:logData setObject:targetURL.absoluteString forKey:@"targetURL"]; - [FBSDKInternalUtility dictionary:logData setObject:targetURL.host forKey:@"targetURLHost"]; + NSMutableDictionary *logData = [[NSMutableDictionary alloc] init]; + [FBSDKBasicUtility dictionary:logData setObject:targetURL.absoluteString forKey:@"targetURL"]; + [FBSDKBasicUtility 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"]; + NSDictionary *refererData = applinkData[@"referer_data"]; + if (refererData) { + [FBSDKBasicUtility dictionary:logData setObject:refererData[@"target_url"] forKey:@"referralTargetURL"]; + [FBSDKBasicUtility dictionary:logData setObject:refererData[@"url"] forKey:@"referralURL"]; + [FBSDKBasicUtility dictionary:logData setObject:refererData[@"app_name"] forKey:@"referralAppName"]; + } + [FBSDKBasicUtility dictionary:logData setObject:url.absoluteString forKey:@"inputURL"]; + [FBSDKBasicUtility dictionary:logData setObject:url.scheme forKey:@"inputURLScheme"]; - [FBSDKAppEvents logImplicitEvent:FBSDKAppLinkInboundEvent - valueToSum:nil - parameters:logData - accessToken:nil]; + [FBSDKAppEvents logInternalEvent:FBSDKAppLinkInboundEvent + parameters:logData + isImplicitlyLogged:YES]; } - (void)_logSDKInitialize { - NSMutableDictionary *params = [NSMutableDictionary new]; - params[@"core_lib_included"] = @1; - if (objc_lookUpClass("FBSDKShareDialog") != nil) { - params[@"share_lib_included"] = @1; + NSDictionary *metaInfo = [NSDictionary dictionaryWithObjects:@[@"login_lib_included", + @"marketing_lib_included", + @"messenger_lib_included", + @"places_lib_included", + @"share_lib_included", + @"tv_lib_included"] + forKeys:@[@"FBSDKLoginManager", + @"FBSDKAutoLog", + @"FBSDKMessengerButton", + @"FBSDKPlacesManager", + @"FBSDKShareDialog", + @"FBSDKTVInterfaceFactory"]]; + + NSInteger bitmask = 0; + NSInteger bit = 0; + NSMutableDictionary *params = NSMutableDictionary.new; + params[@"core_lib_included"] = @1; + for (NSString *className in metaInfo.allKeys) { + NSString *keyName = [metaInfo objectForKey:className]; + if (objc_lookUpClass([className UTF8String])) { + params[keyName] = @1; + bitmask |= 1 << bit; } - if (objc_lookUpClass("FBSDKLoginManager") != nil) { - params[@"login_lib_included"] = @1; + bit++; + } + + // Tracking if the consuming Application is using Swift + id delegate = [UIApplication sharedApplication].delegate; + NSString const *className = NSStringFromClass([delegate class]); + if ([className componentsSeparatedByString:@"."].count > 1) { + params[@"is_using_swift"] = @YES; + } + + void (^checkViewForSwift)(void) = ^void () + { + // Additional check to see if the consuming application perhaps was + // originally an objc project but is now using Swift + UIViewController *topMostViewController = [FBSDKInternalUtility topMostViewController]; + NSString const *vcClassName = NSStringFromClass([topMostViewController class]); + if ([vcClassName componentsSeparatedByString:@"."].count > 1) { + params[@"is_using_swift"] = @YES; } - if (objc_lookUpClass("FBSDKPlacesManager") != nil) { - params[@"places_lib_included"] = @1; - } - if (objc_lookUpClass("FBSDKMessengerButton") != nil) { - params[@"messenger_lib_included"] = @1; - } - if (objc_lookUpClass("FBSDKMessengerButton") != nil) { - params[@"messenger_lib_included"] = @1; - } - if (objc_lookUpClass("FBSDKTVInterfaceFactory.m") != nil) { - params[@"tv_lib_included"] = @1; - } - if (objc_lookUpClass("FBSDKAutoLog") != nil) { - params[@"marketing_lib_included"] = @1; - } - [FBSDKAppEvents logEvent:@"fb_sdk_initialize" parameters:params]; + }; + + if ([NSThread isMainThread]) { + checkViewForSwift(); + } else { + dispatch_sync(dispatch_get_main_queue(), ^{ + checkViewForSwift(); + }); + } + + NSInteger existingBitmask = [[NSUserDefaults standardUserDefaults] integerForKey:FBSDKKitsBitmaskKey]; + if (existingBitmask != bitmask) { + [[NSUserDefaults standardUserDefaults] setInteger:bitmask forKey:FBSDKKitsBitmaskKey]; + [FBSDKAppEvents logInternalEvent:@"fb_sdk_initialize" + parameters:params + isImplicitlyLogged:NO]; + } +} + ++ (BOOL)isSDKInitialized +{ + return [FBSDKSettings isAutoInitEnabled] || g_isSDKInitialized; } // Wrapping this makes it mockable and enables testability @@ -584,50 +401,4 @@ typedef void (^FBSDKAuthenticationCompletionHandler)(NSURL *_Nullable callbackUR return _isAppLaunched; } -#pragma mark -- (non-tvos) -#if !TARGET_OS_TV -- (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)_cancelBridgeRequest -{ - if (_pendingRequest && _pendingRequestCompletionBlock) { - _pendingRequestCompletionBlock([FBSDKBridgeAPIResponse bridgeAPIResponseCancelledWithRequest:_pendingRequest]); - } - _pendingRequest = nil; - _pendingRequestCompletionBlock = NULL; -} -#endif - @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h index ca53966..bf5f004 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h @@ -18,9 +18,14 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** A base class for common SDK buttons. */ +NS_SWIFT_NAME(FBButton) @interface FBSDKButton : UIButton @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m index 834f9e5..088b5b5 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m @@ -24,7 +24,6 @@ #import "FBSDKAppEvents.h" #import "FBSDKApplicationDelegate+Internal.h" #import "FBSDKLogo.h" -#import "FBSDKMath.h" #import "FBSDKUIUtility.h" #import "FBSDKViewImpressionTracker.h" @@ -166,10 +165,10 @@ - (void)logTapEventWithEventName:(NSString *)eventName parameters:(NSDictionary *)parameters { - [FBSDKAppEvents logImplicitEvent:eventName - valueToSum:nil - parameters:parameters - accessToken:[FBSDKAccessToken currentAccessToken]]; + [FBSDKAppEvents logInternalEvent:eventName + parameters:parameters + isImplicitlyLogged:YES + accessToken:[FBSDKAccessToken currentAccessToken]]; } - (void)checkImplicitlyDisabled @@ -227,7 +226,7 @@ - (UIColor *)defaultBackgroundColor { - return [UIColor colorWithRed:65.0/255.0 green:93.0/255.0 blue:174.0/255.0 alpha:1.0]; + return [UIColor colorWithRed:24.0/255.0 green:119.0/255.0 blue:242.0/255.0 alpha:1.0]; } - (UIColor *)defaultDisabledColor @@ -242,7 +241,7 @@ - (UIColor *)defaultHighlightedColor { - return [UIColor colorWithRed:47.0/255.0 green:71.0/255.0 blue:122.0/255.0 alpha:1.0]; + return [UIColor colorWithRed:21.0/255.0 green:105.0/255.0 blue:214.0/255.0 alpha:1.0]; } - (FBSDKIcon *)defaultIcon @@ -255,6 +254,11 @@ return [UIColor colorWithRed:124.0/255.0 green:143.0/255.0 blue:200.0/255.0 alpha:1.0]; } +- (UIColor *)highlightedContentColor +{ + return [UIColor colorWithRed:218.0/255.0 green:221.0/255.0 blue:226.0/255.0 alpha:1.0]; +} + - (BOOL)isImplicitlyDisabled { return NO; @@ -327,6 +331,9 @@ if (!icon) { icon = [self defaultIcon]; } + if (!selectedIcon) { + selectedIcon = [self defaultIcon]; + } if (!backgroundColor) { backgroundColor = [self defaultBackgroundColor]; } @@ -377,6 +384,7 @@ } [self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [self setTitleColor:[self highlightedContentColor] forState: UIControlStateHighlighted | UIControlStateSelected]; [self setTitle:title forState:UIControlStateNormal]; #if TARGET_OS_TV diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h index 55003d0..6915368 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 /** @@ -25,7 +27,8 @@ Error codes from the SDK in the range 0-99 are reserved for this domain. */ -FOUNDATION_EXPORT NSErrorDomain const FBSDKErrorDomain; +FOUNDATION_EXPORT NSErrorDomain const FBSDKErrorDomain +NS_SWIFT_NAME(ErrorDomain); #else @@ -34,7 +37,8 @@ FOUNDATION_EXPORT NSErrorDomain const FBSDKErrorDomain; Error codes from the SDK in the range 0-99 are reserved for this domain. */ -FOUNDATION_EXPORT NSString *const FBSDKErrorDomain; +FOUNDATION_EXPORT NSString *const FBSDKErrorDomain +NS_SWIFT_NAME(ErrorDomain); #endif @@ -50,34 +54,40 @@ FOUNDATION_EXPORT NSString *const FBSDKErrorDomain; 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. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentCollectionKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentCollectionKey +NS_SWIFT_NAME(ErrorArgumentCollectionKey); /** The userInfo key for the invalid argument name for errors with FBSDKErrorInvalidArgument. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentNameKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentNameKey +NS_SWIFT_NAME(ErrorArgumentNameKey); /** The userInfo key for the invalid argument value for errors with FBSDKErrorInvalidArgument. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentValueKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentValueKey +NS_SWIFT_NAME(ErrorArgumentValueKey); /** The userInfo key for the message for developers in NSErrors that originate from the SDK. The developer message will not be localized and is not intended to be presented within the app. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorDeveloperMessageKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorDeveloperMessageKey +NS_SWIFT_NAME(ErrorDeveloperMessageKey); /** The userInfo key describing a localized description that can be presented to the user. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedDescriptionKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedDescriptionKey +NS_SWIFT_NAME(ErrorLocalizedDescriptionKey); /** The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedTitleKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedTitleKey +NS_SWIFT_NAME(ErrorLocalizedTitleKey); /* @methodgroup FBSDKGraphRequest error userInfo keys @@ -88,36 +98,32 @@ FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedTitleKey; See `FBSDKGraphErrorRecoveryProcessor` and `[FBSDKGraphRequest disableErrorRecovery]`. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorKey; - -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorCategoryKey -DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorKey instead"); +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorKey +NS_SWIFT_NAME(GraphRequestErrorKey); /* The userInfo key for the Graph API error code. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCodeKey; - -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCode -DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorCodeKey instead"); +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCodeKey +NS_SWIFT_NAME(GraphRequestErrorGraphErrorCodeKey); /* The userInfo key for the Graph API error subcode. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcodeKey; - -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcode -DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorSubcodeKey instead"); +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcodeKey +NS_SWIFT_NAME(GraphRequestErrorGraphErrorSubcodeKey); /* The userInfo key for the HTTP status code. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorHTTPStatusCodeKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorHTTPStatusCodeKey +NS_SWIFT_NAME(GraphRequestErrorHTTPStatusCodeKey); /* The userInfo key for the raw JSON response. */ -FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorParsedJSONResponseKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorParsedJSONResponseKey +NS_SWIFT_NAME(GraphRequestErrorParsedJSONResponseKey); #else @@ -131,34 +137,40 @@ FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorParsedJSONRespo 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. */ -FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentCollectionKey; +FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentCollectionKey +NS_SWIFT_NAME(ErrorArgumentCollectionKey); /** The userInfo key for the invalid argument name for errors with FBSDKErrorInvalidArgument. */ -FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentNameKey; +FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentNameKey +NS_SWIFT_NAME(ErrorArgumentNameKey); /** The userInfo key for the invalid argument value for errors with FBSDKErrorInvalidArgument. */ -FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentValueKey; +FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentValueKey +NS_SWIFT_NAME(ErrorArgumentValueKey); /** The userInfo key for the message for developers in NSErrors that originate from the SDK. The developer message will not be localized and is not intended to be presented within the app. */ -FOUNDATION_EXPORT NSString *const FBSDKErrorDeveloperMessageKey; +FOUNDATION_EXPORT NSString *const FBSDKErrorDeveloperMessageKey +NS_SWIFT_NAME(ErrorDeveloperMessageKey); /** The userInfo key describing a localized description that can be presented to the user. */ -FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedDescriptionKey; +FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedDescriptionKey +NS_SWIFT_NAME(ErrorLocalizedDescriptionKey); /** The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`. */ -FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedTitleKey; +FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedTitleKey +NS_SWIFT_NAME(ErrorLocalizedTitleKey); /* @methodgroup FBSDKGraphRequest error userInfo keys @@ -169,39 +181,61 @@ FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedTitleKey; See `FBSDKGraphErrorRecoveryProcessor` and `[FBSDKGraphRequest disableErrorRecovery]`. */ -FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorKey; - -FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorCategoryKey -DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorKey instead"); +FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorKey +NS_SWIFT_NAME(GraphRequestErrorKey); /* The userInfo key for the Graph API error code. */ -FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorCodeKey; - -FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorCode -DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorCodeKey instead"); +FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorCodeKey +NS_SWIFT_NAME(GraphRequestErrorGraphErrorCodeKey); /* The userInfo key for the Graph API error subcode. */ -FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorSubcodeKey; - -FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorSubcode -DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorSubcodeKey instead"); +FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorSubcodeKey +NS_SWIFT_NAME(GraphRequestErrorGraphErrorSubcodeKey); /* The userInfo key for the HTTP status code. */ -FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorHTTPStatusCodeKey; +FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorHTTPStatusCodeKey +NS_SWIFT_NAME(GraphRequestErrorHTTPStatusCodeKey); /* The userInfo key for the raw JSON response. */ -FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey; +FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey +NS_SWIFT_NAME(GraphRequestErrorParsedJSONResponseKey); #endif +/* + @methodgroup Common Code Block typedefs + */ + +/** + Success Block + */ +typedef void (^FBSDKCodeBlock)(void) +NS_SWIFT_NAME(CodeBlock); + +/** + Error Block + */ +typedef void (^FBSDKErrorBlock)(NSError *_Nullable error) +NS_SWIFT_NAME(ErrorBlock); + +/** + Success Block + */ +typedef void (^FBSDKSuccessBlock)(BOOL success, NSError *_Nullable error) +NS_SWIFT_NAME(SuccessBlock); + +/* + @methodgroup Enums + */ + #ifndef NS_ERROR_ENUM #define NS_ERROR_ENUM(_domain, _name) \ enum _name: NSInteger _name; \ @@ -209,10 +243,10 @@ enum __attribute__((ns_error_domain(_domain))) _name: NSInteger #endif /** - FBSDKError + FBSDKCoreError Error codes for FBSDKErrorDomain. */ -typedef NS_ERROR_ENUM(FBSDKErrorDomain, FBSDKError) +typedef NS_ERROR_ENUM(FBSDKErrorDomain, FBSDKCoreError) { /** Reserved. @@ -289,7 +323,7 @@ typedef NS_ERROR_ENUM(FBSDKErrorDomain, FBSDKError) Indicates an app switch to the browser (typically for a dialog) failed. */ FBSDKErrorBrowserUnavailable, -}; +} NS_SWIFT_NAME(CoreError); /** FBSDKGraphRequestError @@ -303,11 +337,12 @@ typedef NS_ENUM(NSUInteger, FBSDKGraphRequestError) FBSDKGraphRequestErrorTransient = 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. */ FBSDKGraphRequestErrorRecoverable = 2 -}; +} NS_SWIFT_NAME(GraphRequestError); /** a formal protocol very similar to the informal protocol NSErrorRecoveryAttempting */ +NS_SWIFT_UNAVAILABLE("") @protocol FBSDKErrorRecoveryAttempting /** @@ -325,37 +360,11 @@ typedef NS_ENUM(NSUInteger, FBSDKGraphRequestError) 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; - +- (void)attemptRecoveryFromError:(NSError *)error + optionIndex:(NSUInteger)recoveryOptionIndex + delegate:(nullable id)delegate + didRecoverSelector:(SEL)didRecoverSelector + contextInfo:(nullable void *)contextInfo; @end -/** - Deprecated - */ -typedef NS_ENUM(NSInteger, FBSDKErrorCode) -{ - FBSDKReservedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorReserved instead") = 0, - FBSDKEncryptionErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorEncryption instead"), - FBSDKInvalidArgumentErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorInvalidArgument instead"), - FBSDKUnknownErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorUnknown instead"), - FBSDKNetworkErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorNetwork instead"), - FBSDKAppEventsFlushErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorAppEventsFlush instead"), - FBSDKGraphRequestNonTextMimeTypeReturnedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorGraphRequestNonTextMimeTypeReturned instead"), - FBSDKGraphRequestProtocolMismatchErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorGraphRequestProtocolMismatch instead"), - FBSDKGraphRequestGraphAPIErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorGraphRequestGraphAPI instead"), - FBSDKDialogUnavailableErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorDialogUnavailable instead"), - FBSDKAccessTokenRequiredErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorAccessTokenRequired instead"), - FBSDKAppVersionUnsupportedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorAppVersionUnsupported instead"), - FBSDKBrowserUnavailableErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorBrowserUnavailable instead"), - FBSDKBrowswerUnavailableErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorBrowserUnavailable instead") = FBSDKBrowserUnavailableErrorCode, -} DEPRECATED_MSG_ATTRIBUTE("use FBSDKError instead"); - -/** - Deprecated - */ -typedef NS_ENUM(NSUInteger, FBSDKGraphRequestErrorCategory) -{ - FBSDKGraphRequestErrorCategoryOther DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorOther instead") = 0, - FBSDKGraphRequestErrorCategoryTransient DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorTransient instead") = 1, - FBSDKGraphRequestErrorCategoryRecoverable DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorRecoverable instead") = 2 -} DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestError instead"); +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m index 24f9d57..756a122 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m @@ -38,12 +38,10 @@ NSErrorUserInfoKey const FBSDKErrorDeveloperMessageKey = @"com.facebook.sdk:FBSD NSErrorUserInfoKey const FBSDKErrorLocalizedDescriptionKey = @"com.facebook.sdk:FBSDKErrorLocalizedDescriptionKey"; NSErrorUserInfoKey const FBSDKErrorLocalizedTitleKey = @"com.facebook.sdk:FBSDKErrorLocalizedErrorTitleKey"; -NSErrorUserInfoKey const FBSDKGraphRequestErrorKey = @"com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey"; +NSErrorUserInfoKey const FBSDKGraphRequestErrorKey = @"com.facebook.sdk:FBSDKGraphRequestErrorKey"; NSErrorUserInfoKey const FBSDKGraphRequestErrorCategoryKey = @"com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey"; -NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode"; -NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCode = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode"; -NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorSubcode"; -NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcode = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorSubcode"; +NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCodeKey"; +NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorSubcodeKey"; NSErrorUserInfoKey const FBSDKGraphRequestErrorHTTPStatusCodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey"; NSErrorUserInfoKey const FBSDKGraphRequestErrorParsedJSONResponseKey = @"com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey"; @@ -58,10 +56,8 @@ NSString *const FBSDKErrorLocalizedTitleKey = @"com.facebook.sdk:FBSDKErrorLocal NSString *const FBSDKGraphRequestErrorKey = @"com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey"; NSString *const FBSDKGraphRequestErrorCategoryKey = @"com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey"; -NSString *const FBSDKGraphRequestErrorGraphErrorCodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode"; -NSString *const FBSDKGraphRequestErrorGraphErrorCode = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode"; -NSString *const FBSDKGraphRequestErrorGraphErrorSubcodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorSubcode"; -NSString *const FBSDKGraphRequestErrorGraphErrorSubcode = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorSubcode"; +NSString *const FBSDKGraphRequestErrorGraphErrorCodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCodeKey"; +NSString *const FBSDKGraphRequestErrorGraphErrorSubcodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorSubcodeKey"; NSString *const FBSDKGraphRequestErrorHTTPStatusCodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey"; NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey = @"com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey"; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h index 039302b..fc938bb 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h @@ -18,11 +18,14 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** Extension protocol for NSCopying that adds the copy method, which is implemented on NSObject. NSObject implicitly conforms to this protocol. */ +NS_SWIFT_NAME(Copying) @protocol FBSDKCopying /** @@ -32,3 +35,5 @@ - (id)copy; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h index 6d078cb..67cfcc6 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h @@ -27,7 +27,6 @@ #import #import #import -#import #import #import #import @@ -53,5 +52,5 @@ #import #endif -#define FBSDK_VERSION_STRING @"4.41.0" -#define FBSDK_TARGET_PLATFORM_VERSION @"v3.2" +#define FBSDK_VERSION_STRING @"5.8.0" +#define FBSDK_TARGET_PLATFORM_VERSION @"v4.0" diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h index 820be4b..465c6ab 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h @@ -20,12 +20,15 @@ #import "FBSDKConstants.h" +NS_ASSUME_NONNULL_BEGIN + @class FBSDKGraphErrorRecoveryProcessor; @class FBSDKGraphRequest; /** Defines a delegate for `FBSDKGraphErrorRecoveryProcessor`. */ +NS_SWIFT_NAME(GraphErrorRecoveryProcessorDelegate) @protocol FBSDKGraphErrorRecoveryProcessorDelegate /** @@ -34,7 +37,9 @@ @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; +- (void)processorDidAttemptRecovery:(FBSDKGraphErrorRecoveryProcessor *)processor + didRecover:(BOOL)didRecover + error:(nullable NSError *)error; @optional /** @@ -46,10 +51,15 @@ if you want to prevent alerts of localized messages but otherwise perform retries and recoveries, you could return NO for errors where userInfo[FBSDKGraphRequestErrorKey] equal to FBSDKGraphRequestErrorOther */ -- (BOOL)processorWillProcessError:(FBSDKGraphErrorRecoveryProcessor *)processor error:(NSError *)error; +- (BOOL)processorWillProcessError:(FBSDKGraphErrorRecoveryProcessor *)processor + error:(nullable NSError *)error; @end +NS_ASSUME_NONNULL_END + +NS_ASSUME_NONNULL_BEGIN + /** Defines a type that can process Facebook NSErrors with best practices. @@ -69,17 +79,18 @@ 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 + Login recovery requires FBSDKLoginKit. Login 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. . */ +NS_SWIFT_UNAVAILABLE("") @interface FBSDKGraphErrorRecoveryProcessor : NSObject /** Gets the delegate. Note this is a strong reference, and is nil'ed out after recovery is complete. */ -@property (nonatomic, strong, readonly) iddelegate; +@property (nonatomic, strong, readonly, nullable) iddelegate; /** Attempts to process the error, return YES if the error can be processed. @@ -87,13 +98,17 @@ @param request the related 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; +- (BOOL)processError:(NSError *)error + request:(FBSDKGraphRequest *)request + delegate:(nullable id)delegate; /** The callback for FBSDKErrorRecoveryAttempting @param didRecover if the recovery succeeded @param contextInfo unused */ -- (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(void *)contextInfo; +- (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(nullable void *)contextInfo; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m index bd21cec..1951d86 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m @@ -17,7 +17,8 @@ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #import "FBSDKGraphErrorRecoveryProcessor.h" -#import "FBSDKCoreKit+Internal.h" +#import + #import "FBSDKErrorRecoveryAttempter.h" @interface FBSDKGraphErrorRecoveryProcessor() @@ -26,18 +27,13 @@ NSError *_error; } -@property (nonatomic, strong) iddelegate; +@property (nonatomic, strong, nullable) iddelegate; @end @implementation FBSDKGraphErrorRecoveryProcessor -- (void)dealloc -{ - -} - -- (BOOL)processError:(NSError *)error request:(FBSDKGraphRequest *)request delegate:(id) delegate +- (BOOL)processError:(NSError *)error request:(FBSDKGraphRequest *)request delegate:(id)delegate { self.delegate = delegate; if ([self.delegate respondsToSelector:@selector(processorWillProcessError:error:)]) { @@ -55,7 +51,6 @@ case FBSDKGraphRequestErrorRecoverable : 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). @@ -72,26 +67,6 @@ 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:self->_error]; - }; - }); - }]; - // short-circuit YES so that the renew callback resumes the control flow. - return YES; - } - return standardRecoveryWork(); } return NO; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h index bcb5149..802620c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h @@ -20,8 +20,22 @@ #import +NS_ASSUME_NONNULL_BEGIN + @class FBSDKAccessToken; +/// typedef for FBSDKHTTPMethod +typedef NSString *const FBSDKHTTPMethod NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(HTTPMethod); + +/// GET Request +FOUNDATION_EXPORT FBSDKHTTPMethod FBSDKHTTPMethodGET NS_SWIFT_NAME(get); + +/// POST Request +FOUNDATION_EXPORT FBSDKHTTPMethod FBSDKHTTPMethodPOST NS_SWIFT_NAME(post); + +/// DELETE Request +FOUNDATION_EXPORT FBSDKHTTPMethod FBSDKHTTPMethodDELETE NS_SWIFT_NAME(delete); + /** Represents a request to the Facebook Graph API. @@ -41,28 +55,43 @@ @see FBSDKGraphErrorRecoveryProcessor */ +NS_SWIFT_NAME(GraphRequest) @interface FBSDKGraphRequest : NSObject - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; /** - Initializes a new instance that use use `[FBSDKAccessToken currentAccessToken]`. + 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; + +/** + Initializes a new instance that use use `[FBSDKAccessToken currentAccessToken]`. + @param graphPath the graph path (e.g., @"me"). + @param method the HTTP method. Empty String defaults to @"GET". */ - (instancetype)initWithGraphPath:(NSString *)graphPath - parameters:(NSDictionary *)parameters; + HTTPMethod:(FBSDKHTTPMethod)method; /** 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; + parameters:(NSDictionary *)parameters; + +/** + Initializes a new instance that use use `[FBSDKAccessToken currentAccessToken]`. + @param graphPath the graph path (e.g., @"me"). + @param parameters the optional parameters dictionary. + @param method the HTTP method. Empty String defaults to @"GET". + */ +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters + HTTPMethod:(FBSDKHTTPMethod)method; /** Initializes a new instance. @@ -70,24 +99,24 @@ @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 `[FBSDKSettings graphAPIVersion]`. - @param HTTPMethod the optional HTTP method (e.g., @"POST"). nil defaults to @"GET". + @param method the HTTP method. Empty String defaults to @"GET". */ - (instancetype)initWithGraphPath:(NSString *)graphPath - parameters:(NSDictionary *)parameters - tokenString:(NSString *)tokenString - version:(NSString *)version - HTTPMethod:(NSString *)HTTPMethod + parameters:(NSDictionary *)parameters + tokenString:(nullable NSString *)tokenString + version:(nullable NSString *)version + HTTPMethod:(FBSDKHTTPMethod)method NS_DESIGNATED_INITIALIZER; /** The request parameters. */ -@property (nonatomic, strong, readonly) NSMutableDictionary *parameters; +@property (nonatomic, copy) NSDictionary *parameters; /** The access token string used by the request. */ -@property (nonatomic, copy, readonly) NSString *tokenString; +@property (nonatomic, copy, readonly, nullable) NSString *tokenString; /** The Graph API endpoint to use for the request, for example "me". @@ -97,7 +126,7 @@ NS_DESIGNATED_INITIALIZER; /** The HTTPMethod to use for the request, for example "GET" or "POST". */ -@property (nonatomic, copy, readonly) NSString *HTTPMethod; +@property (nonatomic, copy, readonly) FBSDKHTTPMethod HTTPMethod; /** The Graph API version to use (e.g., "v2.0") @@ -115,12 +144,15 @@ NS_DESIGNATED_INITIALIZER; This will override [FBSDKSettings setGraphErrorRecoveryDisabled:]. */ -- (void)setGraphErrorRecoveryDisabled:(BOOL)disable; +- (void)setGraphErrorRecoveryDisabled:(BOOL)disable +NS_SWIFT_NAME(setGraphErrorRecovery(disabled:)); /** Starts a connection to the Graph API. @param handler The handler block to call when the request completes. */ -- (FBSDKGraphRequestConnection *)startWithCompletionHandler:(FBSDKGraphRequestHandler)handler; +- (FBSDKGraphRequestConnection *)startWithCompletionHandler:(nullable FBSDKGraphRequestBlock)handler; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m index 93ad56f..569357c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m @@ -29,15 +29,28 @@ #import "FBSDKSettings+Internal.h" // constants -static NSString *const kGetHTTPMethod = @"GET"; -static NSString *const kPostHTTPMethod = @"POST"; +FBSDKHTTPMethod FBSDKHTTPMethodGET = @"GET"; +FBSDKHTTPMethod FBSDKHTTPMethodPOST = @"POST"; +FBSDKHTTPMethod FBSDKHTTPMethodDELETE = @"DELETE"; @interface FBSDKGraphRequest() @property (nonatomic, assign) FBSDKGraphRequestFlags flags; +@property (nonatomic, copy, readwrite) FBSDKHTTPMethod HTTPMethod; @end @implementation FBSDKGraphRequest +@synthesize HTTPMethod; + +- (instancetype)initWithGraphPath:(NSString *)graphPath { + return [self initWithGraphPath:graphPath parameters:@{}]; +} + +- (instancetype)initWithGraphPath:(NSString *)graphPath + HTTPMethod:(FBSDKHTTPMethod)method { + return [self initWithGraphPath:graphPath parameters:@{} HTTPMethod:method]; +} + - (instancetype)initWithGraphPath:(NSString *)graphPath parameters:(NSDictionary *)parameters { return [self initWithGraphPath:graphPath @@ -47,12 +60,12 @@ static NSString *const kPostHTTPMethod = @"POST"; - (instancetype)initWithGraphPath:(NSString *)graphPath parameters:(NSDictionary *)parameters - HTTPMethod:(NSString *)HTTPMethod { + HTTPMethod:(FBSDKHTTPMethod)method { return [self initWithGraphPath:graphPath parameters:parameters tokenString:[FBSDKAccessToken currentAccessToken].tokenString version:nil - HTTPMethod:HTTPMethod]; + HTTPMethod:method]; } - (instancetype)initWithGraphPath:(NSString *)graphPath @@ -61,20 +74,20 @@ static NSString *const kPostHTTPMethod = @"POST"; return [self initWithGraphPath:graphPath parameters:parameters tokenString:[FBSDKAccessToken currentAccessToken].tokenString - HTTPMethod:nil + HTTPMethod:FBSDKHTTPMethodGET flags:flags]; } - (instancetype)initWithGraphPath:(NSString *)graphPath parameters:(NSDictionary *)parameters tokenString:(NSString *)tokenString - HTTPMethod:(NSString *)HTTPMethod + HTTPMethod:(FBSDKHTTPMethod)method flags:(FBSDKGraphRequestFlags)flags { if ((self = [self initWithGraphPath:graphPath parameters:parameters tokenString:tokenString version:[FBSDKSettings graphAPIVersion] - HTTPMethod:HTTPMethod])) { + HTTPMethod:method])) { self.flags |= flags; } return self; @@ -84,14 +97,14 @@ static NSString *const kPostHTTPMethod = @"POST"; parameters:(NSDictionary *)parameters tokenString:(NSString *)tokenString version:(NSString *)version - HTTPMethod:(NSString *)HTTPMethod { + HTTPMethod:(FBSDKHTTPMethod)method { if ((self = [super init])) { - _tokenString = [tokenString copy]; + _tokenString = tokenString ? [tokenString copy] : nil; _version = version ? [version copy] : [FBSDKSettings graphAPIVersion]; _graphPath = [graphPath copy]; - _HTTPMethod = HTTPMethod ? [HTTPMethod copy] : kGetHTTPMethod; - _parameters = [[NSMutableDictionary alloc] initWithDictionary:parameters]; - if ([FBSDKSettings isGraphErrorRecoveryDisabled]) { + self.HTTPMethod = method.length > 0 ? [method copy] : FBSDKHTTPMethodGET; + _parameters = parameters ?: @{}; + if (!FBSDKSettings.isGraphErrorRecoveryEnabled) { _flags = FBSDKGraphRequestFlagDisableErrorRecovery; } } @@ -134,7 +147,7 @@ static NSString *const kPostHTTPMethod = @"POST"; + (NSString *)serializeURL:(NSString *)baseUrl params:(NSDictionary *)params { - return [self serializeURL:baseUrl params:params httpMethod:kGetHTTPMethod]; + return [self serializeURL:baseUrl params:params httpMethod:FBSDKHTTPMethodGET]; } + (NSString *)serializeURL:(NSString *)baseUrl @@ -154,15 +167,15 @@ static NSString *const kPostHTTPMethod = @"POST"; NSURL *parsedURL = [NSURL URLWithString:[baseUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; #pragma clang pop - if ([httpMethod isEqualToString:kPostHTTPMethod] && !forBatch) { + if ([httpMethod isEqualToString:FBSDKHTTPMethodPOST] && !forBatch) { return baseUrl; } NSString *queryPrefix = parsedURL.query ? @"&" : @"?"; - NSString *query = [FBSDKInternalUtility queryStringWithDictionary:params error:NULL invalidObjectHandler:^id(id object, BOOL *stop) { + NSString *query = [FBSDKBasicUtility queryStringWithDictionary:params error:NULL invalidObjectHandler:^id(id object, BOOL *stop) { if ([self isAttachment:object]) { - if ([httpMethod isEqualToString:kGetHTTPMethod]) { + if ([httpMethod isEqualToString:FBSDKHTTPMethodGET]) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:@"can not use GET to upload a file"]; } return nil; @@ -184,7 +197,7 @@ static NSString *const kPostHTTPMethod = @"POST"; return params; } -- (FBSDKGraphRequestConnection *)startWithCompletionHandler:(FBSDKGraphRequestHandler)handler +- (FBSDKGraphRequestConnection *)startWithCompletionHandler:(FBSDKGraphRequestBlock)handler { FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; [connection addRequest:self completionHandler:handler]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h index af10a85..bdab4dc 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h @@ -18,32 +18,45 @@ #import +NS_ASSUME_NONNULL_BEGIN + +/** + The key in the result dictionary for requests to old versions of the Graph API + whose response is not a JSON object. + + + 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. + */ +FOUNDATION_EXPORT NSString *const FBSDKNonJSONResponseProperty +NS_SWIFT_NAME(NonJSONResponseProperty); + @class FBSDKGraphRequest; @class FBSDKGraphRequestConnection; /** - FBSDKGraphRequestHandler + FBSDKGraphRequestBlock A block that is passed to addRequest to register for a callback with the results of that request once the connection completes. - - 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 connection The `FBSDKGraphRequestConnection` that sent the request. - @param result The result of the request. This is a translation of + @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. + @param error The `NSError` representing any error that occurred. */ -typedef void (^FBSDKGraphRequestHandler)(FBSDKGraphRequestConnection *connection, - id result, - NSError *error); +typedef void (^FBSDKGraphRequestBlock)(FBSDKGraphRequestConnection *_Nullable connection, + id _Nullable result, + NSError *_Nullable error) +NS_SWIFT_NAME(GraphRequestBlock); /** @protocol @@ -51,6 +64,7 @@ typedef void (^FBSDKGraphRequestHandler)(FBSDKGraphRequestConnection *connection The `FBSDKGraphRequestConnectionDelegate` protocol defines the methods used to receive network activity progress information from a . */ +NS_SWIFT_NAME(GraphRequestConnectionDelegate) @protocol FBSDKGraphRequestConnectionDelegate @optional @@ -79,7 +93,7 @@ typedef void (^FBSDKGraphRequestHandler)(FBSDKGraphRequestConnection *connection If the request connection completes without a network error occurring 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 + request connection has no further activity. Use the error argument passed to the FBSDKGraphRequestBlock block to determine success or failure of each . This method is invoked after the completion handler for each . @@ -97,7 +111,7 @@ typedef void (^FBSDKGraphRequestHandler)(FBSDKGraphRequestConnection *connection 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. + FBSDKGraphRequestBlock 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 @@ -141,12 +155,18 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; e.g. starting a connection, canceling a connection, or batching requests. */ +NS_SWIFT_NAME(GraphRequestConnection) @interface FBSDKGraphRequestConnection : NSObject +/** + The default timeout on all FBSDKGraphRequestConnection instances. Defaults to 60 seconds. + */ +@property (class, nonatomic, assign) NSTimeInterval defaultConnectionTimeout; + /** The delegate object that receives updates. */ -@property (nonatomic, weak) id delegate; +@property (nonatomic, weak, nullable) id delegate; /** Gets or sets the timeout interval to wait for a response before giving up. @@ -162,23 +182,22 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; 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. + then this property will be non-nil during the FBSDKGraphRequestBlock callback. */ -@property (nonatomic, retain, readonly) NSHTTPURLResponse *URLResponse; +@property (nonatomic, retain, readonly, nullable) NSHTTPURLResponse *urlResponse; + +/** + Determines the operation queue that is used to call methods on the connection's delegate. + + 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. + */ +@property (nonatomic, retain) NSOperationQueue *delegateQueue; /** @methodgroup Class methods */ -/** - @method - - 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 */ @@ -191,13 +210,11 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; @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 completion handler is retained until the block is called upon the completion or cancellation of the connection. */ - (void)addRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)handler; + completionHandler:(FBSDKGraphRequestBlock)handler; /** @method @@ -209,25 +226,18 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; @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 + @param name A 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/ ). - - 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 batchEntryName:(NSString *)name - completionHandler:(FBSDKGraphRequestHandler)handler; - -- (void)addRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)handler - batchEntryName:(NSString *)name -DEPRECATED_MSG_ATTRIBUTE("Renamed `addRequest:batchEntryName:completionHandler:`"); + completionHandler:(FBSDKGraphRequestBlock)handler; /** @method @@ -238,24 +248,17 @@ DEPRECATED_MSG_ATTRIBUTE("Renamed `addRequest:batchEntryName:completionHandler:` @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 + @param batchParameters The 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". - - 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 - batchParameters:(NSDictionary *)batchParameters - completionHandler:(FBSDKGraphRequestHandler)handler; - -- (void)addRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)handler - batchParameters:(NSDictionary *)batchParameters -DEPRECATED_MSG_ATTRIBUTE("Renamed `addRequest:batchParameters:completionHandler:`"); + batchParameters:(nullable NSDictionary *)batchParameters + completionHandler:(FBSDKGraphRequestBlock)handler; /** @methodgroup Instance methods @@ -267,8 +270,6 @@ DEPRECATED_MSG_ATTRIBUTE("Renamed `addRequest:batchParameters:completionHandler: Signals that a connection should be logically terminated as the application is no longer interested in a response. - - 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 @@ -291,22 +292,11 @@ DEPRECATED_MSG_ATTRIBUTE("Renamed `addRequest:batchParameters:completionHandler: */ - (void)start; -/** - 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. - - 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. - */ -- (void)setDelegateQueue:(NSOperationQueue *)queue; - /** @method Overrides the default version for a batch request - - 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. @@ -315,18 +305,6 @@ DEPRECATED_MSG_ATTRIBUTE("Renamed `addRequest:batchParameters:completionHandler: */ - (void)overrideGraphAPIVersion:(NSString *)version; -- (void)overrideVersionPartWith:(NSString *)version -DEPRECATED_MSG_ATTRIBUTE("Renamed `overrideGraphAPIVersion`"); - @end -/** - The key in the result dictionary for requests to old versions of the Graph API - whose response is not a JSON object. - - - 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. - */ -FOUNDATION_EXPORT NSString *const FBSDKNonJSONResponseProperty; +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m index 990be5f..39d3884 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m @@ -18,9 +18,10 @@ #import "FBSDKGraphRequestConnection+Internal.h" +#import + #import "FBSDKAppEvents+Internal.h" #import "FBSDKConstants.h" -#import "FBSDKCoreKit+Internal.h" #import "FBSDKError.h" #import "FBSDKErrorConfiguration.h" #import "FBSDKGraphRequest+Internal.h" @@ -73,6 +74,7 @@ static FBSDKAccessToken *_CreateExpiredAccessToken(FBSDKAccessToken *accessToken return [[FBSDKAccessToken alloc] initWithTokenString:accessToken.tokenString permissions:accessToken.permissions.allObjects declinedPermissions:accessToken.declinedPermissions.allObjects + expiredPermissions:accessToken.expiredPermissions.allObjects appID:accessToken.appID userID:accessToken.userID expirationDate:expirationDate @@ -103,8 +105,7 @@ NSURLSessionDataDelegate #endif > -@property (nonatomic, strong) NSURLSession *session; -@property (nonatomic, strong) FBSDKURLSessionTask *task; +@property (nonatomic, strong) FBSDKURLSession *session; @property (nonatomic, retain) NSMutableArray *requests; @property (nonatomic, assign) FBSDKGraphRequestConnectionState state; @property (nonatomic, strong) FBSDKLogger *logger; @@ -133,13 +134,14 @@ NSURLSessionDataDelegate _timeout = g_defaultTimeout; _state = kStateCreated; _logger = [[FBSDKLogger alloc] initWithLoggingBehavior:FBSDKLoggingBehaviorNetworkRequests]; + _session = [[FBSDKURLSession alloc] initWithDelegate:self delegateQueue:_delegateQueue]; } return self; } - (void)dealloc { - [_session invalidateAndCancel]; + [self.session invalidateAndCancel]; } #pragma mark - Public @@ -151,23 +153,27 @@ NSURLSessionDataDelegate } } ++ (NSTimeInterval)defaultConnectionTimeout { + return g_defaultTimeout; +} + - (void)addRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)handler + completionHandler:(FBSDKGraphRequestBlock)handler { - [self addRequest:request batchEntryName:nil completionHandler:handler]; + [self addRequest:request batchEntryName:@"" completionHandler:handler]; } - (void)addRequest:(FBSDKGraphRequest *)request batchEntryName:(NSString *)name - completionHandler:(FBSDKGraphRequestHandler)handler + completionHandler:(FBSDKGraphRequestBlock)handler { - NSDictionary *batchParams = (name)? @{kBatchEntryName : name } : nil; + NSDictionary *batchParams = name.length > 0 ? @{kBatchEntryName : name } : nil; [self addRequest:request batchParameters:batchParams completionHandler:handler]; } - (void)addRequest:(FBSDKGraphRequest *)request batchParameters:(NSDictionary *)batchParameters - completionHandler:(FBSDKGraphRequestHandler)handler + completionHandler:(FBSDKGraphRequestBlock)handler { if (self.state != kStateCreated) { @throw [NSException exceptionWithName:NSInternalInconsistencyException @@ -181,25 +187,10 @@ NSURLSessionDataDelegate [self.requests addObject:metadata]; } -- (void)addRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)handler - batchEntryName:(NSString *)name -{ - [self addRequest:request batchEntryName:name completionHandler:handler]; -} - -- (void)addRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)handler - batchParameters:(NSDictionary *)batchParameters -{ - [self addRequest:request batchParameters:batchParameters completionHandler:handler]; -} - - (void)cancel { self.state = kStateCancelled; - [self.task cancel]; - [self cleanUpSession]; + [self.session invalidateAndCancel]; } - (void)overrideGraphAPIVersion:(NSString *)version @@ -209,17 +200,25 @@ NSURLSessionDataDelegate } } -- (void)overrideVersionPartWith:(NSString *)version -{ - [self overrideGraphAPIVersion:version]; -} - - (void)start { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ g_errorConfiguration = [[FBSDKErrorConfiguration alloc] initWithDictionary:nil]; }); + + if (![FBSDKApplicationDelegate isSDKInitialized]) { + NSString *msg = @"FBSDKGraphRequestConnection cannot be started before Facebook SDK initialized."; + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + formatString:@"%@", msg]; + self.state = kStateCancelled; + [self completeFBSDKURLSessionWithResponse:nil + data:nil + networkError:[FBSDKError unknownErrorWithMessage:msg]]; + + return; + } + //optimistically check for updated server configuration; g_errorConfiguration = [FBSDKServerConfigurationManager cachedServerConfiguration].errorConfiguration ?: g_errorConfiguration; @@ -236,22 +235,22 @@ NSURLSessionDataDelegate [self logRequest:request bodyLength:0 bodyLogger:nil attachmentLogger:nil]; _requestStartTime = [FBSDKInternalUtility currentTimeInMilliseconds]; - FBSDKURLSessionTaskHandler handler = ^(NSError *error, - NSURLResponse *response, - NSData *responseData) { - [self completeFBSDKURLSessionWithResponse:response - data:responseData - networkError:error]; + FBSDKURLSessionTaskBlock completionHanlder = ^(NSData *responseDataV1, NSURLResponse *responseV1, NSError *errorV1) { + FBSDKURLSessionTaskBlock handler = ^(NSData *responseDataV2, + NSURLResponse *responseV2, + NSError *errorV2) { + [self completeFBSDKURLSessionWithResponse:responseV2 + data:responseDataV2 + networkError:errorV2]; + }; + + if(errorV1) { + [self taskDidCompleteWithError:errorV1 handler:handler]; + } else { + [self taskDidCompleteWithResponse:responseV1 data:responseDataV1 requestStartTime:self.requestStartTime handler:handler]; + } }; - - if (!self.session) { - self.session = [self defaultSession]; - } - - self.task = [[FBSDKURLSessionTask alloc] initWithRequest:request - fromSession:self.session - completionHandler:handler]; - [self.task start]; + [self.session executeURLRequest:request completionHandler:completionHanlder]; id delegate = self.delegate; if ([delegate respondsToSelector:@selector(requestConnectionWillBeginLoading:)]) { @@ -265,8 +264,14 @@ NSURLSessionDataDelegate } } +- (NSOperationQueue *)delegateQueue +{ + return _delegateQueue; +} + - (void)setDelegateQueue:(NSOperationQueue *)queue { + _session.delegateQueue = queue; _delegateQueue = queue; } @@ -289,7 +294,10 @@ NSURLSessionDataDelegate } if (batchToken) { - metadata.request.parameters[kAccessTokenKey] = batchToken; + NSMutableDictionary *params = [NSMutableDictionary + dictionaryWithDictionary:metadata.request.parameters]; + params[kAccessTokenKey] = batchToken; + metadata.request.parameters = params; [self registerTokenToOmitFromLog:batchToken]; } @@ -322,7 +330,7 @@ NSURLSessionDataDelegate logger:(FBSDKLogger *)logger { [attachments enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) { - value = [FBSDKInternalUtility convertRequestValue:value]; + value = [FBSDKBasicUtility convertRequestValue:value]; if ([value isKindOfClass:[NSString class]]) { if (addFormData) { [body appendWithKey:key formValue:(NSString *)value logger:logger]; @@ -367,7 +375,7 @@ NSURLSessionDataDelegate batchToken:[batchToken isEqualToString:individualToken] ? nil : individualToken]; } - NSString *jsonBatch = [FBSDKInternalUtility JSONStringForObject:batch error:NULL invalidObjectHandler:NULL]; + NSString *jsonBatch = [FBSDKBasicUtility JSONStringForObject:batch error:NULL invalidObjectHandler:NULL]; [body appendWithKey:kBatchKey formValue:jsonBatch logger:logger]; if (batchToken) { @@ -472,21 +480,31 @@ NSURLSessionDataDelegate addFormData:NO logger:attachmentLogger]; - NSURL *url = [FBSDKInternalUtility facebookURLWithHostPrefix:kGraphURLPrefix path:nil queryParameters:nil defaultVersion:_overrideVersionPart error:NULL]; + NSURL *url = [FBSDKInternalUtility + facebookURLWithHostPrefix:kGraphURLPrefix + path:@"" + queryParameters:@{} + defaultVersion:_overrideVersionPart + error:NULL]; + request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:timeout]; request.HTTPMethod = @"POST"; } - request.HTTPBody = body.data; - NSUInteger bodyLength = body.data.length / 1024; - + NSData *compressedData; + if ([request.HTTPMethod isEqualToString:@"POST"] && (compressedData = [body compressedData])) { + request.HTTPBody = compressedData; + [request setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"]; + } else { + request.HTTPBody = body.data; + } [request setValue:[FBSDKGraphRequestConnection userAgent] forHTTPHeaderField:@"User-Agent"]; [request setValue:[body mimeContentType] forHTTPHeaderField:@"Content-Type"]; [request setHTTPShouldHandleCookies:NO]; - [self logRequest:request bodyLength:bodyLength bodyLogger:bodyLogger attachmentLogger:attachmentLogger]; + [self logRequest:request bodyLength:(request.HTTPBody.length / 1024) bodyLogger:bodyLogger attachmentLogger:attachmentLogger]; return request; } @@ -503,9 +521,12 @@ NSURLSessionDataDelegate // - (NSString *)urlStringForSingleRequest:(FBSDKGraphRequest *)request forBatch:(BOOL)forBatch { - request.parameters[@"format"] = @"json"; - request.parameters[@"sdk"] = kSDK; - request.parameters[@"include_headers"] = @"false"; + NSMutableDictionary *params = [NSMutableDictionary dictionaryWithDictionary:request.parameters]; + params[@"format"] = @"json"; + params[@"sdk"] = kSDK; + params[@"include_headers"] = @"false"; + + request.parameters = params; NSString *baseURL; if (forBatch) { @@ -513,7 +534,8 @@ NSURLSessionDataDelegate } else { NSString *token = [self accessTokenWithRequest:request]; if (token) { - [request.parameters setValue:token forKey:kAccessTokenKey]; + [params setValue:token forKey:kAccessTokenKey]; + request.parameters = params; [self registerTokenToOmitFromLog:token]; } @@ -530,7 +552,12 @@ NSURLSessionDataDelegate } } - baseURL = [FBSDKInternalUtility facebookURLWithHostPrefix:prefix path:request.graphPath queryParameters:nil defaultVersion:request.version error:NULL].absoluteString; + baseURL = [FBSDKInternalUtility + facebookURLWithHostPrefix:prefix + path:request.graphPath + queryParameters:@{} + defaultVersion:request.version + error:NULL].absoluteString; } NSString *url = [FBSDKGraphRequest serializeURL:baseURL @@ -554,16 +581,16 @@ NSURLSessionDataDelegate } NSArray *results = nil; - _URLResponse = (NSHTTPURLResponse *)response; + _urlResponse = (NSHTTPURLResponse *)response; if (response) { NSAssert([response isKindOfClass:[NSHTTPURLResponse class]], @"Expected NSHTTPURLResponse, got %@", response); - NSInteger statusCode = _URLResponse.statusCode; + NSInteger statusCode = _urlResponse.statusCode; if (!error && [response.MIMEType hasPrefix:@"image"]) { - error = [NSError fbErrorWithCode:FBSDKErrorGraphRequestNonTextMimeTypeReturned + error = [FBSDKError errorWithCode:FBSDKErrorGraphRequestNonTextMimeTypeReturned message:@"Response is a non-text MIME type; endpoints that return images and other " @"binary data should be fetched using NSURLRequest and NSURLSession"]; } else { @@ -572,13 +599,13 @@ NSURLSessionDataDelegate statusCode:statusCode]; } } else if (!error) { - error = [NSError fbErrorWithCode:FBSDKErrorUnknown + error = [FBSDKError errorWithCode:FBSDKErrorUnknown message:@"Missing NSURLResponse"]; } if (!error) { if (self.requests.count != results.count) { - error = [NSError fbErrorWithCode:FBSDKErrorGraphRequestProtocolMismatch + error = [FBSDKError errorWithCode:FBSDKErrorGraphRequestProtocolMismatch message:@"Unexpected number of results returned from server."]; } else { [_logger appendFormat:@"Response <#%lu>\nDuration: %llu msec\nSize: %lu kB\nResponse Body:\n%@\n\n", @@ -599,7 +626,7 @@ NSURLSessionDataDelegate [self completeWithResults:results networkError:error]; - [self cleanUpSession]; + [self.session invalidateAndCancel]; } // @@ -617,7 +644,7 @@ NSURLSessionDataDelegate // - (NSArray *)parseJSONResponse:(NSData *)data error:(NSError **)error - statusCode:(NSInteger)statusCode; + 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. @@ -628,10 +655,8 @@ NSURLSessionDataDelegate 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]; + [FBSDKAppEvents logInternalEvent:@"fb_response_invalid_utf8" + isImplicitlyLogged:YES]; } } @@ -700,7 +725,7 @@ NSURLSessionDataDelegate { id parsed = nil; if (!(*error) && [utf8 isKindOfClass:[NSString class]]) { - parsed = [FBSDKInternalUtility objectForJSONString:utf8 error:error]; + parsed = [FBSDKBasicUtility objectForJSONString:utf8 error:error]; // if we fail parse we attempt a re-parse 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) { @@ -708,9 +733,9 @@ NSURLSessionDataDelegate // 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]; + NSString *jsonrep = [FBSDKBasicUtility JSONStringForObject:original error:NULL invalidObjectHandler:NULL]; NSError *reparseError = nil; - parsed = [FBSDKInternalUtility objectForJSONString:jsonrep error:&reparseError]; + parsed = [FBSDKBasicUtility objectForJSONString:jsonrep error:&reparseError]; if (!reparseError) { *error = nil; } @@ -793,43 +818,14 @@ NSURLSessionDataDelegate }; - 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) { + if ([metadataTokenString isEqualToString:currentTokenString]) { NSInteger errorCode = [error.userInfo[FBSDKGraphRequestErrorGraphErrorCodeKey] integerValue]; NSInteger errorSubcode = [error.userInfo[FBSDKGraphRequestErrorGraphErrorSubcodeKey] 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 = self->_delegateQueue ?: [NSOperationQueue mainQueue]; - [queue addOperationWithBlock:^{ - clearToken(errorSubcode); - finishAndInvokeCompletionHandler(); - }]; - }]; - return; - } - } clearToken(errorSubcode); - } else if (errorCode >= 200 && errorCode < 300) { - // permission error - [adapter renewSystemAuthorization:^(ACAccountCredentialRenewResult result, NSError *renewError) { - NSOperationQueue *queue = self->_delegateQueue ?: [NSOperationQueue mainQueue]; - [queue addOperationWithBlock:finishAndInvokeCompletionHandler]; - }]; - return; } } #endif @@ -873,17 +869,17 @@ NSURLSessionDataDelegate if ([errorDictionary isKindOfClass:[NSDictionary class]]) { NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"code"] forKey:FBSDKGraphRequestErrorGraphErrorCodeKey]; - [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"error_subcode"] forKey:FBSDKGraphRequestErrorGraphErrorSubcodeKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:errorDictionary[@"code"] forKey:FBSDKGraphRequestErrorGraphErrorCodeKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:errorDictionary[@"error_subcode"] forKey:FBSDKGraphRequestErrorGraphErrorSubcodeKey]; //"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]; + [FBSDKBasicUtility dictionary:userInfo setObject:errorDictionary[@"error_msg"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:errorDictionary[@"error_reason"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:errorDictionary[@"message"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:errorDictionary[@"error_user_title"] forKey:FBSDKErrorLocalizedTitleKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:errorDictionary[@"error_user_msg"] forKey:FBSDKErrorLocalizedDescriptionKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:errorDictionary[@"error_user_msg"] forKey:NSLocalizedDescriptionKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:result[@"code"] forKey:FBSDKGraphRequestErrorHTTPStatusCodeKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:result forKey:FBSDKGraphRequestErrorParsedJSONResponseKey]; FBSDKErrorRecoveryConfiguration *recoveryConfiguration = [g_errorConfiguration recoveryConfigurationForCode:[userInfo[FBSDKGraphRequestErrorGraphErrorCodeKey] stringValue] @@ -892,14 +888,14 @@ NSURLSessionDataDelegate if ([errorDictionary[@"is_transient"] boolValue]) { userInfo[FBSDKGraphRequestErrorKey] = @(FBSDKGraphRequestErrorTransient); } else { - [FBSDKInternalUtility dictionary:userInfo setObject:@(recoveryConfiguration.errorCategory) forKey:FBSDKGraphRequestErrorKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:@(recoveryConfiguration.errorCategory) forKey:FBSDKGraphRequestErrorKey]; } - [FBSDKInternalUtility dictionary:userInfo setObject:recoveryConfiguration.localizedRecoveryDescription forKey:NSLocalizedRecoverySuggestionErrorKey]; - [FBSDKInternalUtility dictionary:userInfo setObject:recoveryConfiguration.localizedRecoveryOptionDescriptions forKey:NSLocalizedRecoveryOptionsErrorKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:recoveryConfiguration.localizedRecoveryDescription forKey:NSLocalizedRecoverySuggestionErrorKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:recoveryConfiguration.localizedRecoveryOptionDescriptions forKey:NSLocalizedRecoveryOptionsErrorKey]; FBSDKErrorRecoveryAttempter *attempter = [FBSDKErrorRecoveryAttempter recoveryAttempterFromConfiguration:recoveryConfiguration]; - [FBSDKInternalUtility dictionary:userInfo setObject:attempter forKey:NSRecoveryAttempterErrorKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:attempter forKey:NSRecoveryAttempterErrorKey]; - return [NSError fbErrorWithCode:FBSDKErrorGraphRequestGraphAPI + return [FBSDKError errorWithCode:FBSDKErrorGraphRequestGraphAPI userInfo:userInfo message:nil underlyingError:nil]; @@ -909,7 +905,7 @@ NSURLSessionDataDelegate return nil; } -- (NSError *)errorWithCode:(FBSDKError)code +- (NSError *)errorWithCode:(FBSDKCoreError)code statusCode:(NSInteger)statusCode parsedJSONResponse:(id)response innerError:(NSError *)innerError @@ -937,6 +933,93 @@ NSURLSessionDataDelegate return error; } +#pragma mark - Private methods (logging and completion) + +- (void)logAndInvokeHandler:(FBSDKURLSessionTaskBlock)handler + error:(NSError *)error +{ + if (error) { + NSString *logEntry = [NSString + stringWithFormat:@"FBSDKURLSessionTask <#%lu>:\n Error: '%@'\n%@\n", + (unsigned long)[FBSDKLogger generateSerialNumber], + error.localizedDescription, + error.userInfo]; + + [self logMessage:logEntry]; + } + + [self invokeHandler:handler error:error response:nil responseData:nil]; +} + +- (void)logAndInvokeHandler:(FBSDKURLSessionTaskBlock)handler + response:(NSURLResponse *)response + responseData:(NSData *)responseData + requestStartTime:(uint64_t)requestStartTime +{ + // Basic logging just prints out the URL. FBSDKGraphRequest logging provides more details. + NSString *mimeType = response.MIMEType; + NSMutableString *mutableLogEntry = [NSMutableString stringWithFormat:@"FBSDKGraphRequestConnection <#%lu>:\n Duration: %llu msec\nResponse Size: %lu kB\n MIME type: %@\n", + (unsigned long)[FBSDKLogger generateSerialNumber], + [FBSDKInternalUtility currentTimeInMilliseconds] - 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:(FBSDKURLSessionTaskBlock)handler + error:(NSError *)error + response:(NSURLResponse *)response + responseData:(NSData *)responseData +{ + if (handler != nil) { + dispatch_async(dispatch_get_main_queue(), ^{ + handler(responseData, response, error); + }); + } +} + +- (void)logMessage:(NSString *)message +{ + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorNetworkRequests formatString:@"%@", message]; +} + +- (void)taskDidCompleteWithResponse:(NSURLResponse *)response + data:(NSData *)data + requestStartTime:(uint64_t)requestStartTime + handler:(FBSDKURLSessionTaskBlock)handler +{ + @try { + [self logAndInvokeHandler:handler + response:response + responseData:data + requestStartTime:requestStartTime]; + } @finally {} +} + +- (void)taskDidCompleteWithError:(NSError *)error + handler:(FBSDKURLSessionTaskBlock)handler +{ + @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:handler error:error]; + } @finally {} +} + #pragma mark - Private methods (miscellaneous) - (void)logRequest:(NSMutableURLRequest *)request @@ -985,6 +1068,8 @@ NSURLSessionDataDelegate } } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + (NSString *)userAgent { static NSString *agent = nil; @@ -992,26 +1077,21 @@ NSURLSessionDataDelegate dispatch_once(&onceToken, ^{ agent = [NSString stringWithFormat:@"%@.%@", kUserAgentBase, FBSDK_VERSION_STRING]; }); - + NSString *agentWithSuffix = nil; if ([FBSDKSettings userAgentSuffix]) { - return [NSString stringWithFormat:@"%@/%@", agent, [FBSDKSettings userAgentSuffix]]; + agentWithSuffix = [NSString stringWithFormat:@"%@/%@", agent, [FBSDKSettings userAgentSuffix]]; + } + if (@available(iOS 13.0, *)) { + NSProcessInfo *processInfo = [NSProcessInfo processInfo]; + SEL selector = NSSelectorFromString(@"isMacCatalystApp"); + if (selector && [processInfo respondsToSelector:selector] && [processInfo performSelector:selector]) { + return [NSString stringWithFormat:@"%@/%@", agentWithSuffix ?: agent, @"macOS"]; + } } - return agent; -} -- (NSURLSession *)defaultSession -{ - NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; - return [NSURLSession sessionWithConfiguration:config - delegate:self - delegateQueue:_delegateQueue]; -} - -- (void)cleanUpSession -{ - [self.session invalidateAndCancel]; - self.session = nil; + return agentWithSuffix ?: agent; } +#pragma clang diagnostic pop #pragma mark - NSURLSessionDataDelegate diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h index 7ad50dc..ea07c78 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h @@ -18,9 +18,12 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** A container class for data attachments so that additional metadata can be provided about the attachment. */ +NS_SWIFT_NAME(GraphRequestDataAttachment) @interface FBSDKGraphRequestDataAttachment : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -53,3 +56,5 @@ NS_DESIGNATED_INITIALIZER; @property (nonatomic, copy, readonly) NSString *filename; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h deleted file mode 100644 index d749579..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -#import diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h index 3798330..85974a8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h @@ -22,46 +22,52 @@ NS_ASSUME_NONNULL_BEGIN #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 -/*! The name of the notification posted by FBSDKMeasurementEvent */ -FOUNDATION_EXPORT NSNotificationName const FBSDKMeasurementEventNotification; +/** The name of the notification posted by FBSDKMeasurementEvent */ +FOUNDATION_EXPORT NSNotificationName const FBSDKMeasurementEventNotification +NS_SWIFT_NAME(MeasurementEvent); #else -/*! The name of the notification posted by FBSDKMeasurementEvent */ -FOUNDATION_EXPORT NSString *const FBSDKMeasurementEventNotification; +/** The name of the notification posted by FBSDKMeasurementEvent */ +FOUNDATION_EXPORT NSString *const FBSDKMeasurementEventNotification +NS_SWIFT_NAME(MeasurementEventNotification); #endif -FOUNDATION_EXPORT NSString *const FBSDKMeasurementEventNotificationName -DEPRECATED_MSG_ATTRIBUTE("Use `FBSDKMeasurementEventNotification` instead"); +/** Defines keys in the userInfo object for the notification named FBSDKMeasurementEventNotificationName */ +/** The string field for the name of the event */ +FOUNDATION_EXPORT NSString *const FBSDKMeasurementEventNameKey +NS_SWIFT_NAME(MeasurementEventNameKey); +/** The dictionary field for the arguments of the event */ +FOUNDATION_EXPORT NSString *const FBSDKMeasurementEventArgsKey +NS_SWIFT_NAME(MeasurementEventArgsKey); -/*! Defines keys in the userInfo object for the notification named FBSDKMeasurementEventNotificationName */ -/*! The string field for the name of the event */ -FOUNDATION_EXPORT NSString *const FBSDKMeasurementEventNameKey; -/*! The dictionary field for the arguments of the event */ -FOUNDATION_EXPORT NSString *const FBSDKMeasurementEventArgsKey; - -/*! Events raised by FBSDKMeasurementEvent for Applink */ -/*! +/** Events raised by FBSDKMeasurementEvent for Applink */ +/** The name of the event posted when [FBSDKURL URLWithURL:] is called successfully. This represents the successful parsing of an app link URL. */ -FOUNDATION_EXPORT NSString *const FBSDKAppLinkParseEventName; +FOUNDATION_EXPORT NSString *const FBSDKAppLinkParseEventName +NS_SWIFT_NAME(AppLinkParseEventName); -/*! +/** The name of the event posted when [FBSDKURL URLWithInboundURL:] is called successfully. This represents parsing an inbound app link URL from a different application */ -FOUNDATION_EXPORT NSString *const FBSDKAppLinkNavigateInEventName; +FOUNDATION_EXPORT NSString *const FBSDKAppLinkNavigateInEventName +NS_SWIFT_NAME(AppLinkNavigateInEventName); -/*! The event raised when the user navigates from your app to other apps */ -FOUNDATION_EXPORT NSString *const FBSDKAppLinkNavigateOutEventName; +/** The event raised when the user navigates from your app to other apps */ +FOUNDATION_EXPORT NSString *const FBSDKAppLinkNavigateOutEventName +NS_SWIFT_NAME(AppLinkNavigateOutEventName); -/*! +/** 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 FBSDKAppLinkNavigateBackToReferrerEventName; +FOUNDATION_EXPORT NSString *const FBSDKAppLinkNavigateBackToReferrerEventName +NS_SWIFT_NAME(AppLinkNavigateBackToReferrerEventName); +NS_SWIFT_NAME(MeasurementEvent) @interface FBSDKMeasurementEvent : NSObject @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m index ef96d3e..8170eb7 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m @@ -18,6 +18,9 @@ #import "FBSDKMeasurementEvent_Internal.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings.h" + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 NSNotificationName const FBSDKMeasurementEventNotification = @"com.facebook.facebook-objc-sdk.measurement_event"; @@ -33,11 +36,11 @@ NSString *const FBSDKMeasurementEventNotificationName = @"com.facebook.facebook- NSString *const FBSDKMeasurementEventNameKey = @"event_name"; NSString *const FBSDKMeasurementEventArgsKey = @"event_args"; -/* app Link Event raised by this FBSDKURL */ +/** app Link Event raised by this FBSDKURL */ NSString *const FBSDKAppLinkParseEventName = @"al_link_parse"; NSString *const FBSDKAppLinkNavigateInEventName = @"al_nav_in"; -/*! AppLink events raised in this class */ +/** AppLink events raised in this class */ NSString *const FBSDKAppLinkNavigateOutEventName = @"al_nav_out"; NSString *const FBSDKAppLinkNavigateBackToReferrerEventName = @"al_ref_back_out"; @@ -48,8 +51,9 @@ NSString *const FBSDKAppLinkNavigateBackToReferrerEventName = @"al_ref_back_out" - (void)postNotification { if (!_name) { - NSLog(@"Warning: Missing event name when logging FBSDK measurement event. \n" - " Ignoring this event in logging."); + [FBSDKLogger + singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + logEntry:@"Warning: Missing event name when logging FBSDK measurement event.\nIgnoring this event in logging."]; return; } NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h index 3fada94..edaae96 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h @@ -20,11 +20,14 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** Extension protocol for NSMutableCopying that adds the mutableCopy method, which is implemented on NSObject. NSObject implicitly conforms to this protocol. */ +NS_SWIFT_NAME(MutableCopying) @protocol FBSDKMutableCopying /** @@ -34,3 +37,5 @@ - (id)mutableCopy; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h index d0e245b..af8095d 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h @@ -18,6 +18,10 @@ #import "FBSDKProfilePictureView.h" +@class FBSDKProfile; + +NS_ASSUME_NONNULL_BEGIN + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 /** @@ -27,18 +31,20 @@ `FBSDKProfileChangeOldKey` and `FBSDKProfileChangeNewKey`. */ -FOUNDATION_EXPORT NSNotificationName const FBSDKProfileDidChangeNotification; +FOUNDATION_EXPORT NSNotificationName const FBSDKProfileDidChangeNotification +NS_SWIFT_NAME(ProfileDidChange); #else /** - Notification indicating that the `currentProfile` has changed. + Notification indicating that the `currentProfile` has changed. the userInfo dictionary of the notification will contain keys `FBSDKProfileChangeOldKey` and `FBSDKProfileChangeNewKey`. */ -FOUNDATION_EXPORT NSString *const FBSDKProfileDidChangeNotification; +FOUNDATION_EXPORT NSString *const FBSDKProfileDidChangeNotification +NS_SWIFT_NAME(ProfileDidChangeNotification); #endif @@ -46,13 +52,24 @@ FOUNDATION_EXPORT NSString *const FBSDKProfileDidChangeNotification; If there was no old profile, the key will not be present. */ -FOUNDATION_EXPORT NSString *const FBSDKProfileChangeOldKey; +FOUNDATION_EXPORT NSString *const FBSDKProfileChangeOldKey +NS_SWIFT_NAME(ProfileChangeOldKey); /* key in notification's userInfo object for getting the new profile. If there is no new profile, the key will not be present. */ -FOUNDATION_EXPORT NSString *const FBSDKProfileChangeNewKey; +FOUNDATION_EXPORT NSString *const FBSDKProfileChangeNewKey +NS_SWIFT_NAME(ProfileChangeNewKey); + +/** + Describes the callback for loadCurrentProfileWithCompletion. + @param profile the FBSDKProfile + @param error the error during the request, if any + + */ +typedef void (^FBSDKProfileBlock)(FBSDKProfile *_Nullable profile, NSError *_Nullable error) +NS_SWIFT_NAME(ProfileBlock); /** Represents an immutable Facebook profile @@ -66,6 +83,7 @@ FOUNDATION_EXPORT NSString *const FBSDKProfileChangeNewKey; You can use this class to build your own `FBSDKProfilePictureView` or in place of typical requests to "/me". */ +NS_SWIFT_NAME(Profile) @interface FBSDKProfile : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -82,12 +100,24 @@ FOUNDATION_EXPORT NSString *const FBSDKProfileChangeNewKey; @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; + firstName:(nullable NSString *)firstName + middleName:(nullable NSString *)middleName + lastName:(nullable NSString *)lastName + name:(nullable NSString *)name + linkURL:(nullable NSURL *)linkURL + refreshDate:(nullable NSDate *)refreshDate NS_DESIGNATED_INITIALIZER; + +/** + The current profile instance and posts the appropriate notification + if the profile parameter is different than the receiver. + + This persists the profile to NSUserDefaults. + */ + +/// The current profile +@property (class, nonatomic, strong, nullable) FBSDKProfile *currentProfile +NS_SWIFT_NAME(current); + /** The user id */ @@ -95,46 +125,32 @@ FOUNDATION_EXPORT NSString *const FBSDKProfileChangeNewKey; /** The user's first name */ -@property (nonatomic, copy, readonly) NSString *firstName; +@property (nonatomic, copy, readonly, nullable) NSString *firstName; /** The user's middle name */ -@property (nonatomic, copy, readonly) NSString *middleName; +@property (nonatomic, copy, readonly, nullable) NSString *middleName; /** The user's last name */ -@property (nonatomic, copy, readonly) NSString *lastName; +@property (nonatomic, copy, readonly, nullable) NSString *lastName; /** The user's complete name */ -@property (nonatomic, copy, readonly) NSString *name; +@property (nonatomic, copy, readonly, nullable) NSString *name; /** A URL to the user's profile. - Consider using Bolts and `FBSDKAppLinkResolver` to resolve this + Consider using `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; +@property (nonatomic, readonly, nullable) NSURL *linkURL; /** The last time the profile data was fetched. */ @property (nonatomic, readonly) NSDate *refreshDate; -/** - Gets the current FBSDKProfile instance. - */ -+ (FBSDKProfile *)currentProfile; - -/** - Sets the current instance and posts the appropriate notification if the profile parameter is different - than the receiver. - @param profile the profile to set - - This persists the profile to NSUserDefaults. - */ -+ (void)setCurrentProfile:(FBSDKProfile *)profile; - /** Indicates if `currentProfile` will automatically observe `FBSDKAccessTokenDidChangeNotification` notifications @param enable YES is observing @@ -145,7 +161,8 @@ FOUNDATION_EXPORT NSString *const FBSDKProfileChangeNewKey; 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; ++ (void)enableUpdatesOnAccessTokenChange:(BOOL)enable +NS_SWIFT_NAME(enableUpdatesOnAccessTokenChange(_:)); /** Loads the current profile and passes it to the completion block. @@ -154,26 +171,15 @@ FOUNDATION_EXPORT NSString *const FBSDKProfileChangeNewKey; If the profile is already loaded, this method will call the completion block synchronously, otherwise it will begin a graph request to update `currentProfile` and then call the completion block when finished. */ -+ (void)loadCurrentProfileWithCompletion:(void(^)(FBSDKProfile *profile, NSError *error))completion; ++ (void)loadCurrentProfileWithCompletion:(nullable FBSDKProfileBlock)completion; /** 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; - -/** - A convenience method for returning a Graph API path for retrieving the user's profile image. - -@warning use `imageURLForPictureMode:size:` instead - - 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 -DEPRECATED_MSG_ATTRIBUTE("use imageURLForPictureMode:size: instead"); +- (nullable NSURL *)imageURLForPictureMode:(FBSDKProfilePictureMode)mode size:(CGSize)size +NS_SWIFT_NAME(imageURL(forMode:size:)); /** Returns YES if the profile is equivalent to the receiver. @@ -181,3 +187,5 @@ DEPRECATED_MSG_ATTRIBUTE("use imageURLForPictureMode:size: instead"); */ - (BOOL)isEqualToProfile:(FBSDKProfile *)profile; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m index c785d1a..a6c7885 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m @@ -18,7 +18,7 @@ #import "FBSDKProfile+Internal.h" -#import "FBSDKCoreKit+Internal.h" +#import #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 @@ -79,8 +79,8 @@ static FBSDKProfile *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]; + [FBSDKBasicUtility dictionary:userInfo setObject:profile forKey:FBSDKProfileChangeNewKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:g_currentProfile forKey:FBSDKProfileChangeOldKey]; g_currentProfile = profile; [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKProfileDidChangeNotification object:[self class] @@ -89,29 +89,23 @@ static FBSDKProfile *g_currentProfile; } - (NSURL *)imageURLForPictureMode:(FBSDKProfilePictureMode)mode size:(CGSize)size -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - NSString *path = [self imagePathForPictureMode:mode 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", + + NSString *path = [NSString stringWithFormat:@"%@/picture?type=%@&width=%d&height=%d", _userID, type, (int) roundf(size.width), (int) roundf(size.height)]; + + return [FBSDKInternalUtility facebookURLWithHostPrefix:@"graph" + path:path + queryParameters:@{} + error:NULL]; } + (void)enableUpdatesOnAccessTokenChange:(BOOL)enable @@ -126,7 +120,7 @@ static FBSDKProfile *g_currentProfile; } } -+ (void)loadCurrentProfileWithCompletion:(void (^)(FBSDKProfile *, NSError *))completion ++ (void)loadCurrentProfileWithCompletion:(FBSDKProfileBlock)completion { [self loadProfileWithToken:[FBSDKAccessToken currentAccessToken] completion:completion]; } @@ -214,7 +208,7 @@ static FBSDKProfile *g_currentProfile; #pragma mark - Private -+ (void)loadProfileWithToken:(FBSDKAccessToken *)token completion:(void (^)(FBSDKProfile *, NSError *))completion ++ (void)loadProfileWithToken:(FBSDKAccessToken *)token completion:(FBSDKProfileBlock)completion { static FBSDKGraphRequestConnection *executingRequestConnection = nil; @@ -266,7 +260,7 @@ static FBSDKProfile *g_currentProfile; @implementation FBSDKProfile(Internal) -+ (void)cacheProfile:(FBSDKProfile *) profile ++ (void)cacheProfile:(FBSDKProfile *)profile { NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; if (profile) { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h index aaf9bca..1ed2b76 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** FBSDKProfilePictureMode enum Defines the aspect ratio mode for the source image of the profile picture. @@ -32,11 +34,12 @@ typedef NS_ENUM(NSUInteger, FBSDKProfilePictureMode) The original picture's aspect ratio will be used for the source image in the view. */ FBSDKProfilePictureModeNormal, -}; +} NS_SWIFT_NAME(Profile.PictureMode); /** A view to display a profile picture. */ +NS_SWIFT_NAME(FBProfilePictureView) @interface FBSDKProfilePictureView : UIView /** @@ -58,3 +61,5 @@ typedef NS_ENUM(NSUInteger, FBSDKProfilePictureMode) - (void)setNeedsImageUpdate; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m index 36e998e..faced70 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m @@ -205,40 +205,6 @@ #pragma mark - Helper Methods -+ (void)_downloadImageWithState:(FBSDKProfilePictureViewState *)state - completionBlock:(void(^)(NSData *data))completionBlock; -{ - NSURL *imageURL = [self _imageURLWithState:state]; - if (!imageURL) { - return; - } - - NSURLRequest *request = [[NSURLRequest alloc] initWithURL:imageURL]; - NSURLSession *session = [NSURLSession sharedSession]; - [[session - dataTaskWithRequest:request - completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - if (!error && data.length) { - completionBlock(data); - } - }] resume]; -} - -+ (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[FBSDKAccessTokenDidChangeUserIDKey]) { @@ -340,10 +306,30 @@ } _lastState = state; + FBSDKAccessToken *accessToken = [FBSDKAccessToken currentAccessToken]; + if ([state.profileID isEqualToString:@"me"] && !accessToken) { + return; + } + + 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); + [FBSDKBasicUtility dictionary:parameters setObject:accessToken.tokenString forKey:@"access_token"]; + NSURL *imageURL = [FBSDKInternalUtility facebookURLWithHostPrefix:@"graph" path:path queryParameters:parameters error:NULL]; + __weak FBSDKProfilePictureView *weakSelf = self; - [[self class] _downloadImageWithState:state completionBlock:^(NSData *data) { - [weakSelf _updateImageWithData:data state:state]; - }]; + + NSURLRequest *request = [[NSURLRequest alloc] initWithURL:imageURL]; + NSURLSession *session = [NSURLSession sharedSession]; + [[session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (!error && data.length) { + [weakSelf _updateImageWithData:data state:state]; + } + }] resume]; } - (void)_setPlaceholderImage diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h index 4f79de5..a6f1464 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h @@ -18,255 +18,196 @@ #import +NS_ASSUME_NONNULL_BEGIN + /* * Constants defining logging behavior. Use with <[FBSDKSettings setLoggingBehavior]>. */ +/// typedef for FBSDKAppEventName +typedef NSString *const FBSDKLoggingBehavior NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(LoggingBehavior); + /** Include access token in logging. */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorAccessTokens; +FOUNDATION_EXPORT FBSDKLoggingBehavior FBSDKLoggingBehaviorAccessTokens; /** Log performance characteristics */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorPerformanceCharacteristics; +FOUNDATION_EXPORT FBSDKLoggingBehavior FBSDKLoggingBehaviorPerformanceCharacteristics; /** Log FBSDKAppEvents interactions */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorAppEvents; +FOUNDATION_EXPORT FBSDKLoggingBehavior FBSDKLoggingBehaviorAppEvents; /** Log Informational occurrences */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorInformational; +FOUNDATION_EXPORT FBSDKLoggingBehavior FBSDKLoggingBehaviorInformational; /** Log cache errors. */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorCacheErrors; +FOUNDATION_EXPORT FBSDKLoggingBehavior FBSDKLoggingBehaviorCacheErrors; /** Log errors from SDK UI controls */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorUIControlErrors; +FOUNDATION_EXPORT FBSDKLoggingBehavior FBSDKLoggingBehaviorUIControlErrors; /** Log debug warnings from API response, i.e. when friends fields requested, but user_friends permission isn't granted. */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorGraphAPIDebugWarning; +FOUNDATION_EXPORT FBSDKLoggingBehavior 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. */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorGraphAPIDebugInfo; +FOUNDATION_EXPORT FBSDKLoggingBehavior FBSDKLoggingBehaviorGraphAPIDebugInfo; /** Log errors from SDK network requests */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorNetworkRequests; +FOUNDATION_EXPORT FBSDKLoggingBehavior FBSDKLoggingBehaviorNetworkRequests; /** Log errors likely to be preventable by the developer. This is in the default set of enabled logging behaviors. */ -FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorDeveloperErrors; +FOUNDATION_EXPORT FBSDKLoggingBehavior FBSDKLoggingBehaviorDeveloperErrors; +NS_SWIFT_NAME(Settings) @interface FBSDKSettings : NSObject - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; /** - Get the Facebook App ID used by the SDK. - - If not explicitly set, the default will be read from the application's plist (FacebookAppID). + Retrieve the current iOS SDK version. */ -+ (NSString *)appID; +@property (class, nonatomic, copy, readonly) NSString *sdkVersion; /** - Set the Facebook App ID to be used by the SDK. - @param appID The Facebook App ID to be used by the SDK. + Retrieve the current default Graph API version. */ -+ (void)setAppID:(NSString *)appID; +@property (class, nonatomic, copy, readonly) NSString *defaultGraphAPIVersion; /** - Get the default url scheme suffix used for sessions. - - If not explicitly set, the default will be read from the application's plist (FacebookUrlSchemeSuffix). - */ -+ (NSString *)appURLSchemeSuffix; - -/** - 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; - -/** - Retrieve the Client Token that has been set via [FBSDKSettings setClientToken]. - - If not explicitly set, the default will be read from the application's plist (FacebookClientToken). - */ -+ (NSString *)clientToken; - -/** - Sets the Client Token for the Facebook App. - - 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; - -/** - 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; - -/** - Get the Facebook Display Name used by the SDK. - - If not explicitly set, the default will be read from the application's plist (FacebookDisplayName). - */ -+ (NSString *)displayName; - -/** - Set the default Facebook Display Name to be used by the SDK. - - 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; - -/** - Get the Facebook domain part. - - If not explicitly set, the default will be read from the application's plist (FacebookDomainPart). - */ -+ (NSString *)facebookDomainPart; - -/** - Set the subpart of the Facebook domain. - - 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; - -/** - The quality of JPEG images sent to Facebook from the SDK. + The quality of JPEG images sent to Facebook from the SDK, + expressed as a value from 0.0 to 1.0. 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; +@property (class, nonatomic, assign) CGFloat JPEGCompressionQuality +NS_SWIFT_NAME(jpegCompressionQuality); /** - 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; - -/** - Flag which controls the auto logging of basic app events, such as activateApp and deactivateApp. - If not explicitly set, the default is 1 - true + Controls sdk auto initailization. + If not explicitly set, the default is true */ -+ (NSNumber *)autoLogAppEventsEnabled; +@property (class, nonatomic, assign, getter=isAutoInitEnabled) BOOL autoInitEnabled; /** - Set the flag which controls the auto logging of basic app events, such as activateApp and deactivateApp. - @param AutoLogAppEventsEnabled Flag value, expressed as a value from 0 - false or 1 - true. + Controls sdk crash report + If not explicitly set, the default is true */ -+ (void)setAutoLogAppEventsEnabled:(NSNumber *)AutoLogAppEventsEnabled; +@property (class, nonatomic, assign, getter=isInstrumentEnabled) BOOL instrumentEnabled +__attribute((deprecated("This attribute is no longer used, use autoLogAppEventsEnabled instead."))); /** - Flag which controls the fb_codeless_debug logging event - If not explicitly set, the default is 1 - true + Controls the auto logging of basic app events, such as activateApp and deactivateApp. + If not explicitly set, the default is true */ -+ (NSNumber *)codelessDebugLogEnabled; +@property (class, nonatomic, assign, getter=isAutoLogAppEventsEnabled) BOOL autoLogAppEventsEnabled; /** - Set the flag which controls the fb_codeless_debug logging event - @param CodelessDebugLogEnabled Flag value, expressed as a value from 0 - false or 1 - true. + Controls the fb_codeless_debug logging event + If not explicitly set, the default is true */ -+ (void)setCodelessDebugLogEnabled:(NSNumber *)CodelessDebugLogEnabled; +@property (class, nonatomic, assign, getter=isCodelessDebugLogEnabled) BOOL codelessDebugLogEnabled; /** - Flag which controls whether advertiserID could be collected. - If not explicitly set, the default is 1 - true + Controls the fb_codeless_debug logging event + If not explicitly set, the default is true */ -+ (NSNumber *)advertiserIDCollectionEnabled; +@property (class, nonatomic, assign, getter=isAdvertiserIDCollectionEnabled) BOOL advertiserIDCollectionEnabled; /** - Set the flag which controls ontrols whether advertiserID could be collected. - @param AdvertiserIDCollectionEnabled Flag value, expressed as a value from 0 - false or 1 - true. + 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. */ -+ (void)setAdvertiserIDCollectionEnabled:(NSNumber *)AdvertiserIDCollectionEnabled; +@property (class, nonatomic, assign, getter=shouldLimitEventAndDataUsage) BOOL limitEventAndDataUsage; /** - 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. + A convenient way to toggle error recovery for all FBSDKGraphRequest instances created after this is set. */ -+ (BOOL)limitEventAndDataUsage; +@property (class, nonatomic, assign, getter=isGraphErrorRecoveryEnabled) BOOL graphErrorRecoveryEnabled; /** - 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. + The Facebook App ID used by the SDK. - @param limitEventAndDataUsage The desired value. + If not explicitly set, the default will be read from the application's plist (FacebookAppID). */ -+ (void)setLimitEventAndDataUsage:(BOOL)limitEventAndDataUsage; +@property (class, nonatomic, copy, nullable) NSString *appID; /** - Retrieve the current iOS SDK version. + The default url scheme suffix used for sessions. + + If not explicitly set, the default will be read from the application's plist (FacebookUrlSchemeSuffix). */ -+ (NSString *)sdkVersion; +@property (class, nonatomic, copy, nullable) NSString *appURLSchemeSuffix; /** - The current Facebook SDK logging behavior. + The Client Token that has been set via [FBSDKSettings setClientToken]. + This is needed for certain API calls when made anonymously, without a user-based access token. + + 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 + + If not explicitly set, the default will be read from the application's plist (FacebookClientToken). */ -@property (class, nonatomic, copy) NSSet *loggingBehaviors; - -+ (NSSet *)loggingBehavior -DEPRECATED_MSG_ATTRIBUTE("Renamed `loggingBehaviors`"); +@property (class, nonatomic, copy, nullable) NSString *clientToken; /** - Set the current Facebook SDK logging behavior. This should consist of strings defined as - constants with FBSDKLoggingBehavior*. + The Facebook Display Name used by the SDK. - @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. + This should match the Display Name that has been set for the app with the corresponding Facebook App ID, + in the Facebook App Dashboard. + If not explicitly set, the default will be read from the application's plist (FacebookDisplayName). + */ +@property (class, nonatomic, copy, nullable) NSString *displayName; + +/** + The Facebook domain part. This can be used to change the Facebook domain + (e.g. @"beta") so that requests will be sent to `graph.beta.facebook.com` + + If not explicitly set, the default will be read from the application's plist (FacebookDomainPart). + */ +@property (class, nonatomic, copy, nullable) NSString *facebookDomainPart; + +/** + The current Facebook SDK logging behavior. This should consist of strings + defined as constants with FBSDKLoggingBehavior*. + + This should consist a set of strings indicating what information should be logged + defined as constants with FBSDKLoggingBehavior*. Set to an empty set in order to disable all logging. 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: + + The default is a set consisting of FBSDKLoggingBehaviorDeveloperErrors */ -+ (void)setLoggingBehavior:(NSSet *)loggingBehavior; - -/** - 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; - -/** - 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; - -/** - Set the user defaults key used by legacy token caches. - - @param tokenInformationKeyName the key used by legacy token caches. - - - Use this only if you customized FBSessionTokenCachingStrategy in v3.x of - the Facebook SDK for iOS. -*/ -+ (void)setLegacyUserDefaultTokenInformationKeyName:(NSString *)tokenInformationKeyName; - -/** - Get the user defaults key used by legacy token caches. -*/ -+ (NSString *)legacyUserDefaultTokenInformationKeyName; +@property (class, nonatomic, copy) NSSet *loggingBehaviors +NS_REFINED_FOR_SWIFT; /** Overrides the default Graph API version to use with `FBSDKGraphRequests`. This overrides `FBSDK_TARGET_PLATFORM_VERSION`. The string should be of the form `@"v2.7"`. + + Defaults to `FBSDK_TARGET_PLATFORM_VERSION`. */ -+ (void)setGraphAPIVersion:(NSString *)version; +@property (class, nonatomic, copy, null_resettable) NSString *graphAPIVersion; /** - Returns the default Graph API version. Defaults to `FBSDK_TARGET_PLATFORM_VERSION` -*/ -+ (NSString *)graphAPIVersion; + 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:(FBSDKLoggingBehavior)loggingBehavior; + +/** + 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:(FBSDKLoggingBehavior)loggingBehavior; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m index 4790f1c..4e5f1ca 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m @@ -20,12 +20,16 @@ #import "FBSDKAccessTokenCache.h" #import "FBSDKAccessTokenExpirer.h" +#import "FBSDKAppEvents+Internal.h" #import "FBSDKCoreKit.h" -#define FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(TYPE, PLIST_KEY, GETTER, SETTER, DEFAULT_VALUE) \ +#define FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(TYPE, PLIST_KEY, GETTER, SETTER, DEFAULT_VALUE, ENABLE_CACHE) \ static TYPE *g_##PLIST_KEY = nil; \ + (TYPE *)GETTER \ { \ + if (!g_##PLIST_KEY && ENABLE_CACHE) { \ + g_##PLIST_KEY = [[[NSUserDefaults standardUserDefaults] objectForKey:@#PLIST_KEY] copy]; \ + } \ if (!g_##PLIST_KEY) { \ g_##PLIST_KEY = [[[NSBundle mainBundle] objectForInfoDictionaryKey:@#PLIST_KEY] copy] ?: DEFAULT_VALUE; \ } \ @@ -33,70 +37,90 @@ static TYPE *g_##PLIST_KEY = nil; \ } \ + (void)SETTER:(TYPE *)value { \ g_##PLIST_KEY = [value copy]; \ + if (ENABLE_CACHE) { \ + if (value) { \ + [[NSUserDefaults standardUserDefaults] setObject:value forKey:@#PLIST_KEY]; \ + } else { \ + [[NSUserDefaults standardUserDefaults] removeObjectForKey:@#PLIST_KEY]; \ + } \ + } \ + [FBSDKSettings _logIfSDKSettingsChanged]; \ } -#define FBSDKSETTINGS_AUTOLOG_APPEVENTS_ENABLED_USER_DEFAULTS_KEY @"com.facebook.sdk:autoLogAppEventsEnabled%@" -#define FBSDKSETTINGS_ADVERTISERID_COLLECTION_ENABLED_USER_DEFAULTS_KEY @"com.facebook.sdk:advertiserIDCollectionEnabled%@" - -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"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorAccessTokens = @"include_access_tokens"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorPerformanceCharacteristics = @"perf_characteristics"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorAppEvents = @"app_events"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorInformational = @"informational"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorCacheErrors = @"cache_errors"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorUIControlErrors = @"ui_control_errors"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorDeveloperErrors = @"developer_errors"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorGraphAPIDebugWarning = @"graph_api_debug_warning"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorGraphAPIDebugInfo = @"graph_api_debug_info"; +FBSDKLoggingBehavior FBSDKLoggingBehaviorNetworkRequests = @"network_requests"; static NSObject *g_tokenCache; -static NSMutableSet *g_loggingBehaviors; -static NSString *g_legacyUserDefaultTokenInformationKeyName = @"FBAccessTokenInformationKey"; +static NSMutableSet *g_loggingBehaviors; static NSString *const FBSDKSettingsLimitEventAndDataUsage = @"com.facebook.sdk:FBSDKSettingsLimitEventAndDataUsage"; +static NSString *const FBSDKSettingsBitmask = @"com.facebook.sdk:FBSDKSettingsBitmask"; static BOOL g_disableErrorRecovery; static NSString *g_userAgentSuffix; static NSString *g_defaultGraphAPIVersion; static FBSDKAccessTokenExpirer *g_accessTokenExpirer; -static NSString *const FBSDKSettingsAutoLogAppEventsEnabled = @"FacebookAutoLogAppEventsEnabled"; -static NSString *const FBSDKSettingsAdvertiserIDCollectionEnabled = @"FacebookAdvertiserIDCollectionEnabled"; -static NSNumber *g_autoLogAppEventsEnabled; -static NSNumber *g_advertiserIDCollectionEnabled; + +// +// Warning messages for App Event Flags +// + +static NSString *const autoLogAppEventsEnabledNotSetWarning = + @": Please set a value for FacebookAutoLogAppEventsEnabled. Set the flag to TRUE if you want " + "to collect app install, app launch and in-app purchase events automatically. To request user consent " + "before collecting data, set the flag value to FALSE, then change to TRUE once user consent is received. " + "Learn more: https://developers.facebook.com/docs/app-events/getting-started-app-events-ios#disable-auto-events."; +static NSString *const advertiserIDCollectionEnabledNotSetWarning = + @": You haven't set a value for FacebookAdvertiserIDCollectionEnabled. Set the flag to TRUE if " + "you want to collect Advertiser ID for better advertising and analytics results. To request user consent " + "before collecting data, set the flag value to FALSE, then change to TRUE once user consent is received. " + "Learn more: https://developers.facebook.com/docs/app-events/getting-started-app-events-ios#disable-auto-events."; +static NSString *const advertiserIDCollectionEnabledFalseWarning = + @": The value for FacebookAdvertiserIDCollectionEnabled is currently set to FALSE so you're sending app " + "events without collecting Advertiser ID. This can affect the quality of your advertising and analytics results."; @implementation FBSDKSettings + (void)initialize { if (self == [FBSDKSettings class]) { - NSString *appID = [self appID]; g_tokenCache = [[FBSDKAccessTokenCache alloc] init]; g_accessTokenExpirer = [[FBSDKAccessTokenExpirer alloc] init]; - // Fetch meta data from plist and overwrite the value with NSUserDefaults if possible - g_autoLogAppEventsEnabled = [self appEventSettingsForPlistKey:FBSDKSettingsAutoLogAppEventsEnabled defaultValue:@YES]; - g_autoLogAppEventsEnabled = [self appEventSettingsForUserDefaultsKey:[NSString stringWithFormat:FBSDKSETTINGS_AUTOLOG_APPEVENTS_ENABLED_USER_DEFAULTS_KEY, appID] defaultValue:g_autoLogAppEventsEnabled]; - [[NSUserDefaults standardUserDefaults] setObject:g_autoLogAppEventsEnabled forKey:[NSString stringWithFormat:FBSDKSETTINGS_AUTOLOG_APPEVENTS_ENABLED_USER_DEFAULTS_KEY, appID]]; - g_advertiserIDCollectionEnabled = [self appEventSettingsForPlistKey:FBSDKSettingsAdvertiserIDCollectionEnabled defaultValue:@YES]; - g_advertiserIDCollectionEnabled = [self appEventSettingsForUserDefaultsKey:[NSString stringWithFormat:FBSDKSETTINGS_ADVERTISERID_COLLECTION_ENABLED_USER_DEFAULTS_KEY, appID] defaultValue:g_advertiserIDCollectionEnabled]; - [[NSUserDefaults standardUserDefaults] setObject:g_advertiserIDCollectionEnabled forKey:[NSString stringWithFormat:FBSDKSETTINGS_ADVERTISERID_COLLECTION_ENABLED_USER_DEFAULTS_KEY, appID]]; + + [FBSDKSettings logWarnings]; + [FBSDKSettings _logIfSDKSettingsChanged]; } } #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); -FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLogEnabled, codelessDebugLogEnabled, - setCodelessDebugLogEnabled, @0); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookAppID, appID, setAppID, nil, NO); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookUrlSchemeSuffix, appURLSchemeSuffix, setAppURLSchemeSuffix, nil, NO); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookClientToken, clientToken, setClientToken, nil, NO); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookDisplayName, displayName, setDisplayName, nil, NO); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookDomainPart, facebookDomainPart, setFacebookDomainPart, nil, NO); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookJpegCompressionQuality, _JPEGCompressionQualityNumber, _setJPEGCompressionQualityNumber, @0.9, NO); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookAutoInitEnabled, _autoInitEnabled, _setAutoInitEnabled, @1, YES); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookInstrumentEnabled, _instrumentEnabled, _setInstrumentEnabled, @1, YES); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookAutoLogAppEventsEnabled, _autoLogAppEventsEnabled, _setAutoLogAppEventsEnabled, @1, YES); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookAdvertiserIDCollectionEnabled, _advertiserIDCollectionEnabled, _setAdvertiserIDCollectionEnabled, @1, YES); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLogEnabled, _codelessDebugLogEnabled, + _setCodelessDebugLogEnabled, @0, YES); -+ (void)setGraphErrorRecoveryDisabled:(BOOL)disableGraphErrorRecovery { - g_disableErrorRecovery = disableGraphErrorRecovery; ++ (BOOL)isGraphErrorRecoveryEnabled +{ + return !g_disableErrorRecovery; } -+ (BOOL)isGraphErrorRecoveryDisabled { - return g_disableErrorRecovery; ++ (void)setGraphErrorRecoveryEnabled:(BOOL)graphErrorRecoveryEnabled +{ + g_disableErrorRecovery = !graphErrorRecoveryEnabled; } + (CGFloat)JPEGCompressionQuality @@ -109,7 +133,60 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo [self _setJPEGCompressionQualityNumber:@(JPEGCompressionQuality)]; } -+ (BOOL)limitEventAndDataUsage ++ (BOOL)isAutoInitEnabled +{ + return [self _autoInitEnabled].boolValue; +} + ++ (void)setAutoInitEnabled:(BOOL)autoInitEnabled +{ + [self _setAutoInitEnabled:@(autoInitEnabled)]; + if (autoInitEnabled) { + [FBSDKApplicationDelegate initializeSDK:nil]; + } +} + ++ (BOOL)isInstrumentEnabled +{ + return [self _instrumentEnabled].boolValue; +} + ++ (void)setInstrumentEnabled:(BOOL)instrumentEnabled +{ + [self _setInstrumentEnabled:@(instrumentEnabled)]; +} + ++ (BOOL)isCodelessDebugLogEnabled +{ + return [self _codelessDebugLogEnabled].boolValue; +} + ++ (void)setCodelessDebugLogEnabled:(BOOL)codelessDebugLogEnabled +{ + [self _setCodelessDebugLogEnabled:@(codelessDebugLogEnabled)]; +} + ++ (BOOL)isAutoLogAppEventsEnabled +{ + return [self _autoLogAppEventsEnabled].boolValue; +} + ++ (void)setAutoLogAppEventsEnabled:(BOOL)autoLogAppEventsEnabled +{ + [self _setAutoLogAppEventsEnabled:@(autoLogAppEventsEnabled)]; +} + ++ (BOOL)isAdvertiserIDCollectionEnabled +{ + return [self _advertiserIDCollectionEnabled].boolValue; +} + ++ (void)setAdvertiserIDCollectionEnabled:(BOOL)advertiserIDCollectionEnabled +{ + [self _setAdvertiserIDCollectionEnabled:@(advertiserIDCollectionEnabled)]; +} + ++ (BOOL)shouldLimitEventAndDataUsage { NSNumber *storedValue = [[NSUserDefaults standardUserDefaults] objectForKey:FBSDKSettingsLimitEventAndDataUsage]; if (storedValue == nil) { @@ -125,10 +202,10 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo [defaults synchronize]; } -+ (NSSet *)loggingBehaviors ++ (NSSet *)loggingBehaviors { if (!g_loggingBehaviors) { - NSArray *bundleLoggingBehaviors = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"FacebookLoggingBehavior"]; + NSArray *bundleLoggingBehaviors = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"FacebookLoggingBehavior"]; if (bundleLoggingBehaviors) { g_loggingBehaviors = [[NSMutableSet alloc] initWithArray:bundleLoggingBehaviors]; } else { @@ -140,7 +217,7 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo return [g_loggingBehaviors copy]; } -+ (void)setLoggingBehaviors:(NSSet *)loggingBehaviors ++ (void)setLoggingBehaviors:(NSSet *)loggingBehaviors { if (![g_loggingBehaviors isEqualToSet:loggingBehaviors]) { g_loggingBehaviors = [loggingBehaviors mutableCopy]; @@ -149,17 +226,7 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo } } -+ (NSSet *)loggingBehavior -{ - return [self loggingBehaviors]; -} - -+ (void)setLoggingBehavior:(NSSet *)loggingBehavior -{ - [self setLoggingBehaviors:loggingBehavior]; -} - -+ (void)enableLoggingBehavior:(NSString *)loggingBehavior ++ (void)enableLoggingBehavior:(FBSDKLoggingBehavior)loggingBehavior { if (!g_loggingBehaviors) { [self loggingBehaviors]; @@ -168,7 +235,7 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo [self updateGraphAPIDebugBehavior]; } -+ (void)disableLoggingBehavior:(NSString *)loggingBehavior ++ (void)disableLoggingBehavior:(FBSDKLoggingBehavior)loggingBehavior { if (!g_loggingBehaviors) { [self loggingBehaviors]; @@ -177,18 +244,6 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo [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 @@ -230,9 +285,14 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo } } ++ (NSString *)defaultGraphAPIVersion +{ + return FBSDK_TARGET_PLATFORM_VERSION; +} + + (NSString *)graphAPIVersion { - return g_defaultGraphAPIVersion ?: FBSDK_TARGET_PLATFORM_VERSION; + return g_defaultGraphAPIVersion ?: self.defaultGraphAPIVersion; } + (NSNumber *)appEventSettingsForPlistKey:(NSString *)plistKey @@ -251,34 +311,52 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo return defaultValue; } -+ (NSNumber *)autoLogAppEventsEnabled ++ (void)logWarnings { - return g_autoLogAppEventsEnabled; -} - -+ (void)setAutoLogAppEventsEnabled:(NSNumber *)autoLogAppEventsEnabled -{ - if (autoLogAppEventsEnabled == nil || [g_autoLogAppEventsEnabled isEqual:autoLogAppEventsEnabled]) { - return; + NSBundle *mainBundle = [NSBundle mainBundle]; + // Log warnings for App Event Flags + if (![mainBundle objectForInfoDictionaryKey:@"FacebookAutoLogAppEventsEnabled"]) { + NSLog(autoLogAppEventsEnabledNotSetWarning); } - - g_autoLogAppEventsEnabled = [autoLogAppEventsEnabled copy]; - [[NSUserDefaults standardUserDefaults] setObject:g_autoLogAppEventsEnabled forKey:[NSString stringWithFormat:FBSDKSETTINGS_AUTOLOG_APPEVENTS_ENABLED_USER_DEFAULTS_KEY, [self appID]]]; -} - -+ (NSNumber *)advertiserIDCollectionEnabled -{ - return g_advertiserIDCollectionEnabled; -} - -+ (void)setAdvertiserIDCollectionEnabled:(NSNumber *)advertiserIDCollectionEnabled -{ - if (advertiserIDCollectionEnabled == nil || [g_advertiserIDCollectionEnabled isEqual:advertiserIDCollectionEnabled]) { - return; + if (![mainBundle objectForInfoDictionaryKey:@"FacebookAdvertiserIDCollectionEnabled"]) { + NSLog(advertiserIDCollectionEnabledNotSetWarning); } + if (![FBSDKSettings isAdvertiserIDCollectionEnabled]) { + NSLog(advertiserIDCollectionEnabledFalseWarning); + } +} - g_advertiserIDCollectionEnabled = [advertiserIDCollectionEnabled copy]; - [[NSUserDefaults standardUserDefaults] setObject:g_advertiserIDCollectionEnabled forKey:[NSString stringWithFormat:FBSDKSETTINGS_ADVERTISERID_COLLECTION_ENABLED_USER_DEFAULTS_KEY, [self appID]]]; ++ (void)_logIfSDKSettingsChanged +{ + NSInteger bitmask = 0; + NSInteger bit = 0; + bitmask |= ([FBSDKSettings isAutoInitEnabled] ? 1 : 0) << bit++; + bitmask |= ([FBSDKSettings isAutoLogAppEventsEnabled] ? 1 : 0) << bit++; + bitmask |= ([FBSDKSettings isAdvertiserIDCollectionEnabled] ? 1 : 0) << bit++; + + NSInteger previousBitmask = [[NSUserDefaults standardUserDefaults] integerForKey:FBSDKSettingsBitmask]; + if (previousBitmask != bitmask) { + [[NSUserDefaults standardUserDefaults] setInteger:bitmask forKey:FBSDKSettingsBitmask]; + + NSArray *keys = @[@"FacebookAutoInitEnabled", + @"FacebookAutoLogAppEventsEnabled", + @"FacebookAdvertiserIDCollectionEnabled"]; + NSArray *defaultValues = @[@YES, @YES, @YES]; + NSInteger initialBitmask = 0; + NSInteger usageBitmask = 0; + for (int i = 0; i < keys.count; i++) { + NSNumber *plistValue = [[NSBundle mainBundle] objectForInfoDictionaryKey:keys[i]]; + BOOL initialValue = [(plistValue ?: defaultValues[i]) boolValue]; + initialBitmask |= (initialValue ? 1 : 0) << i; + usageBitmask |= (plistValue != nil ? 1 : 0) << i; + } + [FBSDKAppEvents logInternalEvent:@"fb_sdk_settings_changed" + parameters:@{@"usage": @(usageBitmask), + @"initial": @(initialBitmask), + @"previous":@(previousBitmask), + @"current": @(bitmask)} + isImplicitlyLogged:YES]; + } } #pragma mark - Internal - Graph API Debug diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h index 7373639..8b5ed3e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h @@ -18,19 +18,17 @@ #import +#import "FBSDKConstants.h" + +NS_ASSUME_NONNULL_BEGIN + @class FBSDKAccessToken; /** - - Callback block for returning an array of FBSDKAccessToken instances (and possibly `NSNull` instances); or an error. + Callback block for returning an array of FBSDKAccessToken instances (and possibly `NSNull` instances); or an error. */ -typedef void (^FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)(NSArray *tokens, NSError *error) ; - -/** - - Callback block for removing a test user. - */ -typedef void (^FBSDKTestUsersManagerRemoveTestAccountHandler)(NSError *error) ; +typedef void (^FBSDKAccessTokensBlock)(NSArray *tokens, NSError *_Nullable error) +NS_SWIFT_NAME(AccessTokensBlock); /** @@ -46,6 +44,7 @@ typedef void (^FBSDKTestUsersManagerRemoveTestAccountHandler)(NSError *error) ; 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. */ +NS_SWIFT_NAME(TestUsersManager) @interface FBSDKTestUsersManager : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -56,14 +55,14 @@ typedef void (^FBSDKTestUsersManagerRemoveTestAccountHandler)(NSError *error) ; @param appID the Facebook app id @param appSecret the Facebook app secret */ -+ (instancetype)sharedInstanceForAppID:(NSString *)appID appSecret:(NSString *)appSecret; ++ (instancetype)sharedInstanceForAppID:(NSString *)appID appSecret:(NSString *)appSecret +NS_SWIFT_NAME(shared(forAppID:appSecret:)); /** 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. + if you need two arbitrary test accounts. @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`. @@ -74,24 +73,26 @@ typedef void (^FBSDKTestUsersManagerRemoveTestAccountHandler)(NSError *error) ; `arrayOfPermissionsArrays` so that the most number of permissions come first to minimize creation of new test accounts. */ -- (void)requestTestAccountTokensWithArraysOfPermissions:(NSArray *)arraysOfPermissions +- (void)requestTestAccountTokensWithArraysOfPermissions:(NSArray *> *)arraysOfPermissions createIfNotFound:(BOOL)createIfNotFound - completionHandler:(FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)handler; + completionHandler:(nullable FBSDKAccessTokensBlock)handler +NS_SWIFT_NAME(requestTestAccountTokens(withPermissions:createIfNotFound:completionHandler:)); /** 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; +- (void)addTestAccountWithPermissions:(NSSet *)permissions + completionHandler:(nullable FBSDKAccessTokensBlock)handler; /** 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; +- (void)removeTestAccount:(NSString *)userId + completionHandler:(nullable FBSDKErrorBlock)handler; /** Make two test users friends with each other. @@ -99,6 +100,11 @@ typedef void (^FBSDKTestUsersManagerRemoveTestAccountHandler)(NSError *error) ; @param second the token of the second user @param callback the callback handler */ -- (void)makeFriendsWithFirst:(FBSDKAccessToken *)first second:(FBSDKAccessToken *)second callback:(void (^)(NSError *))callback; +- (void)makeFriendsWithFirst:(FBSDKAccessToken *)first + second:(FBSDKAccessToken *)second + callback:(nullable FBSDKErrorBlock)callback +NS_SWIFT_NAME(makeFriends(first:second:callback:)); @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m index d6e45c7..b5ea95a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m @@ -18,12 +18,12 @@ #import "FBSDKTestUsersManager.h" -#import "FBSDKCoreKit+Internal.h" +#import static NSString *const kFBGraphAPITestUsersPathFormat = @"%@/accounts/test-users"; static NSString *const kAccountsDictionaryTokenKey = @"access_token"; static NSString *const kAccountsDictionaryPermissionsKey = @"permissions"; -static NSMutableDictionary *gInstancesDictionary; +static NSMutableDictionary *gInstancesDictionary; @interface FBSDKTestUsersManager() - (instancetype)initWithAppID:(NSString *)appID appSecret:(NSString *)appSecret NS_DESIGNATED_INITIALIZER; @@ -61,16 +61,16 @@ static NSMutableDictionary *gInstancesDictionary; return gInstancesDictionary[instanceKey]; } -- (void)requestTestAccountTokensWithArraysOfPermissions:(NSArray *)arraysOfPermissions +- (void)requestTestAccountTokensWithArraysOfPermissions:(NSArray *> *)arraysOfPermissions createIfNotFound:(BOOL)createIfNotFound - completionHandler:(FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)handler { + completionHandler:(FBSDKAccessTokensBlock)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); + handler(@[], error); } return; } @@ -86,7 +86,7 @@ static NSMutableDictionary *gInstancesDictionary; completionHandler:^(NSArray *tokens, NSError *addError) { if (addError) { if (handler) { - handler(nil, addError); + handler(@[], addError); } } else { [weakSelf requestTestAccountTokensWithArraysOfPermissions:arraysOfPermissions @@ -123,7 +123,7 @@ static NSMutableDictionary *gInstancesDictionary; } - (void)addTestAccountWithPermissions:(NSSet *)permissions - completionHandler:(FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)handler { + completionHandler:(FBSDKAccessTokensBlock)handler { NSDictionary *params = @{ @"installed" : @"true", @"permissions" : [permissions.allObjects componentsJoinedByString:@","], @@ -133,11 +133,11 @@ static NSMutableDictionary *gInstancesDictionary; parameters:params tokenString:[self appAccessToken] version:nil - HTTPMethod:@"POST"]; + HTTPMethod:FBSDKHTTPMethodPOST]; [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (error) { if (handler) { - handler(nil, error); + handler(@[], error); } } else { NSMutableDictionary *accountData = [NSMutableDictionary dictionaryWithCapacity:2]; @@ -155,7 +155,7 @@ static NSMutableDictionary *gInstancesDictionary; }]; } -- (void)makeFriendsWithFirst:(FBSDKAccessToken *)first second:(FBSDKAccessToken *)second callback:(void (^)(NSError *))callback +- (void)makeFriendsWithFirst:(FBSDKAccessToken *)first second:(FBSDKAccessToken *)second callback:(FBSDKErrorBlock)callback { __block int expectedCount = 2; void (^complete)(NSError *) = ^(NSError *error) { @@ -169,15 +169,15 @@ static NSMutableDictionary *gInstancesDictionary; } }; FBSDKGraphRequest *one = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/friends/%@", first.userID, second.userID] - parameters:nil + parameters:@{} tokenString:first.tokenString version:nil - HTTPMethod:@"POST"]; + HTTPMethod:FBSDKHTTPMethodPOST]; FBSDKGraphRequest *two = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/friends/%@", second.userID, first.userID] - parameters:nil + parameters:@{} tokenString:second.tokenString version:nil - HTTPMethod:@"POST"]; + HTTPMethod:FBSDKHTTPMethodPOST]; FBSDKGraphRequestConnection *conn = [[FBSDKGraphRequestConnection alloc] init]; [conn addRequest:one batchEntryName:@"first" @@ -192,9 +192,9 @@ static NSMutableDictionary *gInstancesDictionary; [conn start]; } -- (void)removeTestAccount:(NSString *)userId completionHandler:(FBSDKTestUsersManagerRemoveTestAccountHandler)handler { +- (void)removeTestAccount:(NSString *)userId completionHandler:(FBSDKErrorBlock)handler { FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:userId - parameters:nil + parameters:@{} tokenString:self.appAccessToken version:nil HTTPMethod:@"DELETE"]; @@ -210,7 +210,8 @@ static NSMutableDictionary *gInstancesDictionary; - (FBSDKAccessToken *)tokenDataForTokenString:(NSString *)tokenString permissions:(NSSet *)permissions userId:(NSString *)userId{ return [[FBSDKAccessToken alloc] initWithTokenString:tokenString permissions:permissions.allObjects - declinedPermissions:nil + declinedPermissions:@[] + expiredPermissions:@[] appID:_appID userID:userId expirationDate:nil @@ -244,7 +245,7 @@ static NSMutableDictionary *gInstancesDictionary; return [NSString stringWithFormat:@"%@|%@", _appID, _appSecret]; } -- (void)fetchExistingTestAccountsWithAfterCursor:(NSString *)after handler:(void(^)(NSError *error))handler { +- (void)fetchExistingTestAccountsWithAfterCursor:(NSString *)after handler:(FBSDKErrorBlock)handler { FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; FBSDKGraphRequest *requestForAccountIds = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:kFBGraphAPITestUsersPathFormat, _appID] parameters:@{@"limit" : @"50", @@ -253,7 +254,7 @@ static NSMutableDictionary *gInstancesDictionary; } tokenString:self.appAccessToken version:nil - HTTPMethod:nil]; + HTTPMethod:FBSDKHTTPMethodGET]; __block NSString *afterCursor = nil; __block NSInteger expectedTestAccounts = 0; FBSDKGraphRequestConnection *permissionConnection = [[FBSDKGraphRequestConnection alloc] init]; @@ -274,10 +275,10 @@ static NSMutableDictionary *gInstancesDictionary; self->_accounts[userId][kAccountsDictionaryTokenKey] = token; expectedTestAccounts++; [permissionConnection addRequest:[[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@?fields=permissions", userId] - parameters:nil + parameters:@{} tokenString:self.appAccessToken version:nil - HTTPMethod:nil] + HTTPMethod:FBSDKHTTPMethodGET] completionHandler:^(FBSDKGraphRequestConnection *innerConnection2, id innerResult, NSError *innerError) { if (self->_accounts.count == 0) { // indicates an earlier error that was already passed to handler, so just short circuit. diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.h index e0e3d4c..c7b0b0e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.h @@ -22,62 +22,68 @@ NS_ASSUME_NONNULL_BEGIN @class FBSDKAppLink; -/*! +/** Provides a set of utilities for working with NSURLs, such as parsing of query parameters and handling for App Link requests. */ +NS_SWIFT_NAME(AppLinkURL) @interface FBSDKURL : NSObject -/*! +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +/** Creates a link target from a raw URL. On success, this posts the FBSDKAppLinkParseEventName measurement event. If you are constructing the FBSDKURL within your application delegate's application:openURL:sourceApplication:annotation:, you should instead use URLWithInboundURL:sourceApplication: to support better FBSDKMeasurementEvent notifications @param url The instance of `NSURL` to create FBSDKURL from. */ -+ (FBSDKURL *)URLWithURL:(NSURL *)url; ++ (instancetype)URLWithURL:(NSURL *)url +NS_SWIFT_NAME(init(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 FBSDKAppLinkNavigateInEventName measurement event. @param url The instance of `NSURL` to create FBSDKURL 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: */ -+ (FBSDKURL *)URLWithInboundURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication; ++ (instancetype)URLWithInboundURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication +NS_SWIFT_NAME(init(inboundURL: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; +@property (nonatomic, strong, readonly, nullable) NSDictionary *appLinkData; -/*! +/** If this link target is an App Link, this is the data found in extras. */ -@property (nonatomic, strong, readonly) NSDictionary *appLinkExtras; +@property (nonatomic, strong, readonly, nullable) NSDictionary *appLinkExtras; -/*! +/** The App Link indicating how to navigate back to the referer app, if any. */ -@property (nonatomic, strong, readonly) FBSDKAppLink *appLinkReferer; +@property (nonatomic, strong, readonly, nullable) FBSDKAppLink *appLinkReferer; -/*! +/** The URL that was used to create this FBSDKURL. */ @property (nonatomic, strong, readonly) NSURL *inputURL; -/*! +/** The query parameters of the inputURL, parsed into an NSDictionary. */ @property (nonatomic, strong, readonly) NSDictionary *inputQueryParameters; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m index adc4729..50d584c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m @@ -110,15 +110,15 @@ return self; } -+ (FBSDKURL *)URLWithURL:(NSURL *)url { ++ (instancetype)URLWithURL:(NSURL *)url { return [[FBSDKURL alloc] initWithURL:url forOpenInboundURL:NO sourceApplication:nil forRenderBackToReferrerBar:NO]; } -+ (FBSDKURL *)URLWithInboundURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication { ++ (instancetype)URLWithInboundURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication { return [[FBSDKURL alloc] initWithURL:url forOpenInboundURL:YES sourceApplication:sourceApplication forRenderBackToReferrerBar:NO]; } -+ (FBSDKURL *)URLForRenderBackToReferrerBarURL:(NSURL *)url { ++ (instancetype)URLForRenderBackToReferrerBarURL:(NSURL *)url { return [[FBSDKURL alloc] initWithURL:url forOpenInboundURL:NO sourceApplication:nil forRenderBackToReferrerBar:YES]; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h index 560b6b0..13c4a5d 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h @@ -18,9 +18,12 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** Class to contain common utility methods. */ +NS_SWIFT_NAME(Utility) @interface FBSDKUtility : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -31,7 +34,8 @@ @param queryString The query string value. @return A dictionary with the key/value pairs. */ -+ (NSDictionary *)dictionaryWithQueryString:(NSString *)queryString; ++ (NSDictionary *)dictionaryWithQueryString:(NSString *)queryString +NS_SWIFT_NAME(dictionary(withQuery:)); /** Constructs a query string from a dictionary. @@ -39,21 +43,26 @@ @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. @return Query string representation of the parameters. */ -+ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary error:(NSError *__autoreleasing *)errorRef; ++ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary + error:(NSError **)errorRef +NS_SWIFT_NAME(query(from:)) +__attribute__((swift_error(nonnull_error))); /** Decodes a value from an URL. @param value The value to decode. @return The decoded value. */ -+ (NSString *)URLDecode:(NSString *)value; ++ (NSString *)URLDecode:(NSString *)value +NS_SWIFT_NAME(decode(urlString:)); /** Encodes a value for an URL. @param value The value to encode. @return The encoded value. */ -+ (NSString *)URLEncode:(NSString *)value; ++ (NSString *)URLEncode:(NSString *)value +NS_SWIFT_NAME(encode(urlString:)); /** Creates a timer using Grand Central Dispatch. @@ -74,6 +83,9 @@ @param input The data that needs to be hashed, it could be NSString or NSData. */ -+ (NSString *)SHA256Hash:(NSObject *)input; ++ (nullable NSString *)SHA256Hash:(nullable NSObject *)input +NS_SWIFT_NAME(sha256Hash(_:)); @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m index b6af8ab..8a32c66 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m @@ -26,61 +26,23 @@ + (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; + return [FBSDKBasicUtility dictionaryWithQueryString:queryString]; } -+ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary error:(NSError *__autoreleasing *)errorRef ++ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary error:(NSError **)errorRef { - return [FBSDKInternalUtility queryStringWithDictionary:dictionary error:errorRef invalidObjectHandler:NULL]; + return [FBSDKBasicUtility 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; + return [FBSDKBasicUtility URLDecode: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); + return [FBSDKBasicUtility URLEncode:value]; } -#pragma clang diagnostic pop + (dispatch_source_t)startGCDTimerWithInterval:(double)interval block:(dispatch_block_t)block { @@ -112,10 +74,10 @@ { NSData *data = nil; - if ([input isKindOfClass:[NSString class]]) { - data = [(NSString *)input dataUsingEncoding:NSUTF8StringEncoding]; - } else if ([input isKindOfClass:[NSData class]]) { + if ([input isKindOfClass:[NSData class]]) { data = (NSData *)input; + } else if ([input isKindOfClass:[NSString class]]) { + data = [(NSString *)input dataUsingEncoding:NSUTF8StringEncoding]; } if (!data) { @@ -124,12 +86,12 @@ uint8_t digest[CC_SHA256_DIGEST_LENGTH]; CC_SHA256(data.bytes, (CC_LONG)data.length, digest); - NSMutableString *encryptedStuff = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2]; + NSMutableString *hashed = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2]; for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) { - [encryptedStuff appendFormat:@"%02x", digest[i]]; + [hashed appendFormat:@"%02x", digest[i]]; } - return encryptedStuff; + return [hashed copy]; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m deleted file mode 100644 index a4c1846..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m +++ /dev/null @@ -1,204 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -#import "FBSDKUserDataStore.h" - -#import "FBSDKAppEventsUtility.h" -#import "FBSDKLogger.h" -#import "FBSDKSettings.h" -#import "FBSDKUtility.h" - -static NSString *const FBSDKUserDataKey = @"com.facebook.appevents.UserDataStore.userData"; - -static NSString *const FBSDKEmail = @"em"; -static NSString *const FBSDKFirstName = @"fn"; -static NSString *const FBSDKLastName = @"ln"; -static NSString *const FBSDKPhone = @"ph"; -static NSString *const FBSDKDateOfBirth = @"db"; -static NSString *const FBSDKGender = @"ge"; -static NSString *const FBSDKCity = @"ct"; -static NSString *const FBSDKState = @"st"; -static NSString *const FBSDKZip = @"zp"; -static NSString *const FBSDKCountry = @"country"; - -static NSString *hashedUserData; -static volatile bool initialized = false; - -@implementation FBSDKUserDataStore - -+ (void)initStore -{ - if (initialized){ - return; - } - - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - hashedUserData = [defaults stringForKey:FBSDKUserDataKey]; - initialized = true; -} - -+ (void)setUserDataAndHash:(NSDictionary *)ud -{ - if (!initialized){ - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors - logEntry:@"initStore should have been called before calling setUserData"]; - [FBSDKUserDataStore initStore]; - } - - hashedUserData = [FBSDKUserDataStore hashUserData:ud]; - NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; - [defaults setObject:(hashedUserData) forKey:(FBSDKUserDataKey)]; -} - -+ (void)setUserDataAndHash:(nullable NSString *)email - firstName:(nullable NSString *)firstName - lastName:(nullable NSString *)lastName - phone:(nullable NSString *)phone - dateOfBirth:(nullable NSString *)dateOfBirth - gender:(nullable NSString *)gender - city:(nullable NSString *)city - state:(nullable NSString *)state - zip:(nullable NSString *)zip - country:(nullable NSString *)country -{ - [FBSDKUserDataStore initStore]; - - NSMutableDictionary *ud = [[NSMutableDictionary alloc] init]; - if (email != nil) { - ud[FBSDKEmail] = email; - } - if (firstName != nil) { - ud[FBSDKFirstName] = firstName; - } - if (lastName != nil) { - ud[FBSDKLastName] = lastName; - } - if (phone != nil) { - ud[FBSDKPhone] = phone; - } - if (dateOfBirth != nil) { - ud[FBSDKDateOfBirth] = dateOfBirth; - } - if (gender != nil) { - ud[FBSDKGender] = gender; - } - if (city != nil) { - ud[FBSDKCity] = city; - } - if (state != nil) { - ud[FBSDKState] = state; - } - if (zip != nil) { - ud[FBSDKZip] = zip; - } - if (country != nil) { - ud[FBSDKCountry] = country; - } - - hashedUserData = [FBSDKUserDataStore hashUserData:ud]; - NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; - [defaults setObject:(hashedUserData) forKey:(FBSDKUserDataKey)]; -} - -+ (NSString *)getHashedUserData -{ - if (!initialized){ - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors - logEntry:@"initStore should have been called before calling setUserID"]; - [FBSDKUserDataStore initStore]; - } - - return hashedUserData; -} - -+ (NSString *)hashUserData:(NSDictionary *)ud -{ - if (ud == nil){ - return nil; - } - - NSMutableDictionary *encryptUserData = [NSMutableDictionary dictionaryWithCapacity:ud.count]; - - for (NSString *key in ud){ - NSString *const value = ud[key]; - if ([FBSDKUserDataStore maybeSHA256Hashed:value]){ - encryptUserData[key] = value; - } else { - NSString *const normalizedValue = [FBSDKUserDataStore normalizeData:key data:value]; - NSString *const encryptedValue = [FBSDKUserDataStore encryptData:normalizedValue]; - if (encryptedValue != nil){ - encryptUserData[key] = encryptedValue; - } - } - } - - NSError *error; - NSData *jsonData = [NSJSONSerialization dataWithJSONObject:encryptUserData - options:0 - error:&error]; - if (jsonData){ - return [[NSString alloc] initWithData:jsonData - encoding:NSUTF8StringEncoding]; - } else { - [FBSDKAppEventsUtility logAndNotify:[NSString stringWithFormat:@"invalid json object: %@", error]]; - return nil; - } -} - -+ (NSString *)encryptData:(NSString *)data -{ - if (data == nil || data.length == 0){ - return nil; - } - return [FBSDKUtility SHA256Hash:data]; -} - -+ (NSString *)normalizeData:(NSString *)type data:(NSString *)data{ - NSString *normalizedData = @""; - if ([type isEqualToString:FBSDKEmail] || [type isEqualToString:FBSDKFirstName] - || [type isEqualToString:FBSDKLastName] || [type isEqualToString:FBSDKCity] - || [type isEqualToString:FBSDKState] || [type isEqualToString:FBSDKCountry]) { - normalizedData = [data stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - normalizedData = normalizedData.lowercaseString; - } else if ([type isEqualToString:FBSDKPhone]){ - NSError *error = nil; - NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^0-9]" - options:NSRegularExpressionCaseInsensitive - error:&error - ]; - normalizedData = [regex stringByReplacingMatchesInString:data - options:0 - range:NSMakeRange(0, data.length) - withTemplate:@"" - ]; - } else if ([type isEqualToString:FBSDKGender]){ - NSString *temp = [data stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - temp = temp.lowercaseString; - normalizedData = temp.length > 0 ? [temp substringToIndex:1]: @""; - } - - return normalizedData; -} - -+ (BOOL)maybeSHA256Hashed:(NSString *)data -{ - NSRange range = [data rangeOfString:@"[A-Fa-f0-9]{64}" options:NSRegularExpressionSearch]; - return (data.length == 64) && (range.location != NSNotFound); -} - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h deleted file mode 100644 index c42431b..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h index d90e99e..ccc976e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(Base64) @interface FBSDKBase64 : NSObject /** diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.h new file mode 100644 index 0000000..b94cd47 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.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 + +#import "FBSDKBridgeAPIProtocol.h" +#import "FBSDKBridgeAPIProtocolType.h" +#import "FBSDKBridgeAPIRequest.h" +#import "FBSDKBridgeAPIResponse.h" +#import "FBSDKURLOpening.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^FBSDKBridgeAPIResponseBlock)(FBSDKBridgeAPIResponse *response) +NS_SWIFT_NAME(BridgeAPIResponseBlock); + +@interface FBSDKBridgeAPI : NSObject + +- (void)openBridgeAPIRequest:(FBSDKBridgeAPIRequest *)request + useSafariViewController:(BOOL)useSafariViewController + fromViewController:(nullable UIViewController *)fromViewController + completionBlock:(FBSDKBridgeAPIResponseBlock)completionBlock; + +- (void)openURLWithSafariViewController:(NSURL *)url + sender:(nullable id)sender + fromViewController:(UIViewController *)fromViewController + handler:(FBSDKSuccessBlock)handler; + +- (void)openURL:(NSURL *)url + sender:(nullable id)sender + handler:(FBSDKSuccessBlock)handler; + +@property (class, nonatomic, readonly, strong) FBSDKBridgeAPI *sharedInstance +NS_SWIFT_NAME(shared); +@property (nonatomic, readonly, getter=isActive) BOOL active; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.m new file mode 100644 index 0000000..afdb596 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.m @@ -0,0 +1,435 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBridgeAPI.h" + +#import + +typedef void (^FBSDKAuthenticationCompletionHandler)(NSURL *_Nullable callbackURL, NSError *_Nullable error); + +@protocol FBSDKAuthenticationSession + +- (instancetype)initWithURL:(NSURL *)URL callbackURLScheme:(nullable NSString *)callbackURLScheme completionHandler:(FBSDKAuthenticationCompletionHandler)completionHandler; +- (BOOL)start; +- (void)cancel; +@optional +- (void)setPresentationContextProvider:(id)presentationContextProvider; + +@end + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 +#import +@interface FBSDKBridgeAPI() +#else +@interface FBSDKBridgeAPI() +#endif + +@end + +@implementation FBSDKBridgeAPI { + FBSDKBridgeAPIRequest *_pendingRequest; + FBSDKBridgeAPIResponseBlock _pendingRequestCompletionBlock; + id _pendingURLOpen; + id _authenticationSession NS_AVAILABLE_IOS(11_0); + FBSDKAuthenticationCompletionHandler _authenticationSessionCompletionHandler NS_AVAILABLE_IOS(11_0); + + BOOL _expectingBackground; + BOOL _isRequestingSFAuthenticationSession; + UIViewController *_safariViewController; + BOOL _isDismissingSafariViewController; + BOOL _isAppLaunched; +} + ++ (void)load +{ + [[FBSDKApplicationDelegate sharedInstance] addObserver:[FBSDKBridgeAPI sharedInstance]]; +} + ++ (FBSDKBridgeAPI *)sharedInstance +{ + static FBSDKBridgeAPI *_sharedInstance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _sharedInstance = [[self alloc] init]; + }); + return _sharedInstance; +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // _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. + BOOL notExpectingBackground = !_expectingBackground && !_safariViewController && !_isDismissingSafariViewController && !_isRequestingSFAuthenticationSession; + if (notExpectingBackground) { + _active = YES; + + [_pendingURLOpen applicationDidBecomeActive:application]; + [self _cancelBridgeRequest]; + + [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKApplicationDidBecomeActiveNotification object:self]; + } +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + _isRequestingSFAuthenticationSession = NO; + _active = NO; + _expectingBackground = NO; +} + +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation +{ + id pendingURLOpen = _pendingURLOpen; + + void (^completePendingOpenURLBlock)(void) = ^{ + self->_pendingURLOpen = nil; + [pendingURLOpen application:application + openURL:url + sourceApplication:sourceApplication + annotation:annotation]; + self->_isDismissingSafariViewController = NO; + }; + // if they completed a SFVC flow, dismiss it. + if (_safariViewController) { + _isDismissingSafariViewController = YES; + [_safariViewController.presentingViewController dismissViewControllerAnimated:YES + completion:completePendingOpenURLBlock]; + _safariViewController = nil; + } else { + if (@available(iOS 11.0, *)) { + if (_authenticationSession != nil) { + [_authenticationSession cancel]; + _authenticationSession = nil; + } + } + completePendingOpenURLBlock(); + } + + if ([pendingURLOpen canOpenURL:url + forApplication:application + sourceApplication:sourceApplication + annotation:annotation]) { + return YES; + } + + if ([self _handleBridgeAPIResponseURL:url sourceApplication:sourceApplication]) { + return YES; + } + + return NO; +} + +- (BOOL)application:(UIApplication *)application +didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + 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; +} + +#pragma mark - Internal Methods + +- (void)openURL:(NSURL *)url sender:(id)sender handler:(FBSDKSuccessBlock)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 + NSOperatingSystemVersion iOS10Version = { .majorVersion = 10, .minorVersion = 0, .patchVersion = 0 }; + if ([FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS10Version]) { + if (@available(iOS 10.0, *)) { + [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) { + handler(success, nil); + }]; + } + } else { + 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, nil); + } + } + }); +} + +- (void)openBridgeAPIRequest:(FBSDKBridgeAPIRequest *)request + useSafariViewController:(BOOL)useSafariViewController + fromViewController:(UIViewController *)fromViewController + completionBlock:(FBSDKBridgeAPIResponseBlock)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, NSError *) = ^(BOOL openedURL, NSError *anError) { + if (!openedURL) { + self->_pendingRequest = nil; + self->_pendingRequestCompletionBlock = nil; + NSError *openedURLError; + if ([request.scheme hasPrefix:@"http"]) { + openedURLError = [FBSDKError errorWithCode:FBSDKErrorBrowserUnavailable + message:@"the app switch failed because the browser is unavailable"]; + } else { + openedURLError = [FBSDKError errorWithCode:FBSDKErrorAppVersionUnsupported + 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:(FBSDKSuccessBlock)handler +{ + if (![url.scheme hasPrefix:@"http"]) { + [self openURL:url sender:sender handler:handler]; + return; + } + + _expectingBackground = NO; + _pendingURLOpen = sender; + + if (@available(iOS 11.0, *)) { + if ([sender isAuthenticationURL:url]) { + [self _setSessionCompletionHandlerFromHandler:handler]; + [self _openURLWithAuthenticationSession:url]; + return; + } + } + + // 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]; + if (parent == nil) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + formatString:@"There are no valid ViewController to present SafariViewController with", nil]; + return; + } + + NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; + NSURLQueryItem *sfvcQueryItem = [[NSURLQueryItem alloc] initWithName:@"sfvc" value:@"1"]; + components.queryItems = [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. + self->_safariViewController = [[SFSafariViewControllerClass alloc] initWithURL:url]; + // Disable dismissing with edge pan gesture + self->_safariViewController.modalPresentationStyle = UIModalPresentationOverFullScreen; + [self->_safariViewController performSelector:@selector(setDelegate:) withObject:self]; + [container displayChildController:self->_safariViewController]; + [parent presentViewController:container animated:YES completion:nil]; + }]; + } else { + _safariViewController = [[SFSafariViewControllerClass alloc] initWithURL:url]; + // Disable dismissing with edge pan gesture + _safariViewController.modalPresentationStyle = UIModalPresentationOverFullScreen; + [_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, nil); + } + } else { + [self openURL:url sender:sender handler:handler]; + } +} + +- (void)_openURLWithAuthenticationSession:(NSURL *)url +{ + Class AuthenticationSessionClass = fbsdkdfl_ASWebAuthenticationSessionClass(); + + if (!AuthenticationSessionClass) { + AuthenticationSessionClass = fbsdkdfl_SFAuthenticationSessionClass(); + } + + if (AuthenticationSessionClass != nil) { + if (_authenticationSession != nil) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + formatString:@"There is already a request for authenticated session. Cancelling active SFAuthenticationSession before starting the new one.", nil]; + [_authenticationSession cancel]; + } + _authenticationSession = [[AuthenticationSessionClass alloc] initWithURL:url + callbackURLScheme:[FBSDKInternalUtility appURLScheme] + completionHandler:_authenticationSessionCompletionHandler]; + if (@available(iOS 13.0, *)) { + if ([_authenticationSession respondsToSelector:@selector(setPresentationContextProvider:)]) { + [_authenticationSession setPresentationContextProvider:self]; + } + } + _isRequestingSFAuthenticationSession = YES; + [_authenticationSession start]; + } +} + +- (void)_setSessionCompletionHandlerFromHandler:(void(^)(BOOL, NSError *))handler +{ + __weak FBSDKBridgeAPI *weakSelf = self; + _authenticationSessionCompletionHandler = ^ (NSURL *aURL, NSError *error) { + FBSDKBridgeAPI *strongSelf = weakSelf; + strongSelf->_isRequestingSFAuthenticationSession = NO; + handler(error == nil, error); + if (error == nil) { + [strongSelf application:[UIApplication sharedApplication] openURL:aURL sourceApplication:@"com.apple" annotation:nil]; + } + strongSelf->_authenticationSession = nil; + strongSelf->_authenticationSessionCompletionHandler = nil; + }; +} + +#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 - Helper Methods + +- (BOOL)_handleBridgeAPIResponseURL:(NSURL *)responseURL sourceApplication:(NSString *)sourceApplication +{ + FBSDKBridgeAPIRequest *request = _pendingRequest; + FBSDKBridgeAPIResponseBlock 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)_cancelBridgeRequest +{ + if (_pendingRequest && _pendingRequestCompletionBlock) { + _pendingRequestCompletionBlock([FBSDKBridgeAPIResponse bridgeAPIResponseCancelledWithRequest:_pendingRequest]); + } + _pendingRequest = nil; + _pendingRequestCompletionBlock = NULL; +} + +#pragma mark - ASWebAuthenticationPresentationContextProviding +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 +- (ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session API_AVAILABLE(ios(13.0)){ +#else +- (UIWindow *)presentationAnchorForWebAuthenticationSession:(id)session API_AVAILABLE(ios(11.0)) { +#endif + return UIApplication.sharedApplication.keyWindow; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m deleted file mode 100644 index 80abc96..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 "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 = [NSError fbErrorWithCode:FBSDKErrorEncryption - 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 = [NSError fbErrorWithCode:FBSDKErrorEncryption - 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 - 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/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h index 0a5a9b4..87cf8f2 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h @@ -26,6 +26,7 @@ FOUNDATION_EXPORT NSString *const FBSDKBridgeAPIAppIDKey; FOUNDATION_EXPORT NSString *const FBSDKBridgeAPISchemeSuffixKey; FOUNDATION_EXPORT NSString *const FBSDKBridgeAPIVersionKey; +NS_SWIFT_NAME(BridgeAPIProtocol) @protocol FBSDKBridgeAPIProtocol - (NSURL *)requestURLWithActionID:(NSString *)actionID diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h index b04e359..3d69a1f 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h @@ -22,4 +22,4 @@ typedef NS_ENUM(NSUInteger, FBSDKBridgeAPIProtocolType) { FBSDKBridgeAPIProtocolTypeNative, FBSDKBridgeAPIProtocolTypeWeb, -}; +} NS_SWIFT_NAME(BridgeAPIProtocol.Type); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h index 04689a3..9e027bc 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h @@ -22,6 +22,7 @@ #import "FBSDKBridgeAPIProtocolType.h" +NS_SWIFT_NAME(BridgeAPIRequest) @interface FBSDKBridgeAPIRequest : NSObject - (instancetype)init NS_UNAVAILABLE; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m index 608bdce..97aa8a3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m @@ -19,13 +19,11 @@ #import "FBSDKBridgeAPIRequest.h" #import "FBSDKBridgeAPIRequest+Private.h" -#import "FBSDKBridgeAPICrypto.h" #import "FBSDKBridgeAPIProtocolNativeV1.h" #import "FBSDKBridgeAPIProtocolWebV1.h" #import "FBSDKBridgeAPIProtocolWebV2.h" #import "FBSDKInternalUtility.h" #import "FBSDKSettings.h" -#import "FBSDKUtility.h" NSString *const FBSDKBridgeAPIAppIDKey = @"app_id"; NSString *const FBSDKBridgeAPISchemeSuffixKey = @"scheme_suffix"; @@ -114,13 +112,12 @@ NSString *const FBSDKBridgeAPIVersionKey = @"version"; [FBSDKInternalUtility validateURLSchemes]; - NSDictionary *requestQueryParameters = [FBSDKUtility dictionaryWithQueryString:requestURL.query]; + NSDictionary *requestQueryParameters = [FBSDKBasicUtility 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]; + [FBSDKBasicUtility dictionary:queryParameters setObject:[FBSDKSettings appID] forKey:FBSDKBridgeAPIAppIDKey]; + [FBSDKBasicUtility dictionary:queryParameters + setObject:[FBSDKSettings appURLSchemeSuffix] + forKey:FBSDKBridgeAPISchemeSuffixKey]; requestURL = [FBSDKInternalUtility URLWithScheme:requestURL.scheme host:requestURL.host path:requestURL.path diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h index a04cd90..0fca5fd 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h @@ -22,6 +22,7 @@ #import "FBSDKBridgeAPIRequest.h" +NS_SWIFT_NAME(BridgeAPIResponse) @interface FBSDKBridgeAPIResponse : NSObject - (instancetype)init NS_UNAVAILABLE; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m index 282d4c3..06617ba 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m @@ -18,13 +18,11 @@ #import "FBSDKBridgeAPIResponse.h" -#import "FBSDKBridgeAPICrypto.h" #import "FBSDKBridgeAPIProtocol.h" #import "FBSDKBridgeAPIProtocolType.h" #import "FBSDKBridgeAPIRequest+Private.h" #import "FBSDKInternalUtility.h" #import "FBSDKTypeUtility.h" -#import "FBSDKUtility.h" @interface FBSDKBridgeAPIResponse () - (instancetype)initWithRequest:(FBSDKBridgeAPIRequest *)request @@ -55,23 +53,18 @@ NS_DESIGNATED_INITIALIZER; 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]; + NSDictionary *const queryParameters = [FBSDKBasicUtility dictionaryWithQueryString:responseURL.query]; if (!queryParameters) { return nil; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h index 54cd167..5671509 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h @@ -16,6 +16,7 @@ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +NS_SWIFT_NAME(URLOpening) @protocol FBSDKURLOpening // Implementations should make sure they can handle nil parameters diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h index ba001f0..fa527a8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h @@ -51,6 +51,7 @@ typedef struct } FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeysStruct; FOUNDATION_EXPORT const FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeysStruct FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeys; +NS_SWIFT_NAME(BridgeAPIProtocolNativeV1) @interface FBSDKBridgeAPIProtocolNativeV1 : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -65,7 +66,7 @@ NS_DESIGNATED_INITIALIZER; @property (nonatomic, copy, readonly) NSString *appScheme; @property (nonatomic, assign, readonly) NSUInteger dataLengthThreshold; -@property (nonatomic, assign, readonly) BOOL includeAppIcon; +@property (nonatomic, assign, readonly, getter=shouldIncludeAppIcon) BOOL includeAppIcon; @property (nonatomic, strong, readonly) UIPasteboard *pasteboard; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m index 00b1b3c..7ab7186 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m @@ -136,8 +136,8 @@ static const struct NSString *const path = [@"/" stringByAppendingString:methodName]; NSMutableDictionary *const queryParameters = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:queryParameters setObject:methodVersion - forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.methodVersion]; + [FBSDKBasicUtility dictionary:queryParameters setObject:methodVersion + forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.methodVersion]; if (parameters.count) { NSString *const parametersString = [self _JSONStringForObject:parameters enablePasteboard:YES error:errorRef]; @@ -149,9 +149,9 @@ static const struct options:NSCaseInsensitiveSearch range:NSMakeRange(0, parametersString.length)]; - [FBSDKInternalUtility dictionary:queryParameters - setObject:escapedParametersString - forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.methodArgs]; + [FBSDKBasicUtility dictionary:queryParameters + setObject:escapedParametersString + forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.methodArgs]; } NSDictionary *const bridgeParameters = [self _bridgeParametersWithActionID:actionID error:errorRef]; @@ -162,9 +162,9 @@ static const struct if (!bridgeParametersString) { return nil; } - [FBSDKInternalUtility dictionary:queryParameters - setObject:bridgeParametersString - forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.bridgeArgs]; + [FBSDKBasicUtility dictionary:queryParameters + setObject:bridgeParametersString + forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.bridgeArgs]; return [FBSDKInternalUtility URLWithScheme:self.appScheme @@ -187,11 +187,11 @@ static const struct } NSError *error; NSString *bridgeParametersJSON = queryParameters[FBSDKBridgeAPIProtocolNativeV1InputKeys.bridgeArgs]; - NSDictionary *bridgeParameters = [FBSDKInternalUtility objectForJSONString:bridgeParametersJSON error:&error]; + NSDictionary *bridgeParameters = [FBSDKBasicUtility objectForJSONString:bridgeParametersJSON error:&error]; bridgeParameters = [FBSDKTypeUtility dictionaryValue:bridgeParameters]; if (!bridgeParameters) { if (error && (errorRef != NULL)) { - *errorRef = [NSError fbInvalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.bridgeArgs + *errorRef = [FBSDKError invalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.bridgeArgs value:bridgeParametersJSON message:@"Invalid bridge_args." underlyingError:error]; @@ -213,10 +213,10 @@ static const struct return nil; } NSString *resultParametersJSON = queryParameters[FBSDKBridgeAPIProtocolNativeV1InputKeys.methodResults]; - NSDictionary *resultParameters = [FBSDKInternalUtility objectForJSONString:resultParametersJSON error:&error]; + NSDictionary *resultParameters = [FBSDKBasicUtility objectForJSONString:resultParametersJSON error:&error]; if (!resultParameters) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.methodResults + *errorRef = [FBSDKError invalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.methodResults value:resultParametersJSON message:@"Invalid method_results." underlyingError:error]; @@ -249,14 +249,14 @@ static const struct - (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]; + [FBSDKBasicUtility dictionary:bridgeParameters setObject:actionID + forKey:FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys.actionID]; + [FBSDKBasicUtility dictionary:bridgeParameters setObject:[self _appIcon] + forKey:FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys.appIcon]; + [FBSDKBasicUtility dictionary:bridgeParameters setObject:[FBSDKSettings displayName] + forKey:FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys.appName]; + [FBSDKBasicUtility dictionary:bridgeParameters setObject:[FBSDKSettings sdkVersion] + forKey:FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys.sdkVersion]; return bridgeParameters; } @@ -276,7 +276,7 @@ static const struct - (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) { + return [FBSDKBasicUtility JSONStringForObject:object error:errorRef invalidObjectHandler:^id(id invalidObject, BOOL *stop) { NSString *dataTag = FBSDKBridgeAPIProtocolNativeV1DataTypeTags.data; if ([invalidObject isKindOfClass:[UIImage class]]) { UIImage *image = (UIImage *)invalidObject; @@ -290,9 +290,9 @@ static const struct if (didAddToPasteboard || !enablePasteboard || !self->_pasteboard || (data.length < self->_dataLengthThreshold)) { dictionary[FBSDKBridgeAPIProtocolNativeV1DataKeys.isBase64] = @YES; dictionary[FBSDKBridgeAPIProtocolNativeV1DataKeys.tag] = dataTag; - [FBSDKInternalUtility dictionary:dictionary - setObject:[FBSDKBase64 encodeData:data] - forKey:FBSDKBridgeAPIProtocolNativeV1DataKeys.value]; + [FBSDKBasicUtility dictionary:dictionary + setObject:[FBSDKBase64 encodeData:data] + forKey:FBSDKBridgeAPIProtocolNativeV1DataKeys.value]; } else { dictionary[FBSDKBridgeAPIProtocolNativeV1DataKeys.isPasteboard] = @YES; dictionary[FBSDKBridgeAPIProtocolNativeV1DataKeys.tag] = dataTag; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h index c7b28f4..999eb52 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h @@ -20,6 +20,7 @@ #import "FBSDKBridgeAPIProtocol.h" +NS_SWIFT_NAME(BridgeAPIProtocolWebV1) @interface FBSDKBridgeAPIProtocolWebV1 : NSObject @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m index 51af66f..2a4c0de 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m @@ -43,15 +43,15 @@ { 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]; + NSString *bridgeArgs = [FBSDKBasicUtility 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"]; + [FBSDKBasicUtility dictionary:queryParameters setObject:redirectURL forKey:@"redirect_uri"]; [queryParameters addEntriesFromDictionary:parameters]; return [FBSDKInternalUtility facebookURLWithHostPrefix:@"m" path:[@"/dialog/" stringByAppendingString:methodName] @@ -81,7 +81,7 @@ } default:{ if (errorRef != NULL) { - *errorRef = [NSError fbErrorWithCode:errorCode + *errorRef = [FBSDKError errorWithCode:errorCode message:[FBSDKTypeUtility stringValue:queryParameters[@"error_message"]]]; } return nil; @@ -91,10 +91,10 @@ NSError *error; NSString *bridgeParametersJSON = [FBSDKTypeUtility stringValue:queryParameters[FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_BRIDGE_ARGS_KEY]]; - NSDictionary *bridgeParameters = [FBSDKInternalUtility objectForJSONString:bridgeParametersJSON error:&error]; + NSDictionary *bridgeParameters = [FBSDKBasicUtility objectForJSONString:bridgeParametersJSON error:&error]; if (!bridgeParameters) { if (error && (errorRef != NULL)) { - *errorRef = [NSError fbInvalidArgumentErrorWithName:FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_BRIDGE_ARGS_KEY + *errorRef = [FBSDKError invalidArgumentErrorWithName:FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_BRIDGE_ARGS_KEY value:bridgeParametersJSON message:nil underlyingError:error]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h index 3d7e340..cf83b33 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h @@ -20,6 +20,7 @@ #import "FBSDKBridgeAPIProtocol.h" +NS_SWIFT_NAME(BridgeAPIProtocolWebV2) @interface FBSDKBridgeAPIProtocolWebV2 : NSObject @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m index 36b3bc0..0314799 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m @@ -24,7 +24,6 @@ #import "FBSDKInternalUtility.h" #import "FBSDKServerConfiguration.h" #import "FBSDKServerConfigurationManager.h" -#import "FBSDKUtility.h" @implementation FBSDKBridgeAPIProtocolWebV2 { @@ -51,9 +50,9 @@ NSDictionary *queryParameters = nil; if (actionID) { NSDictionary *bridgeArgs = @{ FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeys.actionID: actionID }; - NSString *bridgeArgsString = [FBSDKInternalUtility JSONStringForObject:bridgeArgs - error:NULL - invalidObjectHandler:NULL]; + NSString *bridgeArgsString = [FBSDKBasicUtility JSONStringForObject:bridgeArgs + error:NULL + invalidObjectHandler:NULL]; queryParameters = @{ FBSDKBridgeAPIProtocolNativeV1InputKeys.bridgeArgs: bridgeArgsString }; } return [FBSDKInternalUtility appURLWithHost:@"bridge" path:methodName queryParameters:queryParameters error:errorRef]; @@ -65,7 +64,7 @@ if (!requestURL.scheme) { requestURL = [FBSDKInternalUtility facebookURLWithHostPrefix:@"m" path:requestURL.path - queryParameters:nil + queryParameters:@{} defaultVersion:@"" error:errorRef]; } @@ -83,7 +82,7 @@ FBSDKDialogConfiguration *dialogConfiguration = [serverConfiguration dialogConfigurationForDialogName:methodName]; if (!dialogConfiguration) { if (errorRef != NULL) { - *errorRef = [NSError fbErrorWithCode:FBSDKErrorDialogUnavailable message:nil]; + *errorRef = [FBSDKError errorWithCode:FBSDKErrorDialogUnavailable message:nil]; } return nil; } @@ -97,7 +96,7 @@ return nil; } - NSMutableDictionary *queryParameters = [[FBSDKUtility dictionaryWithQueryString:requestURL.query] mutableCopy]; + NSMutableDictionary *queryParameters = [[FBSDKBasicUtility dictionaryWithQueryString:requestURL.query] mutableCopy]; queryParameters[@"ios_bundle_id"] = [NSBundle mainBundle].bundleIdentifier; NSURL *redirectURL = [self _redirectURLWithActionID:nil methodName:methodName error:errorRef]; if (!redirectURL) { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h index ae84c5d..226bb9b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(Crypto) @interface FBSDKCrypto : NSObject /** @@ -33,35 +34,4 @@ */ + (NSString *)randomString:(NSUInteger)numOfBytes; -/** - Generate a fresh master key using SecRandomCopyBytes, the result is encoded in base64/. - */ -+ (NSString *)makeMasterKey; - -/** - Initialize with a base64-encoded master key. - - This key and the current derivation function will be used to generate the encryption key and the mac key. - */ -- (instancetype)initWithMasterKey:(NSString *)masterKey; - -/** - Initialize with base64-encoded encryption key and mac key. - */ -- (instancetype)initWithEncryptionKey:(NSString *)encryptionKey macKey:(NSString *)macKey; - -/** - Encrypt plainText and return the base64 encoded result. - - MAC computation involves additionalDataToSign. - */ -- (NSString *)encrypt:(NSData *)plainText additionalDataToSign:(NSData *)additionalDataToSign; - -/** - Decrypt base64EncodedCipherText. - - MAC computation involves additionalSignedData. - */ -- (NSData *)decrypt:(NSString *)base64EncodedCipherText additionalSignedData:(NSData *)additionalSignedData; - @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m index 7e17cc4..f9365b8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m @@ -18,24 +18,9 @@ #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; - -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); -} - static inline void FBSDKCryptoBlankData(NSData *data) { if (!data) { @@ -44,47 +29,7 @@ static inline void FBSDKCryptoBlankData(NSData *data) bzero((void *) [data bytes], [data length]); } -// Note: the following simple derivation function is NOT suitable for passwords or weak keys -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 { @@ -105,183 +50,4 @@ static inline NSData *FBSDKCryptoMakeSubKey(uint8_t *key, size_t len, uint32_t i 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/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h index 65d5e58..4c40c05 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h @@ -22,6 +22,7 @@ @class FBSDKErrorRecoveryConfiguration; +NS_SWIFT_NAME(ErrorRecoveryAttempter) @interface FBSDKErrorRecoveryAttempter : NSObject // can return nil if configuration is not supported. diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLink_Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLink_Internal.h index c4d40cb..c81fe1e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLink_Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLink_Internal.h @@ -34,7 +34,7 @@ FOUNDATION_EXPORT NSString *const FBSDKAppLinkRefererUrl; webURL:(NSURL *)webURL isBackToReferrer:(BOOL)isBackToReferrer; -/*! return if this AppLink is to go back to referrer. */ +/** return if this AppLink is to go back to referrer. */ @property (nonatomic, assign, readonly, getter=isBackToReferrer) BOOL backToReferrer; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h index f7163d7..54324f2 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h @@ -22,6 +22,8 @@ #import "FBSDKCoreKit+Internal.h" +NS_ASSUME_NONNULL_BEGIN + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 FOUNDATION_EXPORT NSNotificationName const FBSDKApplicationDidBecomeActiveNotification; @@ -32,28 +34,13 @@ FOUNDATION_EXPORT NSString *const FBSDKApplicationDidBecomeActiveNotification; #endif -#if !TARGET_OS_TV -typedef void(^FBSDKBridgeAPICallbackBlock)(FBSDKBridgeAPIResponse *response); -#endif - @interface FBSDKApplicationDelegate () -#if !TARGET_OS_TV - -- (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, NSError *))handler; - -- (void)openURL:(NSURL *)url sender:(id)sender handler:(void(^)(BOOL, NSError *))handler; - -#endif - -@property (nonatomic, readonly, getter=isActive) BOOL active; +- (void)addObserver:(id)observer; +- (void)removeObserver:(id)observer; ++ (BOOL)isSDKInitialized; ++ (UIApplicationState)applicationState; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationObserving.h similarity index 65% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationObserving.h index 1245f32..9eba4ce 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationObserving.h @@ -18,17 +18,21 @@ #import -#import "FBSDKBridgeAPIRequest.h" +NS_ASSUME_NONNULL_BEGIN -@interface FBSDKBridgeAPICrypto : NSObject +@protocol FBSDKApplicationObserving -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; +@optional +- (void)applicationDidBecomeActive:(nullable UIApplication *)application; +- (void)applicationDidEnterBackground:(nullable UIApplication *)application; +- (BOOL)application:(UIApplication *)application +didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions; -+ (void)addCipherKeyToQueryParameters:(NSMutableDictionary *)queryParameters; -+ (NSDictionary *)decryptResponseForRequest:(FBSDKBridgeAPIRequest *)request - queryParameters:(NSDictionary *)queryParameters - error:(NSError *__autoreleasing *)errorRef; -+ (void)reset; +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(nullable NSString *)sourceApplication + annotation:(nullable id)annotation; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h index 2c05575..0bddb3c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h @@ -18,19 +18,23 @@ #import +NS_ASSUME_NONNULL_BEGIN + @interface FBSDKAudioResourceLoader : NSObject + (instancetype)sharedLoader; -- (BOOL)loadSound:(NSError **)error; +- (BOOL)loadSound:(NSError *__autoreleasing *)errorRef; - (void)playSound; @end @interface FBSDKAudioResourceLoader (Subclass) -+ (NSString *)name; -+ (NSUInteger)version; -+ (NSData *)data; +@property (class, nonatomic, copy, nullable, readonly) NSString *name; +@property (class, nonatomic, copy, nullable, readonly) NSData *data; +@property (class, nonatomic, assign, readonly) NSUInteger version; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h index 5feed4f..b83dd08 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h @@ -18,18 +18,24 @@ #import +NS_ASSUME_NONNULL_BEGIN + @class FBSDKContainerViewController; +NS_SWIFT_NAME(ContainerViewControllerDelegate) @protocol FBSDKContainerViewControllerDelegate - (void)viewControllerDidDisappear:(FBSDKContainerViewController *)viewController animated:(BOOL)animated; @end +NS_SWIFT_NAME(FBContainerViewController) @interface FBSDKContainerViewController : UIViewController -@property (nonatomic, weak) id delegate; +@property (nonatomic, weak, nullable) id delegate; - (void)displayChildController:(UIViewController *)childController; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h index 5a3ef84..07a2b00 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h @@ -20,20 +20,89 @@ #import +#ifdef COCOAPODS + #if !TARGET_OS_TV -#import "AppEvents/Codeless/FBSDKViewHierarchy.h" -#import "AppEvents/Codeless/FBSDKCodelessMacros.h" -#import "AppEvents/Codeless/FBSDKCodelessIndexer.h" -#import "BridgeAPI/FBSDKBridgeAPIProtocol.h" -#import "BridgeAPI/FBSDKBridgeAPIProtocolType.h" -#import "BridgeAPI/FBSDKBridgeAPIRequest.h" -#import "BridgeAPI/FBSDKBridgeAPIResponse.h" -#import "BridgeAPI/FBSDKURLOpening.h" +#import "FBSDKViewHierarchy.h" +#import "FBSDKCodelessMacros.h" +#import "FBSDKCodelessIndexer.h" +#import "FBSDKMetadataIndexer.h" +#import "FBSDKCrypto.h" +#import "FBSDKAudioResourceLoader.h" +#import "FBSDKContainerViewController.h" +#import "FBSDKBridgeAPI.h" +#import "FBSDKMonotonicTime.h" +#import "FBSDKTriStateBOOL.h" +#import "FBSDKCloseIcon.h" +#import "FBSDKColor.h" +#import "FBSDKMaleSilhouetteIcon.h" +#import "FBSDKUIUtility.h" +#import "FBSDKViewImpressionTracker.h" +#import "FBSDKWebDialog.h" +#else +#import "FBSDKDeviceButton+Internal.h" +#import "FBSDKDeviceDialogView.h" +#import "FBSDKSmartDeviceDialogView.h" +#import "FBSDKDeviceViewControllerBase+Internal.h" +#import "FBSDKModalFormPresentationController.h" +#endif + +#import "FBSDKAppEvents+Internal.h" +#import "FBSDKAppEventsState.h" +#import "FBSDKAppEventsStateManager.h" +#import "FBSDKAppEventsUtility.h" +#import "FBSDKRestrictiveDataFilterManager.h" +#import "FBSDKTimeSpentData.h" +#import "FBSDKUserDataStore.h" +#import "FBSDKBase64.h" +#import "FBSDKErrorRecoveryAttempter.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKApplicationObserving.h" +#import "FBSDKApplicationDelegate+Internal.h" +#import "FBSDKDeviceRequestsHelper.h" +#import "FBSDKError.h" +#import "FBSDKImageDownloader.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKMath.h" +#import "FBSDKSettings+Internal.h" +#import "FBSDKSwizzler.h" +#import "FBSDKTypeUtility.h" +#import "FBSDKBasicUtility.h" +#import "FBSDKURLSession.h" +#import "FBSDKURLSessionTask.h" +#import "FBSDKCrashHandler.h" +#import "FBSDKLibAnalyzer.h" +#import "FBSDKCrashObserving.h" +#import "FBSDKGraphRequest+Internal.h" +#import "FBSDKGraphRequestConnection+Internal.h" +#import "FBSDKGraphRequestMetadata.h" +#import "FBSDKDialogConfiguration.h" +#import "FBSDKServerConfiguration+Internal.h" +#import "FBSDKServerConfiguration.h" +#import "FBSDKServerConfigurationManager+Internal.h" +#import "FBSDKServerConfigurationManager.h" +#import "FBSDKGateKeeperManager.h" +#import "FBSDKAccessTokenCache.h" +#import "FBSDKAccessTokenCaching.h" +#import "FBSDKKeychainStore.h" +#import "FBSDKKeychainStoreViaBundleID.h" +#import "FBSDKButton+Subclass.h" +#import "FBSDKIcon.h" +#import "FBSDKLogo.h" + +#else + +#if !TARGET_OS_TV +#import "../AppEvents/Internal/Codeless/FBSDKViewHierarchy.h" +#import "../AppEvents/Internal/Codeless/FBSDKCodelessMacros.h" +#import "../AppEvents/Internal/Codeless/FBSDKCodelessIndexer.h" +#import "../AppEvents/Internal/AAM/FBSDKMetadataIndexer.h" #import "Cryptography/FBSDKCrypto.h" #import "FBSDKAudioResourceLoader.h" #import "FBSDKContainerViewController.h" +#import "BridgeAPI/FBSDKBridgeAPI.h" #import "FBSDKMonotonicTime.h" -#import "FBSDKSystemAccountStoreAdapter.h" #import "FBSDKTriStateBOOL.h" #import "UI/FBSDKCloseIcon.h" #import "UI/FBSDKColor.h" @@ -49,14 +118,17 @@ #import "Device/FBSDKModalFormPresentationController.h" #endif -#import "AppEvents/FBSDKAppEvents+Internal.h" -#import "AppEvents/FBSDKAppEventsState.h" -#import "AppEvents/FBSDKAppEventsStateManager.h" -#import "AppEvents/FBSDKAppEventsUtility.h" -#import "AppEvents/FBSDKTimeSpentData.h" +#import "../AppEvents/Internal/FBSDKAppEvents+Internal.h" +#import "../AppEvents/Internal/FBSDKAppEventsState.h" +#import "../AppEvents/Internal/FBSDKAppEventsStateManager.h" +#import "../AppEvents/Internal/FBSDKAppEventsUtility.h" +#import "../AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.h" +#import "../AppEvents/Internal/FBSDKTimeSpentData.h" +#import "../AppEvents/Internal/FBSDKUserDataStore.h" #import "Base64/FBSDKBase64.h" #import "ErrorRecovery/FBSDKErrorRecoveryAttempter.h" #import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKApplicationObserving.h" #import "FBSDKApplicationDelegate+Internal.h" #import "FBSDKDeviceRequestsHelper.h" #import "FBSDKError.h" @@ -66,7 +138,13 @@ #import "FBSDKMath.h" #import "FBSDKSettings+Internal.h" #import "FBSDKSwizzler.h" -#import "FBSDKTypeUtility.h" +#import "../Basics/Internal/FBSDKTypeUtility.h" +#import "../Basics/Internal/FBSDKBasicUtility.h" +#import "../Basics/Internal/FBSDKURLSession.h" +#import "../Basics/Internal/FBSDKURLSessionTask.h" +#import "../Basics/Instrument/FBSDKCrashHandler.h" +#import "../Basics/Instrument/FBSDKLibAnalyzer.h" +#import "../Basics/Instrument/FBSDKCrashObserving.h" #import "Network/FBSDKGraphRequest+Internal.h" #import "Network/FBSDKGraphRequestConnection+Internal.h" #import "Network/FBSDKGraphRequestMetadata.h" @@ -75,6 +153,7 @@ #import "ServerConfiguration/FBSDKServerConfiguration.h" #import "ServerConfiguration/FBSDKServerConfigurationManager+Internal.h" #import "ServerConfiguration/FBSDKServerConfigurationManager.h" +#import "ServerConfiguration/FBSDKGateKeeperManager.h" #import "TokenCaching/FBSDKAccessTokenCache.h" #import "TokenCaching/FBSDKAccessTokenCaching.h" #import "TokenCaching/FBSDKKeychainStore.h" @@ -83,3 +162,4 @@ #import "UI/FBSDKIcon.h" #import "UI/FBSDKLogo.h" +#endif diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.h index 20d0f77..3f02723 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.h @@ -19,6 +19,8 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + #define FBSDK_DEVICE_INFO_PARAM @"device_info" /* @@ -27,12 +29,13 @@ Helper class for device requests mDNS broadcasts. Note this is only intended for internal consumption. */ +NS_SWIFT_NAME(DeviceRequestsHelper) @interface FBSDKDeviceRequestsHelper : NSObject /** Get device info to include with the GraphRequest */ -+ (NSString *)getDeviceInfo; +@property (class, nonatomic, copy, readonly) NSString *getDeviceInfo; /** Start the mDNS advertisement service for a device request @@ -56,3 +59,5 @@ + (void)cleanUpAdvertisementService:(id)delegate; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m index 4bc1bd9..d99e0ef 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m @@ -22,7 +22,7 @@ #import -#import "FBSDKCoreKit+Internal.h" +#import #define FBSDK_DEVICE_INFO_DEVICE @"device" #define FBSDK_DEVICE_INFO_MODEL @"model" @@ -53,7 +53,7 @@ static NSMapTable *g_mdnsAdvertisementServices; { struct utsname systemInfo; uname(&systemInfo); - NSDictionary *deviceInfo = @{ + NSDictionary *deviceInfo = @{ FBSDK_DEVICE_INFO_DEVICE: @(systemInfo.machine), FBSDK_DEVICE_INFO_MODEL: [UIDevice currentDevice].model, }; @@ -65,7 +65,7 @@ static NSMapTable *g_mdnsAdvertisementServices; return [[NSString alloc] initWithData:jsonDeviceInfo encoding:NSUTF8StringEncoding]; } -+ (BOOL)startAdvertisementService:(NSString *)loginCode withDelegate:(id)delegate; ++ (BOOL)startAdvertisementService:(NSString *)loginCode withDelegate:(id)delegate { static NSString *sdkVersion = nil; static dispatch_once_t onceToken; @@ -95,10 +95,8 @@ static NSMapTable *g_mdnsAdvertisementServices; port:0]; mdnsAdvertisementService.delegate = delegate; [mdnsAdvertisementService publishWithOptions:NSNetServiceNoAutoRename | NSNetServiceListenForConnections]; - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKSmartLoginService - valueToSum:nil - parameters:nil - accessToken:nil]; + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKSmartLoginService + isImplicitlyLogged:YES]; [g_mdnsAdvertisementServices setObject:mdnsAdvertisementService forKey:delegate]; return YES; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h index d89d733..35d002c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h @@ -20,113 +20,7 @@ #import #import -/** - - 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 - -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; - -#pragma mark - Security Constants - -/** - Load the kSecRandomDefault value from the Security Framework - - @return The kSecRandomDefault value or nil. - */ -+ (SecRandomRef)loadkSecRandomDefault; - -/** - Load the kSecAttrAccessible value from the Security Framework - - @return The kSecAttrAccessible value or nil. - */ -+ (CFTypeRef)loadkSecAttrAccessible; - -/** - Load the kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly value from the Security Framework - - @return The kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly value or nil. - */ -+ (CFTypeRef)loadkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; - -/** - Load the kSecAttrAccount value from the Security Framework - - @return The kSecAttrAccount value or nil. - */ -+ (CFTypeRef)loadkSecAttrAccount; - -/** - Load the kSecAttrService value from the Security Framework - - @return The kSecAttrService value or nil. - */ -+ (CFTypeRef)loadkSecAttrService; - -/** - Load the kSecAttrGeneric value from the Security Framework - - @return The kSecAttrGeneric value or nil. - */ -+ (CFTypeRef)loadkSecAttrGeneric; - -/** - Load the kSecValueData value from the Security Framework - - @return The kSecValueData value or nil. - */ -+ (CFTypeRef)loadkSecValueData; - -/** - Load the kSecClassGenericPassword value from the Security Framework - - @return The kSecClassGenericPassword value or nil. - */ -+ (CFTypeRef)loadkSecClassGenericPassword; - -/** - Load the kSecAttrAccessGroup value from the Security Framework - - @return The kSecAttrAccessGroup value or nil. - */ -+ (CFTypeRef)loadkSecAttrAccessGroup; - -/** - Load the kSecMatchLimitOne value from the Security Framework - - @return The kSecMatchLimitOne value or nil. - */ -+ (CFTypeRef)loadkSecMatchLimitOne; - -/** - Load the kSecMatchLimit value from the Security Framework - - @return The kSecMatchLimit value or nil. - */ -+ (CFTypeRef)loadkSecMatchLimit; - -/** - Load the kSecReturnData value from the Security Framework - - @return The kSecReturnData value or nil. - */ -+ (CFTypeRef)loadkSecReturnData; - -/** - Load the kSecClass value from the Security Framework - - @return The kSecClass value or nil. - */ -+ (CFTypeRef)loadkSecClass; - -@end +NS_ASSUME_NONNULL_BEGIN #pragma mark - Security APIs @@ -135,8 +29,8 @@ FOUNDATION_EXPORT int fbsdkdfl_SecRandomCopyBytes(SecRandomRef rnd, size_t count // These are local wrappers around Keychain API FOUNDATION_EXPORT OSStatus fbsdkdfl_SecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate); -FOUNDATION_EXPORT OSStatus fbsdkdfl_SecItemAdd(CFDictionaryRef attributes, CFTypeRef *result); -FOUNDATION_EXPORT OSStatus fbsdkdfl_SecItemCopyMatching(CFDictionaryRef query, CFTypeRef *result); +FOUNDATION_EXPORT OSStatus fbsdkdfl_SecItemAdd(CFDictionaryRef attributes, CFTypeRef _Nullable * _Nullable result); +FOUNDATION_EXPORT OSStatus fbsdkdfl_SecItemCopyMatching(CFDictionaryRef query, CFTypeRef _Nullable * _Nullable result); FOUNDATION_EXPORT OSStatus fbsdkdfl_SecItemDelete(CFDictionaryRef query); #pragma mark - Social Constants @@ -237,3 +131,114 @@ FOUNDATION_EXPORT CFStringRef fbsdkdfl_kUTTypePNG(void); FOUNDATION_EXPORT Class fbsdkdfl_WKWebViewClass(void); FOUNDATION_EXPORT Class fbsdkdfl_WKUserScriptClass(void); + +/** + + 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. + */ +NS_SWIFT_NAME(DynamicFrameworkLoader) +@interface FBSDKDynamicFrameworkLoader : NSObject + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +#pragma mark - Security Constants + +/** + Load the kSecRandomDefault value from the Security Framework + + @return The kSecRandomDefault value or nil. + */ ++ (SecRandomRef)loadkSecRandomDefault; + +/** + Load the kSecAttrAccessible value from the Security Framework + + @return The kSecAttrAccessible value or nil. + */ ++ (CFTypeRef)loadkSecAttrAccessible; + +/** + Load the kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly value from the Security Framework + + @return The kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly value or nil. + */ ++ (CFTypeRef)loadkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; + +/** + Load the kSecAttrAccount value from the Security Framework + + @return The kSecAttrAccount value or nil. + */ ++ (CFTypeRef)loadkSecAttrAccount; + +/** + Load the kSecAttrService value from the Security Framework + + @return The kSecAttrService value or nil. + */ ++ (CFTypeRef)loadkSecAttrService; + +/** + Load the kSecAttrGeneric value from the Security Framework + + @return The kSecAttrGeneric value or nil. + */ ++ (CFTypeRef)loadkSecAttrGeneric; + +/** + Load the kSecValueData value from the Security Framework + + @return The kSecValueData value or nil. + */ ++ (CFTypeRef)loadkSecValueData; + +/** + Load the kSecClassGenericPassword value from the Security Framework + + @return The kSecClassGenericPassword value or nil. + */ ++ (CFTypeRef)loadkSecClassGenericPassword; + +/** + Load the kSecAttrAccessGroup value from the Security Framework + + @return The kSecAttrAccessGroup value or nil. + */ ++ (CFTypeRef)loadkSecAttrAccessGroup; + +/** + Load the kSecMatchLimitOne value from the Security Framework + + @return The kSecMatchLimitOne value or nil. + */ ++ (CFTypeRef)loadkSecMatchLimitOne; + +/** + Load the kSecMatchLimit value from the Security Framework + + @return The kSecMatchLimit value or nil. + */ ++ (CFTypeRef)loadkSecMatchLimit; + +/** + Load the kSecReturnData value from the Security Framework + + @return The kSecReturnData value or nil. + */ ++ (CFTypeRef)loadkSecReturnData; + +/** + Load the kSecClass value from the Security Framework + + @return The kSecClass value or nil. + */ ++ (CFTypeRef)loadkSecClass; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h index e6b73f4..6a01e44 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h @@ -18,76 +18,81 @@ #import -@interface NSError (FBSDKError) +NS_ASSUME_NONNULL_BEGIN -+ (NSError *)fbErrorWithCode:(NSInteger)code message:(NSString *)message; -+ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain - code:(NSInteger)code - message:(NSString *)message; +NS_SWIFT_NAME(SDKError) +@interface FBSDKError : NSObject -+ (NSError *)fbErrorWithCode:(NSInteger)code - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)errorWithCode:(NSInteger)code message:(nullable NSString *)message; -+ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain - code:(NSInteger)code - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)errorWithDomain:(NSErrorDomain)domain code:(NSInteger)code message:(nullable NSString *)message; -+ (NSError *)fbErrorWithCode:(NSInteger)code - userInfo:(NSDictionary *)userInfo - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)errorWithCode:(NSInteger)code + message:(nullable NSString *)message + underlyingError:(nullable NSError *)underlyingError; -+ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain - code:(NSInteger)code - userInfo:(NSDictionary *)userInfo - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)errorWithDomain:(NSErrorDomain)domain + code:(NSInteger)code + message:(nullable NSString *)message + underlyingError:(nullable NSError *)underlyingError; -+ (NSError *)fbInvalidArgumentErrorWithName:(NSString *)name - value:(id)value - message:(NSString *)message; ++ (NSError *)errorWithCode:(NSInteger)code + userInfo:(nullable NSDictionary *)userInfo + message:(nullable NSString *)message + underlyingError:(nullable NSError *)underlyingError; -+ (NSError *)fbInvalidArgumentErrorWithDomain:(NSErrorDomain)domain - name:(NSString *)name - value:(id)value - message:(NSString *)message; ++ (NSError *)errorWithDomain:(NSErrorDomain)domain + code:(NSInteger)code + userInfo:(nullable NSDictionary *)userInfo + message:(nullable NSString *)message + underlyingError:(nullable NSError *)underlyingError; -+ (NSError *)fbInvalidArgumentErrorWithName:(NSString *)name - value:(id)value - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)invalidArgumentErrorWithName:(NSString *)name + value:(nullable id)value + message:(nullable NSString *)message; -+ (NSError *)fbInvalidArgumentErrorWithDomain:(NSErrorDomain)domain - name:(NSString *)name - value:(id)value - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)invalidArgumentErrorWithDomain:(NSErrorDomain)domain + name:(NSString *)name + value:(nullable id)value + message:(nullable NSString *)message; -+ (NSError *)fbInvalidCollectionErrorWithName:(NSString *)name - collection:(id)collection - item:(id)item - message:(NSString *)message; ++ (NSError *)invalidArgumentErrorWithName:(NSString *)name + value:(nullable id)value + message:(nullable NSString *)message + underlyingError:(nullable NSError *)underlyingError; -+ (NSError *)fbInvalidCollectionErrorWithName:(NSString *)name - collection:(id)collection - item:(id)item - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)invalidArgumentErrorWithDomain:(NSErrorDomain)domain + name:(NSString *)name + value:(nullable id)value + message:(nullable NSString *)message + underlyingError:(nullable NSError *)underlyingError; -+ (NSError *)fbRequiredArgumentErrorWithName:(NSString *)name message:(NSString *)message; -+ (NSError *)fbRequiredArgumentErrorWithDomain:(NSErrorDomain)domain - name:(NSString *)name - message:(NSString *)message; ++ (NSError *)invalidCollectionErrorWithName:(NSString *)name + collection:(id)collection + item:(id)item + message:(nullable NSString *)message; -+ (NSError *)fbRequiredArgumentErrorWithName:(NSString *)name - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)invalidCollectionErrorWithName:(NSString *)name + collection:(id)collection + item:(id)item + message:(nullable NSString *)message + underlyingError:(nullable NSError *)underlyingError; -+ (NSError *)fbUnknownErrorWithMessage:(NSString *)message; ++ (NSError *)requiredArgumentErrorWithName:(NSString *)name message:(nullable NSString *)message; -@property (nonatomic, assign, readonly, getter=isNetworkError) BOOL networkError -NS_SWIFT_NAME(isNetworkError); ++ (NSError *)requiredArgumentErrorWithDomain:(NSErrorDomain)domain + name:(NSString *)name + message:(nullable NSString *)message; + ++ (NSError *)requiredArgumentErrorWithName:(NSString *)name + message:(nullable NSString *)message + underlyingError:(nullable NSError *)underlyingError; + ++ (NSError *)unknownErrorWithMessage:(NSString *)message; + ++ (BOOL)isNetworkError:(NSError *)error; ++ (void)enableErrorReport; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m index bad2aae..10bbafe 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m @@ -19,21 +19,176 @@ #import "FBSDKError.h" #import "FBSDKConstants.h" +#import "FBSDKErrorReport.h" +#import "FBSDKFeatureManager.h" #import "FBSDKInternalUtility.h" -#import "FBSDKTypeUtility.h" +#import "FBSDKSettings.h" -@implementation NSError (FBSDKError) +@implementation FBSDKError + +static BOOL isErrorReportEnabled = NO; #pragma mark - Class Methods -- (BOOL)isNetworkError ++ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message { - NSError *innerError = self.userInfo[NSUnderlyingErrorKey]; - if (innerError && innerError.isNetworkError) { + return [self errorWithCode:code message:message underlyingError:nil]; +} + ++ (NSError *)errorWithDomain:(NSErrorDomain)domain code:(NSInteger)code message:(NSString *)message +{ + return [self errorWithDomain:domain code:code message:message underlyingError:nil]; +} + ++ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message underlyingError:(NSError *)underlyingError +{ + return [self errorWithCode:code userInfo:@{} message:message underlyingError:underlyingError]; +} + ++ (NSError *)errorWithDomain:(NSErrorDomain)domain + code:(NSInteger)code + message:(NSString *)message + underlyingError:(NSError *)underlyingError +{ + return [self errorWithDomain:domain code:code userInfo:@{} message:message underlyingError:underlyingError]; +} + ++ (NSError *)errorWithCode:(NSInteger)code + userInfo:(NSDictionary *)userInfo + message:(NSString *)message + underlyingError:(NSError *)underlyingError +{ + return [self errorWithDomain:FBSDKErrorDomain + code:code + userInfo:userInfo + message:message + underlyingError:underlyingError]; +} + ++ (NSError *)errorWithDomain:(NSErrorDomain)domain + code:(NSInteger)code + userInfo:(NSDictionary *)userInfo + message:(NSString *)message + underlyingError:(NSError *)underlyingError +{ + NSMutableDictionary *fullUserInfo = [[NSMutableDictionary alloc] initWithDictionary:userInfo]; + [FBSDKBasicUtility dictionary:fullUserInfo setObject:message forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKBasicUtility dictionary:fullUserInfo setObject:underlyingError forKey:NSUnderlyingErrorKey]; + userInfo = fullUserInfo.count ? [fullUserInfo copy] : nil; + if (isErrorReportEnabled) { + [FBSDKErrorReport saveError:code errorDomain:domain message:message]; + } + + return [[NSError alloc] initWithDomain:domain 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 *)invalidArgumentErrorWithDomain:(NSErrorDomain)domain + name:(NSString *)name + value:(id)value + message:(NSString *)message +{ + return [self invalidArgumentErrorWithDomain:domain name:name value:value message:message underlyingError:nil]; +} + ++ (NSError *)invalidArgumentErrorWithName:(NSString *)name + value:(id)value + message:(NSString *)message + underlyingError:(NSError *)underlyingError +{ + return [self invalidArgumentErrorWithDomain:FBSDKErrorDomain + name:name + value:value + message:message + underlyingError:underlyingError]; +} ++ (NSError *)invalidArgumentErrorWithDomain:(NSErrorDomain)domain + name:(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]; + [FBSDKBasicUtility dictionary:userInfo setObject:name forKey:FBSDKErrorArgumentNameKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:value forKey:FBSDKErrorArgumentValueKey]; + return [self errorWithDomain:domain + code:FBSDKErrorInvalidArgument + 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]; + [FBSDKBasicUtility dictionary:userInfo setObject:name forKey:FBSDKErrorArgumentNameKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:item forKey:FBSDKErrorArgumentValueKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:collection forKey:FBSDKErrorArgumentCollectionKey]; + return [self errorWithCode:FBSDKErrorInvalidArgument + userInfo:userInfo + message:message + underlyingError:underlyingError]; +} + ++ (NSError *)requiredArgumentErrorWithName:(NSString *)name message:(NSString *)message +{ + return [self requiredArgumentErrorWithName:name message:message underlyingError:nil]; +} + ++ (NSError *)requiredArgumentErrorWithDomain:(NSErrorDomain)domain name:(NSString *)name message:(NSString *)message +{ + if (!message) { + message = [[NSString alloc] initWithFormat:@"Value for %@ is required.", name]; + } + return [self invalidArgumentErrorWithDomain:domain name:name value:nil 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:FBSDKErrorUnknown userInfo:@{} message:message underlyingError:nil]; +} + ++ (BOOL)isNetworkError:(NSError *)error +{ + NSError *innerError = error.userInfo[NSUnderlyingErrorKey]; + if (innerError && [self isNetworkError:innerError]) { return YES; } - switch (self.code) { + switch (error.code) { case NSURLErrorTimedOut: case NSURLErrorCannotFindHost: case NSURLErrorCannotConnectToHost: @@ -49,157 +204,9 @@ } } -+ (NSError *)fbErrorWithCode:(NSInteger)code message:(NSString *)message ++ (void)enableErrorReport { - return [self fbErrorWithCode:code message:message underlyingError:nil]; -} - -+ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain - code:(NSInteger)code - message:(NSString *)message -{ - return [self fbErrorWithDomain:domain code:code message:message underlyingError:nil]; -} - -+ (NSError *)fbErrorWithCode:(NSInteger)code message:(NSString *)message underlyingError:(NSError *)underlyingError -{ - return [self fbErrorWithCode:code userInfo:nil message:message underlyingError:underlyingError]; -} - -+ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain - code:(NSInteger)code - message:(NSString *)message - underlyingError:(NSError *)underlyingError -{ - return [self fbErrorWithDomain:domain code:code userInfo:@{} message:message underlyingError:underlyingError]; -} - -+ (NSError *)fbErrorWithCode:(NSInteger)code - userInfo:(NSDictionary *)userInfo - message:(NSString *)message - underlyingError:(NSError *)underlyingError -{ - return [self fbErrorWithDomain:FBSDKErrorDomain code:code userInfo:userInfo message:message underlyingError:underlyingError]; -} - -+ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain - code:(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:domain code:code userInfo:userInfo]; -} - -+ (NSError *)fbInvalidArgumentErrorWithName:(NSString *)name value:(id)value message:(NSString *)message -{ - return [self fbInvalidArgumentErrorWithName:name value:value message:message underlyingError:nil]; -} - -+ (NSError *)fbInvalidArgumentErrorWithDomain:(NSErrorDomain)domain - name:(NSString *)name - value:(id)value - message:(NSString *)message -{ - return [self fbInvalidArgumentErrorWithDomain:domain - name:name - value:value - message:message - underlyingError:nil]; -} - -+ (NSError *)fbInvalidArgumentErrorWithName:(NSString *)name - value:(id)value - message:(NSString *)message - underlyingError:(NSError *)underlyingError -{ - return [self fbInvalidArgumentErrorWithDomain:FBSDKErrorDomain - name:name - value:value - message:message - underlyingError:underlyingError]; -} -+ (NSError *)fbInvalidArgumentErrorWithDomain:(NSErrorDomain)domain - name:(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 fbErrorWithDomain:domain - code:FBSDKErrorInvalidArgument - userInfo:userInfo - message:message - underlyingError:underlyingError]; -} - -+ (NSError *)fbInvalidCollectionErrorWithName:(NSString *)name - collection:(id)collection - item:(id)item - message:(NSString *)message -{ - return [self fbInvalidCollectionErrorWithName:name collection:collection item:item message:message underlyingError:nil]; -} - -+ (NSError *)fbInvalidCollectionErrorWithName:(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 fbErrorWithCode:FBSDKErrorInvalidArgument - userInfo:userInfo - message:message - underlyingError:underlyingError]; -} - -+ (NSError *)fbRequiredArgumentErrorWithName:(NSString *)name message:(NSString *)message -{ - return [self fbRequiredArgumentErrorWithName:name message:message underlyingError:nil]; -} - -+ (NSError *)fbRequiredArgumentErrorWithDomain:(NSErrorDomain)domain - name:(NSString *)name - message:(NSString *)message -{ - if (!message) { - message = [[NSString alloc] initWithFormat:@"Value for %@ is required.", name]; - } - return [self fbInvalidArgumentErrorWithDomain:domain name:name value:nil message:message underlyingError:nil]; -} - -+ (NSError *)fbRequiredArgumentErrorWithName:(NSString *)name - message:(NSString *)message - underlyingError:(NSError *)underlyingError -{ - if (!message) { - message = [[NSString alloc] initWithFormat:@"Value for %@ is required.", name]; - } - return [self fbInvalidArgumentErrorWithName:name value:nil message:message underlyingError:underlyingError]; -} - -+ (NSError *)fbUnknownErrorWithMessage:(NSString *)message -{ - return [self fbErrorWithCode:FBSDKErrorUnknown - userInfo:nil - message:message - underlyingError:nil]; + isErrorReportEnabled = YES; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.h new file mode 100644 index 0000000..0dd84d4 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.h @@ -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 + +NS_ASSUME_NONNULL_BEGIN + +/** + FBSDKFeature enum + Defines features in SDK + + Sample: + FBSDKFeatureAppEvents = 0x00010000, + ^ ^ ^ ^ + | | | | + kit | | | + feature | | + sub-feature | + sub-sub-feature + 1st byte: kit + 2nd byte: feature + 3rd byte: sub-feature + 4th byte: sub-sub-feature + */ +typedef NS_ENUM(NSUInteger, FBSDKFeature) +{ + // Features in CoreKit + /** Essential of CoreKit */ + FBSDKFeatureCore = 0x00000000, + + FBSDKFeatureAppEvents = 0x00010000, + FBSDKFeatureCodelessEvents = 0x00010100, + FBSDKFeatureRestrictiveDataFiltering = 0x00010200, + FBSDKFeatureAAM = 0x00010300, + FBSDKFeatureInstrument = 0x00020000, + FBSDKFeatureCrashReport = 0x00020100, + FBSDKFeatureErrorReport = 0x00020200, + + + // Features in LoginKit + /** Essential of LoginKit */ + FBSDKFeatureLogin = 0x01000000, + + // Features in ShareKit + /** Essential of ShareKit */ + FBDSDKFeatureShare = 0x02000000, + + // Features in PlacesKit + /** Essential of PlacesKit */ + FBSDKFeaturePlaces = 0x03000000, + +} NS_SWIFT_NAME(SDKFeature); + +typedef void (^FBSDKFeatureManagerBlock)(BOOL enabled); + +@interface FBSDKFeatureManager : NSObject + ++ (void)checkFeature:(FBSDKFeature)feature + completionBlock:(FBSDKFeatureManagerBlock)completionBlock; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.m new file mode 100644 index 0000000..01d486f --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.m @@ -0,0 +1,104 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKFeatureManager.h" +#import "ServerConfiguration/FBSDKGateKeeperManager.h" + +@implementation FBSDKFeatureManager + ++ (void)checkFeature:(FBSDKFeature)feature + completionBlock:(FBSDKFeatureManagerBlock)completionBlock +{ + [FBSDKGateKeeperManager loadGateKeepers:^(NSError * _Nullable error) { + if (completionBlock) { + completionBlock([FBSDKFeatureManager isEnabled:feature]); + } + }]; +} + ++ (BOOL)isEnabled:(FBSDKFeature)feature +{ + if (FBSDKFeatureCore == feature) { + return YES; + } + + FBSDKFeature parentFeature = [self getParentFeature:feature]; + if (parentFeature == feature) { + return [self checkGK:feature]; + } else { + return [FBSDKFeatureManager isEnabled:parentFeature] && [self checkGK:feature]; + } +} + ++ (FBSDKFeature)getParentFeature:(FBSDKFeature)feature +{ + if ((feature & 0xFF) > 0) { + return feature & 0xFFFFFF00; + } else if ((feature & 0xFF00) > 0) { + return feature & 0xFFFF0000; + } else if ((feature & 0xFF0000) > 0) { + return feature & 0xFF000000; + } else return 0; +} + ++ (BOOL)checkGK:(FBSDKFeature)feature +{ + NSString *key = [NSString stringWithFormat:@"FBSDKFeature%@", [self featureName:feature]]; + BOOL defaultValue = [self defaultStatus:feature]; + + return [FBSDKGateKeeperManager boolForKey:key + defaultValue:defaultValue]; +} + ++ (NSString *)featureName:(FBSDKFeature)feature +{ + NSString *featureName; + switch (feature) { + case FBSDKFeatureCore: featureName = @"CoreKit"; break; + case FBSDKFeatureAppEvents: featureName = @"AppEvents"; break; + case FBSDKFeatureCodelessEvents: featureName = @"CodelessEvents"; break; + case FBSDKFeatureRestrictiveDataFiltering: featureName = @"RestrictiveDataFiltering"; break; + case FBSDKFeatureAAM: featureName = @"AAM"; break; + case FBSDKFeatureInstrument: featureName = @"Instrument"; break; + case FBSDKFeatureCrashReport: featureName = @"CrashReport"; break; + case FBSDKFeatureErrorReport: featureName = @"ErrorReport"; break; + + case FBSDKFeatureLogin: featureName = @"LoginKit"; break; + + case FBDSDKFeatureShare: featureName = @"ShareKit"; break; + + case FBSDKFeaturePlaces: featureName = @"PlacesKit"; break; + } + + return featureName; +} + ++ (BOOL)defaultStatus:(FBSDKFeature)feature +{ + switch (feature) { + case FBSDKFeatureRestrictiveDataFiltering: + case FBSDKFeatureInstrument: + case FBSDKFeatureCrashReport: + case FBSDKFeatureErrorReport: + case FBSDKFeatureAAM: + return NO; + default: return YES; + } +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.h index aa98cd2..0a83763 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.h @@ -19,14 +19,24 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + +/** + Describes the callback for downloadImageWithURL:ttl:completion:. + @param image the optional image returned + */ +typedef void (^FBSDKImageDownloadBlock)(UIImage *_Nullable image) +NS_SWIFT_NAME(ImageDownloadBlock); + /* simple class to manage image downloads this class is not smart enough to dedupe identical requests in flight. */ +NS_SWIFT_NAME(ImageDownloader) @interface FBSDKImageDownloader : NSObject -+ (instancetype)sharedInstance; +@property (class, nonatomic, strong, readonly) FBSDKImageDownloader *sharedInstance; /* download an image or retrieve it from cache @@ -34,8 +44,12 @@ @param ttl the amount of time (in seconds) that using a cached version is acceptable. @param completion the callback with the image - for simplicity nil is returned rather than surfacing an error. */ -- (void)downloadImageWithURL:(NSURL *)url ttl:(NSTimeInterval)ttl completion:(void(^)(UIImage* image))completion; +- (void)downloadImageWithURL:(NSURL *)url + ttl:(NSTimeInterval)ttl + completion:(nullable FBSDKImageDownloadBlock)completion; - (void)removeAll; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.m index 5c9de88..9b8f428 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.m @@ -25,7 +25,7 @@ static NSString *const kCachedResponseUserInfoKeyTimestamp = @"timestamp"; NSURLCache *_urlCache; } -+ (instancetype)sharedInstance ++ (FBSDKImageDownloader *)sharedInstance { static FBSDKImageDownloader *instance; static dispatch_once_t onceToken; @@ -38,9 +38,15 @@ static NSString *const kCachedResponseUserInfoKeyTimestamp = @"timestamp"; - (instancetype)init { if ((self = [super init])) { +#if TARGET_OS_MACCATALYST + _urlCache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*8 + diskCapacity:1024*1024*100 + directoryURL:[NSURL URLWithString:kImageDirectory]]; +#else _urlCache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*8 diskCapacity:1024*1024*100 diskPath:kImageDirectory]; +#endif } return self; } @@ -50,7 +56,9 @@ static NSString *const kCachedResponseUserInfoKeyTimestamp = @"timestamp"; [_urlCache removeAllCachedResponses]; } -- (void)downloadImageWithURL:(NSURL *)url ttl:(NSTimeInterval)ttl completion:(void(^)(UIImage* image))completion +- (void)downloadImageWithURL:(NSURL *)url + ttl:(NSTimeInterval)ttl + completion:(FBSDKImageDownloadBlock)completion { NSURLRequest *request = [NSURLRequest requestWithURL:url]; NSCachedURLResponse *cachedResponse = [_urlCache cachedResponseForRequest:request]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h index 6a5e0f5..beb8d0c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h @@ -19,6 +19,10 @@ #import #import +#import "FBSDKCoreKit+Internal.h" + +NS_ASSUME_NONNULL_BEGIN + #define FBSDK_CANOPENURL_FACEBOOK @"fbauth2" #define FBSDK_CANOPENURL_FBAPI @"fbapi" #define FBSDK_CANOPENURL_MESSENGER @"fb-messenger-share-api" @@ -32,8 +36,20 @@ typedef NS_ENUM(int32_t, FBSDKUIKitVersion) FBSDKUIKitVersion_7_0 = 0x0B57, FBSDKUIKitVersion_7_1 = 0x0B77, FBSDKUIKitVersion_8_0 = 0x0CF6, -}; +} NS_SWIFT_NAME(FBUIKit.Version); +/** + Describes the callback for appLinkFromURLInBackground. + @param object the FBSDKAppLink representing the deferred App Link + @param stop the error during the request, if any + + */ +typedef id _Nullable (^FBSDKInvalidObjectHandler)(id object, BOOL *stop) +NS_SWIFT_NAME(InvalidObjectHandler); + + + +NS_SWIFT_NAME(InternalUtility) @interface FBSDKInternalUtility : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -42,7 +58,46 @@ typedef NS_ENUM(int32_t, FBSDKUIKitVersion) /** Constructs the scheme for apps that come to the current app through the bridge. */ -+ (NSString *)appURLScheme; +@property (class, nonatomic, copy, readonly) NSString *appURLScheme; + +/** + Returns bundle for returning localized strings + + We assume a convention of a bundle named FBSDKStrings.bundle, otherwise we + return the main bundle. + */ +@property (class, nonatomic, strong, readonly) NSBundle *bundleForStrings; + +/** + Gets the milliseconds since the Unix Epoch. + + Changes in the system clock will affect this value. + @return The number of milliseconds since the Unix Epoch. + */ +@property (class, nonatomic, assign, readonly) uint64_t currentTimeInMilliseconds; + +/** + The version of the operating system on which the process is executing. + */ +@property (class, nonatomic, assign, readonly) NSOperatingSystemVersion operatingSystemVersion; + +/** + Tests whether the orientation should be manually adjusted for views outside of the root view controller. + + 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. + */ +@property (class, nonatomic, assign, readonly) BOOL shouldManuallyAdjustOrientation; + +/* + Checks if the app is Unity. + */ +@property (class, nonatomic, assign, readonly) BOOL isUnity; /** Constructs an URL for the current app. @@ -54,7 +109,7 @@ typedef NS_ENUM(int32_t, FBSDKUIKitVersion) */ + (NSURL *)appURLWithHost:(NSString *)host path:(NSString *)path - queryParameters:(NSDictionary *)queryParameters + queryParameters:(NSDictionary *)queryParameters error:(NSError *__autoreleasing *)errorRef; /** @@ -64,57 +119,6 @@ typedef NS_ENUM(int32_t, FBSDKUIKitVersion) */ + (NSDictionary *)dictionaryFromFBURL:(NSURL *)url; -/** - 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; - -/** - Returns bundle for returning localized strings - - We assume a convention of a bundle named FBSDKStrings.bundle, otherwise we - return the main bundle. -*/ -+ (NSBundle *)bundleForStrings; - -/** - Converts simple value types to the string equivalent 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; - -/** - Gets the milliseconds since the Unix Epoch. - - Changes in the system clock will affect this value. - @return The number of milliseconds since the Unix Epoch. - */ -+ (uint64_t)currentTimeInMilliseconds; - -/** - 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; - -/** - 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; - /** Constructs a Facebook URL. @param hostPrefix The prefix for the host, such as 'm', 'graph', etc. @@ -125,7 +129,7 @@ setJSONStringForObject:(id)object */ + (NSURL *)facebookURLWithHostPrefix:(NSString *)hostPrefix path:(NSString *)path - queryParameters:(NSDictionary *)queryParameters + queryParameters:(NSDictionary *)queryParameters error:(NSError *__autoreleasing *)errorRef; /** @@ -139,7 +143,7 @@ setJSONStringForObject:(id)object */ + (NSURL *)facebookURLWithHostPrefix:(NSString *)hostPrefix path:(NSString *)path - queryParameters:(NSDictionary *)queryParameters + queryParameters:(NSDictionary *)queryParameters defaultVersion:(NSString *)defaultVersion error:(NSError *__autoreleasing *)errorRef; @@ -185,17 +189,6 @@ setJSONStringForObject:(id)object */ + (BOOL)isUIKitRunTimeVersionAtLeast:(FBSDKUIKitVersion)version; -/** - 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; - /** Checks equality between 2 objects. @@ -206,44 +199,6 @@ setJSONStringForObject:(id)object */ + (BOOL)object:(id)object isEqualToObject:(id)other; -/** - 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; - -/** - The version of the operating system on which the process is executing. - */ -+ (NSOperatingSystemVersion)operatingSystemVersion; - -/** - 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. - @return Query string representation of the parameters. - */ -+ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary - error:(NSError *__autoreleasing *)errorRef - invalidObjectHandler:(id(^)(id object, BOOL *stop))invalidObjectHandler; - -/** - Tests whether the orientation should be manually adjusted for views outside of the root view controller. - - 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; - /** Constructs an NSURL. @param scheme The scheme for the URL. @@ -253,11 +208,11 @@ setJSONStringForObject:(id)object @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; ++ (nullable NSURL *)URLWithScheme:(NSString *)scheme + host:(NSString *)host + path:(NSString *)path + queryParameters:(NSDictionary *)queryParameters + error:(NSError *__autoreleasing *)errorRef; /** * Deletes all the cookies in the NSHTTPCookieStorage for Facebook web dialogs @@ -272,7 +227,8 @@ setJSONStringForObject:(id)object */ + (void)extractPermissionsFromResponse:(NSDictionary *)responseObject grantedPermissions:(NSMutableSet *)grantedPermissions - declinedPermissions:(NSMutableSet *)declinedPermissions; + declinedPermissions:(NSMutableSet *)declinedPermissions + expiredPermissions:(NSMutableSet *)expiredPermissions; /** Registers a transient object so that it will not be deallocated until unregistered @@ -310,7 +266,7 @@ setJSONStringForObject:(id)object /** Attempts to find the first UIViewController in the view's responder chain. Returns nil if not found. */ -+ (UIViewController *)viewControllerForView:(UIView *)view; ++ (nullable UIViewController *)viewControllerForView:(UIView *)view; /** returns true if the url scheme is registered in the CFBundleURLTypes @@ -320,43 +276,29 @@ setJSONStringForObject:(id)object /** returns the current key window */ -+ (UIWindow *)findWindow; ++ (nullable UIWindow *)findWindow; /** returns currently displayed top view controller. */ -+ (UIViewController *)topMostViewController; ++ (nullable UIViewController *)topMostViewController; /** Converts NSData to a hexadecimal UTF8 String. */ -+ (NSString *)hexadecimalStringFromData:(NSData *)data; ++ (nullable NSString *)hexadecimalStringFromData:(NSData *)data; /* Checks if the permission is a publish permission. */ + (BOOL)isPublishPermission:(NSString *)permission; -/* - Checks if the set of permissions are all read permissions. - */ -+ (BOOL)areAllPermissionsReadPermissions:(NSSet *)permissions; - -/* - Checks if the set of permissions are all publish permissions. - */ -+ (BOOL)areAllPermissionsPublishPermissions:(NSSet *)permissions; - -/* - Checks if the app is Unity. - */ -+ (BOOL)isUnity; - #pragma mark - FB Apps Installed -+ (BOOL)isFacebookAppInstalled; -+ (BOOL)isMessengerAppInstalled; -+ (BOOL)isMSQRDPlayerAppInstalled; +@property (class, nonatomic, assign, readonly) BOOL isFacebookAppInstalled; +@property (class, nonatomic, assign, readonly) BOOL isMessengerAppInstalled; +@property (class, nonatomic, assign, readonly) BOOL isMSQRDPlayerAppInstalled; + + (void)checkRegisteredCanOpenURLScheme:(NSString *)urlScheme; + (BOOL)isRegisteredCanOpenURLScheme:(NSString *)urlScheme; @@ -370,5 +312,6 @@ setJSONStringForObject:(id)object #define FB_BASE_URL @"facebook.com" -+ (Class)resolveBoltsClassWithName:(NSString *)className; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m index 71c2fe8..2a3e5a7 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m @@ -20,13 +20,12 @@ #import +#import #import -#import "FBSDKCoreKit+Internal.h" #import "FBSDKError.h" #import "FBSDKSettings+Internal.h" #import "FBSDKSettings.h" -#import "FBSDKUtility.h" typedef NS_ENUM(NSUInteger, FBSDKInternalUtilityVersionMask) { @@ -71,22 +70,15 @@ typedef NS_ENUM(NSUInteger, FBSDKInternalUtilityVersionShift) // 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]]; + [params addEntriesFromDictionary:[FBSDKBasicUtility 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]]; + [params addEntriesFromDictionary:[FBSDKBasicUtility dictionaryWithQueryString:url.fragment]]; } return params; } -+ (void)array:(NSMutableArray *)array addObject:(id)object -{ - if (object) { - [array addObject:object]; - } -} - + (NSBundle *)bundleForStrings { static NSBundle *bundle; @@ -100,16 +92,6 @@ typedef NS_ENUM(NSUInteger, FBSDKInternalUtilityVersionShift) 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; -} - + (uint64_t)currentTimeInMilliseconds { struct timeval time; @@ -117,32 +99,10 @@ typedef NS_ENUM(NSUInteger, FBSDKInternalUtilityVersionShift) return ((uint64_t)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[key] = object; - } -} - + (void)extractPermissionsFromResponse:(NSDictionary *)responseObject grantedPermissions:(NSMutableSet *)grantedPermissions declinedPermissions:(NSMutableSet *)declinedPermissions + expiredPermissions:(NSMutableSet *)expiredPermissions { NSArray *resultData = responseObject[@"data"]; if (resultData.count > 0) { @@ -154,6 +114,8 @@ setJSONStringForObject:(id)object [grantedPermissions addObject:permissionName]; } else if ([status isEqualToString:@"declined"]) { [declinedPermissions addObject:permissionName]; + } else if ([status isEqualToString:@"expired"]) { + [expiredPermissions addObject:permissionName]; } } } @@ -167,7 +129,7 @@ setJSONStringForObject:(id)object return [self facebookURLWithHostPrefix:hostPrefix path:path queryParameters:queryParameters - defaultVersion:nil + defaultVersion:@"" error:errorRef]; } @@ -188,7 +150,7 @@ setJSONStringForObject:(id)object } host = [NSString stringWithFormat:@"%@%@", hostPrefix ?: @"", host ?: @""]; - NSString *version = defaultVersion ?: [FBSDKSettings graphAPIVersion]; + NSString *version = (defaultVersion.length > 0) ? defaultVersion : [FBSDKSettings graphAPIVersion]; if (version.length) { version = [@"/" stringByAppendingString:version]; } @@ -276,29 +238,7 @@ setJSONStringForObject:(id)object } } -+ (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 = [NSError fbInvalidArgumentErrorWithName:@"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; ++ (BOOL)object:(id)object isEqualToObject:(id)other { if (object == other) { return YES; @@ -309,18 +249,6 @@ setJSONStringForObject:(id)object 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 = { @@ -354,47 +282,6 @@ setJSONStringForObject:(id)object 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] || @@ -414,11 +301,12 @@ setJSONStringForObject:(id)object NSString *queryString = nil; if (queryParameters.count) { NSError *queryStringError; - queryString = [@"?" stringByAppendingString:[FBSDKUtility queryStringWithDictionary:queryParameters - error:&queryStringError]]; + queryString = [@"?" stringByAppendingString:[FBSDKBasicUtility queryStringWithDictionary:queryParameters + error:&queryStringError + invalidObjectHandler:NULL]]; if (!queryString) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithName:@"queryParameters" + *errorRef = [FBSDKError invalidArgumentErrorWithName:@"queryParameters" value:queryParameters message:nil underlyingError:queryStringError]; @@ -427,17 +315,17 @@ setJSONStringForObject:(id)object } } - NSURL *URL = [[NSURL alloc] initWithString:[NSString stringWithFormat: - @"%@://%@%@%@", - scheme ?: @"", - host ?: @"", - path ?: @"", - queryString ?: @""]]; + NSURL *const URL = [NSURL URLWithString:[NSString stringWithFormat: + @"%@://%@%@%@", + scheme ?: @"", + host ?: @"", + path ?: @"", + queryString ?: @""]]; if (errorRef != NULL) { if (URL) { *errorRef = nil; } else { - *errorRef = [NSError fbUnknownErrorWithMessage:@"Unknown error building URL."]; + *errorRef = [FBSDKError unknownErrorWithMessage:@"Unknown error building URL."]; } } return URL; @@ -448,7 +336,7 @@ setJSONStringForObject:(id)object NSHTTPCookieStorage *cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *facebookCookies = [cookies cookiesForURL:[self facebookURLWithHostPrefix:@"m." path:@"/dialog/" - queryParameters:nil + queryParameters:@{} error:NULL]]; for (NSHTTPCookie *cookie in facebookCookies) { @@ -549,45 +437,6 @@ static NSMapTable *_transientObjects; } } -+ (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; -} - + (BOOL)_canOpenURLScheme:(NSString *)scheme { NSURLComponents *components = [[NSURLComponents alloc] init]; @@ -645,6 +494,32 @@ static NSMapTable *_transientObjects; } } } + + // Find active key window from UIScene + if (@available(iOS 13.0, tvOS 13, *)) { + NSSet *scenes = [[UIApplication sharedApplication] valueForKey:@"connectedScenes"]; + for (id scene in scenes) { + if (window) { + break; + } + + id activationState = [scene valueForKeyPath:@"activationState"]; + BOOL isActive = activationState != nil && [activationState integerValue] == 0; + if (isActive) { + Class WindowScene = NSClassFromString(@"UIWindowScene"); + if ([scene isKindOfClass:WindowScene]) { + NSArray *windows = [scene valueForKeyPath:@"windows"]; + for (UIWindow *w in windows) { + if (w.isKeyWindow) { + window = w; + break; + } + } + } + } + } + } + if (window == nil) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors formatString:@"Unable to find a valid UIWindow", nil]; @@ -656,7 +531,7 @@ static NSMapTable *_transientObjects; { UIWindow *keyWindow = [self findWindow]; // SDK expects a key window at this point, if it is not, make it one - if (keyWindow != nil && !keyWindow.isKeyWindow) { + if (keyWindow != nil && !keyWindow.isKeyWindow) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors formatString:@"Unable to obtain a key window, marking %@ as keyWindow", keyWindow.description]; [keyWindow makeKeyWindow]; @@ -744,39 +619,6 @@ static NSMapTable *_transientObjects; [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; -} - -+ (Class)resolveBoltsClassWithName:(NSString *)className; -{ - Class 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]; - } - - return clazz; -} - + (BOOL)isUnity { NSString *userAgentSuffix = [FBSDKSettings userAgentSuffix]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h index 1672a8b..04f5fc8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** Simple logging utility for conditionally logging strings and then emitting them @@ -25,6 +27,7 @@ @unsorted */ +NS_SWIFT_NAME(Logger) @interface FBSDKLogger : NSObject // Access current accumulated contents of the logger. @@ -37,7 +40,7 @@ @property (copy, nonatomic, readonly) NSString *loggingBehavior; // Is the current logger instance active, based on its loggingBehavior? -@property (nonatomic, readonly) BOOL isActive; +@property (nonatomic, readonly, getter=isActive) BOOL active; // // Instance methods @@ -84,3 +87,5 @@ replaceWith:(NSString *)replaceWith; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m index 6b638fb..d5169b1 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m @@ -38,9 +38,9 @@ static NSMutableDictionary *g_startTimesWithTags = nil; - (instancetype)initWithLoggingBehavior:(NSString *)loggingBehavior { if ((self = [super init])) { - _isActive = [FBSDKSettings.loggingBehaviors containsObject:loggingBehavior]; + _active = [FBSDKSettings.loggingBehaviors containsObject:loggingBehavior]; _loggingBehavior = loggingBehavior; - if (_isActive) { + if (_active) { _internalContents = [[NSMutableString alloc] init]; _loggerSerialNumber = [FBSDKLogger generateSerialNumber]; } @@ -58,7 +58,7 @@ static NSMutableDictionary *g_startTimesWithTags = nil; - (void)setContents:(NSString *)contents { - if (_isActive) { + if (_active) { _internalContents = [NSMutableString stringWithString:contents]; } } @@ -67,14 +67,14 @@ static NSMutableDictionary *g_startTimesWithTags = nil; - (void)appendString:(NSString *)string { - if (_isActive) { + if (_active) { [_internalContents appendString:string]; } } - (void)appendFormat:(NSString *)formatString, ... { - if (_isActive) { + if (_active) { va_list vaArguments; va_start(vaArguments, formatString); NSString *logString = [[NSString alloc] initWithFormat:formatString arguments:vaArguments]; @@ -87,14 +87,14 @@ static NSMutableDictionary *g_startTimesWithTags = nil; - (void)appendKey:(NSString *)key value:(NSString *)value { - if (_isActive && value.length) { + if (_active && value.length) { [_internalContents appendFormat:@" %@:\t%@\n", key, value]; } } - (void)emitToNSLog { - if (_isActive) { + if (_active) { for (NSString *key in [g_stringsToReplace keyEnumerator]) { [_internalContents replaceOccurrencesOfString:key @@ -162,7 +162,7 @@ static NSMutableDictionary *g_startTimesWithTags = nil; NSNumber *startTimeNumber = g_startTimesWithTags[tagAsNumber]; // Only log if there's been an associated start time. - if (startTimeNumber) { + if (startTimeNumber != nil) { uint64_t elapsed = [FBSDKInternalUtility currentTimeInMilliseconds] - startTimeNumber.unsignedLongLongValue; [g_startTimesWithTags removeObjectForKey:tagAsNumber]; // served its purpose, remove diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h index 5414e38..e4eb673 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h @@ -19,6 +19,9 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + +NS_SWIFT_NAME(Math) @interface FBSDKMath : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -39,3 +42,5 @@ + (NSUInteger)hashWithPointer:(const void *)value; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMeasurementEvent_Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMeasurementEvent_Internal.h index e3b039f..a7fec07 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMeasurementEvent_Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMeasurementEvent_Internal.h @@ -20,8 +20,8 @@ NS_ASSUME_NONNULL_BEGIN -/*! - Provides methods for posting notifications from the Bolts framework +/** + Provides methods for posting notifications from App Links */ @interface FBSDKMeasurementEvent (Internal) diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m index 1a52c81..7a3a342 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m @@ -16,12 +16,13 @@ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +#import "FBSDKMonotonicTime.h" + +#include #include #include -#include -#include -#import "FBSDKMonotonicTime.h" +#include /** * PLEASE NOTE: FBSDKSDKMonotonicTimeTests work fine, but are disabled diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h index d2298d5..486ccf4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h @@ -18,9 +18,13 @@ #import "FBSDKProfile.h" +NS_ASSUME_NONNULL_BEGIN + @interface FBSDKProfile(Internal) -+ (void)cacheProfile:(FBSDKProfile *) profile; -+ (FBSDKProfile *)fetchCachedProfile; ++ (void)cacheProfile:(nullable FBSDKProfile *)profile; ++ (nullable FBSDKProfile *)fetchCachedProfile; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h index 0751f7a..2d0eae8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h @@ -26,12 +26,9 @@ + (void)setAccessTokenCache:(NSObject *)accessTokenCache; -+ (NSString *)graphAPIDebugParamValue; - -+ (BOOL)isGraphErrorRecoveryDisabled; +@property (class, nonatomic, copy, readonly) NSString *graphAPIDebugParamValue; // used by Unity. -+ (NSString *)userAgentSuffix; -+ (void)setUserAgentSuffix:(NSString *)suffix; +@property (class, nonatomic, copy) NSString *userAgentSuffix; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.h index 7e9f29c..9e7b57d 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.h @@ -29,6 +29,7 @@ typedef void (^swizzleBlock)(); #pragma clang diagnostic pop // Rename to avoid duplicate symbol errors +NS_SWIFT_NAME(Swizzler) @interface FBSDKSwizzler : NSObject + (void)swizzleSelector:(SEL)aSelector onClass:(Class)aClass withBlock:(swizzleBlock)block named:(NSString *)aName; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m index 9bf54c7..45686c9 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m @@ -32,11 +32,11 @@ @property (nonatomic, copy) NSMapTable *blocks; - (instancetype)initWithBlock:(swizzleBlock)aBlock - named:(NSString *)aName - forClass:(Class)aClass - selector:(SEL)aSelector - originalMethod:(IMP)aMethod - withNumArgs:(uint)numArgs; + named:(NSString *)aName + forClass:(Class)aClass + selector:(SEL)aSelector + originalMethod:(IMP)aMethod + withNumArgs:(uint)numArgs; @end @@ -45,7 +45,7 @@ static NSMapTable *swizzles; static FBSDKSwizzle* fb_findSwizzle(id self, SEL _cmd){ Method aMethod = class_getInstanceMethod([self class], _cmd); FBSDKSwizzle *swizzle = (FBSDKSwizzle *)[swizzles objectForKey:MAPTABLE_ID(aMethod)]; - Class this_class = [FBSDKSwizzler class]; + Class this_class = [self class]; while (!swizzle && class_getSuperclass(this_class)){ this_class = class_getSuperclass(this_class); aMethod = class_getInstanceMethod(this_class, _cmd); @@ -56,65 +56,37 @@ static FBSDKSwizzle* fb_findSwizzle(id self, SEL _cmd){ static void fb_swizzledMethod_2(id self, SEL _cmd) { - FBSDKSwizzle *swizzle = fb_findSwizzle(self, _cmd); - if (swizzle) { - ((void(*)(id, SEL))swizzle.originalMethod)(self, _cmd); + FBSDKSwizzle *swizzle = fb_findSwizzle(self, _cmd); + if (swizzle) { + ((void(*)(id, SEL))swizzle.originalMethod)(self, _cmd); - NSEnumerator *blocks = [swizzle.blocks objectEnumerator]; - swizzleBlock block; - while ((block = [blocks nextObject])) { - block(self, _cmd); - } + NSEnumerator *blocks = [swizzle.blocks objectEnumerator]; + swizzleBlock block; + while ((block = [blocks nextObject])) { + block(self, _cmd); } + } } static void fb_swizzledMethod_3(id self, SEL _cmd, id arg) { - FBSDKSwizzle *swizzle = fb_findSwizzle(self, _cmd); - if (swizzle) { - ((void(*)(id, SEL, id))swizzle.originalMethod)(self, _cmd, arg); + FBSDKSwizzle *swizzle = fb_findSwizzle(self, _cmd); + if (swizzle) { + ((void(*)(id, SEL, id))swizzle.originalMethod)(self, _cmd, arg); - NSEnumerator *blocks = [swizzle.blocks objectEnumerator]; - swizzleBlock block; - while ((block = [blocks nextObject])) { - block(self, _cmd, arg); - } + NSEnumerator *blocks = [swizzle.blocks objectEnumerator]; + swizzleBlock block; + while ((block = [blocks nextObject])) { + block(self, _cmd, arg); } + } } static void fb_swizzledMethod_4(id self, SEL _cmd, id arg, id arg2) -{ - FBSDKSwizzle *swizzle = fb_findSwizzle(self, _cmd); - if (swizzle) { - ((void(*)(id, SEL, id, id))swizzle.originalMethod)(self, _cmd, arg, arg2); - - NSEnumerator *blocks = [swizzle.blocks objectEnumerator]; - swizzleBlock block; - while ((block = [blocks nextObject])) { - block(self, _cmd, arg, arg2); - } - } -} - -static void fb_swizzledMethod_5(id self, SEL _cmd, id arg, id arg2, id arg3) -{ - FBSDKSwizzle *swizzle = fb_findSwizzle(self, _cmd); - if (swizzle) { - ((void(*)(id, SEL, id, id, id))swizzle.originalMethod)(self, _cmd, arg, arg2, arg3); - - NSEnumerator *blocks = [swizzle.blocks objectEnumerator]; - swizzleBlock block; - while ((block = [blocks nextObject])) { - block(self, _cmd, arg, arg2, arg3); - } - } -} - -static void fb_swizzleMethod_4_io(id self, SEL _cmd, NSInteger arg, id arg2) { FBSDKSwizzle *swizzle = fb_findSwizzle(self, _cmd); if (swizzle) { - ((void(*)(id, SEL, NSInteger, id))swizzle.originalMethod)(self, _cmd, arg, arg2); + ((void(*)(id, SEL, id, id))swizzle.originalMethod)(self, _cmd, arg, arg2); NSEnumerator *blocks = [swizzle.blocks objectEnumerator]; swizzleBlock block; @@ -124,6 +96,34 @@ static void fb_swizzleMethod_4_io(id self, SEL _cmd, NSInteger arg, id arg2) } } +static void fb_swizzledMethod_5(id self, SEL _cmd, id arg, id arg2, id arg3) +{ + FBSDKSwizzle *swizzle = fb_findSwizzle(self, _cmd); + if (swizzle) { + ((void(*)(id, SEL, id, id, id))swizzle.originalMethod)(self, _cmd, arg, arg2, arg3); + + NSEnumerator *blocks = [swizzle.blocks objectEnumerator]; + swizzleBlock block; + while ((block = [blocks nextObject])) { + block(self, _cmd, arg, arg2, arg3); + } + } +} + +static void fb_swizzleMethod_4_io(id self, SEL _cmd, NSInteger arg, id arg2) +{ + FBSDKSwizzle *swizzle = fb_findSwizzle(self, _cmd); + if (swizzle) { + ((void(*)(id, SEL, NSInteger, id))swizzle.originalMethod)(self, _cmd, arg, arg2); + + NSEnumerator *blocks = [swizzle.blocks objectEnumerator]; + swizzleBlock block; + while ((block = [blocks nextObject])) { + block(self, _cmd, arg, arg2); + } + } +} + #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wstrict-prototypes" @@ -135,8 +135,10 @@ static void (*fb_swizzledMethods[MAX_ARGS - MIN_ARGS + 1])() = {fb_swizzledMetho + (void)initialize { - swizzles = [NSMapTable mapTableWithKeyOptions:(NSPointerFunctionsOpaqueMemory | NSPointerFunctionsOpaquePersonality) - valueOptions:(NSPointerFunctionsStrongMemory | NSPointerFunctionsObjectPointerPersonality)]; + swizzles = [NSMapTable mapTableWithKeyOptions:(NSPointerFunctionsOpaqueMemory | + NSPointerFunctionsOpaquePersonality) + valueOptions:(NSPointerFunctionsStrongMemory | + NSPointerFunctionsObjectPointerPersonality)]; [FBSDKSwizzler resolveConflict]; } @@ -152,107 +154,107 @@ static void (*fb_swizzledMethods[MAX_ARGS - MIN_ARGS + 1])() = {fb_swizzledMetho + (void)printSwizzles { - NSEnumerator *en = [swizzles objectEnumerator]; - FBSDKSwizzle *swizzle; - while ((swizzle = (FBSDKSwizzle *)[en nextObject])) { - NSLog(@"%@", swizzle); - } + NSEnumerator *en = [swizzles objectEnumerator]; + FBSDKSwizzle *swizzle; + while ((swizzle = (FBSDKSwizzle *)[en nextObject])) { + NSLog(@"%@", swizzle); + } } + (FBSDKSwizzle *)swizzleForMethod:(Method)aMethod { - return (FBSDKSwizzle *)[swizzles objectForKey:MAPTABLE_ID(aMethod)]; + return (FBSDKSwizzle *)[swizzles objectForKey:MAPTABLE_ID(aMethod)]; } + (void)removeSwizzleForMethod:(Method)aMethod { - [swizzles removeObjectForKey:MAPTABLE_ID(aMethod)]; + [swizzles removeObjectForKey:MAPTABLE_ID(aMethod)]; } + (void)setSwizzle:(FBSDKSwizzle *)swizzle forMethod:(Method)aMethod { - [swizzles setObject:swizzle forKey:MAPTABLE_ID(aMethod)]; + [swizzles setObject:swizzle forKey:MAPTABLE_ID(aMethod)]; } + (BOOL)isLocallyDefinedMethod:(Method)aMethod onClass:(Class)aClass { - uint count; - BOOL isLocal = NO; - Method *methods = class_copyMethodList(aClass, &count); - for (NSUInteger i = 0; i < count; i++) { - if (aMethod == methods[i]) { - isLocal = YES; - break; - } + uint count; + BOOL isLocal = NO; + Method *methods = class_copyMethodList(aClass, &count); + for (NSUInteger i = 0; i < count; i++) { + if (aMethod == methods[i]) { + isLocal = YES; + break; } - free(methods); - return isLocal; + } + free(methods); + return isLocal; } + (void)swizzleSelector:(SEL)aSelector onClass:(Class)aClass withBlock:(swizzleBlock)aBlock named:(NSString *)aName { - Method aMethod = class_getInstanceMethod(aClass, aSelector); - if (aMethod) { - uint numArgs = method_getNumberOfArguments(aMethod); - if (numArgs >= MIN_ARGS && numArgs <= MAX_ARGS) { + Method aMethod = class_getInstanceMethod(aClass, aSelector); + if (aMethod) { + uint numArgs = method_getNumberOfArguments(aMethod); + if (numArgs >= MIN_ARGS && numArgs <= MAX_ARGS) { - BOOL isLocal = [FBSDKSwizzler isLocallyDefinedMethod:aMethod onClass:aClass]; - IMP swizzledMethod = (IMP)fb_swizzledMethods[numArgs - 2]; - // Check whether the first parameter is integer - if (4 == numArgs) { - char *type = method_copyArgumentType(aMethod, 2); - NSString *firstType = [NSString stringWithCString:type encoding:NSUTF8StringEncoding]; - NSString *integerTypes = @"islq"; - if ([integerTypes containsString:firstType.lowercaseString]) { - swizzledMethod = (IMP)fb_swizzleMethod_4_io; - } - free(type); - } - - FBSDKSwizzle *swizzle = [FBSDKSwizzler swizzleForMethod:aMethod]; - - if (isLocal) { - if (!swizzle) { - IMP originalMethod = method_getImplementation(aMethod); - - // Replace the local implementation of this method with the swizzled one - method_setImplementation(aMethod,swizzledMethod); - - // Create and add the swizzle - swizzle = [[FBSDKSwizzle alloc] initWithBlock:aBlock named:aName forClass:aClass selector:aSelector originalMethod:originalMethod withNumArgs:numArgs]; - [FBSDKSwizzler setSwizzle:swizzle forMethod:aMethod]; - - } else { - [swizzle.blocks setObject:aBlock forKey:aName]; - } - } else { - IMP originalMethod = swizzle ? swizzle.originalMethod : method_getImplementation(aMethod); - - // Add the swizzle as a new local method on the class. - if (!class_addMethod(aClass, aSelector, swizzledMethod, method_getTypeEncoding(aMethod))) { - return; - } - // Now re-get the Method, it should be the one we just added. - Method newMethod = class_getInstanceMethod(aClass, aSelector); - if (aMethod == newMethod) { - return; - } - - FBSDKSwizzle *newSwizzle = [[FBSDKSwizzle alloc] initWithBlock:aBlock named:aName forClass:aClass selector:aSelector originalMethod:originalMethod withNumArgs:numArgs]; - [FBSDKSwizzler setSwizzle:newSwizzle forMethod:newMethod]; - } + BOOL isLocal = [FBSDKSwizzler isLocallyDefinedMethod:aMethod onClass:aClass]; + IMP swizzledMethod = (IMP)fb_swizzledMethods[numArgs - 2]; + // Check whether the first parameter is integer + if (4 == numArgs) { + char *type = method_copyArgumentType(aMethod, 2); + NSString *firstType = [NSString stringWithCString:type encoding:NSUTF8StringEncoding]; + NSString *integerTypes = @"islq"; + if ([integerTypes containsString:firstType.lowercaseString]) { + swizzledMethod = (IMP)fb_swizzleMethod_4_io; } + free(type); + } + + FBSDKSwizzle *swizzle = [FBSDKSwizzler swizzleForMethod:aMethod]; + + if (isLocal) { + if (!swizzle) { + IMP originalMethod = method_getImplementation(aMethod); + + // Replace the local implementation of this method with the swizzled one + method_setImplementation(aMethod,swizzledMethod); + + // Create and add the swizzle + swizzle = [[FBSDKSwizzle alloc] initWithBlock:aBlock named:aName forClass:aClass selector:aSelector originalMethod:originalMethod withNumArgs:numArgs]; + [FBSDKSwizzler setSwizzle:swizzle forMethod:aMethod]; + + } else { + [swizzle.blocks setObject:aBlock forKey:aName]; + } + } else { + IMP originalMethod = swizzle ? swizzle.originalMethod : method_getImplementation(aMethod); + + // Add the swizzle as a new local method on the class. + if (!class_addMethod(aClass, aSelector, swizzledMethod, method_getTypeEncoding(aMethod))) { + return; + } + // Now re-get the Method, it should be the one we just added. + Method newMethod = class_getInstanceMethod(aClass, aSelector); + if (aMethod == newMethod) { + return; + } + + FBSDKSwizzle *newSwizzle = [[FBSDKSwizzle alloc] initWithBlock:aBlock named:aName forClass:aClass selector:aSelector originalMethod:originalMethod withNumArgs:numArgs]; + [FBSDKSwizzler setSwizzle:newSwizzle forMethod:newMethod]; + } } + } } + (void)unswizzleSelector:(SEL)aSelector onClass:(Class)aClass { - Method aMethod = class_getInstanceMethod(aClass, aSelector); - FBSDKSwizzle *swizzle = [FBSDKSwizzler swizzleForMethod:aMethod]; - if (swizzle) { - method_setImplementation(aMethod, swizzle.originalMethod); - [FBSDKSwizzler removeSwizzleForMethod:aMethod]; - } + Method aMethod = class_getInstanceMethod(aClass, aSelector); + FBSDKSwizzle *swizzle = [FBSDKSwizzler swizzleForMethod:aMethod]; + if (swizzle) { + method_setImplementation(aMethod, swizzle.originalMethod); + [FBSDKSwizzler removeSwizzleForMethod:aMethod]; + } } /* @@ -261,17 +263,17 @@ static void (*fb_swizzledMethods[MAX_ARGS - MIN_ARGS + 1])() = {fb_swizzledMetho */ + (void)unswizzleSelector:(SEL)aSelector onClass:(Class)aClass named:(NSString *)aName { - Method aMethod = class_getInstanceMethod(aClass, aSelector); - FBSDKSwizzle *swizzle = [FBSDKSwizzler swizzleForMethod:aMethod]; - if (swizzle) { - if (aName) { - [swizzle.blocks removeObjectForKey:aName]; - } - if (!aName || swizzle.blocks.count == 0) { - method_setImplementation(aMethod, swizzle.originalMethod); - [FBSDKSwizzler removeSwizzleForMethod:aMethod]; - } + Method aMethod = class_getInstanceMethod(aClass, aSelector); + FBSDKSwizzle *swizzle = [FBSDKSwizzler swizzleForMethod:aMethod]; + if (swizzle) { + if (aName) { + [swizzle.blocks removeObjectForKey:aName]; } + if (!aName || swizzle.blocks.count == 0) { + method_setImplementation(aMethod, swizzle.originalMethod); + [FBSDKSwizzler removeSwizzleForMethod:aMethod]; + } + } } @end @@ -281,41 +283,42 @@ static void (*fb_swizzledMethods[MAX_ARGS - MIN_ARGS + 1])() = {fb_swizzledMetho - (instancetype)init { - if ((self = [super init])) { - self.blocks = [NSMapTable mapTableWithKeyOptions:(NSPointerFunctionsStrongMemory - | NSPointerFunctionsObjectPersonality) - valueOptions:(NSPointerFunctionsStrongMemory - | NSPointerFunctionsObjectPointerPersonality)]; - } - return self; + if ((self = [super init])) { + self.blocks = [NSMapTable mapTableWithKeyOptions:(NSPointerFunctionsStrongMemory + | NSPointerFunctionsObjectPersonality) + valueOptions:(NSPointerFunctionsStrongMemory + | NSPointerFunctionsObjectPointerPersonality)]; + } + return self; } - (instancetype)initWithBlock:(swizzleBlock)aBlock - named:(NSString *)aName - forClass:(Class)aClass - selector:(SEL)aSelector - originalMethod:(IMP)aMethod - withNumArgs:(uint)numArgs + named:(NSString *)aName + forClass:(Class)aClass + selector:(SEL)aSelector + originalMethod:(IMP)aMethod + withNumArgs:(uint)numArgs { - if ((self = [self init])) { - self.class = aClass; - self.selector = aSelector; - self.numArgs = numArgs; - self.originalMethod = aMethod; - [_blocks setObject:aBlock forKey:aName]; - } - return self; + if ((self = [self init])) { + self.class = aClass; + self.selector = aSelector; + self.numArgs = numArgs; + self.originalMethod = aMethod; + [_blocks setObject:aBlock forKey:aName]; + } + return self; } - (NSString *)description { - NSString *descriptors = @""; - NSString *key; - NSEnumerator *keys = [_blocks keyEnumerator]; - while ((key = [keys nextObject])) { - descriptors = [descriptors stringByAppendingFormat:@"\t%@ : %@\n", key, [_blocks objectForKey:key]]; - } - return [NSString stringWithFormat:@"Swizzle on %@::%@ [\n%@]", NSStringFromClass(self.class), NSStringFromSelector(self.selector), descriptors]; + NSString *descriptors = @""; + NSString *key; + NSEnumerator *keys = [_blocks keyEnumerator]; + while ((key = [keys nextObject])) { + descriptors = [descriptors stringByAppendingFormat:@"\t%@ : %@\n", key, [_blocks objectForKey:key]]; + } + return [NSString stringWithFormat:@"Swizzle on %@::%@ [\n%@]", NSStringFromClass(self.class), + NSStringFromSelector(self.selector), descriptors]; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h deleted file mode 100644 index b547dab..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 - - 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 - -/* - s gets the oauth token stored in the account store credential, if available. If not empty, - this implies user has granted access. - */ -@property (nonatomic, readonly, copy) NSString *accessTokenString; - -/* - Gets or sets the flag indicating if the next requestAccess call should block - on a renew call. - */ -@property (nonatomic, assign) BOOL forceBlockingRenew; - -/* - A convenience getter to the Facebook account type in the account store, if available. - */ -@property (strong, nonatomic, readonly) ACAccountType *accountType; - -/* - The singleton instance. - */ -@property (class, nonatomic, strong) FBSDKSystemAccountStoreAdapter *sharedInstance; - -/* - 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; - -/* - 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; - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m deleted file mode 100644 index 4c1601f..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m +++ /dev/null @@ -1,278 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 "FBSDKAccessToken.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[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. Constructing this way is tolerant for nil values. - NSMutableDictionary *optionsMutable = [[NSMutableDictionary alloc] initWithCapacity:3]; - optionsMutable[fbsdkdfl_ACFacebookAppIdKey()] = appID; - optionsMutable[fbsdkdfl_ACFacebookPermissionsKey()] = permissions.allObjects; - optionsMutable[fbsdkdfl_ACFacebookAudienceKey()] = defaultAudience; - NSDictionary *options = [optionsMutable copy]; - - 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, [NSError fbErrorWithCode:FBSDKErrorUnknown 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[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[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] - dataAccessExpirationDate:[NSDate distantFuture]]; - [FBSDKAccessToken setCurrentAccessToken:updatedToken]; - } - if (handler) { - handler(renewResult, error); - } - }]; - return; - } - } - - if (handler) { - handler(ACAccountCredentialRenewResultFailed, nil); - } -} - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h index af06684..100499c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h @@ -23,7 +23,7 @@ typedef NS_ENUM(NSInteger, FBSDKTriStateBOOL) FBSDKTriStateBOOLValueUnknown = -1, FBSDKTriStateBOOLValueNO = 0, FBSDKTriStateBOOLValueYES = 1, -}; +} NS_SWIFT_NAME(TriStateBool.Value); FOUNDATION_EXPORT FBSDKTriStateBOOL FBSDKTriStateBOOLFromBOOL(BOOL value); FOUNDATION_EXPORT FBSDKTriStateBOOL FBSDKTriStateBOOLFromNSNumber(NSNumber *value); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.h similarity index 87% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.h index 7f486f3..f7ea35b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.h @@ -18,8 +18,14 @@ #import -#import "FBSDKAccessTokenCaching.h" +#import "FBSDKCrashObserving.h" -@interface FBSDKAccessTokenCacheV3_17 : NSObject +NS_ASSUME_NONNULL_BEGIN + +@interface FBSDKCrashObserver : NSObject + ++ (void)enable; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.m new file mode 100644 index 0000000..fd0aa45 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.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 "FBSDKCrashObserver.h" + +#import "FBSDKCrashHandler.h" +#import "FBSDKGraphRequest.h" +#import "FBSDKGraphRequestConnection.h" +#import "FBSDKLibAnalyzer.h" +#import "FBSDKSettings.h" + +@implementation FBSDKCrashObserver + +@synthesize prefixes, frameworks; + +- (instancetype)init +{ + if ((self = [super init])) { + prefixes = @[@"FBSDK", @"_FBSDK"]; + frameworks = @[@"FBSDKCoreKit", + @"FBSDKLoginKit", + @"FBSDKShareKit", + @"FBSDKPlacesKit", + @"FBSDKTVOSKit"]; + } + return self; +} + ++ (void)enable +{ + [FBSDKCrashHandler addObserver:[FBSDKCrashObserver sharedInstance]]; +} + ++ (FBSDKCrashObserver *)sharedInstance +{ + static FBSDKCrashObserver *_sharedInstance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _sharedInstance = [[self alloc] init]; + }); + return _sharedInstance; +} + +- (void)didReceiveCrashLogs:(NSArray *> *)processedCrashLogs +{ + if (0 == processedCrashLogs.count) { + return; + } + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:processedCrashLogs options:0 error:nil]; + if (jsonData) { + NSString *crashReports = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/instruments", [FBSDKSettings appID]] + parameters:@{@"crash_reports" : crashReports ?: @""} + HTTPMethod:FBSDKHTTPMethodPOST]; + + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (!error && [result isKindOfClass:[NSDictionary class]] && result[@"success"]) { + [FBSDKCrashHandler clearCrashReportFiles]; + } + }]; + } +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.h new file mode 100644 index 0000000..16d1c66 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.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 "FBSDKError.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBSDKErrorReport : NSObject + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + ++ (void)enable; ++ (void)saveError:(NSInteger)errorCode + errorDomain:(NSErrorDomain)errorDomain + message:(nullable NSString *)message; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.m new file mode 100644 index 0000000..6473901 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.m @@ -0,0 +1,137 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKErrorReport.h" + +#import "FBSDKGraphRequest.h" +#import "FBSDKGraphRequestConnection.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings.h" + +#define FBSDK_MAX_ERROR_REPORT_LOGS 1000 + +@implementation FBSDKErrorReport + +static NSString *ErrorReportStorageDirName = @"instrument/"; +static NSString *directoryPath; + +NSString *const kFBSDKErrorCode = @"error_code"; +NSString *const kFBSDKErrorDomain = @"domain"; +NSString *const kFBSDKErrorTimestamp = @"timestamp"; + +# pragma mark - Class Methods + ++ (void)initialize +{ + NSString *dirPath = [NSTemporaryDirectory() stringByAppendingPathComponent:ErrorReportStorageDirName]; + if (![[NSFileManager defaultManager] fileExistsAtPath:dirPath]) { + if (![[NSFileManager defaultManager] createDirectoryAtPath:dirPath withIntermediateDirectories:NO attributes:NULL error:NULL]) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorInformational formatString:@"Failed to create library at %@", dirPath]; + } + } + directoryPath = dirPath; +} + ++ (void)enable +{ + [self uploadError]; + [FBSDKError enableErrorReport]; +} + ++ (void)uploadError +{ + NSArray *> *errorReports = [self loadErrorReports]; + if ([errorReports count] == 0) { + return [self clearErrorInfo]; + } + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:errorReports options:0 error:nil]; + if (!jsonData){ + return; + } + NSString *errorData = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/instruments", [FBSDKSettings appID]] + parameters:@{@"error_reports" : errorData ?: @""} + HTTPMethod:FBSDKHTTPMethodPOST]; + + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (!error && [result isKindOfClass:[NSDictionary class]] && result[@"success"]) { + [self clearErrorInfo]; + } + }]; +} + ++ (void)saveError:(NSInteger)errorCode + errorDomain:(NSErrorDomain)errorDomain + message:(nullable NSString *)message +{ + NSString *timestamp = [NSString stringWithFormat:@"%.0lf", [[NSDate date] timeIntervalSince1970]]; + [self saveErrorInfoToDisk: @{ + kFBSDKErrorCode:@(errorCode), + kFBSDKErrorDomain:errorDomain, + kFBSDKErrorTimestamp:timestamp, + }]; +} + ++ (NSArray *> *)loadErrorReports +{ + NSMutableArray *> *errorReportArr = [NSMutableArray array]; + NSArray *fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:directoryPath error:NULL]; + NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary * _Nullable bindings) { + NSString *str = (NSString *)evaluatedObject; + return [str hasPrefix:@"error_report_"] && [str hasSuffix:@".plist"]; + }]; + fileNames = [fileNames filteredArrayUsingPredicate:predicate]; + fileNames = [fileNames sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2){ + return [obj2 compare:obj1]; + }]; + if (fileNames.count > 0){ + fileNames = [fileNames subarrayWithRange:NSMakeRange(0, MIN(fileNames.count, FBSDK_MAX_ERROR_REPORT_LOGS))]; + for (NSUInteger i = 0; i < fileNames.count; i++) { + NSDictionary *errorReport = [NSDictionary dictionaryWithContentsOfFile:[directoryPath stringByAppendingPathComponent:fileNames[i]]]; + if (errorReport) { + [errorReportArr addObject:errorReport]; + } + } + } + return [errorReportArr copy]; +} + ++ (void)clearErrorInfo +{ + NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:directoryPath error:nil]; + for (NSUInteger i = 0; i < files.count; i++) { + if ([files[i] hasPrefix:@"error_report"]) { + [[NSFileManager defaultManager] removeItemAtPath:[directoryPath stringByAppendingPathComponent:files[i]] error:nil]; + } + } +} + +#pragma mark - disk operations + ++ (void)saveErrorInfoToDisk:(NSDictionary *)errorInfo +{ + [errorInfo writeToFile:[self pathToErrorInfoFile] + atomically:YES]; +} + ++ (NSString *)pathToErrorInfoFile +{ + NSString *timestamp = [NSString stringWithFormat:@"%.0lf", [[NSDate date] timeIntervalSince1970]]; + return [directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"error_report_%@.plist",timestamp]]; +} +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.h similarity index 91% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.h index da1ac64..86415e0 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.h @@ -18,8 +18,12 @@ #import -#import "FBSDKAccessTokenCaching.h" +NS_ASSUME_NONNULL_BEGIN -@interface FBSDKAccessTokenCacheV3_21 : NSObject +@interface FBSDKInstrumentManager : NSObject + ++ (void)enable; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.m new file mode 100644 index 0000000..091658d --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.m @@ -0,0 +1,46 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKInstrumentManager.h" + +#import "FBSDKCrashObserver.h" +#import "FBSDKErrorReport.h" +#import "FBSDKFeatureManager.h" +#import "FBSDKSettings.h" + +@implementation FBSDKInstrumentManager + ++ (void)enable +{ + if (![FBSDKSettings isAutoLogAppEventsEnabled]) { + return; + } + + [FBSDKFeatureManager checkFeature:FBSDKFeatureCrashReport completionBlock:^(BOOL enabled) { + if (enabled) { + [FBSDKCrashObserver enable]; + } + }]; + [FBSDKFeatureManager checkFeature:FBSDKFeatureErrorReport completionBlock:^(BOOL enabled) { + if (enabled) { + [FBSDKErrorReport enable]; + } + }]; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h index 4d8ba91..1912f5d 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h @@ -45,7 +45,6 @@ typedef NS_OPTIONS(NSUInteger, FBSDKGraphRequestFlags) // 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; - @property (nonatomic, readonly, getter=isGraphErrorRecoveryDisabled) BOOL graphErrorRecoveryDisabled; @property (nonatomic, readonly) BOOL hasAttachments; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h index c9a0b2b..37bf777 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h @@ -22,6 +22,7 @@ @class FBSDKGraphRequestDataAttachment; @class FBSDKLogger; +NS_SWIFT_NAME(GraphRequestBody) @interface FBSDKGraphRequestBody : NSObject @property (nonatomic, retain, readonly) NSData *data; @@ -44,4 +45,6 @@ - (NSString *)mimeContentType; +- (NSData *)compressedData; + @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m index c454f95..6b507c4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m @@ -18,8 +18,12 @@ #import "FBSDKGraphRequestBody.h" +#import "../../Basics/Internal/FBSDKBasicUtility.h" + +#import "FBSDKConstants.h" #import "FBSDKCrypto.h" #import "FBSDKGraphRequestDataAttachment.h" +#import "FBSDKInternalUtility.h" #import "FBSDKLogger.h" #import "FBSDKSettings.h" @@ -131,7 +135,7 @@ - (void)_appendWithKey:(NSString *)key filename:(NSString *)filename contentType:(NSString *)contentType - contentBlock:(void(^)(void))contentBlock + contentBlock:(FBSDKCodeBlock)contentBlock { NSMutableArray *disposition = [[NSMutableArray alloc] init]; [disposition addObject:@"Content-Disposition: form-data"]; @@ -152,4 +156,13 @@ [self appendUTF8:[[NSString alloc] initWithFormat:@"%@--%@%@", kNewline, _stringBoundary, kNewline]]; } +- (NSData *)compressedData +{ + if (!self.data.length || ![[self mimeContentType] isEqualToString:@"application/json"]) { + return nil; + } + + return [FBSDKBasicUtility gzip:self.data]; +} + @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h index 75aa3dd..dc64191 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h @@ -21,19 +21,20 @@ #import // Internal only class to facilitate FBSDKGraphRequest processing, specifically -// associating FBSDKGraphRequest and FBSDKGraphRequestHandler instances and necessary +// associating FBSDKGraphRequest and FBSDKGraphRequestBlock instances and necessary // data for retry processing. +NS_SWIFT_NAME(GraphRequestMetadata) @interface FBSDKGraphRequestMetadata : NSObject @property (nonatomic, retain) FBSDKGraphRequest *request; -@property (nonatomic, copy) FBSDKGraphRequestHandler completionHandler; +@property (nonatomic, copy) FBSDKGraphRequestBlock completionHandler; @property (nonatomic, copy) NSDictionary *batchParameters; - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; - (instancetype)initWithRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)handler + completionHandler:(FBSDKGraphRequestBlock)handler batchParameters:(NSDictionary *)batchParameters NS_DESIGNATED_INITIALIZER; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m index e87f9b4..2f09f8c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m @@ -23,7 +23,7 @@ @implementation FBSDKGraphRequestMetadata - (instancetype)initWithRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)handler + completionHandler:(FBSDKGraphRequestBlock)handler batchParameters:(NSDictionary *)batchParameters { if ((self = [super init])) { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h index 567f8ec..465295e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h @@ -16,13 +16,14 @@ // IN AN ACTION OF 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 +NS_SWIFT_NAME(GraphRequestPiggybackManager) @interface FBSDKGraphRequestPiggybackManager : NSObject + (void)addPiggybackRequests:(FBSDKGraphRequestConnection *)connection; -+ (void)addRefreshPiggyback:(FBSDKGraphRequestConnection *)connection permissionHandler:(FBSDKGraphRequestHandler)permissionHandler; ++ (void)addRefreshPiggyback:(FBSDKGraphRequestConnection *)connection permissionHandler:(FBSDKGraphRequestBlock)permissionHandler; + (void)addRefreshPiggybackIfStale:(FBSDKGraphRequestConnection *)connection; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m index bb85741..064dfe2 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m @@ -18,7 +18,7 @@ #import "FBSDKGraphRequestPiggybackManager.h" -#import "FBSDKCoreKit+Internal.h" +#import static int const FBSDKTokenRefreshThresholdSeconds = 24 * 60 * 60; // day static int const FBSDKTokenRefreshRetrySeconds = 60 * 60; // hour @@ -43,11 +43,12 @@ static int const FBSDKTokenRefreshRetrySeconds = 60 * 60; // hour } } -+ (void)addRefreshPiggyback:(FBSDKGraphRequestConnection *)connection permissionHandler:(FBSDKGraphRequestHandler)permissionHandler ++ (void)addRefreshPiggyback:(FBSDKGraphRequestConnection *)connection permissionHandler:(FBSDKGraphRequestBlock)permissionHandler { FBSDKAccessToken *expectedToken = [FBSDKAccessToken currentAccessToken]; __block NSMutableSet *permissions = nil; __block NSMutableSet *declinedPermissions = nil; + __block NSMutableSet *expiredPermissions = nil; __block NSString *tokenString = nil; __block NSNumber *expirationDateNumber = nil; __block NSNumber *dataAccessExpirationDateNumber = nil; @@ -56,13 +57,13 @@ static int const FBSDKTokenRefreshRetrySeconds = 60 * 60; // hour if (--expectingCallbacksCount == 0) { FBSDKAccessToken *currentToken = [FBSDKAccessToken currentAccessToken]; NSDate *expirationDate = currentToken.expirationDate; - if (expirationDateNumber) { + if (expirationDateNumber != nil) { expirationDate = (expirationDateNumber.doubleValue > 0 ? [NSDate dateWithTimeIntervalSince1970:expirationDateNumber.doubleValue] : [NSDate distantFuture]); } NSDate *dataExpirationDate = currentToken.dataAccessExpirationDate; - if (dataAccessExpirationDateNumber) { + if (dataAccessExpirationDateNumber != nil) { dataExpirationDate = (dataAccessExpirationDateNumber.doubleValue > 0 ? [NSDate dateWithTimeIntervalSince1970:dataAccessExpirationDateNumber.doubleValue] : [NSDate distantFuture]); @@ -70,6 +71,7 @@ static int const FBSDKTokenRefreshRetrySeconds = 60 * 60; // hour FBSDKAccessToken *refreshedToken = [[FBSDKAccessToken alloc] initWithTokenString:tokenString ?: currentToken.tokenString permissions:(permissions ?: currentToken.permissions).allObjects declinedPermissions:(declinedPermissions ?: currentToken.declinedPermissions).allObjects + expiredPermissions:(expiredPermissions ?: currentToken.expiredPermissions).allObjects appID:currentToken.appID userID:currentToken.userID expirationDate:expirationDate @@ -100,10 +102,12 @@ static int const FBSDKTokenRefreshRetrySeconds = 60 * 60; // hour if (!error) { permissions = [NSMutableSet set]; declinedPermissions = [NSMutableSet set]; + expiredPermissions = [NSMutableSet set]; [FBSDKInternalUtility extractPermissionsFromResponse:result grantedPermissions:permissions - declinedPermissions:declinedPermissions]; + declinedPermissions:declinedPermissions + expiredPermissions:expiredPermissions]; } expectingCallbackComplete(); if (permissionHandler) { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m deleted file mode 100644 index 10019c3..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -#import "FBSDKURLSessionTask.h" - -#import "FBSDKInternalUtility.h" -#import "FBSDKLogger.h" -#import "FBSDKSettings.h" - -@interface FBSDKURLSessionTask () - -@property (nonatomic, strong) NSURLSessionTask *task; -@property (nonatomic, copy) FBSDKURLSessionTaskHandler handler; -@property (nonatomic, assign) uint64_t requestStartTime; -@property (nonatomic, assign, readonly) NSUInteger loggerSerialNumber; - -@end - -@implementation FBSDKURLSessionTask - -- (instancetype)initWithRequest:(NSURLRequest *)request - fromSession:(NSURLSession *)session - completionHandler:(FBSDKURLSessionTaskHandler)handler -{ - if ((self = [super init])) { - _requestStartTime = [FBSDKInternalUtility currentTimeInMilliseconds]; - _loggerSerialNumber = [FBSDKLogger generateSerialNumber]; - _handler = [handler copy]; - __weak FBSDKURLSessionTask *weakSelf = self; - _task = [session dataTaskWithRequest:request - completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { - if (error) { - [weakSelf taskDidCompleteWithError:error]; - } else { - [weakSelf taskDidCompleteWithResponse:response data:data]; - } - }]; - } - return self; -} - -#pragma mark - Logging and Completion - -- (void)logAndInvokeHandler:(FBSDKURLSessionTaskHandler)handler - error:(NSError *)error { - if (error) { - NSString *logEntry = [NSString - stringWithFormat:@"FBSDKURLSessionTask <#%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:(FBSDKURLSessionTaskHandler)handler - response:(NSURLResponse *)response - responseData:(NSData *)responseData { - // Basic FBSDKURLSessionTask logging just prints out the URL. FBSDKGraphRequest logging provides more details. - NSString *mimeType = response.MIMEType; - NSMutableString *mutableLogEntry = [NSMutableString stringWithFormat:@"FBSDKURLSessionTask <#%lu>:\n Duration: %llu 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:(FBSDKURLSessionTaskHandler)handler - error:(NSError *)error - response:(NSURLResponse *)response - responseData:(NSData *)responseData { - if (handler != nil) { - dispatch_async(dispatch_get_main_queue(), ^{ - handler(error, response, responseData); - }); - } -} - -- (void)logMessage:(NSString *)message -{ - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorNetworkRequests formatString:@"%@", message]; -} - -- (void)taskDidCompleteWithResponse:(NSURLResponse *)response data:(NSData *)data -{ - @try { - [self logAndInvokeHandler:self.handler response:response responseData:data]; - } @finally { - self.handler = nil; - } -} - -- (void)taskDidCompleteWithError:(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; - } -} - -#pragma mark - Task State - -- (void)start -{ - [self.task resume]; -} - -- (void)cancel -{ - [self.task cancel]; - self.handler = nil; -} - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h index f329594..82d4835 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h @@ -20,6 +20,7 @@ #import +NS_SWIFT_NAME(DialogConfiguration) @interface FBSDKDialogConfiguration : NSObject - (instancetype)init NS_UNAVAILABLE; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h index 0c75bb8..af3524c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h @@ -21,6 +21,7 @@ @class FBSDKGraphRequest; // maps codes and subcodes pairs to FBSDKErrorRecoveryConfiguration instances. +NS_SWIFT_NAME(ErrorConfiguration) @interface FBSDKErrorConfiguration : NSObject - (instancetype)init NS_UNAVAILABLE; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m index fb98e36..188dbd9 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m @@ -18,7 +18,8 @@ #import "FBSDKErrorConfiguration.h" -#import "FBSDKCoreKit+Internal.h" +#import + #import "FBSDKErrorRecoveryConfiguration.h" static NSString *const kErrorCategoryOther = @"other"; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h index 9785985..d5ebaaf 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h @@ -21,6 +21,7 @@ #import //immutable +NS_SWIFT_NAME(ErrorRecoveryConfiguration) @interface FBSDKErrorRecoveryConfiguration : NSObject @property (nonatomic, readonly) NSString *localizedRecoveryDescription; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h index e2a9228..fa8a5b6 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h @@ -22,6 +22,11 @@ NS_ASSUME_NONNULL_BEGIN +/// typedef for FBSDKAppEventUserDataType +typedef NSString *const FBSDKGateKeeperKey NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(GateKeeperManager.GateKeeperKey); +typedef void (^FBSDKGKManagerBlock)(NSError * _Nullable error) +NS_SWIFT_NAME(GKManagerBlock); + @interface FBSDKGateKeeperManager : NSObject - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; @@ -29,14 +34,12 @@ NS_ASSUME_NONNULL_BEGIN /** Returns the locally cached configuration. */ -+ (BOOL)boolForKey:(NSString *)key - appID:(NSString *)appID - defaultValue:(BOOL)defaultValue; ++ (BOOL)boolForKey:(NSString *)key defaultValue:(BOOL)defaultValue; /** Load the gate keeper configurations from server */ -+ (void)loadGateKeepers; ++ (void)loadGateKeepers:(nullable FBSDKGKManagerBlock)completionBlock; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m index 59224c7..dede1ae 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m @@ -26,67 +26,82 @@ #import "FBSDKAppEventsUtility.h" #import "FBSDKGraphRequest+Internal.h" #import "FBSDKGraphRequest.h" +#import "FBSDKInternalUtility.h" #import "FBSDKSettings.h" #import "FBSDKTypeUtility.h" -#define FBSDK_GATEKEEPER_USER_DEFAULTS_KEY @"com.facebook.sdk:gateKeeper%@" +#define FBSDK_GATEKEEPERS_USER_DEFAULTS_KEY @"com.facebook.sdk:GateKeepers%@" #define FBSDK_GATEKEEPER_APP_GATEKEEPER_EDGE @"mobile_sdk_gk" #define FBSDK_GATEKEEPER_APP_GATEKEEPER_FIELDS @"gatekeepers" @implementation FBSDKGateKeeperManager -static NSMutableDictionary *_gateKeepers; +static NSDictionary *_gateKeepers; +static NSMutableArray *_completionBlocks; static const NSTimeInterval kTimeout = 4.0; static NSDate *_timestamp; static BOOL _loadingGateKeepers; static BOOL _requeryFinishedForAppStart; #pragma mark - Public Class Methods - -+ (BOOL)boolForKey:(NSString *)key - appID:(NSString *)appID - defaultValue:(BOOL)defaultValue ++ (void)initialize { - [self loadGateKeepers]; - if (appID == nil || _gateKeepers == nil || _gateKeepers[appID] == nil) { - return defaultValue; + if (self == [FBSDKGateKeeperManager class]) { + _completionBlocks = [NSMutableArray array]; } - NSDictionary *gateKeeper = [FBSDKTypeUtility dictionaryValue:_gateKeepers[appID]]; - return gateKeeper[key] == nil ? defaultValue : [gateKeeper[key] boolValue]; } -+ (void)loadGateKeepers ++ (BOOL)boolForKey:(NSString *)key defaultValue:(BOOL)defaultValue +{ + [self loadGateKeepers:nil]; + + return _gateKeepers[key] ? [_gateKeepers[key] boolValue] : defaultValue; +} + ++ (void)loadGateKeepers:(FBSDKGKManagerBlock)completionBlock { - NSString *appID = [FBSDKSettings appID]; @synchronized(self) { - if (_gateKeepers == nil) { - _gateKeepers = [[NSMutableDictionary alloc] init]; + NSString *appID = [FBSDKSettings appID]; + if (!appID) { + _gateKeepers = nil; + if (completionBlock != NULL) { + completionBlock(nil); + } + return; } - // load the defaults - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString *defaultKey = [NSString stringWithFormat:FBSDK_GATEKEEPER_USER_DEFAULTS_KEY, - appID]; - NSData *data = [defaults objectForKey:defaultKey]; - if ([data isKindOfClass:[NSData class]]) { - NSMutableDictionary *gatekeeper = [NSKeyedUnarchiver unarchiveObjectWithData:data]; - if (gatekeeper != nil && [gatekeeper isKindOfClass:[NSMutableDictionary class]] && appID != nil) { - _gateKeepers[appID] = gatekeeper; + + if (!_gateKeepers) { + // load the defaults + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *defaultKey = [NSString stringWithFormat:FBSDK_GATEKEEPERS_USER_DEFAULTS_KEY, + appID]; + NSData *data = [defaults objectForKey:defaultKey]; + if ([data isKindOfClass:[NSData class]]) { + NSDictionary *gatekeeper = [NSKeyedUnarchiver unarchiveObjectWithData:data]; + if (gatekeeper != nil && [gatekeeper isKindOfClass:[NSDictionary class]]) { + _gateKeepers = gatekeeper; + } } } // Query the server when the requery is not finished for app start or the timestamp is not valid - if (![self _gateKeeperIsValid]) { + if ([self _gateKeeperIsValid]) { + if (completionBlock) { + completionBlock(nil); + } + } else { + [FBSDKBasicUtility array:_completionBlocks addObject:completionBlock]; if (!_loadingGateKeepers) { _loadingGateKeepers = YES; - FBSDKGraphRequest *request = [[self class] requestToLoadGateKeepers:appID]; + FBSDKGraphRequest *request = [[self class] requestToLoadGateKeepers]; // 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) { _requeryFinishedForAppStart = YES; - [self processLoadRequestResponse:result error:error appID:appID]; + [self processLoadRequestResponse:result error:error]; }]; [requestConnection start]; } @@ -96,7 +111,7 @@ static BOOL _requeryFinishedForAppStart; #pragma mark - Internal Class Methods -+ (FBSDKGraphRequest *)requestToLoadGateKeepers:(NSString *)appID ++ (FBSDKGraphRequest *)requestToLoadGateKeepers { NSString *sdkVersion = [FBSDKSettings sdkVersion]; @@ -105,7 +120,7 @@ static BOOL _requeryFinishedForAppStart; @"fields": FBSDK_GATEKEEPER_APP_GATEKEEPER_FIELDS}; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/%@", - appID, FBSDK_GATEKEEPER_APP_GATEKEEPER_EDGE] + [FBSDKSettings appID], FBSDK_GATEKEEPER_APP_GATEKEEPER_EDGE] parameters:parameters tokenString:nil HTTPMethod:nil @@ -115,45 +130,54 @@ static BOOL _requeryFinishedForAppStart; #pragma mark - Helper Class Methods -+ (void)processLoadRequestResponse:(id)result error:(NSError *)error appID:(NSString *)appID ++ (void)processLoadRequestResponse:(id)result error:(NSError *)error { @synchronized(self) { _loadingGateKeepers = NO; - if (error) { - return; - } + if (!error) { + // Update the timestamp only when there is no error + _timestamp = [NSDate date]; - // Update the timestamp only when there is no error - _timestamp = [NSDate date]; - - NSMutableDictionary *gateKeeper = _gateKeepers[appID]; - if (gateKeeper == nil) { - gateKeeper = [[NSMutableDictionary alloc] init]; - } - NSDictionary *resultDictionary = [FBSDKTypeUtility dictionaryValue:result]; - NSDictionary *fetchedData = [FBSDKTypeUtility dictionaryValue:[resultDictionary[@"data"] firstObject]]; - NSArray *gateKeeperList = fetchedData != nil ? [FBSDKTypeUtility arrayValue:fetchedData[FBSDK_GATEKEEPER_APP_GATEKEEPER_FIELDS]] : nil; - - if (gateKeeperList != nil) { - // updates gate keeper with fetched data - for (id gateKeeperEntry in gateKeeperList) { - NSDictionary *entry = [FBSDKTypeUtility dictionaryValue:gateKeeperEntry]; - NSString *key = [FBSDKTypeUtility stringValue:entry[@"key"]]; - id value = entry[@"value"]; - if (entry != nil && key != nil && value != nil) { - gateKeeper[key] = value; - } + NSMutableDictionary *gateKeeper = [_gateKeepers mutableCopy]; + if (!gateKeeper) { + gateKeeper = [[NSMutableDictionary alloc] init]; } - _gateKeepers[appID] = gateKeeper; + NSDictionary *resultDictionary = [FBSDKTypeUtility dictionaryValue:result]; + NSDictionary *fetchedData = [FBSDKTypeUtility dictionaryValue:[resultDictionary[@"data"] firstObject]]; + NSArray *gateKeeperList = fetchedData != nil ? [FBSDKTypeUtility arrayValue:fetchedData[FBSDK_GATEKEEPER_APP_GATEKEEPER_FIELDS]] : nil; + + if (gateKeeperList != nil) { + // updates gate keeper with fetched data + for (id gateKeeperEntry in gateKeeperList) { + NSDictionary *entry = [FBSDKTypeUtility dictionaryValue:gateKeeperEntry]; + NSString *key = [FBSDKTypeUtility stringValue:entry[@"key"]]; + id value = entry[@"value"]; + if (entry != nil && key != nil && value != nil) { + gateKeeper[key] = value; + } + } + _gateKeepers = [gateKeeper copy]; + } + + // update the cached copy in user defaults + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *defaultKey = [NSString stringWithFormat:FBSDK_GATEKEEPERS_USER_DEFAULTS_KEY, + [FBSDKSettings appID]]; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:gateKeeper]; + [defaults setObject:data forKey:defaultKey]; } - // update the cached copy in user defaults - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString *defaultKey = [NSString stringWithFormat:FBSDK_GATEKEEPER_USER_DEFAULTS_KEY, - appID]; - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:gateKeeper]; - [defaults setObject:data forKey:defaultKey]; + [self _didProcessGKFromNetwork:error]; + } +} + ++ (void)_didProcessGKFromNetwork:(NSError *)error +{ + NSArray *completionBlocks = [NSArray arrayWithArray:_completionBlocks]; + [_completionBlocks removeAllObjects]; + for (FBSDKGKManagerBlock completionBlock in completionBlocks) { + completionBlock(error); } } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h index b4e17ba..6e98852 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h @@ -43,6 +43,7 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationSmartLoginOptions) FBSDKServerConfigurationSmartLoginOptionsRequireConfirmation = 1 << 1, }; +NS_SWIFT_NAME(ServerConfiguration) @interface FBSDKServerConfiguration : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -72,6 +73,8 @@ implicitPurchaseLoggingEnabled:(BOOL)implicitPurchaseLoggingEnabled smartLoginMenuIconURL:(NSURL *)smartLoginMenuIconURL updateMessage:(NSString *)updateMessage eventBindings:(NSArray *)eventBindings + restrictiveParams:(NSDictionary *)restrictiveParams + AAMRules:(NSDictionary *)AAMRules NS_DESIGNATED_INITIALIZER; @property (nonatomic, assign, readonly, getter=isAdvertisingIDEnabled) BOOL advertisingIDEnabled; @@ -96,6 +99,8 @@ NS_DESIGNATED_INITIALIZER; @property (nonatomic, copy, readonly) NSURL *smartLoginMenuIconURL; @property (nonatomic, copy, readonly) NSString *updateMessage; @property (nonatomic, copy, readonly) NSArray *eventBindings; +@property (nonatomic, copy, readonly) NSDictionary *restrictiveParams; +@property (nonatomic, copy, readonly) NSDictionary *AAMRules; @property (nonatomic, readonly) NSInteger version; - (FBSDKDialogConfiguration *)dialogConfigurationForDialogName:(NSString *)dialogName; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m index d437d72..6451e96 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m @@ -43,6 +43,8 @@ #define FBSDK_SERVER_CONFIGURATION_SMART_LOGIN_MENU_ICON_URL_KEY @"smarstLoginBookmarkMenuURL" #define FBSDK_SERVER_CONFIGURATION_UPDATE_MESSAGE_KEY @"SDKUpdateMessage" #define FBSDK_SERVER_CONFIGURATION_EVENT_BINDINGS @"eventBindings" +#define FBSDK_SERVER_CONFIGURATION_RESTRICTIVE_PARAMS @"restrictiveParams" +#define FBSDK_SERVER_CONFIGURATION_AAM_RULES @"AAMRules" #define FBSDK_SERVER_CONFIGURATION_VERSION_KEY @"version" #define FBSDK_SERVER_CONFIGURATION_TRACK_UNINSTALL_ENABLED_KEY @"trackAppUninstallEnabled" @@ -101,6 +103,8 @@ implicitPurchaseLoggingEnabled:(BOOL)implicitPurchaseLoggingEnabled smartLoginMenuIconURL:(NSURL *)smartLoginMenuIconURL updateMessage:(NSString *)updateMessage eventBindings:(NSArray *)eventBindings + restrictiveParams:(NSDictionary *)restrictiveParams + AAMRules:(NSDictionary *)AAMRules { if ((self = [super init])) { _appID = [appID copy]; @@ -127,6 +131,8 @@ implicitPurchaseLoggingEnabled:(BOOL)implicitPurchaseLoggingEnabled _smartLoginBookmarkIconURL = [smartLoginBookmarkIconURL copy]; _updateMessage = [updateMessage copy]; _eventBindings = eventBindings; + _restrictiveParams = restrictiveParams; + _AAMRules = AAMRules; _version = FBSDKServerConfigurationVersion; } return self; @@ -212,6 +218,8 @@ implicitPurchaseLoggingEnabled:(BOOL)implicitPurchaseLoggingEnabled NSURL *smartLoginMenuIconURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SERVER_CONFIGURATION_SMART_LOGIN_MENU_ICON_URL_KEY]; NSString *updateMessage = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SERVER_CONFIGURATION_UPDATE_MESSAGE_KEY]; NSArray *eventBindings = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_SERVER_CONFIGURATION_EVENT_BINDINGS]; + NSDictionary *restrictiveParams = [decoder decodeObjectOfClass:[NSDictionary class] forKey:FBSDK_SERVER_CONFIGURATION_RESTRICTIVE_PARAMS]; + NSDictionary *AAMRules = [decoder decodeObjectOfClass:[NSDictionary class] forKey:FBSDK_SERVER_CONFIGURATION_AAM_RULES]; NSInteger version = [decoder decodeIntegerForKey:FBSDK_SERVER_CONFIGURATION_VERSION_KEY]; FBSDKServerConfiguration *configuration = [self initWithAppID:appID appName:appName @@ -237,6 +245,8 @@ implicitPurchaseLoggingEnabled:(BOOL)implicitPurchaseLoggingEnabled smartLoginMenuIconURL:smartLoginMenuIconURL updateMessage:updateMessage eventBindings:eventBindings + restrictiveParams:restrictiveParams + AAMRules:AAMRules ]; configuration->_version = version; return configuration; @@ -270,6 +280,8 @@ implicitPurchaseLoggingEnabled:(BOOL)implicitPurchaseLoggingEnabled [encoder encodeObject:_smartLoginMenuIconURL forKey:FBSDK_SERVER_CONFIGURATION_SMART_LOGIN_MENU_ICON_URL_KEY]; [encoder encodeObject:_updateMessage forKey:FBSDK_SERVER_CONFIGURATION_UPDATE_MESSAGE_KEY]; [encoder encodeObject:_eventBindings forKey:FBSDK_SERVER_CONFIGURATION_EVENT_BINDINGS]; + [encoder encodeObject:_restrictiveParams forKey:FBSDK_SERVER_CONFIGURATION_RESTRICTIVE_PARAMS]; + [encoder encodeObject:_AAMRules forKey:FBSDK_SERVER_CONFIGURATION_AAM_RULES]; [encoder encodeInteger:_version forKey:FBSDK_SERVER_CONFIGURATION_VERSION_KEY]; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h index d5b9240..78557e5 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h @@ -21,8 +21,10 @@ #import "FBSDKServerConfiguration.h" #define FBSDK_SERVER_CONFIGURATION_MANAGER_CACHE_TIMEOUT (60 * 60) -typedef void(^FBSDKServerConfigurationManagerLoadBlock)(FBSDKServerConfiguration *serverConfiguration, NSError *error); +typedef void (^FBSDKServerConfigurationBlock)(FBSDKServerConfiguration *serverConfiguration, NSError *error) +NS_SWIFT_NAME(ServerConfigurationBlock); +NS_SWIFT_NAME(ServerConfigurationManager) @interface FBSDKServerConfigurationManager : NSObject /** @@ -38,6 +40,6 @@ typedef void(^FBSDKServerConfigurationManagerLoadBlock)(FBSDKServerConfiguration This method will use a cached configuration if it is valid and not expired. */ -+ (void)loadServerConfigurationWithCompletionBlock:(FBSDKServerConfigurationManagerLoadBlock)completionBlock; ++ (void)loadServerConfigurationWithCompletionBlock:(FBSDKServerConfigurationBlock)completionBlock; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m index 5b0e548..e2cc7e0 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m @@ -27,12 +27,13 @@ #import "FBSDKImageDownloader.h" #import "FBSDKInternalUtility.h" #import "FBSDKLogger.h" +#import "FBSDKRestrictiveDataFilterManager.h" #import "FBSDKServerConfiguration+Internal.h" #import "FBSDKServerConfiguration.h" #import "FBSDKSettings.h" #import "FBSDKTypeUtility.h" -// one hour +// one minute #define DEFAULT_SESSION_TIMEOUT_INTERVAL 60 #define FBSDK_SERVER_CONFIGURATION_USER_DEFAULTS_KEY @"com.facebook.sdk:serverConfiguration%@" @@ -55,6 +56,8 @@ #define FBSDK_SERVER_CONFIGURATION_SMART_LOGIN_MENU_ICON_URL_FIELD @"smart_login_menu_icon_url" #define FBSDK_SERVER_CONFIGURATION_UPDATE_MESSAGE_FIELD @"sdk_update_message" #define FBSDK_SERVER_CONFIGURATION_EVENT_BINDINGS_FIELD @"auto_event_mapping_ios" +#define FBSDK_SERVER_CONFIGURATION_RESTRICTIVE_PARAMS_FIELD @"restrictive_data_filter_params" +#define FBSDK_SERVER_CONFIGURATION_AAM_RULES_FIELD @"aam_rules" @implementation FBSDKServerConfigurationManager @@ -101,16 +104,16 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) NSString *appID = [FBSDKSettings appID]; @synchronized(self) { // load the server configuration if we don't have it already - [self loadServerConfigurationWithCompletionBlock:NULL]; + [self loadServerConfigurationWithCompletionBlock:nil]; // use whatever configuration we have or the default return _serverConfiguration ?: [self _defaultServerConfigurationForAppID:appID]; } } -+ (void)loadServerConfigurationWithCompletionBlock:(FBSDKServerConfigurationManagerLoadBlock)completionBlock ++ (void)loadServerConfigurationWithCompletionBlock:(FBSDKServerConfigurationBlock)completionBlock { - void (^loadBlock)(void) = NULL; + void (^loadBlock)(void) = nil; NSString *appID = [FBSDKSettings appID]; @synchronized(self) { // validate the cached configuration has the correct appID @@ -139,13 +142,12 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) } if (_requeryFinishedForAppStart && - ((_serverConfiguration && [self _serverConfigurationTimestampIsValid:_serverConfiguration.timestamp] && _serverConfiguration.version >= FBSDKServerConfigurationVersion) || - (_serverConfigurationErrorTimestamp && [self _serverConfigurationTimestampIsValid:_serverConfigurationErrorTimestamp]))) { + ((_serverConfiguration && [self _serverConfigurationTimestampIsValid:_serverConfiguration.timestamp] && _serverConfiguration.version >= FBSDKServerConfigurationVersion))) { // we have a valid server configuration, use that loadBlock = [self _wrapperBlockForLoadBlock:completionBlock]; } else { // hold onto the completion block - [FBSDKInternalUtility array:_completionBlocks addObject:[completionBlock copy]]; + [FBSDKBasicUtility array:_completionBlocks addObject:[completionBlock copy]]; // check if we are already loading if (!_loadingServerConfiguration) { @@ -165,12 +167,12 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) } } - if (loadBlock != NULL) { + if (loadBlock) { loadBlock(); } // Fetch app gatekeepers - [FBSDKGateKeeperManager loadGateKeepers]; + [FBSDKGateKeeperManager loadGateKeepers:nil]; } #pragma mark - Internal Class Methods @@ -207,6 +209,8 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) NSURL *smartLoginMenuIconURL = [FBSDKTypeUtility URLValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_SMART_LOGIN_MENU_ICON_URL_FIELD]]; NSString *updateMessage = [FBSDKTypeUtility stringValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_UPDATE_MESSAGE_FIELD]]; NSArray *eventBindings = [FBSDKTypeUtility arrayValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_EVENT_BINDINGS_FIELD]]; + NSDictionary *restrictiveParams = [FBSDKBasicUtility objectForJSONString:resultDictionary[FBSDK_SERVER_CONFIGURATION_RESTRICTIVE_PARAMS_FIELD] error:nil]; + NSDictionary *AAMRules = [FBSDKBasicUtility objectForJSONString:resultDictionary[FBSDK_SERVER_CONFIGURATION_AAM_RULES_FIELD] error:nil]; FBSDKServerConfiguration *serverConfiguration = [[FBSDKServerConfiguration alloc] initWithAppID:appID appName:appName loginTooltipEnabled:loginTooltipEnabled @@ -231,7 +235,12 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) smartLoginMenuIconURL:smartLoginMenuIconURL updateMessage:updateMessage eventBindings:eventBindings + restrictiveParams:restrictiveParams + AAMRules:AAMRules ]; + if (restrictiveParams) { + [FBSDKRestrictiveDataFilterManager updateFilters:restrictiveParams]; + } #if TARGET_OS_TV // don't download icons more than once a day. static const NSTimeInterval kSmartLoginIconsTTL = 60 * 60 * 24; @@ -243,10 +252,10 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) smartLoginBookmarkIconURL) { [[FBSDKImageDownloader sharedInstance] downloadImageWithURL:serverConfiguration.smartLoginBookmarkIconURL ttl:kSmartLoginIconsTTL - completion:NULL]; + completion:nil]; [[FBSDKImageDownloader sharedInstance] downloadImageWithURL:serverConfiguration.smartLoginMenuIconURL ttl:kSmartLoginIconsTTL - completion:NULL]; + completion:nil]; } #endif [self _didProcessConfigurationFromNetwork:serverConfiguration appID:appID error:nil]; @@ -272,7 +281,9 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) FBSDK_SERVER_CONFIGURATION_NATIVE_PROXY_AUTH_FLOW_ENABLED_FIELD, FBSDK_SERVER_CONFIGURATION_SYSTEM_AUTHENTICATION_ENABLED_FIELD, FBSDK_SERVER_CONFIGURATION_SESSION_TIMEOUT_FIELD, - FBSDK_SERVER_CONFIGURATION_LOGGIN_TOKEN_FIELD + FBSDK_SERVER_CONFIGURATION_LOGGIN_TOKEN_FIELD, + FBSDK_SERVER_CONFIGURATION_RESTRICTIVE_PARAMS_FIELD, + FBSDK_SERVER_CONFIGURATION_AAM_RULES_FIELD #if !TARGET_OS_TV ,FBSDK_SERVER_CONFIGURATION_EVENT_BINDINGS_FIELD #endif @@ -342,6 +353,8 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) smartLoginMenuIconURL:nil updateMessage:nil eventBindings:nil + restrictiveParams:nil + AAMRules:nil ]; } return _defaultServerConfiguration; @@ -376,9 +389,13 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) NSString *updateMessage = _serverConfiguration.updateMessage; if (updateMessage && updateMessage.length > 0 && !_printedUpdateMessage) { _printedUpdateMessage = YES; - NSLog(@"%@", updateMessage); + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorInformational logEntry:updateMessage]; } #endif + + if (!_printedUpdateMessage) { + _printedUpdateMessage = _printedUpdateMessage; + } } // update the cached copy in NSUserDefaults @@ -390,7 +407,7 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) } // wrap the completion blocks - for (FBSDKServerConfigurationManagerLoadBlock completionBlock in _completionBlocks) { + for (FBSDKServerConfigurationBlock completionBlock in _completionBlocks) { [completionBlocks addObject:[self _wrapperBlockForLoadBlock:completionBlock]]; } [_completionBlocks removeAllObjects]; @@ -428,10 +445,10 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) return ([[NSDate date] timeIntervalSinceDate:timestamp] < FBSDK_SERVER_CONFIGURATION_MANAGER_CACHE_TIMEOUT); } -+ (void(^)(void))_wrapperBlockForLoadBlock:(FBSDKServerConfigurationManagerLoadBlock)loadBlock ++ (FBSDKCodeBlock)_wrapperBlockForLoadBlock:(FBSDKServerConfigurationBlock)loadBlock { - if (loadBlock == NULL) { - return NULL; + if (!loadBlock) { + return nil; } // create local vars to capture the current values from the ivars to allow this wrapper to be called outside of a lock diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h index 0d7a492..e185132 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h @@ -22,6 +22,7 @@ #import "FBSDKAccessTokenCaching.h" +NS_SWIFT_NAME(AccessTokenCache) @interface FBSDKAccessTokenCache : NSObject @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m index b9acabb..8d1ca02 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m @@ -18,65 +18,82 @@ #import "FBSDKAccessTokenCache.h" -#import "FBSDKAccessTokenCacheV3.h" -#import "FBSDKAccessTokenCacheV3_17.h" -#import "FBSDKAccessTokenCacheV3_21.h" -#import "FBSDKAccessTokenCacheV4.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKKeychainStore.h" -static BOOL g_tryDeprecatedCaches = YES; +static NSString *const kFBSDKAccessTokenUserDefaultsKey = @"com.facebook.sdk.v4.FBSDKAccessTokenInformationKey"; +static NSString *const kFBSDKAccessTokenKeychainKey = @"com.facebook.sdk.v4.FBSDKAccessTokenInformationKeychainKey"; +static NSString *const kFBSDKAccessTokenUUIDKey = @"tokenUUID"; +static NSString *const kFBSDKAccessTokenEncodedKey = @"tokenEncoded"; @implementation FBSDKAccessTokenCache - -- (FBSDKAccessToken*)accessToken { - FBSDKAccessToken *token = [[FBSDKAccessTokenCacheV4 alloc] init].accessToken; - if (token || !g_tryDeprecatedCaches) { - return token; - } + FBSDKKeychainStore *_keychainStore; +} - 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.accessToken; - if (oldToken) { - *stop = YES; - [cache clearCache]; - } - }]; - if (oldToken) { - self.accessToken = oldToken; +- (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 oldToken; + return self; +} + +- (FBSDKAccessToken *)accessToken +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *uuid = [defaults objectForKey:kFBSDKAccessTokenUserDefaultsKey]; + + NSDictionary *dict = [_keychainStore dictionaryForKey:kFBSDKAccessTokenKeychainKey]; + if ([dict[kFBSDKAccessTokenUUIDKey] isKindOfClass:[NSString class]]) { + // there is a bug while running on simulator that the uuid stored in dict can be NSData, + // do a type check to make sure it is NSString + if ([dict[kFBSDKAccessTokenUUIDKey] isEqualToString:uuid]) { + id tokenData = dict[kFBSDKAccessTokenEncodedKey]; + if ([tokenData isKindOfClass:[NSData class]]) { + return [NSKeyedUnarchiver unarchiveObjectWithData:tokenData]; + } + } + } + // 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; } - (void)setAccessToken:(FBSDKAccessToken *)token { - [[FBSDKAccessTokenCacheV4 alloc] init].accessToken = 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]; - }]; + 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:kFBSDKAccessTokenKeychainKey + accessibility:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly]]; } - (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]]; + [_keychainStore setDictionary:nil + forKey:kFBSDKAccessTokenKeychainKey + accessibility:NULL]; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults removeObjectForKey:kFBSDKAccessTokenUserDefaultsKey]; + [defaults synchronize]; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m deleted file mode 100644 index f118b00..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 *)accessToken -{ - // 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)setAccessToken:(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] - dataAccessExpirationDate:nil]; - } - return nil; -} -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m deleted file mode 100644 index 83f2cce..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 *)accessToken -{ - 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)setAccessToken:(FBSDKAccessToken *)token -{ - //no-op. - NSAssert(NO, @"deprecated cache FBSDKAccessTokenCacheV3_17 should not be used to cache a token"); -} - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m deleted file mode 100644 index 6b25f0a..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 *)accessToken -{ - 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)setAccessToken:(FBSDKAccessToken *)token -{ - //no-op. - NSAssert(NO, @"deprecated cache FBSDKAccessTokenCacheV3_21 should not be used to cache a token"); -} - - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m deleted file mode 100644 index 0de90e4..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 kFBSDKAccessTokenKeychainKey = @"com.facebook.sdk.v4.FBSDKAccessTokenInformationKeychainKey"; -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 *)accessToken -{ - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString *uuid = [defaults objectForKey:kFBSDKAccessTokenUserDefaultsKey]; - - NSDictionary *dict = [_keychainStore dictionaryForKey:kFBSDKAccessTokenKeychainKey]; - if ([dict[kFBSDKAccessTokenUUIDKey] isKindOfClass:[NSString class]]) { - // there is a bug while running on simulator that the uuid stored in dict can be NSData, - // do a type check to make sure it is NSString - if ([dict[kFBSDKAccessTokenUUIDKey] isEqualToString:uuid]) { - id tokenData = dict[kFBSDKAccessTokenEncodedKey]; - if ([tokenData isKindOfClass:[NSData class]]) { - return [NSKeyedUnarchiver unarchiveObjectWithData:tokenData]; - } - } - } - // 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; -} - -- (void)setAccessToken:(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:kFBSDKAccessTokenKeychainKey - accessibility:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly]]; -} - -- (void)clearCache -{ - [_keychainStore setDictionary:nil - forKey:kFBSDKAccessTokenKeychainKey - accessibility:NULL]; - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - [defaults removeObjectForKey:kFBSDKAccessTokenUserDefaultsKey]; - [defaults synchronize]; -} -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h index ae780e3..e5595db 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h @@ -20,6 +20,7 @@ @class FBSDKAccessToken; +NS_SWIFT_NAME(AccessTokenCaching) @protocol FBSDKAccessTokenCaching @property (nonatomic, copy) FBSDKAccessToken *accessToken; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.h index 5754037..5b9636d 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(AccessTokenExpirer) @interface FBSDKAccessTokenExpirer : NSObject @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m index 2744439..05cda61 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m @@ -59,8 +59,8 @@ { FBSDKAccessToken *accessToken = FBSDKAccessToken.currentAccessToken; NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:userInfo setObject:accessToken forKey:FBSDKAccessTokenChangeNewKey]; - [FBSDKInternalUtility dictionary:userInfo setObject:accessToken forKey:FBSDKAccessTokenChangeOldKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:accessToken forKey:FBSDKAccessTokenChangeNewKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:accessToken forKey:FBSDKAccessTokenChangeOldKey]; userInfo[FBSDKAccessTokenDidExpireKey] = @YES; [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKAccessTokenDidChangeNotification diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h index a99d5b3..15fc40b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(KeychainStore) @interface FBSDKKeychainStore : NSObject @property (nonatomic, readonly, copy) NSString *service; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m index 81141ad..78bc9d6 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m @@ -1,168 +1,166 @@ -/** - * 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. - */ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF 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 "FBSDKLogger.h" +#import "FBSDKSettings.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"); - } + if ((self = [super init])) { + _service = service ? [service copy] : [NSBundle mainBundle].bundleIdentifier; + _accessGroup = [accessGroup copy]; + NSAssert(_service, @"Keychain must be initialized with service"); + } - return self; + return self; } - (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]; + 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; - } + NSData *data = [self dataForKey:key]; + if (!data) { + return nil; + } - NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data]; - if (![dict isKindOfClass:[NSDictionary class]]) { - return nil; - } + NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data]; + if (![dict isKindOfClass:[NSDictionary class]]) { + return nil; + } - return dict; + 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]; + 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; - } + NSData *data = [self dataForKey:key]; + if (!data) { + return nil; + } - return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; } - (BOOL)setData:(NSData *)value forKey:(NSString *)key accessibility:(CFTypeRef)accessibility { - if (!key) { - return NO; - } + if (!key) { + return NO; + } #if TARGET_OS_SIMULATOR - NSLog(@"Falling back to storing access token in NSUserDefaults because of simulator bug"); - [[NSUserDefaults standardUserDefaults] setObject:value forKey:key]; + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorInformational + logEntry:@"Falling back to storing access token in NSUserDefaults because of simulator bug"]; + [[NSUserDefaults standardUserDefaults] setObject:value forKey:key]; - return [[NSUserDefaults standardUserDefaults] synchronize]; + return [[NSUserDefaults standardUserDefaults] synchronize]; #else - NSMutableDictionary *query = [self queryForKey:key]; + NSMutableDictionary *query = [self queryForKey:key]; - OSStatus status; - if (value) { - NSMutableDictionary *attributesToUpdate = [NSMutableDictionary dictionary]; - [attributesToUpdate setObject:value forKey:[FBSDKDynamicFrameworkLoader loadkSecValueData]]; + 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) { + status = fbsdkdfl_SecItemUpdate((__bridge CFDictionaryRef)query, (__bridge CFDictionaryRef)attributesToUpdate); + if (status == errSecItemNotFound) { #if !TARGET_OS_TV - if (@available(macOS 10.9, iOS 8, *)) { - if (accessibility) { - [query setObject:(__bridge id)(accessibility) forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessible]]; - } + if (@available(macOS 10.9, iOS 8, *)) { + if (accessibility) { + [query setObject:(__bridge id)(accessibility) forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessible]]; } + } #endif - [query setObject:value forKey:[FBSDKDynamicFrameworkLoader loadkSecValueData]]; + [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; - } + status = fbsdkdfl_SecItemAdd((__bridge CFDictionaryRef)query, NULL); } + } else { + status = fbsdkdfl_SecItemDelete((__bridge CFDictionaryRef)query); + if (status == errSecItemNotFound) { + status = errSecSuccess; + } + } - return (status == errSecSuccess); + return (status == errSecSuccess); #endif } - (NSData *)dataForKey:(NSString *)key { - if (!key) { - return nil; - } + if (!key) { + return nil; + } #if TARGET_OS_SIMULATOR - NSLog(@"Falling back to loading access token from NSUserDefaults because of simulator bug"); - return [[NSUserDefaults standardUserDefaults] dataForKey:key]; + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorInformational + logEntry:@"Falling back to loading access token from NSUserDefaults because of simulator bug"]; + return [[NSUserDefaults standardUserDefaults] dataForKey:key]; #else - NSMutableDictionary *query = [self queryForKey:key]; - [query setObject:(id)kCFBooleanTrue forKey:[FBSDKDynamicFrameworkLoader loadkSecReturnData]]; - [query setObject:[FBSDKDynamicFrameworkLoader loadkSecMatchLimitOne] forKey:[FBSDKDynamicFrameworkLoader loadkSecMatchLimit]]; + 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; - } + CFTypeRef data = nil; + OSStatus status = fbsdkdfl_SecItemCopyMatching((__bridge CFDictionaryRef)query, &data); + if (status != errSecSuccess) { + return nil; + } - if (!data || CFGetTypeID(data) != CFDataGetTypeID()) { - return nil; - } + if (!data || CFGetTypeID(data) != CFDataGetTypeID()) { + return nil; + } - NSData *ret = [NSData dataWithData:(__bridge NSData *)(data)]; - CFRelease(data); + NSData *ret = [NSData dataWithData:(__bridge NSData *)(data)]; + CFRelease(data); - return ret; + return ret; #endif } - (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]]; + 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]]; - } + if (_accessGroup) { + [query setObject:_accessGroup forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessGroup]]; + } #endif - return query; + return query; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h index 0a0fb86..85ae2d0 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h @@ -20,6 +20,7 @@ // 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. +NS_SWIFT_NAME(KeychainStoreViaBundleID) @interface FBSDKKeychainStoreViaBundleID : FBSDKKeychainStore // since this subclass represents the old keychainstore behavior, diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m index 78ed26f..6fdc12b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m @@ -41,7 +41,7 @@ query[(__bridge id)[FBSDKDynamicFrameworkLoader loadkSecAttrGeneric]] = key; #if !TARGET_IPHONE_SIMULATOR - [FBSDKInternalUtility dictionary:query setObject:self.accessGroup forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessGroup]]; + [FBSDKBasicUtility dictionary:query setObject:self.accessGroup forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessGroup]]; #endif return query; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h index cd5afc8..ccddaba 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h @@ -22,6 +22,7 @@ #import "FBSDKIcon.h" +NS_SWIFT_NAME(FBButtonImpressionTracking) @protocol FBSDKButtonImpressionTracking @property (nonatomic, readonly, copy) NSDictionary *analyticsParameters; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h index ec55385..660b73f 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(FBCloseIcon) @interface FBSDKCloseIcon : NSObject - (UIImage *)imageWithSize:(CGSize)size; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h index 5be3445..ca78c86 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(Icon) @interface FBSDKIcon : NSObject - (instancetype)initWithColor:(UIColor *)color NS_DESIGNATED_INITIALIZER; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h index 76affe6..b7432a6 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h @@ -20,6 +20,7 @@ #import "FBSDKIcon.h" +NS_SWIFT_NAME(FBLogo) @interface FBSDKLogo : FBSDKIcon @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m index 47d0dc4..f13364f 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m @@ -22,38 +22,50 @@ - (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); + CGFloat originalCanvasWidth = 1366; + CGFloat originalCanvasHeight = 1366; + + CGAffineTransform transformValue = CGAffineTransformMakeScale(size.width / originalCanvasWidth, size.height / originalCanvasHeight); + + UIBezierPath* path = [UIBezierPath bezierPath]; + [path moveToPoint: CGPointMake(1365.33, 682.67)]; + [path addCurveToPoint: CGPointMake(682.67, -0) + controlPoint1: CGPointMake(1365.33, 305.64) + controlPoint2: CGPointMake(1059.69, -0)]; + [path addCurveToPoint: CGPointMake(0, 682.67) + controlPoint1: CGPointMake(305.64, -0) + controlPoint2: CGPointMake(0, 305.64)]; + [path addCurveToPoint: CGPointMake(576, 1357.04) + controlPoint1: CGPointMake(0, 1023.41) + controlPoint2: CGPointMake(249.64, 1305.83)]; + [path addLineToPoint: CGPointMake(576, 880)]; + [path addLineToPoint: CGPointMake(402.67, 880)]; + [path addLineToPoint: CGPointMake(402.67, 682.67)]; + [path addLineToPoint: CGPointMake(576, 682.67)]; + [path addLineToPoint: CGPointMake(576, 532.27)]; + [path addCurveToPoint: CGPointMake(833.85, 266.67) + controlPoint1: CGPointMake(576, 361.17) + controlPoint2: CGPointMake(677.92, 266.67)]; + [path addCurveToPoint: CGPointMake(986.67, 280) + controlPoint1: CGPointMake(908.54, 266.67) + controlPoint2: CGPointMake(986.67, 280)]; + [path addLineToPoint: CGPointMake(986.67, 448)]; + [path addLineToPoint: CGPointMake(900.58, 448)]; + [path addCurveToPoint: CGPointMake(789.33, 554.61) + controlPoint1: CGPointMake(815.78, 448) + controlPoint2: CGPointMake(789.33, 500.62)]; + [path addLineToPoint: CGPointMake(789.33, 682.67)]; + [path addLineToPoint: CGPointMake(978.67, 682.67)]; + [path addLineToPoint: CGPointMake(948.4, 880)]; + [path addLineToPoint: CGPointMake(789.33, 880)]; + [path addLineToPoint: CGPointMake(789.33, 1357.04)]; + [path addCurveToPoint: CGPointMake(1365.33, 682.67) + controlPoint1: CGPointMake(1115.69, 1305.83) + controlPoint2: CGPointMake(1365.33, 1023.41)]; + [path closePath]; + [path applyTransform:transformValue]; + + return [path CGPath]; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h index 1a44797..2dbea5e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h @@ -20,6 +20,7 @@ #import "FBSDKIcon.h" +NS_SWIFT_NAME(FBMaleSilhouetteIcon) @interface FBSDKMaleSilhouetteIcon : FBSDKIcon @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h index 111758a..dfa0233 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h @@ -18,8 +18,6 @@ #import -#import "FBSDKMath.h" - /** Insets a CGSize with the insets in a UIEdgeInsets. */ @@ -70,10 +68,10 @@ static inline CGSize FBSDKTextSize(NSString *text, NSParagraphStyleAttributeName: paragraphStyle, }; NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:text attributes:attributes]; - CGSize size = [FBSDKMath ceilForSize:[attributedString boundingRectWithSize:constrainedSize - options:(NSStringDrawingUsesDeviceMetrics | - NSStringDrawingUsesLineFragmentOrigin | - NSStringDrawingUsesFontLeading) - context:NULL].size]; - return [FBSDKMath ceilForSize:size]; + CGSize size = [attributedString boundingRectWithSize:constrainedSize + options:(NSStringDrawingUsesDeviceMetrics | + NSStringDrawingUsesLineFragmentOrigin | + NSStringDrawingUsesFontLeading) + context:NULL].size; + return CGSizeMake(ceilf(size.width), ceilf(size.height)); } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h index f280228..d69ee86 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(ViewImpressionTracker) @interface FBSDKViewImpressionTracker : NSObject + (instancetype)impressionTrackerWithEventName:(NSString *)eventName; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m index 4f95ad7..f20f584 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m @@ -79,9 +79,9 @@ } [_trackedImpressions addObject:impressionKey]; - [FBSDKAppEvents logImplicitEvent:self.eventName - valueToSum:nil + [FBSDKAppEvents logInternalEvent:self.eventName parameters:parameters + isImplicitlyLogged:YES accessToken:[FBSDKAccessToken currentAccessToken]]; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h index 84dcd62..6775276 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h @@ -18,15 +18,17 @@ #import +NS_SWIFT_NAME(WebDialogDelegate) @protocol FBSDKWebDialogDelegate; +NS_SWIFT_NAME(WebDialog) @interface FBSDKWebDialog : NSObject + (instancetype)showWithName:(NSString *)name parameters:(NSDictionary *)parameters delegate:(id)delegate; -@property (nonatomic, assign) BOOL deferVisibility; +@property (nonatomic, assign, getter=shouldDeferVisibility) BOOL deferVisibility; @property (nonatomic, weak) id delegate; @property (nonatomic, copy) NSString *name; @property (nonatomic, copy) NSDictionary *parameters; @@ -35,6 +37,7 @@ @end +NS_SWIFT_NAME(WebDialogDelegate) @protocol FBSDKWebDialogDelegate - (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m index aa177b3..aec996b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m @@ -29,6 +29,8 @@ #define FBSDK_WEB_DIALOG_SHOW_ANIMATION_DURATION 0.2 #define FBSDK_WEB_DIALOG_DISMISS_ANIMATION_DURATION 0.3 +typedef void (^FBSDKBoolBlock)(BOOL finished); + static FBSDKWebDialog *g_currentDialog = nil; @interface FBSDKWebDialog () @@ -216,10 +218,10 @@ static FBSDKWebDialog *g_currentDialog = nil; 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"]; + [FBSDKBasicUtility dictionary:parameters setObject:[FBSDKSettings appID] forKey:@"app_id"]; + [FBSDKBasicUtility dictionary:parameters + setObject:[FBSDKAccessToken currentAccessToken].tokenString + forKey:@"access_token"]; [parameters addEntriesFromDictionary:self.parameters]; return [FBSDKInternalUtility facebookURLWithHostPrefix:@"m" path:[@"/dialog/" stringByAppendingString:self.name] @@ -314,7 +316,7 @@ static FBSDKWebDialog *g_currentDialog = nil; - (void)_updateViewsWithScale:(CGFloat)scale alpha:(CGFloat)alpha animationDuration:(CFTimeInterval)animationDuration - completion:(void(^)(BOOL finished))completion + completion:(FBSDKBoolBlock)completion { CGAffineTransform transform; CGRect applicationFrame = [self _applicationFrameForOrientation]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h index 08f17f6..bcb67ee 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h @@ -20,6 +20,7 @@ @protocol FBSDKWebDialogViewDelegate; +NS_SWIFT_NAME(FBWebDialogView) @interface FBSDKWebDialogView : UIView @property (nonatomic, weak) id delegate; @@ -29,6 +30,7 @@ @end +NS_SWIFT_NAME(WebDialogViewDelegate) @protocol FBSDKWebDialogViewDelegate - (void)webDialogView:(FBSDKWebDialogView *)webDialogView didCompleteWithResults:(NSDictionary *)results; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m index 2836daf..ad21e79 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m @@ -18,21 +18,23 @@ #import "FBSDKWebDialogView.h" +#import + #import "FBSDKCloseIcon.h" #import "FBSDKError.h" +#import "FBSDKInternalUtility.h" #import "FBSDKTypeUtility.h" -#import "FBSDKUtility.h" #define FBSDK_WEB_DIALOG_VIEW_BORDER_WIDTH 10.0 -@interface FBSDKWebDialogView () +@interface FBSDKWebDialogView () @end @implementation FBSDKWebDialogView { UIButton *_closeButton; UIActivityIndicatorView *_loadingView; - UIWebView *_webView; + WKWebView *_webView; } #pragma mark - Object Lifecycle @@ -43,8 +45,8 @@ self.backgroundColor = [UIColor clearColor]; self.opaque = NO; - _webView = [[UIWebView alloc] initWithFrame:CGRectZero]; - _webView.delegate = self; + _webView = [[WKWebView alloc] initWithFrame:CGRectZero]; + _webView.navigationDelegate = self; [self addSubview:_webView]; _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -69,7 +71,7 @@ - (void)dealloc { - _webView.delegate = nil; + _webView.navigationDelegate = nil; } #pragma mark - Public Methods @@ -137,9 +139,9 @@ [_delegate webDialogViewDidCancel:self]; } -#pragma mark - UIWebViewDelegate +#pragma mark - WKNavigationDelegate -- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error +- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error { [_loadingView stopAnimating]; @@ -154,20 +156,20 @@ } } -- (BOOL)webView:(UIWebView *)webView -shouldStartLoadWithRequest:(NSURLRequest *)request - navigationType:(UIWebViewNavigationType)navigationType +- (void)webView:(WKWebView *)webView +decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction +decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { - NSURL *URL = request.URL; + NSURL *URL = navigationAction.request.URL; if ([URL.scheme isEqualToString:@"fbconnect"]) { - NSMutableDictionary *parameters = [[FBSDKUtility dictionaryWithQueryString:URL.query] mutableCopy]; - [parameters addEntriesFromDictionary:[FBSDKUtility dictionaryWithQueryString:URL.fragment]]; + NSMutableDictionary *parameters = [[FBSDKBasicUtility dictionaryWithQueryString:URL.query] mutableCopy]; + [parameters addEntriesFromDictionary:[FBSDKBasicUtility 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 = [NSError fbErrorWithCode:errorCode message:errorMessage]; + NSError *error = [FBSDKError errorWithCode:errorCode message:errorMessage]; [_delegate webDialogView:self didFailWithError:error]; } else { [_delegate webDialogViewDidCancel:self]; @@ -175,16 +177,16 @@ shouldStartLoadWithRequest:(NSURLRequest *)request } else { [_delegate webDialogView:self didCompleteWithResults:parameters]; } - return NO; - } else if (navigationType == UIWebViewNavigationTypeLinkClicked) { - [[UIApplication sharedApplication] openURL:request.URL]; - return NO; + decisionHandler(WKNavigationActionPolicyCancel); + } else if (navigationAction.navigationType == WKNavigationTypeLinkActivated) { + [[UIApplication sharedApplication] openURL:URL]; + decisionHandler(WKNavigationActionPolicyCancel); } else { - return YES; + decisionHandler(WKNavigationActionPolicyAllow); } } -- (void)webViewDidFinishLoad:(UIWebView *)webView +- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation { [_loadingView stopAnimating]; [_delegate webDialogViewDidFinishLoad:self]; diff --git a/Example/Pods/FBSDKCoreKit/FacebookSDKStrings.bundle/Resources/en.lproj/FacebookSDK.strings b/Example/Pods/FBSDKCoreKit/FacebookSDKStrings.bundle/Resources/en.lproj/FacebookSDK.strings index 12df4c275792fe04c2ab437261b7966f76abe8c4..6e6afcf99e603fd0b74b8a0f3993f56dc68ff4a9 100644 GIT binary patch delta 16 YcmbQ>{=j*|H;%~@c*HjE;kqIL07B9SQvd(} delta 228 zcmaFhJi&d#HxAZJhHQq^$^5*ElKBit3|S1R49N^73 +Please report bugs or issues to our designated developer support team -- -- as this will help us resolve them more quickly. -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) +You can also visit our [Facebook Developer Community Forum](https://developers.facebook.com/community/), +join the [Facebook Developers Group on Facebook](https://www.facebook.com/groups/fbdevelopers/), +ask questions on [Stack Overflow](http://facebook.stackoverflow.com), +or open an issue in this repository. ## LICENSE diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h index 52c1de7..36665b9 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h @@ -24,6 +24,7 @@ NS_ASSUME_NONNULL_BEGIN @abstract Describes the initial response when starting the device login flow. @discussion This is used by `FBSDKDeviceLoginManager`. */ +NS_SWIFT_NAME(DeviceLoginCodeInfo) @interface FBSDKDeviceLoginCodeInfo : NSObject /*! diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m index edb94b3..4f22fce 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m @@ -20,7 +20,7 @@ @implementation FBSDKDeviceLoginCodeInfo -- (instancetype) initWithIdentifier:(NSString *)identifier +- (instancetype)initWithIdentifier:(NSString *)identifier loginCode:(NSString *)loginCode verificationURL:(NSURL *)verificationURL expirationDate:(NSDate *)expirationDate diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h index 3f6f036..1eca082 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h @@ -28,6 +28,7 @@ NS_ASSUME_NONNULL_BEGIN /*! @abstract A delegate for `FBSDKDeviceLoginManager`. */ +NS_SWIFT_NAME(DeviceLoginManagerDelegate) @protocol FBSDKDeviceLoginManagerDelegate /*! @@ -36,7 +37,8 @@ NS_ASSUME_NONNULL_BEGIN @param loginManager the login manager instance. @param codeInfo the code info data. */ -- (void)deviceLoginManager:(FBSDKDeviceLoginManager *)loginManager startedWithCodeInfo:(FBSDKDeviceLoginCodeInfo *)codeInfo; +- (void)deviceLoginManager:(FBSDKDeviceLoginManager *)loginManager + startedWithCodeInfo:(FBSDKDeviceLoginCodeInfo *)codeInfo; /*! @abstract Indicates the device login flow has finished. @@ -60,13 +62,14 @@ NS_ASSUME_NONNULL_BEGIN See [Facebook Device Login](https://developers.facebook.com/docs/facebook-login/for-devices). */ +NS_SWIFT_NAME(DeviceLoginManager) @interface FBSDKDeviceLoginManager : NSObject /*! @abstract Initializes a new instance. @param permissions permissions to request. */ -- (instancetype)initWithPermissions:(nullable NSArray *)permissions +- (instancetype)initWithPermissions:(NSArray *)permissions enableSmartLogin:(BOOL)enableSmartLogin NS_DESIGNATED_INITIALIZER; @@ -81,7 +84,7 @@ NS_DESIGNATED_INITIALIZER; /*! @abstract the requested permissions. */ -@property (nullable, nonatomic, copy, readonly) NSArray *permissions; +@property (nonatomic, copy, readonly) NSArray *permissions; /*! @abstract the optional URL to redirect the user to after they complete the login. diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m index f293c26..bd09b2e 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m @@ -21,7 +21,11 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKDeviceLoginCodeInfo+Internal.h" #import "FBSDKLoginConstants.h" @@ -130,27 +134,30 @@ static NSMutableArray *g_loginManagerInstances; !userID || !permissionResult) { #if TARGET_TV_OS - NSError *wrappedError = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKErrorTVOSUnknown - message:@"Unable to fetch permissions for token" - underlyingError:error]; + NSError *wrappedError = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKErrorTVOSUnknown + message:@"Unable to fetch permissions for token" + underlyingError:error]; #else - NSError *wrappedError = [NSError fbErrorWithDomain:FBSDKLoginErrorDomain - code:FBSDKErrorUnknown - message:@"Unable to fetch permissions for token" - underlyingError:error]; + NSError *wrappedError = [FBSDKError errorWithDomain:FBSDKLoginErrorDomain + code:FBSDKErrorUnknown + message:@"Unable to fetch permissions for token" + underlyingError:error]; #endif [self _notifyError:wrappedError]; } else { NSMutableSet *permissions = [NSMutableSet set]; NSMutableSet *declinedPermissions = [NSMutableSet set]; + NSMutableSet *expiredPermissions = [NSMutableSet set]; [FBSDKInternalUtility extractPermissionsFromResponse:permissionResult grantedPermissions:permissions - declinedPermissions:declinedPermissions]; + declinedPermissions:declinedPermissions + expiredPermissions:expiredPermissions]; FBSDKAccessToken *accessToken = [[FBSDKAccessToken alloc] initWithTokenString:tokenString permissions:permissions.allObjects declinedPermissions:declinedPermissions.allObjects + expiredPermissions:expiredPermissions.allObjects appID:[FBSDKSettings appID] userID:userID expirationDate:nil @@ -212,9 +219,9 @@ static NSMutableArray *g_loginManagerInstances; if (tokenString) { [self _notifyToken:tokenString]; } else { - NSError *unknownError = [NSError fbErrorWithDomain:FBSDKLoginErrorDomain - code:FBSDKErrorUnknown - message:@"Device Login poll failed. No token nor error was found."]; + NSError *unknownError = [FBSDKError errorWithDomain:FBSDKLoginErrorDomain + code:FBSDKErrorUnknown + message:@"Device Login poll failed. No token nor error was found."]; [self _notifyError:unknownError]; } } diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h index ccce552..786f11b 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h @@ -26,6 +26,7 @@ NS_ASSUME_NONNULL_BEGIN @abstract Represents the results of the a device login flow. @discussion This is used by `FBSDKDeviceLoginManager`. */ +NS_SWIFT_NAME(DeviceLoginManagerResult) @interface FBSDKDeviceLoginManagerResult : NSObject /*! diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h index afa4029..577d636 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h @@ -24,6 +24,8 @@ #import "FBSDKTooltipView.h" +NS_ASSUME_NONNULL_BEGIN + @protocol FBSDKLoginButtonDelegate; /** @@ -40,7 +42,7 @@ typedef NS_ENUM(NSUInteger, FBSDKLoginButtonTooltipBehavior) /** Force disable. In this case you can still exert more refined control by manually constructing a `FBSDKLoginTooltipView` instance. */ FBSDKLoginButtonTooltipBehaviorDisable = 2 -}; +} NS_SWIFT_NAME(FBLoginButton.TooltipBehavior); /** A button that initiates a log in or log out flow upon tapping. @@ -55,6 +57,7 @@ typedef NS_ENUM(NSUInteger, FBSDKLoginButtonTooltipBehavior) `FBSDKLoginButton` has a fixed height of @c 30 pixels, but you may change the width. `initWithFrame:CGRectZero` will size the button to its minimum frame. */ +NS_SWIFT_NAME(FBLoginButton) @interface FBSDKLoginButton : FBSDKButton /** @@ -68,24 +71,20 @@ typedef NS_ENUM(NSUInteger, FBSDKLoginButtonTooltipBehavior) /** Gets or sets the login behavior to use */ -@property (assign, nonatomic) FBSDKLoginBehavior loginBehavior; -/** - The publish permissions to request. +@property (assign, nonatomic) FBSDKLoginBehavior loginBehavior +DEPRECATED_MSG_ATTRIBUTE("All login flows utilize the browser. This will be removed in the next major release"); +/*! + @abstract The permissions to request. + @discussion To provide the best experience, you should minimize the number of permissions you request, and only ask for them when needed. + For example, do not ask for "user_location" until you the information is actually used by the app. - 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; -/** - The read permissions to request. - - 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. + See [the permissions guide]( https://developers.facebook.com/docs/facebook-login/permissions/ ) for more details. */ -@property (copy, nonatomic) NSArray *readPermissions; +@property (copy, nonatomic) NSArray *permissions; /** Gets or sets the desired tooltip behavior. */ @@ -101,6 +100,7 @@ typedef NS_ENUM(NSUInteger, FBSDKLoginButtonTooltipBehavior) @protocol A delegate for `FBSDKLoginButton` */ +NS_SWIFT_NAME(LoginButtonDelegate) @protocol FBSDKLoginButtonDelegate @required @@ -111,8 +111,8 @@ typedef NS_ENUM(NSUInteger, FBSDKLoginButtonTooltipBehavior) @param error The error (if any) from the login */ - (void)loginButton:(FBSDKLoginButton *)loginButton -didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result - error:(NSError *)error; +didCompleteWithResult:(nullable FBSDKLoginManagerLoginResult *)result + error:(nullable NSError *)error; /** Sent to the delegate when the button was used to logout. @@ -129,3 +129,5 @@ didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result - (BOOL)loginButtonWillLogin:(FBSDKLoginButton *)loginButton; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m index 672f70b..73a81b3 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m @@ -18,7 +18,11 @@ #import "FBSDKLoginButton.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKLoginTooltipView.h" static const CGFloat kFBLogoSize = 16.0; @@ -69,12 +73,13 @@ static const CGFloat kPaddingBetweenLogoTitle = 8.0; - (UIFont *)defaultFont { - return [UIFont systemFontOfSize:13]; -} + CGFloat size = 15; -- (UIColor *)backgroundColor -{ - return [UIColor colorWithRed:66.0/255.0 green:103.0/255.0 blue:178.0/255.0 alpha:1.0]; + if (@available(iOS 8.2, *)) { + return [UIFont systemFontOfSize:size weight:UIFontWeightSemibold]; + } else { + return [UIFont boldSystemFontOfSize:size]; + } } #pragma mark - UIView @@ -184,7 +189,7 @@ static const CGFloat kPaddingBetweenLogoTitle = 8.0; toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 - constant:28]]; + constant:kButtonHeight]]; [self _updateContent]; [self addTarget:self action:@selector(_buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; @@ -206,7 +211,7 @@ static const CGFloat kPaddingBetweenLogoTitle = 8.0; - (void)_buttonPressed:(id)sender { [self logTapEventWithEventName:FBSDKAppEventNameFBSDKLoginButtonDidTap parameters:self.analyticsParameters]; - if ([FBSDKAccessToken currentAccessTokenIsActive]) { + if (FBSDKAccessToken.isCurrentAccessTokenActive) { NSString *title = nil; if (_userName) { @@ -257,21 +262,16 @@ static const CGFloat kPaddingBetweenLogoTitle = 8.0; } } - FBSDKLoginManagerRequestTokenHandler handler = ^(FBSDKLoginManagerLoginResult *result, NSError *error) { + FBSDKLoginManagerLoginResultBlock 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]; - } + [_loginManager logInWithPermissions:self.permissions + fromViewController:[FBSDKInternalUtility viewControllerForView:self] + handler:handler]; + } } @@ -312,7 +312,7 @@ static const CGFloat kPaddingBetweenLogoTitle = 8.0; - (void)_updateContent { - BOOL accessTokenIsValid = [FBSDKAccessToken currentAccessTokenIsActive]; + BOOL accessTokenIsValid = FBSDKAccessToken.isCurrentAccessTokenActive; self.selected = accessTokenIsValid; if (accessTokenIsValid) { if (![[FBSDKAccessToken currentAccessToken].userID isEqualToString:_userID]) { diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h index bcbf9d6..471bfdc 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 /** @@ -25,7 +27,8 @@ Error codes from the SDK in the range 300-399 are reserved for this domain. */ -FOUNDATION_EXPORT NSErrorDomain const FBSDKLoginErrorDomain; +FOUNDATION_EXPORT NSErrorDomain const FBSDKLoginErrorDomain +NS_SWIFT_NAME(LoginErrorDomain); #else @@ -34,7 +37,8 @@ FOUNDATION_EXPORT NSErrorDomain const FBSDKLoginErrorDomain; Error codes from the SDK in the range 300-399 are reserved for this domain. */ -FOUNDATION_EXPORT NSString *const FBSDKLoginErrorDomain; +FOUNDATION_EXPORT NSString *const FBSDKLoginErrorDomain +NS_SWIFT_NAME(LoginErrorDomain); #endif @@ -54,6 +58,7 @@ typedef NS_ERROR_ENUM(FBSDKLoginErrorDomain, FBSDKLoginError) Reserved. */ FBSDKLoginErrorReserved = 300, + /** The error code for unknown errors. */ @@ -63,14 +68,17 @@ typedef NS_ERROR_ENUM(FBSDKLoginErrorDomain, FBSDKLoginError) The user's password has changed and must log in again */ FBSDKLoginErrorPasswordChanged, + /** The user must log in to their account on www.facebook.com to restore access */ FBSDKLoginErrorUserCheckpointed, + /** Indicates a failure to request new permissions because the user has changed. */ FBSDKLoginErrorUserMismatch, + /** The user must confirm their account with Facebook before logging in */ @@ -82,15 +90,17 @@ typedef NS_ERROR_ENUM(FBSDKLoginErrorDomain, FBSDKLoginError) been disabled. */ FBSDKLoginErrorSystemAccountAppDisabled, + /** An error occurred related to Facebook system Account store */ FBSDKLoginErrorSystemAccountUnavailable, + /** The login response was missing a valid challenge string. */ FBSDKLoginErrorBadChallengeString, -}; +} NS_SWIFT_NAME(LoginError); /** FBSDKDeviceLoginError @@ -113,30 +123,6 @@ typedef NS_ERROR_ENUM(FBSDKLoginErrorDomain, FBSDKDeviceLoginError) { The code you entered has expired. */ FBSDKDeviceLoginErrorCodeExpired = 1349152 -}; +} NS_SWIFT_NAME(DeviceLoginError); -/** - Deprecated - */ -typedef NS_ENUM(NSInteger, FBSDKLoginErrorCode) -{ - FBSDKLoginReservedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginErrorReserved instead") = FBSDKLoginErrorReserved, - FBSDKLoginUnknownErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginErrorUnknown instead"), - FBSDKLoginPasswordChangedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginErrorPasswordChanged instead"), - FBSDKLoginUserCheckpointedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginErrorUserCheckpointed instead"), - FBSDKLoginUserMismatchErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginErrorUserMismatch instead"), - FBSDKLoginUnconfirmedUserErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginErrorUnconfirmedUser instead"), - FBSDKLoginSystemAccountAppDisabledErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginErrorSystemAccountAppDisabled instead"), - FBSDKLoginSystemAccountUnavailableErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginErrorSystemAccountUnavailable instead"), - FBSDKLoginBadChallengeString DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginErrorBadChallengeString instead"), -} DEPRECATED_MSG_ATTRIBUTE("use FBSDKLoginError instead"); - -/** - Deprecated - */ -typedef NS_ENUM(NSUInteger, FBSDKDeviceLoginErrorSubcode) { - FBSDKDeviceLoginExcessivePollingErrorSubcode DEPRECATED_MSG_ATTRIBUTE("use FBSDKDeviceLoginErrorExcessivePolling instead") = FBSDKDeviceLoginErrorExcessivePolling, - FBSDKDeviceLoginAuthorizationDeclinedErrorSubcode DEPRECATED_MSG_ATTRIBUTE("use FBSDKDeviceLoginErrorAuthorizationDeclined instead") = FBSDKDeviceLoginErrorAuthorizationDeclined, - FBSDKDeviceLoginAuthorizationPendingErrorSubcode DEPRECATED_MSG_ATTRIBUTE("use FBSDKDeviceLoginErrorAuthorizationPending instead") = FBSDKDeviceLoginErrorAuthorizationPending, - FBSDKDeviceLoginCodeExpiredErrorSubcode DEPRECATED_MSG_ATTRIBUTE("use FBSDKDeviceLoginErrorCodeExpired instead") = FBSDKDeviceLoginErrorCodeExpired -} DEPRECATED_MSG_ATTRIBUTE("use FBSDKDeviceLoginError instead"); +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h index 7b579d0..78a7b06 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h @@ -16,18 +16,30 @@ // IN AN ACTION OF 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 +NS_ASSUME_NONNULL_BEGIN + @class FBSDKLoginManagerLoginResult; +/// typedef for FBSDKLoginAuthType +typedef NSString *const FBSDKLoginAuthType NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(LoginAuthType); + +/// Rerequest +FOUNDATION_EXPORT FBSDKLoginAuthType FBSDKLoginAuthTypeRerequest; + +/// Reauthorize +FOUNDATION_EXPORT FBSDKLoginAuthType FBSDKLoginAuthTypeReauthorize; + /** 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 void (^FBSDKLoginManagerLoginResultBlock)(FBSDKLoginManagerLoginResult *_Nullable result, + NSError *_Nullable error) +NS_SWIFT_NAME(LoginManagerLoginResultBlock); /** @@ -50,7 +62,7 @@ typedef NS_ENUM(NSUInteger, FBSDKDefaultAudience) FBSDKDefaultAudienceOnlyMe, /** Indicates that all Facebook users are able to see posts made by the application */ FBSDKDefaultAudienceEveryone, -}; +} NS_SWIFT_NAME(DefaultAudience); /** FBSDKLoginBehavior enum @@ -72,29 +84,12 @@ typedef NS_ENUM(NSUInteger, FBSDKDefaultAudience) typedef NS_ENUM(NSUInteger, FBSDKLoginBehavior) { /** - This is the default behavior, and indicates logging in through the native - Facebook app may be used. The SDK may still use Safari instead. + This is the default behavior, and indicates logging in via ASWebAuthenticationSession (iOS 12+) or SFAuthenticationSession (iOS 11), + which present specialized SafariViewControllers. Falls back to plain SFSafariViewController (iOS 9 and 10) or Safari (iOS 8). */ - FBSDKLoginBehaviorNative = 0, - /** - Attempts log in through the Safari or SFSafariViewController, if available. - */ - FBSDKLoginBehaviorBrowser, - /** - 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, - /** - Attempts 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, -}; + FBSDKLoginBehaviorBrowser = 0, +} NS_SWIFT_NAME(LoginBehavior) +DEPRECATED_MSG_ATTRIBUTE("All login flows utilize the browser. This will be removed in the next major release"); /** `FBSDKLoginManager` provides methods for logging the user in and out. @@ -108,12 +103,13 @@ typedef NS_ENUM(NSUInteger, FBSDKLoginBehavior) If you are managing your own token instances outside of "currentAccessToken", you will need to set "currentAccessToken" before calling logIn* to authorize further permissions on your tokens. */ +NS_SWIFT_NAME(LoginManager) @interface FBSDKLoginManager : NSObject /** Auth type */ -@property (strong, nonatomic) NSString *authType; +@property (strong, nonatomic) FBSDKLoginAuthType authType; /** the default audience. @@ -124,53 +120,18 @@ typedef NS_ENUM(NSUInteger, FBSDKLoginBehavior) /** the login behavior */ -@property (assign, nonatomic) FBSDKLoginBehavior loginBehavior; +@property (assign, nonatomic) FBSDKLoginBehavior loginBehavior +DEPRECATED_MSG_ATTRIBUTE("All login flows utilize the browser. This will be removed in the next major release"); /** - -@warning use logInWithReadPermissions:fromViewController:handler: instead - */ -- (void)logInWithReadPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler -DEPRECATED_MSG_ATTRIBUTE("use logInWithReadPermissions:fromViewController:handler: instead"); - -/** - -@warning use logInWithPublishPermissions:fromViewController:handler: instead - */ -- (void)logInWithPublishPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler -DEPRECATED_MSG_ATTRIBUTE("use logInWithPublishPermissions:fromViewController:handler: instead"); - -/** - 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. - - 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. - - 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. - You can only do one login call at a time. Calling a login method before the completion handler is called - on a previous login will return an error. - */ -- (void)logInWithReadPermissions:(NSArray *)permissions - fromViewController:(UIViewController *)fromViewController - handler:(FBSDKLoginManagerRequestTokenHandler)handler; - -/** - Logs the user in or authorizes additional permissions. + 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. - Use this method when asking for publish permissions. You should only ask for permissions when they + 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. @@ -180,10 +141,10 @@ DEPRECATED_MSG_ATTRIBUTE("use logInWithPublishPermissions:fromViewController:han You can only do one login call at a time. Calling a login method before the completion handler is called on a previous login will return an error. */ -- (void)logInWithPublishPermissions:(NSArray *)permissions - fromViewController:(UIViewController *)fromViewController - handler:(FBSDKLoginManagerRequestTokenHandler)handler; - +- (void)logInWithPermissions:(NSArray *)permissions + fromViewController:(nullable UIViewController *)fromViewController + handler:(nullable FBSDKLoginManagerLoginResultBlock)handler +NS_SWIFT_NAME(logIn(permissions:from:handler:)); /** Requests user's permission to reathorize application's data access, after it has expired due to inactivity. @@ -197,7 +158,8 @@ DEPRECATED_MSG_ATTRIBUTE("use logInWithPublishPermissions:fromViewController:han This method will present UI the user. You typically should call this if `[FBSDKAccessToken isDataAccessExpired]` returns true. */ - (void)reauthorizeDataAccess:(UIViewController *)fromViewController - handler:(FBSDKLoginManagerRequestTokenHandler)handler; + handler:(FBSDKLoginManagerLoginResultBlock)handler +NS_SWIFT_NAME(reauthorizeDataAccess(from:handler:)); /** Logs the user out @@ -206,22 +168,6 @@ DEPRECATED_MSG_ATTRIBUTE("use logInWithPublishPermissions:fromViewController:han */ - (void)logOut; -/** - @method - - Issues an asynchronous 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. - - - 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 + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m index dfd443e..4f38ed5 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m @@ -21,9 +21,13 @@ #import #import +#ifdef COCOAPODS +#import +#else +#import "FBSDKCoreKit+Internal.h" +#endif #import "_FBSDKLoginRecoveryAttempter.h" -#import "FBSDKCoreKit+Internal.h" #import "FBSDKLoginCompletion.h" #import "FBSDKLoginConstants.h" #import "FBSDKLoginError.h" @@ -36,6 +40,10 @@ static NSString *const FBSDKOauthPath = @"/dialog/oauth"; static NSString *const SFVCCanceledLogin = @"com.apple.SafariServices.Authentication"; static NSString *const ASCanceledLogin = @"com.apple.AuthenticationServices.WebAuthenticationSession"; +// constants +FBSDKLoginAuthType FBSDKLoginAuthTypeRerequest = @"rerequest"; +FBSDKLoginAuthType FBSDKLoginAuthTypeReauthorize = @"reauthorize"; + typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { FBSDKLoginManagerStateIdle, // We received a call to start login. @@ -46,7 +54,7 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { @implementation FBSDKLoginManager { - FBSDKLoginManagerRequestTokenHandler _handler; + FBSDKLoginManagerLoginResultBlock _handler; FBSDKLoginManagerLogger *_logger; FBSDKLoginManagerState _state; FBSDKKeychainStore *_keychainStore; @@ -65,63 +73,26 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { { self = [super init]; if (self) { - self.authType = @"rerequest"; + self.authType = FBSDKLoginAuthTypeRerequest; 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 +- (void)logInWithPermissions:(NSArray *)permissions + fromViewController:(UIViewController *)fromViewController + handler:(FBSDKLoginManagerLoginResultBlock)handler { if (![self validateLoginStartState]) { return; } - [self assertPermissions:permissions]; - NSSet *permissionSet = [NSSet setWithArray:permissions]; - if (![FBSDKInternalUtility areAllPermissionsReadPermissions:permissionSet]) { - [self raiseLoginException:[NSException exceptionWithName:NSInvalidArgumentException - reason:@"Publish or manage permissions are not permitted to be requested with read permissions." - userInfo:nil]]; - } self.fromViewController = fromViewController; + NSSet *permissionSet = [NSSet setWithArray:permissions]; [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 -{ - if (![self validateLoginStartState]) { - return; - } - [self assertPermissions:permissions]; - NSSet *permissionSet = [NSSet setWithArray:permissions]; - if (![FBSDKInternalUtility areAllPermissionsPublishPermissions:permissionSet]) { - [self raiseLoginException:[NSException exceptionWithName:NSInvalidArgumentException - reason:@"Read permissions are not permitted to be requested with publish or manage permissions." - userInfo:nil]]; - } - self.fromViewController = fromViewController; - [self logInWithPermissions:permissionSet handler:handler]; -} - -- (void)reauthorizeDataAccess:(UIViewController *)fromViewController handler:(FBSDKLoginManagerRequestTokenHandler)handler +- (void)reauthorizeDataAccess:(UIViewController *)fromViewController handler:(FBSDKLoginManagerLoginResultBlock)handler { if (![self validateLoginStartState]) { return; @@ -137,19 +108,6 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { [FBSDKProfile setCurrentProfile:nil]; } -+ (void)renewSystemCredentials:(void (^)(ACAccountCredentialRenewResult result, NSError *error))handler -{ - FBSDKSystemAccountStoreAdapter *adapter = [FBSDKSystemAccountStoreAdapter sharedInstance]; - - if (!adapter.accountType) { - handler(ACAccountCredentialRenewResultFailed, [NSError fbErrorForFailedLoginWithCode:FBSDKLoginErrorSystemAccountUnavailable]); - } else if (!adapter.accountType.accessGranted) { - handler(ACAccountCredentialRenewResultFailed, [NSError fbErrorForFailedLoginWithCode:FBSDKLoginErrorSystemAccountAppDisabled]); - } else { - [[FBSDKSystemAccountStoreAdapter sharedInstance] renewSystemAuthorization:handler]; - } -} - #pragma mark - Private - (void)raiseLoginException:(NSException *)exception @@ -162,8 +120,8 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { { FBSDKLoginManagerLoginResult *result = [[FBSDKLoginManagerLoginResult alloc] initWithToken:nil isCancelled:YES - grantedPermissions:nil - declinedPermissions:nil]; + grantedPermissions:NSSet.set + declinedPermissions:NSSet.set]; [result addLoggingExtra:@YES forKey:@"implicit_cancel"]; [self invokeHandler:result error:nil]; } @@ -258,6 +216,7 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { FBSDKAccessToken *token = [[FBSDKAccessToken alloc] initWithTokenString:tokenString permissions:grantedPermissions.allObjects declinedPermissions:declinedPermissions.allObjects + expiredPermissions:@[] appID:parameters.appID userID:parameters.userID expirationDate:parameters.expirationDate @@ -279,22 +238,14 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { if (cancelled || recentlyGrantedPermissions.count == 0) { NSSet *declinedPermissions = nil; if ([FBSDKAccessToken currentAccessToken] != nil) { - if (parameters.isSystemAccount) { - // 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. - declinedPermissions = parameters.declinedPermissions; - } else { - // Always include the list of declined permissions from this login request - // if an access token is already cached by the SDK - declinedPermissions = recentlyDeclinedPermissions; - } + // Always include the list of declined permissions from this login request + // if an access token is already cached by the SDK + declinedPermissions = recentlyDeclinedPermissions; } result = [[FBSDKLoginManagerLoginResult alloc] initWithToken:nil isCancelled:cancelled - grantedPermissions:nil + grantedPermissions:NSSet.set declinedPermissions:declinedPermissions]; } } @@ -342,7 +293,7 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { _state = FBSDKLoginManagerStateIdle; if (_handler) { - FBSDKLoginManagerRequestTokenHandler handler = _handler; + FBSDKLoginManagerLoginResultBlock handler = _handler; _handler(result, error); if (handler == _handler) { _handler = nil; @@ -366,7 +317,7 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { NSMutableDictionary *loginParams = [NSMutableDictionary dictionary]; loginParams[@"client_id"] = [FBSDKSettings appID]; - loginParams[@"response_type"] = @"token,signed_request"; + loginParams[@"response_type"] = @"token_or_nonce,signed_request"; loginParams[@"redirect_uri"] = @"fbconnect://success"; loginParams[@"display"] = @"touch"; loginParams[@"sdk"] = @"ios"; @@ -376,20 +327,20 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { loginParams[@"auth_type"] = self.authType; loginParams[@"logging_token"] = serverConfiguration.loggingToken; - [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"]; + [FBSDKBasicUtility dictionary:loginParams setObject:[FBSDKSettings appURLSchemeSuffix] forKey:@"local_client_id"]; + [FBSDKBasicUtility dictionary:loginParams setObject:[FBSDKLoginUtility stringForAudience:self.defaultAudience] forKey:@"default_audience"]; + [FBSDKBasicUtility 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]; + loginParams[@"state"] = [FBSDKBasicUtility JSONStringForObject:state error:NULL invalidObjectHandler:nil]; [self storeExpectedChallenge:expectedChallenge]; return loginParams; } -- (void)logInWithPermissions:(NSSet *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler +- (void)logInWithPermissions:(NSSet *)permissions handler:(FBSDKLoginManagerLoginResultBlock)handler { FBSDKServerConfiguration *serverConfiguration = [FBSDKServerConfigurationManager cachedServerConfiguration]; _logger = [[FBSDKLoginManagerLogger alloc] initWithLoggingToken:serverConfiguration.loggingToken]; @@ -399,22 +350,22 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { [_logger startSessionForLoginManager:self]; - [self logInWithBehavior:self.loginBehavior]; + [self logIn]; } -- (void)reauthorizeDataAccess:(FBSDKLoginManagerRequestTokenHandler)handler +- (void)reauthorizeDataAccess:(FBSDKLoginManagerLoginResultBlock)handler { FBSDKServerConfiguration *serverConfiguration = [FBSDKServerConfigurationManager cachedServerConfiguration]; _logger = [[FBSDKLoginManagerLogger alloc] initWithLoggingToken:serverConfiguration.loggingToken]; _handler = [handler copy]; // Don't need to pass permissions for data reauthorization. _requestedPermissions = [NSSet set]; - self.authType = @"reauthorize"; + self.authType = FBSDKLoginAuthTypeReauthorize; [_logger startSessionForLoginManager:self]; - [self logInWithBehavior:self.loginBehavior]; + [self logIn]; } -- (void)logInWithBehavior:(FBSDKLoginBehavior)loginBehavior +- (void)logIn { FBSDKServerConfiguration *serverConfiguration = [FBSDKServerConfigurationManager cachedServerConfiguration]; NSDictionary *loginParams = [self logInParametersWithPermissions:_requestedPermissions serverConfiguration:serverConfiguration]; @@ -435,52 +386,11 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { } }; - switch (loginBehavior) { - case FBSDKLoginBehaviorNative: { - if ([FBSDKInternalUtility isFacebookAppInstalled]) { - BOOL useNativeDialog = [serverConfiguration useNativeDialogForDialogName:FBSDKDialogConfigurationNameLogin]; - if (useNativeDialog) { - [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. Switching to browser login instead. - } - case FBSDKLoginBehaviorBrowser: { - [self performBrowserLogInWithParameters:loginParams handler:^(BOOL openedURL, - NSString *authMethod, - NSError *openedURLError) { - completion(openedURL, authMethod, openedURLError); - }]; - break; - } - case FBSDKLoginBehaviorSystemAccount: { - if (serverConfiguration.isSystemAuthenticationEnabled) { - [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; - } + [self performBrowserLogInWithParameters:loginParams handler:^(BOOL openedURL, + NSString *authMethod, + NSError *openedURLError) { + completion(openedURL, authMethod, openedURLError); + }]; } - (void)storeExpectedChallenge:(NSString *)challengeExpected @@ -510,7 +420,7 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { [self invokeHandler:loginResult error:nil]; } else { NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:userInfo setObject:error forKey:NSUnderlyingErrorKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:error forKey:NSUnderlyingErrorKey]; NSError *resultError = [NSError errorWithDomain:FBSDKLoginErrorDomain code:FBSDKLoginErrorUserMismatch userInfo:userInfo]; @@ -521,7 +431,7 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { #pragma mark - Test Methods -- (void)setHandler:(FBSDKLoginManagerRequestTokenHandler)handler +- (void)setHandler:(FBSDKLoginManagerLoginResultBlock)handler { _handler = [handler copy]; } @@ -531,35 +441,9 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { _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]; - - NSDate *start = [NSDate date]; - [[FBSDKApplicationDelegate sharedInstance] openURL:authURL sender:self handler:^(BOOL openedURL, NSError *anError) { - [self->_logger logNativeAppDialogResult:openedURL dialogDuration:-start.timeIntervalSinceNow]; - if (handler) { - handler(openedURL, anError); - } - }]; -} - // change bool to auth method string. - (void)performBrowserLogInWithParameters:(NSDictionary *)loginParams - handler:(void(^)(BOOL didOpen, NSString *authMethod, NSError *error))handler + handler:(FBSDKBrowserLoginSuccessBlock)handler { [_logger willAttemptAppSwitchingBehavior]; @@ -571,12 +455,12 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { NSURL *authURL = nil; NSError *error; - NSURL *redirectURL = [FBSDKInternalUtility appURLWithHost:@"authorize" path:nil queryParameters:nil error:&error]; + NSURL *redirectURL = [FBSDKInternalUtility appURLWithHost:@"authorize" path:@"" queryParameters:@{} error:&error]; if (!error) { NSMutableDictionary *browserParams = [loginParams mutableCopy]; - [FBSDKInternalUtility dictionary:browserParams - setObject:redirectURL - forKey:@"redirect_uri"]; + [FBSDKBasicUtility dictionary:browserParams + setObject:redirectURL + forKey:@"redirect_uri"]; authURL = [FBSDKInternalUtility facebookURLWithHostPrefix:@"m." path:FBSDKOauthPath queryParameters:browserParams @@ -592,21 +476,22 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { if (useSafariViewController) { // Note based on above, authURL must be a http scheme. If that changes, add a guard, otherwise SFVC can throw self->_usedSFAuthSession = YES; - [[FBSDKApplicationDelegate sharedInstance] openURLWithSafariViewController:authURL + [[FBSDKBridgeAPI sharedInstance] openURLWithSafariViewController:authURL sender:self fromViewController:self.fromViewController handler:handlerWrapper]; } else { - [[FBSDKApplicationDelegate sharedInstance] openURL:authURL sender:self handler:handlerWrapper]; + [[FBSDKBridgeAPI sharedInstance] openURL:authURL sender:self handler:handlerWrapper]; } } else { - error = error ?: [NSError fbErrorWithCode:FBSDKLoginErrorUnknown message:@"Failed to construct oauth browser url"]; + error = error ?: [FBSDKError errorWithCode:FBSDKLoginErrorUnknown message:@"Failed to construct oauth browser url"]; if (handler) { handler(NO, nil, error); } } } +#pragma mark - FBSDKURLOpening - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { BOOL isFacebookURL = [self canOpenURL:url forApplication:application sourceApplication:sourceApplication annotation:annotation]; @@ -624,7 +509,7 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { } // any necessary strong reference is maintained by the FBSDKLoginURLCompleter handler - [completer completeLogIn:self withHandler:^(FBSDKLoginCompletionParameters *parameters) { + [completer completeLoginWithHandler:^(FBSDKLoginCompletionParameters *parameters) { [self completeAuthentication:parameters expectChallenge:YES]; }]; } @@ -638,12 +523,8 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { 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]]] && + return [url.scheme hasPrefix:[NSString stringWithFormat:@"fb%@", [FBSDKSettings appID]]] && [url.host isEqualToString:@"authorize"]; - - BOOL isExpectedSourceApplication = [sourceApplication hasPrefix:@"com.facebook"] || [sourceApplication hasPrefix:@"com.apple"] || [sourceApplication hasPrefix:@"com.burbn"]; - - return isFacebookURL && isExpectedSourceApplication; } - (void)applicationDidBecomeActive:(UIApplication *)application @@ -659,227 +540,3 @@ typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { } @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 access 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; - } - - uint64_t 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; - [self->_logger systemAuthDidShowDialog:didShowDialog isUnTOSedDevice:isUnTOSedDevice]; - - if (accountStoreError && [FBSDKSystemAccountStoreAdapter sharedInstance].forceBlockingRenew) { - accountStoreError = [NSError fbErrorForSystemPasswordChange: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 = [NSError fbErrorForFailedLoginWithCode:FBSDKLoginErrorSystemAccountAppDisabled]; - } - - 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:parameters 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/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h index 6601011..ffcaaae 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h @@ -18,11 +18,14 @@ #import +NS_ASSUME_NONNULL_BEGIN + @class FBSDKAccessToken; /** Describes the result of a login attempt. */ +NS_SWIFT_NAME(LoginManagerLoginResult) @interface FBSDKLoginManagerLoginResult : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -31,7 +34,7 @@ /** the access token. */ -@property (copy, nonatomic) FBSDKAccessToken *token; +@property (copy, nonatomic, nullable) FBSDKAccessToken *token; /** whether the login was cancelled by the user. @@ -43,14 +46,14 @@ inspect the token's permissions set for a complete list. */ -@property (copy, nonatomic) NSSet *grantedPermissions; +@property (copy, nonatomic) NSSet *grantedPermissions; /** the set of permissions declined by the user in the associated request. inspect the token's permissions set for a complete list. */ -@property (copy, nonatomic) NSSet *declinedPermissions; +@property (copy, nonatomic) NSSet *declinedPermissions; /** Initializes a new instance. @@ -59,9 +62,11 @@ @param grantedPermissions the set of granted permissions @param declinedPermissions the set of declined permissions */ -- (instancetype)initWithToken:(FBSDKAccessToken *)token +- (instancetype)initWithToken:(nullable FBSDKAccessToken *)token isCancelled:(BOOL)isCancelled - grantedPermissions:(NSSet *)grantedPermissions - declinedPermissions:(NSSet *)declinedPermissions + grantedPermissions:(NSSet *)grantedPermissions + declinedPermissions:(NSSet *)declinedPermissions NS_DESIGNATED_INITIALIZER; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m index ce3969b..16e3e5f 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m @@ -18,7 +18,11 @@ #import "FBSDKLoginManagerLoginResult+Internal.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif @implementation FBSDKLoginManagerLoginResult { NSMutableDictionary *_mutableLoggingExtras; @@ -30,7 +34,7 @@ declinedPermissions:(NSSet *)declinedPermissions { if ((self = [super init])) { _mutableLoggingExtras = [NSMutableDictionary dictionary]; - _token = [token copy]; + _token = token ? [token copy] : nil; _isCancelled = isCancelled; _grantedPermissions = [grantedPermissions copy]; _declinedPermissions = [declinedPermissions copy]; @@ -40,7 +44,7 @@ - (void)addLoggingExtra:(id)object forKey:(id)key { - [FBSDKInternalUtility dictionary:_mutableLoggingExtras setObject:object forKey:key]; + [FBSDKBasicUtility dictionary:_mutableLoggingExtras setObject:object forKey:key]; } - (NSDictionary *)loggingExtras diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h index 1792197..63f9e32 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h @@ -20,6 +20,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + @protocol FBSDKLoginTooltipViewDelegate; /** @@ -37,6 +39,7 @@ (e.g., to test the UI layout) by implementing the delegate or setting `forceDisplay` to YES. */ +NS_SWIFT_NAME(FBLoginTooltipView) @interface FBSDKLoginTooltipView : FBSDKTooltipView /** the delegate */ @@ -44,7 +47,7 @@ /** 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; +@property (nonatomic, assign, getter=shouldForceDisplay) BOOL forceDisplay; @end @@ -54,6 +57,7 @@ The `FBSDKLoginTooltipViewDelegate` protocol defines the methods used to receive event notifications from `FBSDKLoginTooltipView` objects. */ +NS_SWIFT_NAME(LoginTooltipViewDelegate) @protocol FBSDKLoginTooltipViewDelegate @optional @@ -88,3 +92,5 @@ @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m index e1a17d4..79b62a2 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m @@ -18,7 +18,11 @@ #import "FBSDKLoginTooltipView.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif @interface FBSDKLoginTooltipView () @end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h index d77392c..3941bcd 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** FBSDKTooltipViewArrowDirection enum @@ -29,7 +31,7 @@ typedef NS_ENUM(NSUInteger, FBSDKTooltipViewArrowDirection) FBSDKTooltipViewArrowDirectionDown = 0, /** View is located below given point, arrow is pointing up. */ FBSDKTooltipViewArrowDirectionUp = 1, -}; +} NS_SWIFT_NAME(FBTooltipView.ArrowDirection); /** FBSDKTooltipColorStyle enum @@ -42,7 +44,7 @@ typedef NS_ENUM(NSUInteger, FBSDKTooltipColorStyle) FBSDKTooltipColorStyleFriendlyBlue = 0, /** Dark gray background, white text, light gray close button. */ FBSDKTooltipColorStyleNeutralGray = 1, -}; +} NS_SWIFT_NAME(FBTooltipView.ColorStyle); /** @@ -53,6 +55,7 @@ typedef NS_ENUM(NSUInteger, FBSDKTooltipColorStyle) The tooltip fades in and will automatically fade out. See `displayDuration`. */ +NS_SWIFT_NAME(FBTooltipView) @interface FBSDKTooltipView : UIView /** @@ -71,12 +74,12 @@ typedef NS_ENUM(NSUInteger, FBSDKTooltipColorStyle) /** Gets or sets the message. */ -@property (nonatomic, copy) NSString *message; +@property (nonatomic, copy, nullable) NSString *message; /** Gets or sets the optional phrase that comprises the first part of the label (and is highlighted differently). */ -@property (nonatomic, copy) NSString *tagline; +@property (nonatomic, copy, nullable) NSString *tagline; /** Designated initializer. @@ -94,7 +97,9 @@ typedef NS_ENUM(NSUInteger, FBSDKTooltipColorStyle) @see FBSDKLoginTooltipView */ -- (instancetype)initWithTagline:(NSString *)tagline message:(NSString *)message colorStyle:(FBSDKTooltipColorStyle)colorStyle; +- (instancetype)initWithTagline:(nullable NSString *)tagline + message:(nullable NSString *)message + colorStyle:(FBSDKTooltipColorStyle)colorStyle; /** Show tooltip at the top or at the bottom of given view. @@ -122,7 +127,10 @@ typedef NS_ENUM(NSUInteger, FBSDKTooltipColorStyle) @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; +- (void)presentInView:(UIView *)view + withArrowPosition:(CGPoint)arrowPosition + direction:(FBSDKTooltipViewArrowDirection)arrowDirection +NS_SWIFT_NAME(present(in:arrowPosition:direction:)); /** Remove tooltip manually. @@ -134,3 +142,5 @@ typedef NS_ENUM(NSUInteger, FBSDKTooltipColorStyle) - (void)dismiss; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m index 22f8f89..978bc92 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m @@ -20,7 +20,11 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif static const CGFloat kTransitionDuration = 0.3; static const CGFloat kZoomOutScale = 0.001f; diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h index 6ddfa0d..1ba7b6f 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h @@ -21,16 +21,17 @@ @interface FBSDKLoginCompletionParameters () @property (nonatomic, copy) NSString *accessTokenString; +@property (nonatomic, copy) NSString *nonceString; @property (nonatomic, copy) NSSet *permissions; @property (nonatomic, copy) NSSet *declinedPermissions; +@property (nonatomic, copy) NSSet *expiredPermissions; @property (nonatomic, copy) NSString *appID; @property (nonatomic, copy) NSString *userID; @property (nonatomic, copy) NSError *error; -@property (nonatomic, assign, getter=isSystemAccount) BOOL systemAccount; @property (nonatomic, copy) NSDate *expirationDate; @property (nonatomic, copy) NSDate *dataAccessExpirationDate; diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h index 30e0015..8141ef7 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h @@ -19,41 +19,51 @@ #import @class FBSDKLoginManager; +@class FBSDKLoginCompletionParameters; + +/** + Success Block + */ +typedef void (^FBSDKLoginCompletionParametersBlock)(FBSDKLoginCompletionParameters *parameters) +NS_SWIFT_NAME(LoginCompletionParametersBlock); /** 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. */ +NS_SWIFT_NAME(LoginCompletionParameters) @interface FBSDKLoginCompletionParameters : NSObject - (instancetype)init NS_DESIGNATED_INITIALIZER; - (instancetype)initWithError:(NSError *)error; @property (nonatomic, copy, readonly) NSString *accessTokenString; +@property (nonatomic, copy, readonly) NSString *nonceString; @property (nonatomic, copy, readonly) NSSet *permissions; @property (nonatomic, copy, readonly) NSSet *declinedPermissions; +@property (nonatomic, copy, readonly) NSSet *expiredPermissions; @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) NSDate *dataAccessExpirationDate; @property (nonatomic, copy, readonly) NSString *challenge; @end +NS_SWIFT_NAME(LoginCompleting) @protocol FBSDKLoginCompleting /** 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; +- (void)completeLoginWithHandler:(FBSDKLoginCompletionParametersBlock)handler; @end @@ -68,6 +78,7 @@ Completion occurs synchronously. */ +NS_SWIFT_NAME(LoginURLCompleter) @interface FBSDKLoginURLCompleter : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -76,29 +87,3 @@ @end -/** - 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)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; -- (instancetype)initWithTokenString:(NSString *)tokenString appID:(NSString *)appID NS_DESIGNATED_INITIALIZER; - -@end - -/** - Converts an Accounts framework error in to an error or cancellation result - - Completion occurs synchronously. - */ -@interface FBSDKLoginSystemAccountErrorCompleter : NSObject - -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; -- (instancetype)initWithError:(NSError *)accountStoreError permissions:(NSSet *)permissions NS_DESIGNATED_INITIALIZER; - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m index 9b81401..bf3ae17 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m @@ -18,7 +18,13 @@ #import "FBSDKLoginCompletion+Internal.h" +#import + +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKLoginConstants.h" #import "FBSDKLoginError.h" #import "FBSDKLoginManager+Internal.h" @@ -65,13 +71,16 @@ static void FBSDKLoginRequestMeAndPermissions(FBSDKLoginCompletionParameters *pa NSError *error) { NSMutableSet *grantedPermissions = [NSMutableSet set]; NSMutableSet *declinedPermissions = [NSMutableSet set]; + NSMutableSet *expiredPermissions = [NSMutableSet set]; [FBSDKInternalUtility extractPermissionsFromResponse:result grantedPermissions:grantedPermissions - declinedPermissions:declinedPermissions]; + declinedPermissions:declinedPermissions + expiredPermissions:expiredPermissions]; parameters.permissions = [grantedPermissions copy]; parameters.declinedPermissions = [declinedPermissions copy]; + parameters.expiredPermissions = [expiredPermissions copy]; if (error) { parameters.error = error; } @@ -114,8 +123,9 @@ static void FBSDKLoginRequestMeAndPermissions(FBSDKLoginCompletionParameters *pa _parameters = [[FBSDKLoginCompletionParameters alloc] init]; _parameters.accessTokenString = parameters[@"access_token"]; + _parameters.nonceString = parameters[@"nonce"]; - if (_parameters.accessTokenString.length > 0) { + if (_parameters.accessTokenString.length > 0 || _parameters.nonceString.length > 0) { [self setParametersWithDictionary:parameters appID:appID]; } else { _parameters.accessTokenString = nil; @@ -125,27 +135,12 @@ static void FBSDKLoginRequestMeAndPermissions(FBSDKLoginCompletionParameters *pa return self; } -- (void)completeLogIn:(FBSDKLoginManager *)loginManager withHandler:(void(^)(FBSDKLoginCompletionParameters *parameters))handler +- (void)completeLoginWithHandler:(FBSDKLoginCompletionParametersBlock)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]; - }]; - } + if (_parameters.nonceString) { + [self _exchangeNonceForTokenWithHandler:handler]; return; - } - - if (_parameters.accessTokenString && !_parameters.userID) { + } else if (_parameters.accessTokenString && !_parameters.userID) { void(^handlerCopy)(FBSDKLoginCompletionParameters *) = [handler copy]; FBSDKLoginRequestMeAndPermissions(_parameters, ^{ handlerCopy(self->_parameters); @@ -172,6 +167,8 @@ static void FBSDKLoginRequestMeAndPermissions(FBSDKLoginCompletionParameters *pa ? [NSSet setWithArray:[declinedPermissionsString componentsSeparatedByString:@","]] : [NSSet set]; + _parameters.expiredPermissions = [NSSet set]; + _parameters.appID = appID; if (userID.length == 0 && signedRequest.length > 0) { @@ -196,7 +193,7 @@ static void FBSDKLoginRequestMeAndPermissions(FBSDKLoginCompletionParameters *pa _parameters.dataAccessExpirationDate = dataAccessExpirationDate; NSError *error = nil; - NSDictionary *state = [FBSDKInternalUtility objectForJSONString:parameters[@"state"] error:&error]; + NSDictionary *state = [FBSDKBasicUtility objectForJSONString:parameters[@"state"] error:&error]; _parameters.challenge = [FBSDKUtility URLDecode:state[@"challenge"]]; } @@ -220,8 +217,8 @@ static void FBSDKLoginRequestMeAndPermissions(FBSDKLoginCompletionParameters *pa _observer = nil; } - if ([FBSDKApplicationDelegate sharedInstance].isActive) { - [loginManager logInWithBehavior:FBSDKLoginBehaviorBrowser]; + if ([FBSDKBridgeAPI sharedInstance].isActive) { + [loginManager logIn]; } 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. @@ -231,87 +228,56 @@ static void FBSDKLoginRequestMeAndPermissions(FBSDKLoginCompletionParameters *pa } } -@end - -@implementation FBSDKLoginSystemAccountCompleter +- (void)_exchangeNonceForTokenWithHandler:(FBSDKLoginCompletionParametersBlock)handler { - FBSDKLoginCompletionParameters *_parameters; -} - -- (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; + if (!handler) { + return; } - 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 = self->_parameters.error; - NSError *error = [NSError fbErrorFromServerError: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 == FBSDKLoginErrorPasswordChanged) { - [FBSDKSystemAccountStoreAdapter sharedInstance].forceBlockingRenew = YES; + NSString *nonce = _parameters.nonceString ?: @""; + NSString *appID = [FBSDKSettings appID] ?: @""; - self->_parameters.accessTokenString = nil; - self->_parameters.appID = nil; + if (nonce.length == 0 || appID.length == 0) { + _parameters.error = [FBSDKError errorWithCode:FBSDKErrorInvalidArgument message:@"Missing required parameters to exchange nonce for access token."]; - error = [NSError fbErrorForSystemPasswordChange:serverError]; + handler(_parameters); + return; + } + + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + FBSDKGraphRequest *tokenRequest = [[FBSDKGraphRequest alloc] + initWithGraphPath:@"oauth/access_token" + parameters:@{ @"grant_type" : @"fb_exchange_nonce", + @"fb_exchange_nonce" : nonce, + @"client_id" : appID, + @"fields" : @"" } + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | + FBSDKGraphRequestFlagDisableErrorRecovery]; + __block FBSDKLoginCompletionParameters *parameters = _parameters; + [connection addRequest:tokenRequest completionHandler:^(FBSDKGraphRequestConnection *requestConnection, + id result, + NSError *error) { + if (!error) { + parameters.accessTokenString = result[@"access_token"]; + NSDate *expirationDate = [NSDate distantFuture]; + if (result[@"expires_in"] && [result[@"expires_in"] integerValue] > 0) { + expirationDate = [NSDate dateWithTimeIntervalSinceNow:[result[@"expires_in"] integerValue]]; } + parameters.expirationDate = expirationDate; - self->_parameters.error = error; - } - - handlerCopy(self->_parameters); - }); -} - -@end - -@implementation FBSDKLoginSystemAccountErrorCompleter -{ - FBSDKLoginCompletionParameters *_parameters; -} - -- (instancetype)initWithError:(NSError *)accountStoreError permissions:(NSSet *)permissions -{ - if ((self = [super init]) != nil) { - _parameters = [[FBSDKLoginCompletionParameters alloc] init]; - - NSError *error = [NSError fbErrorForSystemAccountStoreError:accountStoreError]; - if (error != nil) { - _parameters.error = error; + NSDate *dataAccessExpirationDate = [NSDate distantFuture]; + if (result[@"data_access_expiration_time"] && [result[@"data_access_expiration_time"] integerValue] > 0) { + dataAccessExpirationDate = [NSDate dateWithTimeIntervalSince1970:[result[@"data_access_expiration_time"] integerValue]]; + } + parameters.dataAccessExpirationDate = dataAccessExpirationDate; } else { - // The lack of an error indicates the user declined permissions - _parameters.declinedPermissions = permissions; + parameters.error = error; } - _parameters.systemAccount = YES; - } - return self; -} + handler(parameters); + }]; -- (void)completeLogIn:(FBSDKLoginManager *)loginManager withHandler:(void(^)(FBSDKLoginCompletionParameters *parameters))handler -{ - handler(_parameters); + [connection start]; } @end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h index 922cf68..176c9ce 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h @@ -25,7 +25,6 @@ NS_ASSUME_NONNULL_BEGIN @interface NSError (FBSDKLoginError) + (NSError *)fbErrorForFailedLoginWithCode:(FBSDKLoginError)code; -+ (NSError *)fbErrorForSystemAccountStoreError:(NSError *)accountStoreError; + (NSError *)fbErrorForSystemPasswordChange:(NSError *)innerError; + (nullable NSError *)fbErrorFromReturnURLParameters:(NSDictionary *)parameters; diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m index 91e23f3..504d573 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m @@ -18,7 +18,11 @@ #import "FBSDKLoginError.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #ifndef NS_ERROR_ENUM #define NS_ERROR_ENUM(_domain, _name) \ @@ -45,7 +49,7 @@ typedef NS_ERROR_ENUM(FBSDKLoginErrorDomain, FBSDKLoginErrorSubcode) { NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:userInfo setObject:innerError forKey:NSUnderlyingErrorKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:innerError forKey:NSUnderlyingErrorKey]; NSString *errorDomain = FBSDKLoginErrorDomain; NSString *localizedDescription = nil; @@ -86,45 +90,14 @@ typedef NS_ERROR_ENUM(FBSDKLoginErrorDomain, FBSDKLoginErrorSubcode) break; } - [FBSDKInternalUtility dictionary:userInfo setObject:localizedDescription forKey:NSLocalizedDescriptionKey]; - [FBSDKInternalUtility dictionary:userInfo setObject:localizedDescription forKey:FBSDKErrorLocalizedDescriptionKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:localizedDescription forKey:NSLocalizedDescriptionKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:localizedDescription forKey:FBSDKErrorLocalizedDescriptionKey]; return [NSError errorWithDomain:errorDomain code:code userInfo:userInfo]; } -+ (NSError *)fbErrorForSystemAccountStoreError:(NSError *)accountStoreError -{ - NSError *err = nil; - BOOL cancellation = NO; - - if ([accountStoreError.domain isEqualToString:FBSDKLoginErrorDomain] || - [accountStoreError.domain isEqualToString:FBSDKErrorDomain]) { - // 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 fbErrorWithSystemAccountStoreDeniedError:accountStoreError isCancellation:&cancellation]; - } - - if (err == nil && !cancellation) { - // create an error object with additional info regarding failed login - NSInteger errorCode = FBSDKLoginErrorSystemAccountUnavailable; - - NSString *errorDomain = accountStoreError.domain; - if ([errorDomain isEqualToString:NSURLErrorDomain] || - [errorDomain isEqualToString:@"kCFErrorDomainCFNetwork"]) { - errorCode = FBSDKErrorNetwork; - } - - err = [self fbErrorForFailedLoginWithCode:errorCode - innerError:accountStoreError]; - } - - return err; -} - + (NSError *)fbErrorForSystemPasswordChange:(NSError *)innerError { NSString *failureReasonAndDescription = @@ -136,7 +109,7 @@ typedef NS_ERROR_ENUM(FBSDKLoginErrorDomain, FBSDKLoginErrorSubcode) failureReasonAndDescription, NSLocalizedDescriptionKey, nil]; - [FBSDKInternalUtility dictionary:userInfo setObject:innerError forKey:NSUnderlyingErrorKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:innerError forKey:NSUnderlyingErrorKey]; return [NSError errorWithDomain:FBSDKLoginErrorDomain code:FBSDKLoginErrorPasswordChanged @@ -148,14 +121,14 @@ typedef NS_ERROR_ENUM(FBSDKLoginErrorDomain, FBSDKLoginErrorSubcode) NSError *error = nil; NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error_message"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKBasicUtility 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:FBSDKGraphRequestErrorGraphErrorCodeKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:parameters[@"error"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:parameters[@"error_code"] forKey:FBSDKGraphRequestErrorGraphErrorCodeKey]; if (!userInfo[FBSDKErrorDeveloperMessageKey]) { - [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error_reason"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKBasicUtility dictionary:userInfo setObject:parameters[@"error_reason"] forKey:FBSDKErrorDeveloperMessageKey]; } userInfo[FBSDKGraphRequestErrorKey] = @(FBSDKGraphRequestErrorOther); diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h index 77ddb6d..aceb919 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h @@ -20,26 +20,33 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif @class FBSDKAccessToken; @class FBSDKLoginCompletionParameters; -@interface FBSDKLoginManagerSystemAccountState : NSObject -@property (nonatomic, assign) BOOL didShowDialog; -@property (nonatomic, getter=isReauthorize) BOOL reauthorize; -@property (nonatomic, getter=isUnTOSedDevice) BOOL unTOSedDevice; -@end +/** + Success Block + */ +typedef void (^FBSDKBrowserLoginSuccessBlock)(BOOL didOpen, NSString *authMethod, NSError *error) +NS_SWIFT_NAME(BrowserLoginSuccessBlock); -@interface FBSDKLoginManager () +@interface FBSDKLoginManager () @property (nonatomic, weak) UIViewController *fromViewController; @property (nonatomic, readonly) NSSet *requestedPermissions; +// for testing only +@property (nonatomic, readonly, copy) NSString *loadExpectedChallenge; + - (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; +- (void)logInWithPermissions:(NSSet *)permissions handler:(FBSDKLoginManagerLoginResultBlock)handler; +- (void)logIn; // made available for testing only - (NSDictionary *)logInParametersWithPermissions:(NSSet *)permissions serverConfiguration:(FBSDKServerConfiguration *)serverConfiguration; @@ -47,35 +54,10 @@ - (void)validateReauthentication:(FBSDKAccessToken *)currentToken withResult:(FBSDKLoginManagerLoginResult *)loginResult; // for testing only -- (void)setHandler:(FBSDKLoginManagerRequestTokenHandler)handler; +- (void)setHandler:(FBSDKLoginManagerLoginResultBlock)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; +- (void)performBrowserLogInWithParameters:(NSDictionary *)loginParams handler:(FBSDKBrowserLoginSuccessBlock)handler; @end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h index 640d47b..232d0ac 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h @@ -20,18 +20,17 @@ FOUNDATION_EXPORT NSString *const FBSDKLoginManagerLoggerAuthMethod_Native; FOUNDATION_EXPORT NSString *const FBSDKLoginManagerLoggerAuthMethod_Browser; -FOUNDATION_EXPORT NSString *const FBSDKLoginManagerLoggerAuthMethod_System; -FOUNDATION_EXPORT NSString *const FBSDKLoginManagerLoggerAuthMethod_Webview; FOUNDATION_EXPORT NSString *const FBSDKLoginManagerLoggerAuthMethod_SFVC; +NS_SWIFT_NAME(LoginManagerLogger) @interface FBSDKLoginManagerLogger : NSObject + (FBSDKLoginManagerLogger *)loggerFromParameters:(NSDictionary *)parameters; - (instancetype)init NS_UNAVAILABLE; -- (instancetype)new NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; -- (instancetype)initWithLoggingToken:(NSString *)loggingToken; +- (instancetype)initWithLoggingToken:(NSString *)loggingToken NS_DESIGNATED_INITIALIZER; // this must not retain loginManager - only used to conveniently grab various properties to log. - (void)startSessionForLoginManager:(FBSDKLoginManager *)loginManager; diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m index a47015c..8dc3b93 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m @@ -18,15 +18,17 @@ #import "FBSDKLoginManagerLogger.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #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"; @@ -50,8 +52,6 @@ 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 { @@ -68,7 +68,7 @@ static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; + (FBSDKLoginManagerLogger *)loggerFromParameters:(NSDictionary *)parameters { - NSDictionary *clientState = [FBSDKInternalUtility objectForJSONString:parameters[FBSDKLoginManagerLoggingClientStateKey] error:NULL]; + NSDictionary *clientState = [FBSDKBasicUtility objectForJSONString:parameters[FBSDKLoginManagerLoggingClientStateKey] error:NULL]; id isClientState = clientState[FBSDKLoginManagerLoggingClientStateIsClientState]; if ([isClientState isKindOfClass:[NSNumber class]] && [isClientState boolValue]) { @@ -97,38 +97,12 @@ static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; { 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; - } + BOOL willTryBrowser = YES; + NSString *behaviorString = @"FBSDKLoginBehaviorBrowser"; [_extras addEntriesFromDictionary:@{ FBSDKLoginManagerLoggerTryNative : @(willTryNative), FBSDKLoginManagerLoggerTryBrowser : @(willTryBrowser), - FBSDKLoginManagerLoggerTrySystemAccount : @(willTrySystemAccount), - FBSDKLoginManagerLoggerTryWebView : @(willTryWebView), @"isReauthorize" : @(isReauthorize), @"login_behavior" : behaviorString, @"default_audience" : [FBSDKLoginUtility stringForAudience:loginManager.defaultAudience], @@ -178,12 +152,12 @@ static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; NSMutableDictionary *params = [loginParams mutableCopy]; NSTimeInterval timeValue = (NSTimeInterval)FBSDKMonotonicTimeGetCurrentSeconds(); - NSString *e2eTimestampString = [FBSDKInternalUtility JSONStringForObject:@{ @"init" : @(timeValue) } + NSString *e2eTimestampString = [FBSDKBasicUtility JSONStringForObject:@{ @"init" : @(timeValue) } error:NULL invalidObjectHandler:NULL]; params[@"e2e"] = e2eTimestampString; - NSDictionary *existingState = [FBSDKInternalUtility objectForJSONString:params[FBSDKLoginManagerLoggingClientStateKey] error:NULL]; + NSDictionary *existingState = [FBSDKBasicUtility objectForJSONString:params[FBSDKLoginManagerLoggingClientStateKey] error:NULL]; params[FBSDKLoginManagerLoggingClientStateKey] = [self clientStateForAuthMethod:authMethod andExistingState:existingState]; return params; @@ -238,7 +212,7 @@ static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; clientState = mutableState; } - return [FBSDKInternalUtility JSONStringForObject:clientState error:NULL invalidObjectHandler:NULL]; + return [FBSDKBasicUtility JSONStringForObject:clientState error:NULL invalidObjectHandler:NULL]; } - (NSMutableDictionary *)_parametersForNewEvent @@ -249,7 +223,7 @@ static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; eventParameters[FBSDKLoginManagerLoggerParamIdentifierKey] = _identifier ?: FBSDKLoginManagerLoggerValueEmpty; eventParameters[FBSDKLoginManagerLoggerParamTimestampKey] = @(round(1000 * [NSDate date].timeIntervalSince1970)); eventParameters[FBSDKLoginManagerLoggerParamResultKey] = FBSDKLoginManagerLoggerValueEmpty; - [FBSDKInternalUtility dictionary:eventParameters setObject:_authMethod forKey:FBSDKLoginManagerLoggerParamAuthMethodKey]; + [FBSDKBasicUtility dictionary:eventParameters setObject:_authMethod forKey:FBSDKLoginManagerLoggerParamAuthMethodKey]; eventParameters[FBSDKLoginManagerLoggerParamErrorCodeKey] = FBSDKLoginManagerLoggerValueEmpty; eventParameters[FBSDKLoginManagerLoggerParamErrorMessageKey] = FBSDKLoginManagerLoggerValueEmpty; eventParameters[FBSDKLoginManagerLoggerParamExtrasKey] = FBSDKLoginManagerLoggerValueEmpty; @@ -261,7 +235,7 @@ static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; - (void)logEvent:(NSString *)eventName params:(NSMutableDictionary *)params { if (_identifier) { - NSString *extrasJSONString = [FBSDKInternalUtility JSONStringForObject:_extras + NSString *extrasJSONString = [FBSDKBasicUtility JSONStringForObject:_extras error:NULL invalidObjectHandler:NULL]; if (extrasJSONString) { @@ -269,7 +243,9 @@ static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; } [_extras removeAllObjects]; - [FBSDKAppEvents logImplicitEvent:eventName valueToSum:nil parameters:params accessToken:nil]; + [FBSDKAppEvents logInternalEvent:eventName + parameters:params + isImplicitlyLogged:YES]; } } @@ -285,18 +261,18 @@ static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; // 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]; + [FBSDKBasicUtility dictionary:params setObject:value forKey:FBSDKLoginManagerLoggerParamErrorMessageKey]; value = error.userInfo[FBSDKGraphRequestErrorGraphErrorCodeKey] ?: [NSString stringWithFormat:@"%ld", (long)error.code]; - [FBSDKInternalUtility dictionary:params setObject:value forKey:FBSDKLoginManagerLoggerParamErrorCodeKey]; + [FBSDKBasicUtility 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"]; + [FBSDKBasicUtility dictionary:_extras setObject:value forKey:@"inner_error_message"]; value = innerError.userInfo[FBSDKGraphRequestErrorGraphErrorCodeKey] ?: [NSString stringWithFormat:@"%ld", (long)innerError.code]; - [FBSDKInternalUtility dictionary:_extras setObject:value forKey:@"inner_error_code"]; + [FBSDKBasicUtility dictionary:_extras setObject:value forKey:@"inner_error_code"]; } } else if (error) { params[FBSDKLoginManagerLoggerParamErrorCodeKey] = @(error.code); diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h index b8dcc4c..b7e2cb3 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h @@ -20,6 +20,7 @@ #import +NS_SWIFT_NAME(LoginUtility) @interface FBSDKLoginUtility : NSObject - (instancetype)init NS_UNAVAILABLE; diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m index 10592ba..902e68f 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m @@ -21,7 +21,11 @@ #import #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKLoginConstants.h" @implementation FBSDKLoginUtility @@ -40,7 +44,11 @@ + (NSDictionary *)queryParamsFromLoginURL:(NSURL *)url { - NSString *expectedUrlPrefix = [FBSDKInternalUtility appURLWithHost:@"authorize" path:nil queryParameters:nil error:NULL].absoluteString; + NSString *expectedUrlPrefix = [FBSDKInternalUtility + appURLWithHost:@"authorize" + path:@"" + queryParameters:@{} + error:NULL].absoluteString; if (![url.absoluteString hasPrefix:expectedUrlPrefix]) { // Don't have an App ID, just verify path. NSString *host = url.host; diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h index b979138..5974d86 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h +++ b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h @@ -16,7 +16,11 @@ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif @interface _FBSDKLoginRecoveryAttempter : FBSDKErrorRecoveryAttempter diff --git a/Example/Pods/FBSDKLoginKit/README.md b/Example/Pods/FBSDKLoginKit/README.md index 1d8dcae..ad7fa15 100644 --- a/Example/Pods/FBSDKLoginKit/README.md +++ b/Example/Pods/FBSDKLoginKit/README.md @@ -1,7 +1,7 @@ # Facebook SDK for iOS [![Platforms](https://img.shields.io/cocoapods/p/FBSDKCoreKit.svg)](https://cocoapods.org/pods/FBSDKCoreKit) -[![Build Status](https://travis-ci.org/facebook/facebook-objc-sdk.svg?branch=master)](https://travis-ci.org/facebook/facebook-objc-sdk) +[![Build Status](https://travis-ci.org/facebook/facebook-ios-sdk.svg?branch=master)](https://travis-ci.org/facebook/facebook-ios-sdk) [![CocoaPods](https://img.shields.io/cocoapods/v/FBSDKCoreKit.svg)](https://cocoapods.org/pods/FBSDKCoreKit) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) @@ -31,10 +31,12 @@ NOTE: By default, the Facebook SDK for iOS is installed in ~/Documents/FacebookS ## GIVE FEEDBACK -Please report bugs or issues to +Please report bugs or issues to our designated developer support team -- -- as this will help us resolve them more quickly. -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) +You can also visit our [Facebook Developer Community Forum](https://developers.facebook.com/community/), +join the [Facebook Developers Group on Facebook](https://www.facebook.com/groups/fbdevelopers/), +ask questions on [Stack Overflow](http://facebook.stackoverflow.com), +or open an issue in this repository. ## LICENSE diff --git a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.h b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.h index 7c5f946..2e9ece8 100644 --- a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.h +++ b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.h @@ -18,265 +18,7 @@ #import -/** - These are the fields currently exposed by FBSDKPlacesKit. They map to the fields on - Place objects returned by the Graph API, which can be found here: - https://developers.facebook.com/docs/places. Should fields be added to the Graph API in - the future, you can use strings found in the online documenation in addition to - these string constants. - */ - -/** - Field Key for information about the Place. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyAbout; - -/** - Field Key for AppLinks for the Place. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyAppLinks; - -/** - Field Key for the Place's categories. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyCategories; - -/** - Field Key for the number of checkins at the Place. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyCheckins; - -/** - Field Key for the confidence level for a current place estimate candidate. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyConfidence; - -/** - Field Key for the Place's cover photo. Note that this is not the actual photo data, - but rather URLs and other metadata. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyCoverPhoto; - -/** - Field Key for the description of the Place. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyDescription; - -/** - Field Key for the social sentence and like count information for this place. This is - the same information used for the Like button. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyEngagement; - -/** - Field Key for hour ranges for when the Place is open. Each day can have two different - hours ranges. The keys in the dictionary are in the form of {day}_{number}_{status}. - {day} should be the first 3 characters of the day of the week, {number} should be - either 1 or 2 to allow for the two different hours ranges per day. {status} should be - either open or close, to delineate the start or end of a time range. An example would - be mon_1_open with value 17:00 and mon_1_close with value 21:15 which would represent - a single opening range of 5 PM to 9:15 PM on Mondays. You can find an example of hours - being parsed out in the Sample App. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyHours; - -/** - Field Key for a value indicating whether this place is always open. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyIsAlwaysOpen; - -/** - Field Key for a value indicating whether this place is permanently closed. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyIsPermanentlyClosed; - -/** - Pages with a large number of followers can be manually verified by Facebook as having an - authentic identity. This field indicates whether the page is verified by this process. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyIsVerified; - -/** - Field Key for address and latitude/longitude information for the place. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyLocation; - -/** - Field Key for a link to Place's Facebook page. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyLink; - -/** - Field Key for the name of the place. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyName; - -/** - Field Key for the overall page rating based on rating surveys from users on a scale - from 1-5. This value is normalized, and is not guaranteed to be a strict average of - user ratings. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyOverallStarRating; - -/** - Field Key for the Facebook Page information. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyPage; - -/** - Field Key for PageParking information for the Place. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyParking; - -/** - Field Key for available payment options. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyPaymentOptions; - -/** - Field Key for the unique Facebook ID of the place. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyPlaceID; - -/** - Field Key for the Place's phone number. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyPhone; - -/** - Field Key for the Place's photos. Note that this is not the actual photo data, but - rather URLs and other metadata. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyPhotos; - -/** - Field Key for the price range of the business, expressed as a string. Applicable to - Restaurants or Nightlife. Can be one of $ (0-10), $$ (10-30), $$$ (30-50), $$$$ (50+), - or Unspecified. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyPriceRange; - -/** - Field Key for the Place's profile photo. Note that this is not the actual photo data, - but rather URLs and other metadata. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyProfilePhoto; - -/** - Field Key for the number of ratings for the place. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyRatingCount; - -/** - Field Key for restaurant services e.g: delivery, takeout. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyRestaurantServices; - -/** - Field Key for restaurant specialties. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyRestaurantSpecialties; - -/** - Field Key for the address in a single line. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeySingleLineAddress; - -/** - Field Key for the string of the Place's website URL. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyWebsite; - -/** - Field Key for the Workflows. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesFieldKeyWorkflows; - -/** - Response Key for the place's city field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyCity; - -/** - Response Key for the place's city ID field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyCityID; - -/** - Response Key for the place's country field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyCountry; - -/** - Response Key for the place's country code field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyCountryCode; - -/** - Response Key for the place's latitude field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyLatitude; - -/** - Response Key for the place's longitude field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyLongitude; - -/** - Response Key for the place's region field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyRegion; - -/** - Response Key for the place's region ID field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyRegionID; - -/** - Response Key for the place's state field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyState; - -/** - Response Key for the place's street field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyStreet; - -/** - Response Key for the place's zip code field. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyZip; - -/** - Response Key for the categories that this place matched. - To be used on the search request if the categories parameter is specified. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyMatchedCategories; - -/** - Response Key for the photo source dictionary. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyPhotoSource; - -/** - Response Key for response data. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyData; - -/** - Response Key for a URL. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesResponseKeyUrl; - -/** - Parameter Key for the current place summary. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesParameterKeySummary; - -/** - Summary Key for the current place tracking ID. - */ -FOUNDATION_EXPORT NSString *const FBSDKPlacesSummaryKeyTracking; +NS_ASSUME_NONNULL_BEGIN /** The level of confidence the Facebook SDK has that a Place is the correct one for the @@ -288,9 +30,286 @@ FOUNDATION_EXPORT NSString *const FBSDKPlacesSummaryKeyTracking; - FBSDKPlaceLocationConfidenceMedium: Medium confidence level. - FBSDKPlaceLocationConfidenceHigh: High confidence level. */ -typedef NS_ENUM(NSInteger) { +typedef NS_ENUM(NSInteger, FBSDKPlaceLocationConfidence) { FBSDKPlaceLocationConfidenceNotApplicable, FBSDKPlaceLocationConfidenceLow, FBSDKPlaceLocationConfidenceMedium, FBSDKPlaceLocationConfidenceHigh -} FBSDKPlaceLocationConfidence; +} NS_SWIFT_NAME(PlaceLocationConfidence); + +/** + These are the fields currently exposed by FBSDKPlacesKit. They map to the fields on + Place objects returned by the Graph API, which can be found + [here](https://developers.facebook.com/docs/places ). Should fields be added to the Graph API in + the future, you can use strings found in the online documenation in addition to + these string constants. + */ + +/// typedef for FBSDKPlacesCategoryKey +typedef NSString *const FBSDKPlacesCategoryKey NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(PlacesCategoryKey); + +/// typedef for FBSDKPlacesFieldKey +typedef NSString *const FBSDKPlacesFieldKey NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(PlacesFieldKey); + +/// typedef for FBSDKPlacesResponseKey +typedef NSString *const FBSDKPlacesResponseKey NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(PlacesResponseKey); + +/// typedef for FBSDKPlacesParameterKey +typedef NSString *const FBSDKPlacesParameterKey NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(PlacesParameterKey); + +/// typedef for FBSDKPlacesSummaryKey +typedef NSString *const FBSDKPlacesSummaryKey NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(PlacesSummaryKey); + +/** + Field Key for information about the Place. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyAbout; + +/** + Field Key for AppLinks for the Place. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyAppLinks; + +/** + Field Key for the Place's categories. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyCategories; + +/** + Field Key for the number of checkins at the Place. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyCheckins; + +/** + Field Key for the confidence level for a current place estimate candidate. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyConfidence; + +/** + Field Key for the Place's cover photo. Note that this is not the actual photo data, + but rather URLs and other metadata. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyCoverPhoto; + +/** + Field Key for the description of the Place. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyDescription; + +/** + Field Key for the social sentence and like count information for this place. This is + the same information used for the Like button. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyEngagement; + +/** + Field Key for hour ranges for when the Place is open. Each day can have two different + hours ranges. The keys in the dictionary are in the form of {day}_{number}_{status}. + {day} should be the first 3 characters of the day of the week, {number} should be + either 1 or 2 to allow for the two different hours ranges per day. {status} should be + either open or close, to delineate the start or end of a time range. An example would + be mon_1_open with value 17:00 and mon_1_close with value 21:15 which would represent + a single opening range of 5 PM to 9:15 PM on Mondays. You can find an example of hours + being parsed out in the Sample App. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyHours; + +/** + Field Key for a value indicating whether this place is always open. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyIsAlwaysOpen; + +/** + Field Key for a value indicating whether this place is permanently closed. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyIsPermanentlyClosed; + +/** + Pages with a large number of followers can be manually verified by Facebook as having an + authentic identity. This field indicates whether the page is verified by this process. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyIsVerified; + +/** + Field Key for address and latitude/longitude information for the place. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyLocation; + +/** + Field Key for a link to Place's Facebook page. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyLink; + +/** + Field Key for the name of the place. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyName; + +/** + Field Key for the overall page rating based on rating surveys from users on a scale + from 1-5. This value is normalized, and is not guaranteed to be a strict average of + user ratings. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyOverallStarRating; + +/** + Field Key for the Facebook Page information. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPage; + +/** + Field Key for PageParking information for the Place. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyParking; + +/** + Field Key for available payment options. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPaymentOptions; + +/** + Field Key for the unique Facebook ID of the place. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPlaceID; + +/** + Field Key for the Place's phone number. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPhone; + +/** + Field Key for the Place's photos. Note that this is not the actual photo data, but + rather URLs and other metadata. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPhotos; + +/** + Field Key for the price range of the business, expressed as a string. Applicable to + Restaurants or Nightlife. Can be one of $ (0-10), $$ (10-30), $$$ (30-50), $$$$ (50+), + or Unspecified. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPriceRange; + +/** + Field Key for the Place's profile photo. Note that this is not the actual photo data, + but rather URLs and other metadata. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyProfilePhoto; + +/** + Field Key for the number of ratings for the place. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyRatingCount; + +/** + Field Key for restaurant services e.g: delivery, takeout. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyRestaurantServices; + +/** + Field Key for restaurant specialties. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyRestaurantSpecialties; + +/** + Field Key for the address in a single line. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeySingleLineAddress; + +/** + Field Key for the string of the Place's website URL. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyWebsite; + +/** + Field Key for the Workflows. + */ +FOUNDATION_EXPORT FBSDKPlacesFieldKey FBSDKPlacesFieldKeyWorkflows; + +/** + Response Key for the place's city field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyCity; + +/** + Response Key for the place's city ID field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyCityID; + +/** + Response Key for the place's country field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyCountry; + +/** + Response Key for the place's country code field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyCountryCode; + +/** + Response Key for the place's latitude field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyLatitude; + +/** + Response Key for the place's longitude field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyLongitude; + +/** + Response Key for the place's region field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyRegion; + +/** + Response Key for the place's region ID field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyRegionID; + +/** + Response Key for the place's state field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyState; + +/** + Response Key for the place's street field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyStreet; + +/** + Response Key for the place's zip code field. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyZip; + +/** + Response Key for the categories that this place matched. + To be used on the search request if the categories parameter is specified. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyMatchedCategories; + +/** + Response Key for the photo source dictionary. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyPhotoSource; + +/** + Response Key for response data. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyData; + +/** + Response Key for a URL. + */ +FOUNDATION_EXPORT FBSDKPlacesResponseKey FBSDKPlacesResponseKeyUrl; + +/** + Parameter Key for the current place summary. + */ +FOUNDATION_EXPORT FBSDKPlacesParameterKey FBSDKPlacesParameterKeySummary; + +/** + Summary Key for the current place tracking ID. + */ +FOUNDATION_EXPORT FBSDKPlacesSummaryKey FBSDKPlacesSummaryKeyTracking; + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.m b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.m index 560250c..7c45533 100644 --- a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.m +++ b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.m @@ -18,56 +18,56 @@ #include "FBSDKPlacesKitConstants.h" -NSString *const FBSDKPlacesFieldKeyAbout = @"about"; -NSString *const FBSDKPlacesFieldKeyAppLinks = @"app_links"; -NSString *const FBSDKPlacesFieldKeyCategories = @"category_list"; -NSString *const FBSDKPlacesFieldKeyCheckins = @"checkins"; -NSString *const FBSDKPlacesFieldKeyConfidence = @"confidence_level"; -NSString *const FBSDKPlacesFieldKeyCoverPhoto = @"cover"; -NSString *const FBSDKPlacesFieldKeyDescription = @"description"; -NSString *const FBSDKPlacesFieldKeyEngagement = @"engagement"; -NSString *const FBSDKPlacesFieldKeyHours = @"hours"; -NSString *const FBSDKPlacesFieldKeyIsAlwaysOpen = @"is_always_open"; -NSString *const FBSDKPlacesFieldKeyIsPermanentlyClosed = @"is_permanently_closed"; -NSString *const FBSDKPlacesFieldKeyIsVerified = @"is_verified"; -NSString *const FBSDKPlacesFieldKeyLink = @"link"; -NSString *const FBSDKPlacesFieldKeyLocation = @"location"; -NSString *const FBSDKPlacesFieldKeyName = @"name"; -NSString *const FBSDKPlacesFieldKeyOverallStarRating = @"overall_star_rating"; -NSString *const FBSDKPlacesFieldKeyPlaceID = @"id"; -NSString *const FBSDKPlacesFieldKeyPage = @"page"; -NSString *const FBSDKPlacesFieldKeyParking = @"parking"; -NSString *const FBSDKPlacesFieldKeyPaymentOptions = @"payment_options"; -NSString *const FBSDKPlacesFieldKeyPhone = @"phone"; -NSString *const FBSDKPlacesFieldKeyProfilePhoto = @"picture"; -NSString *const FBSDKPlacesFieldKeyPhotos = @"photos"; -NSString *const FBSDKPlacesFieldKeyPriceRange = @"price_range"; -NSString *const FBSDKPlacesFieldKeyRatingCount = @"rating_count"; -NSString *const FBSDKPlacesFieldKeyRestaurantServices = @"restaurant_services"; -NSString *const FBSDKPlacesFieldKeyRestaurantSpecialties = @"restaurant_specialties"; -NSString *const FBSDKPlacesFieldKeySingleLineAddress = @"single_line_address"; -NSString *const FBSDKPlacesFieldKeyWebsite = @"website"; -NSString *const FBSDKPlacesFieldKeyWorkflows = @"workflows"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyAbout = @"about"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyAppLinks = @"app_links"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyCategories = @"category_list"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyCheckins = @"checkins"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyConfidence = @"confidence_level"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyCoverPhoto = @"cover"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyDescription = @"description"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyEngagement = @"engagement"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyHours = @"hours"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyIsAlwaysOpen = @"is_always_open"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyIsPermanentlyClosed = @"is_permanently_closed"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyIsVerified = @"is_verified"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyLink = @"link"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyLocation = @"location"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyName = @"name"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyOverallStarRating = @"overall_star_rating"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPlaceID = @"id"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPage = @"page"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyParking = @"parking"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPaymentOptions = @"payment_options"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPhone = @"phone"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyProfilePhoto = @"picture"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPhotos = @"photos"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyPriceRange = @"price_range"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyRatingCount = @"rating_count"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyRestaurantServices = @"restaurant_services"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyRestaurantSpecialties = @"restaurant_specialties"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeySingleLineAddress = @"single_line_address"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyWebsite = @"website"; +FBSDKPlacesFieldKey FBSDKPlacesFieldKeyWorkflows = @"workflows"; -NSString *const FBSDKPlacesResponseKeyCity = @"city"; -NSString *const FBSDKPlacesResponseKeyCityID = @"city_id"; -NSString *const FBSDKPlacesResponseKeyCountry = @"country"; -NSString *const FBSDKPlacesResponseKeyCountryCode = @"country_code"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyCity = @"city"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyCityID = @"city_id"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyCountry = @"country"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyCountryCode = @"country_code"; -NSString *const FBSDKPlacesResponseKeyLatitude = @"latitude"; -NSString *const FBSDKPlacesResponseKeyLongitude = @"longitude"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyLatitude = @"latitude"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyLongitude = @"longitude"; -NSString *const FBSDKPlacesResponseKeyRegion = @"region"; -NSString *const FBSDKPlacesResponseKeyRegionID = @"region_id"; -NSString *const FBSDKPlacesResponseKeyState = @"state"; -NSString *const FBSDKPlacesResponseKeyStreet = @"street"; -NSString *const FBSDKPlacesResponseKeyZip = @"zip"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyRegion = @"region"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyRegionID = @"region_id"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyState = @"state"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyStreet = @"street"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyZip = @"zip"; -NSString *const FBSDKPlacesResponseKeyMatchedCategories = @"matched_categories"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyMatchedCategories = @"matched_categories"; -NSString *const FBSDKPlacesResponseKeyPhotoSource = @"source"; -NSString *const FBSDKPlacesResponseKeyData = @"data"; -NSString *const FBSDKPlacesResponseKeyUrl = @"url"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyPhotoSource = @"source"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyData = @"data"; +FBSDKPlacesResponseKey FBSDKPlacesResponseKeyUrl = @"url"; -NSString *const FBSDKPlacesParameterKeySummary = @"summary"; -NSString *const FBSDKPlacesSummaryKeyTracking = @"tracking"; +FBSDKPlacesParameterKey FBSDKPlacesParameterKeySummary = @"summary"; +FBSDKPlacesSummaryKey FBSDKPlacesSummaryKeyTracking = @"tracking"; diff --git a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.h b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.h index 7e67f1d..3c57e0e 100644 --- a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.h +++ b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.h @@ -23,6 +23,8 @@ #import "FBSDKPlacesKitConstants.h" +NS_ASSUME_NONNULL_BEGIN + /** Completion block for aysnchronous place request generation. @@ -34,7 +36,10 @@ @param error An error indicating a failure in a location services request. */ -typedef void (^FBSDKPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Nullable graphRequest, CLLocation *_Nullable location, NSError *_Nullable error); +typedef void (^FBSDKPlaceGraphRequestBlock)(FBSDKGraphRequest *_Nullable graphRequest, + CLLocation *_Nullable location, + NSError *_Nullable error) +NS_SWIFT_NAME(PlaceGraphRequestBlock); /** Completion block for aysnchronous current place request generation. @@ -44,7 +49,9 @@ typedef void (^FBSDKPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Nullable gr @param error An error indicating a failure in a location services request. */ -typedef void (^FBSDKCurrentPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Nullable graphRequest, NSError *_Nullable error); +typedef void (^FBSDKCurrentPlaceGraphRequestBlock)(FBSDKGraphRequest *_Nullable graphRequest, + NSError *_Nullable error) +NS_SWIFT_NAME(CurrentPlaceGraphRequestBlock); /** `FBSDKPlacesManager` provides methods for searching for nearby places, as well as for @@ -56,6 +63,7 @@ typedef void (^FBSDKCurrentPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Null for your app, see: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html. */ +NS_SWIFT_NAME(PlacesManager) @interface FBSDKPlacesManager : NSObject @@ -79,16 +87,17 @@ typedef void (^FBSDKCurrentPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Null @param cursor A pagination cursor. - @param completion An `FBSDKPlaceGraphRequestCompletion` block. Note that this block will + @param completion An `FBSDKPlaceGraphRequestBlock` block. Note that this block will return the location, which you can choose to cache and use on calls to the synchronous `placesGraphRequestForLocation` method. */ - (void)generatePlaceSearchRequestForSearchTerm:(nullable NSString *)searchTerm - categories:(nullable NSArray *)categories - fields:(nullable NSArray *)fields + categories:(NSArray *)categories + fields:(NSArray *)fields distance:(CLLocationDistance)distance cursor:(nullable NSString *)cursor - completion:(nonnull FBSDKPlaceGraphRequestCompletion)completion; + completion:(FBSDKPlaceGraphRequestBlock)completion +NS_SWIFT_NAME(generatePlaceSearchRequest(for:categories:fields:distance:cursor:completion:)); /** Method for generating a graph request for searching the Places API. @@ -115,8 +124,8 @@ typedef void (^FBSDKCurrentPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Null */ - (nullable FBSDKGraphRequest *)placeSearchRequestForLocation:(nullable CLLocation *)location searchTerm:(nullable NSString *)searchTerm - categories:(nullable NSArray *)categories - fields:(nullable NSArray *)fields + categories:(NSArray *)categories + fields:(NSArray *)fields distance:(CLLocationDistance)distance cursor:(nullable NSString *)cursor; @@ -132,11 +141,12 @@ typedef void (^FBSDKCurrentPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Null `FBSDKPlacesKitConstants.h` for the fields exposed by the SDK, and see https://developers.facebook.com/docs/places/fields for the most up to date list. - @param completion A `FBSDKCurrentPlaceGraphRequestCompletion` block, that contains the graph request. + @param completion A `FBSDKCurrentPlaceGraphRequestBlock` block, that contains the graph request. */ - (void)generateCurrentPlaceRequestWithMinimumConfidenceLevel:(FBSDKPlaceLocationConfidence)minimumConfidence - fields:(nullable NSArray *)fields - completion:(nonnull FBSDKCurrentPlaceGraphRequestCompletion)completion; + fields:(NSArray *)fields + completion:(FBSDKCurrentPlaceGraphRequestBlock)completion +NS_SWIFT_NAME(generateCurrentPlaceRequest(confidence:fields:completion:)); /** Method for generating a graph request to query for places the device is likely @@ -155,12 +165,13 @@ typedef void (^FBSDKCurrentPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Null `FBSDKPlacesKitConstants.h` for the fields exposed by the SDK, and see https://developers.facebook.com/docs/places/fields for the most up to date list. - @param completion A `FBSDKCurrentPlaceGraphRequestCompletion` block, that contains the graph request. + @param completion A `FBSDKCurrentPlaceGraphRequestBlock` block, that contains the graph request. */ -- (void)generateCurrentPlaceRequestForCurrentLocation:(nonnull CLLocation *)currentLocation +- (void)generateCurrentPlaceRequestForCurrentLocation:(CLLocation *)currentLocation withMinimumConfidenceLevel:(FBSDKPlaceLocationConfidence)minimumConfidence - fields:(nullable NSArray *)fields - completion:(nonnull FBSDKCurrentPlaceGraphRequestCompletion)completion; + fields:(NSArray *)fields + completion:(FBSDKCurrentPlaceGraphRequestBlock)completion +NS_SWIFT_NAME(generateCurrentPlaceRequest(for:confidence:fields:completion:)); /** Method for generating a graph request to provide feedback to the Places Graph about @@ -177,9 +188,10 @@ typedef void (^FBSDKCurrentPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Null @return An `FBSDKGraphRequest` for the given parameters. */ -- (nonnull FBSDKGraphRequest *)currentPlaceFeedbackRequestForPlaceID:(nonnull NSString *)placeID - tracking:(nonnull NSString *)tracking - wasHere:(BOOL)wasHere; +- (FBSDKGraphRequest *)currentPlaceFeedbackRequestForPlaceID:(NSString *)placeID + tracking:(NSString *)tracking + wasHere:(BOOL)wasHere +NS_SWIFT_NAME(currentPlaceFeedbackRequest(for:tracking:wasHere:)); /** Method for generating a graph request to fetch additional information for a given place. @@ -192,8 +204,11 @@ typedef void (^FBSDKCurrentPlaceGraphRequestCompletion)(FBSDKGraphRequest *_Null @return An `FBSDKGraphRequest` for the given parameters. */ -- (nonnull FBSDKGraphRequest *)placeInfoRequestForPlaceID:(nonnull NSString *)placeID - fields:(nullable NSArray *)fields; +- (FBSDKGraphRequest *)placeInfoRequestForPlaceID:(NSString *)placeID + fields:(NSArray *)fields +NS_SWIFT_NAME(currentPlaceFeedbackRequest(for:fields:)); @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.m b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.m index 3957145..a36bf68 100644 --- a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.m +++ b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.m @@ -29,7 +29,7 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N @interface FBSDKPlacesManager() @property (nonatomic, strong) CLLocationManager *locationManager; -@property (atomic, strong) NSMutableArray *locationCompletionBlocks; +@property (atomic, strong) NSMutableArray *locationCompletionBlocks; @property (nonatomic, strong) FBSDKPlacesBluetoothScanner *bluetoothScanner; @@ -52,11 +52,11 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N #pragma mark - Place Search - (void)generatePlaceSearchRequestForSearchTerm:(NSString *)searchTerm - categories:(NSArray *)categories - fields:(NSArray *)fields + categories:(NSArray *)categories + fields:(NSArray *)fields distance:(CLLocationDistance)distance cursor:(NSString *)cursor - completion:(FBSDKPlaceGraphRequestCompletion)completion + completion:(FBSDKPlaceGraphRequestBlock)completion { __weak FBSDKPlacesManager *weakSelf = self; [self.locationCompletionBlocks addObject:^void (CLLocation *location, NSError *error) { @@ -69,13 +69,17 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N } }]; - [self.locationManager requestLocation]; + if (@available(iOS 9.0, *)) { + [self.locationManager requestLocation]; + } else { + [self.locationManager startUpdatingLocation]; + } } - (FBSDKGraphRequest *)placeSearchRequestForLocation:(CLLocation *)location searchTerm:(NSString *)searchTerm - categories:(NSArray *)categories - fields:(NSArray *)fields + categories:(NSArray *)categories + fields:(NSArray *)fields distance:(CLLocationDistance)distance cursor:(NSString *)cursor { @@ -88,7 +92,7 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N if (searchTerm) { parameters[@"q"] = searchTerm; } - if (categories) { + if (categories && categories.count > 0) { parameters[@"categories"] = [self _jsonStringForObject:categories]; } if (location) { @@ -97,7 +101,7 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N if (distance > 0) { parameters[@"distance"] = @(distance); } - if (fields) { + if (fields && fields.count > 0) { parameters[ParameterKeyFields] = [fields componentsJoinedByString:@","]; } @@ -106,12 +110,12 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N parameters:parameters tokenString:self._tokenString version:nil - HTTPMethod:nil]; + HTTPMethod:@""]; } - (void)generateCurrentPlaceRequestWithMinimumConfidenceLevel:(FBSDKPlaceLocationConfidence)minimumConfidence - fields:(NSArray *)fields - completion:(FBSDKCurrentPlaceGraphRequestCompletion)completion + fields:(NSArray *)fields + completion:(FBSDKCurrentPlaceGraphRequestBlock)completion { dispatch_group_t locationAndBeaconsGroup = dispatch_group_create(); @@ -128,10 +132,14 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N dispatch_group_leave(locationAndBeaconsGroup); }]; - [self.locationManager requestLocation]; + if (@available(iOS 9.0, *)) { + [self.locationManager requestLocation]; + } else { + [self.locationManager startUpdatingLocation]; + } dispatch_group_enter(locationAndBeaconsGroup); - [self.bluetoothScanner scanForBeaconsWithCompletion:^(NSArray * _Nullable beacons) { + [self.bluetoothScanner scanForBeaconsWithCompletion:^(NSArray *beacons) { currentBeacons = beacons; dispatch_group_leave(locationAndBeaconsGroup); }]; @@ -148,10 +156,10 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N - (void)generateCurrentPlaceRequestForCurrentLocation:(CLLocation *)currentLocation withMinimumConfidenceLevel:(FBSDKPlaceLocationConfidence)minimumConfidence - fields:(nullable NSArray *)fields - completion:(nonnull FBSDKCurrentPlaceGraphRequestCompletion)completion + fields:(NSArray *)fields + completion:(nonnull FBSDKCurrentPlaceGraphRequestBlock)completion { - [self.bluetoothScanner scanForBeaconsWithCompletion:^(NSArray * _Nullable beacons) { + [self.bluetoothScanner scanForBeaconsWithCompletion:^(NSArray *beacons) { completion([self _currentPlaceGraphRequestForLocation:currentLocation bluetoothBeacons:beacons minimumConfidenceLevel:minimumConfidence fields:fields], nil); }]; } @@ -172,10 +180,10 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N } - (FBSDKGraphRequest *)placeInfoRequestForPlaceID:(NSString *)placeID - fields:(NSArray *)fields + fields:(NSArray *)fields { NSDictionary *parameters = @{}; - if (fields) { + if (fields && fields.count) { parameters = @{ParameterKeyFields : [fields componentsJoinedByString:@","]}; } @@ -184,7 +192,7 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N parameters:parameters tokenString:self._tokenString version:nil - HTTPMethod:nil]; + HTTPMethod:@""]; } #pragma mark - Helper Methods @@ -192,7 +200,7 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N - (FBSDKGraphRequest *)_currentPlaceGraphRequestForLocation:(CLLocation *)location bluetoothBeacons:(NSArray *)beacons minimumConfidenceLevel:(FBSDKPlaceLocationConfidence)minimumConfidence - fields:(NSArray *)fields + fields:(NSArray *)fields { NSMutableDictionary *parameters = [NSMutableDictionary new]; @@ -223,7 +231,7 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N parameters[@"min_confidence_level"] = [self _confidenceWebKeyForConfidence:minimumConfidence]; } - if (fields) { + if (fields && fields.count > 0) { parameters[ParameterKeyFields] = [fields componentsJoinedByString:@","]; } @@ -232,7 +240,7 @@ typedef void (^FBSDKLocationRequestCompletion)(CLLocation *_Nullable location, N parameters:parameters tokenString:self._tokenString version:nil - HTTPMethod:nil]; + HTTPMethod:@""]; } diff --git a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.h b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.h index d280f61..02589df 100644 --- a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.h +++ b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.h @@ -18,17 +18,24 @@ #import +NS_ASSUME_NONNULL_BEGIN + +NS_SWIFT_NAME(BluetoothBeacon) @interface FBSDKBluetoothBeacon : NSObject -@property (nonatomic, strong) NSNumber *_Nonnull RSSI; -@property (nonatomic, copy) NSString *_Nonnull payload; +@property (nonatomic, strong) NSNumber *RSSI; +@property (nonatomic, copy) NSString *payload; @end -typedef void (^BluetoothBeaconScanCompletion)(NSArray *_Nullable beacons); +typedef void (^FBSDKBluetoothBeaconBlock)(NSArray *beacons) +NS_SWIFT_NAME(BluetoothBeaconBlock); +NS_SWIFT_NAME(PlacesBluetoothScanner) @interface FBSDKPlacesBluetoothScanner : NSObject -- (void)scanForBeaconsWithCompletion:(nonnull BluetoothBeaconScanCompletion)completion; +- (void)scanForBeaconsWithCompletion:(FBSDKBluetoothBeaconBlock)completion; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.m b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.m index 97b4c19..8a878a0 100644 --- a/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.m +++ b/Example/Pods/FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.m @@ -33,7 +33,7 @@ static NSTimeInterval const scanLength = 0.5; @property (nonatomic, strong) CBCentralManager *manager; @property (nonatomic, strong) NSTimer *updateTimeoutTimer; @property (nonatomic, strong) NSMutableArray *discoveredBeacons; -@property (atomic, strong) NSMutableArray *scanCompletionBlocks; +@property (atomic, strong) NSMutableArray *scanCompletionBlocks; @property (nonatomic, assign) BOOL didPerformScan; @property (nonatomic, copy, readonly) NSArray *bluetoothServices; @@ -56,13 +56,13 @@ static NSTimeInterval const scanLength = 0.5; return self; } -- (void)scanForBeaconsWithCompletion:(BluetoothBeaconScanCompletion)completion +- (void)scanForBeaconsWithCompletion:(FBSDKBluetoothBeaconBlock)completion { if (self.manager.state == CBCentralManagerStatePoweredOff || self.manager.state == CBCentralManagerStateUnsupported || self.manager.state == CBCentralManagerStateUnauthorized) { - completion(nil); + completion(@[]); return; } @@ -94,12 +94,12 @@ static NSTimeInterval const scanLength = 0.5; { [self.manager stopScan]; - for (BluetoothBeaconScanCompletion completion in self.scanCompletionBlocks) { + for (FBSDKBluetoothBeaconBlock completion in self.scanCompletionBlocks) { if (self.didPerformScan) { completion(self.discoveredBeacons); } else { - completion(nil); + completion(@[]); } } [self.scanCompletionBlocks removeAllObjects]; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h deleted file mode 100644 index f20eb2e..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -DEPRECATED_MSG_ATTRIBUTE("App and game groups are being deprecated") -@interface FBSDKAppGroupAddDialog : NSObject - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -+ (instancetype)showWithContent:(FBSDKAppGroupContent *)content - delegate:(id)delegate -DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -@property (nonatomic, weak) id delegate -DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -@property (nonatomic, copy) FBSDKAppGroupContent *content -DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)canShow DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)show DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef -DEPRECATED_ATTRIBUTE; - -@end - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -DEPRECATED_MSG_ATTRIBUTE("App and game groups are being deprecated") -@protocol FBSDKAppGroupAddDialogDelegate - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (void)appGroupAddDialog:(FBSDKAppGroupAddDialog *)appGroupAddDialog didCompleteWithResults:(NSDictionary *)results DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (void)appGroupAddDialog:(FBSDKAppGroupAddDialog *)appGroupAddDialog didFailWithError:(NSError *)error DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (void)appGroupAddDialogDidCancel:(FBSDKAppGroupAddDialog *)appGroupAddDialog DEPRECATED_ATTRIBUTE; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m deleted file mode 100644 index 6e47307..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 "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 = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - 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 = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"content" - message:nil]; - } - return NO; - } - if (!content.name.length) { - if (errorRef != NULL) { - *errorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"name" - message:nil]; - } - return NO; - } - if (!content.groupDescription.length) { - if (errorRef != NULL) { - *errorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"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 = [NSError fbErrorWithCode:[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/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h index 9b0e0fe..1c9143b 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h @@ -20,6 +20,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** NS_ENUM(NSUInteger, FBSDKAppGroupPrivacy) Specifies the privacy of a group. @@ -30,16 +32,18 @@ typedef NS_ENUM(NSUInteger, FBSDKAppGroupPrivacy) FBSDKAppGroupPrivacyOpen = 0, /** Anyone can see the group and who's in it, but only members can see posts. */ FBSDKAppGroupPrivacyClosed, -}; +} NS_SWIFT_NAME(AppGroupPrivacy); /** Converts an FBSDKAppGroupPrivacy to an NSString. */ -FOUNDATION_EXPORT NSString *NSStringFromFBSDKAppGroupPrivacy(FBSDKAppGroupPrivacy privacy); +FOUNDATION_EXPORT NSString *NSStringFromFBSDKAppGroupPrivacy(FBSDKAppGroupPrivacy privacy) +NS_REFINED_FOR_SWIFT; /** A model for creating an app group. */ +NS_SWIFT_NAME(AppGroupContent) @interface FBSDKAppGroupContent : NSObject /** @@ -65,3 +69,5 @@ FOUNDATION_EXPORT NSString *NSStringFromFBSDKAppGroupPrivacy(FBSDKAppGroupPrivac - (BOOL)isEqualToAppGroupContent:(FBSDKAppGroupContent *)content; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m index 7ff1681..31ad03d 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m @@ -18,7 +18,11 @@ #import "FBSDKAppGroupContent.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareUtility.h" #define FBSDK_APP_GROUP_CONTENT_GROUP_DESCRIPTION_KEY @"groupDescription" diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h deleted file mode 100644 index 60e8d99..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -DEPRECATED_MSG_ATTRIBUTE("App and game groups are being deprecated") -@interface FBSDKAppGroupJoinDialog : NSObject - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -+ (instancetype)showWithGroupID:(NSString *)groupID - delegate:(id)delegate DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. */ -@property (nonatomic, weak) id delegate DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. */ -@property (nonatomic, copy) NSString *groupID DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)canShow DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)show DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef DEPRECATED_ATTRIBUTE; - -@end - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -DEPRECATED_MSG_ATTRIBUTE("App and game groups are being deprecated") -@protocol FBSDKAppGroupJoinDialogDelegate - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (void)appGroupJoinDialog:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog didCompleteWithResults:(NSDictionary *)results DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (void)appGroupJoinDialog:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog didFailWithError:(NSError *)error DEPRECATED_ATTRIBUTE; - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (void)appGroupJoinDialogDidCancel:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog DEPRECATED_ATTRIBUTE; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m deleted file mode 100644 index ff66093..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 "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 = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - 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 = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"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 = [NSError fbErrorWithCode:[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/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h index 5655983..14bd9f7 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h @@ -21,6 +21,8 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** NS_ENUM(NSUInteger, FBSDKAppInviteDestination) Specifies the privacy of a group. @@ -31,11 +33,12 @@ typedef NS_ENUM(NSUInteger, FBSDKAppInviteDestination) FBSDKAppInviteDestinationFacebook = 0, /** Deliver to Messenger. */ FBSDKAppInviteDestinationMessenger, -}; +} NS_SWIFT_NAME(AppInviteDestination); /** A model for app invite. */ +NS_SWIFT_NAME(AppInviteContent) @interface FBSDKAppInviteContent : NSObject /** @@ -44,7 +47,7 @@ typedef NS_ENUM(NSUInteger, FBSDKAppInviteDestination) This is optional. If you don't include it a fallback image will be used. */ -@property (nonatomic, copy) NSURL *appInvitePreviewImageURL; +@property (nonatomic, copy, nullable) NSURL *appInvitePreviewImageURL; /** An app link target that will be used as a target when the user accept the invite. @@ -54,13 +57,6 @@ typedef NS_ENUM(NSUInteger, FBSDKAppInviteDestination) */ @property (nonatomic, copy) NSURL *appLinkURL; -/** - -@warning Use `appInvitePreviewImageURL` instead. - */ -@property (nonatomic, copy) NSURL *previewImageURL -DEPRECATED_MSG_ATTRIBUTE("use appInvitePreviewImageURL instead"); - /** Promotional code to be displayed while sending and receiving the invite. @@ -68,7 +64,7 @@ DEPRECATED_MSG_ATTRIBUTE("use appInvitePreviewImageURL instead"); This is optional. This can be between 0 and 10 characters long and can contain alphanumeric characters only. To set a promo code, you need to set promo text. */ -@property (nonatomic, copy) NSString *promotionCode; +@property (nonatomic, copy, nullable) NSString *promotionCode; /** Promotional text to be displayed while sending and receiving the invite. @@ -77,7 +73,7 @@ DEPRECATED_MSG_ATTRIBUTE("use appInvitePreviewImageURL instead"); This is optional. This can be between 0 and 80 characters long and can contain alphanumeric and spaces only. */ -@property (nonatomic, copy) NSString *promotionText; +@property (nonatomic, copy, nullable) NSString *promotionText; /** Destination for the app invite. @@ -85,7 +81,7 @@ DEPRECATED_MSG_ATTRIBUTE("use appInvitePreviewImageURL instead"); This is optional and for declaring destination of the invite. */ -@property FBSDKAppInviteDestination destination; +@property (nonatomic, assign) FBSDKAppInviteDestination destination; /** Compares the receiver to another app invite content. @@ -95,3 +91,5 @@ DEPRECATED_MSG_ATTRIBUTE("use appInvitePreviewImageURL instead"); - (BOOL)isEqualToAppInviteContent:(FBSDKAppInviteContent *)content; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m index f74b1aa..313e149 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m @@ -18,7 +18,11 @@ #import "FBSDKAppInviteContent.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareUtility.h" #define FBSDK_APP_INVITE_CONTENT_APP_LINK_URL_KEY @"appLinkURL" @@ -59,28 +63,28 @@ // Check for validity of promo text and promo code. if (!(_promotionText.length > 0 && _promotionText.length <= 80)) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithName:@"promotionText" value:_promotionText message:@"Invalid value for promotionText, promotionText has to be between 1 and 80 characters long."]; + *errorRef = [FBSDKError invalidArgumentErrorWithName:@"promotionText" value:_promotionText message:@"Invalid value for promotionText, promotionText has to be between 1 and 80 characters long."]; } return NO; } if (!(_promotionCode.length <= 10)) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithName:@"promotionCode" value:_promotionCode message:@"Invalid value for promotionCode, promotionCode has to be between 0 and 10 characters long and is required when promoCode is set."]; + *errorRef = [FBSDKError invalidArgumentErrorWithName:@"promotionCode" value:_promotionCode message:@"Invalid value for promotionCode, promotionCode has to be between 0 and 10 characters long and is required when promoCode is set."]; } return NO; } if ([_promotionText rangeOfCharacterFromSet:alphanumericWithSpaces.invertedSet].location != NSNotFound) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithName:@"promotionText" value:_promotionText message:@"Invalid value for promotionText, promotionText can contain only alphanumeric characters and spaces."]; + *errorRef = [FBSDKError invalidArgumentErrorWithName:@"promotionText" value:_promotionText message:@"Invalid value for promotionText, promotionText can contain only alphanumeric characters and spaces."]; } return NO; } if (_promotionCode.length > 0 && [_promotionCode rangeOfCharacterFromSet:alphanumericWithSpaces.invertedSet].location != NSNotFound) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithName:@"promotionCode" value:_promotionCode message:@"Invalid value for promotionCode, promotionCode can contain only alphanumeric characters and spaces."]; + *errorRef = [FBSDKError invalidArgumentErrorWithName:@"promotionCode" value:_promotionCode message:@"Invalid value for promotionCode, promotionCode can contain only alphanumeric characters and spaces."]; } return NO; } @@ -158,7 +162,7 @@ [encoder encodeObject:_appInvitePreviewImageURL forKey:FBSDK_APP_INVITE_CONTENT_PREVIEW_IMAGE_KEY]; [encoder encodeObject:_promotionCode forKey:FBSDK_APP_INVITE_CONTENT_PROMO_CODE_KEY]; [encoder encodeObject:_promotionText forKey:FBSDK_APP_INVITE_CONTENT_PROMO_TEXT_KEY]; - [encoder encodeInt:_destination forKey:FBSDK_APP_INVITE_CONTENT_DESTINATION_KEY]; + [encoder encodeInt:(int)_destination forKey:FBSDK_APP_INVITE_CONTENT_DESTINATION_KEY]; } #pragma mark - NSCopying diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h deleted file mode 100644 index 0af2790..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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; - -/** - A dialog for sending App Invites. - */ -@interface FBSDKAppInviteDialog : NSObject - -/** - 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. - @warning This method is deprecated. - */ -+ (instancetype)showFromViewController:(UIViewController *)viewController - withContent:(FBSDKAppInviteContent *)content - delegate:(id)delegate -DEPRECATED_MSG_ATTRIBUTE("App Invites no longer supported"); - - -/** - - @warning use showFromViewController:withContent:delegate: instead - */ -+ (instancetype)showWithContent:(FBSDKAppInviteContent *)content delegate:(id)delegate -DEPRECATED_MSG_ATTRIBUTE("use showFromViewController:withContent:delegate: instead"); - -/** - A UIViewController to present the dialog from. - - If not specified, the top most view controller will be automatically determined as best as possible. - */ -@property (nonatomic, weak) UIViewController *fromViewController; - -/** - The receiver's delegate or nil if it doesn't have a delegate. - */ -@property (nonatomic, weak) id delegate; - -/** - The content for app invite. - */ -@property (nonatomic, copy) FBSDKAppInviteContent *content; - -/** - A Boolean value that indicates whether the receiver can initiate an app invite. - - 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: - @return YES if the receiver can show the dialog, otherwise NO. - */ -@property (nonatomic, readonly) BOOL canShow; - -/** - Begins the app invite from the receiver. - @return YES if the receiver was able to show the dialog, otherwise NO. - */ -- (BOOL)show; - -/** - 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 - -/** - A delegate for FBSDKAppInviteDialog. - - 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 - -/** - 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; - -/** - 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/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m deleted file mode 100644 index 15671cd..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 "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; -{ - return nil; -} - -#pragma mark - Public Methods - -- (BOOL)canShow -{ - return NO; -} - -- (BOOL)show -{ - return NO; -} - -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef -{ - if (![FBSDKShareUtility validateRequiredValue:self.content name:@"content" error:errorRef]) { - return NO; - } - if ([self.content respondsToSelector:@selector(validateWithError:)]) { - return [self.content validateWithOptions:FBSDKShareBridgeOptionsDefault error:errorRef]; - } - if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"content" - value:self.content - message:nil]; - } - return NO; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h index 6306f47..6c8b850 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h @@ -20,10 +20,13 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** * A container of arguments for a camera effect. * An argument is a NSString identified by a NSString key. */ +NS_SWIFT_NAME(CameraEffectArguments) @interface FBSDKCameraEffectArguments : NSObject /** @@ -31,27 +34,31 @@ @param string The argument @param key The key for the argument */ -- (void)setString:(NSString *)string forKey:(NSString *)key; +- (void)setString:(nullable NSString *)string forKey:(NSString *)key +NS_SWIFT_NAME(set(_:forKey:)); /** Gets a string argument from the container. @param key The key for the argument @return The string value or nil */ -- (NSString *)stringForKey:(NSString *)key; +- (nullable NSString *)stringForKey:(NSString *)key; /** Sets a string array argument in the container. @param array The array argument @param key The key for the argument */ -- (void)setArray:(NSArray *)array forKey:(NSString *)key; +- (void)setArray:(nullable NSArray *)array forKey:(NSString *)key +NS_SWIFT_NAME(set(_:forKey:)); /** Gets an array argument from the container. @param key The key for the argument @return The array argument */ -- (NSArray *)arrayForKey:(NSString *)key; +- (nullable NSArray *)arrayForKey:(NSString *)key; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m index e4cd660..a1eb00b 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m @@ -18,14 +18,18 @@ #import "FBSDKCameraEffectArguments.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareUtility.h" static NSString *const FBSDKCameraEffectArgumentsArgumentsKey = @"arguments"; @implementation FBSDKCameraEffectArguments { - NSMutableDictionary *_arguments; + NSMutableDictionary *_arguments; } #pragma mark - Object Lifecycle @@ -53,12 +57,12 @@ static NSString *const FBSDKCameraEffectArgumentsArgumentsKey = @"arguments"; [self _setValue:[array copy] forKey:key]; } -- (NSArray *)arrayForKey:(NSString *)key +- (NSArray *)arrayForKey:(NSString *)key { return [self _valueOfClass:[NSArray class] forKey:key]; } -- (NSDictionary *)allArguments +- (NSDictionary *)allArguments; { return _arguments; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h index 9639b50..dded746 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h @@ -20,10 +20,13 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** * A container of textures for a camera effect. * A texture for a camera effect is an UIImages identified by a NSString key. */ +NS_SWIFT_NAME(CameraEffectTextures) @interface FBSDKCameraEffectTextures : NSObject /** @@ -31,13 +34,16 @@ @param image The UIImage for the texture @param key The key for the texture */ -- (void)setImage:(UIImage *)image forKey:(NSString *)key; +- (void)setImage:(nullable UIImage *)image forKey:(NSString *)key +NS_SWIFT_NAME(set(_:forKey:)); /** Gets the image for a texture key. @param key The key for the texture @return The texture UIImage or nil */ -- (UIImage *)imageForKey:(NSString *)key; +- (nullable UIImage *)imageForKey:(NSString *)key; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m index b5309a3..187940c 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m @@ -18,7 +18,11 @@ #import "FBSDKCameraEffectTextures.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareUtility.h" static NSString *const FBSDKCameraEffectTexturesTexturesKey = @"textures"; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h index 0591207..80972ed 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h @@ -21,6 +21,8 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** NS_ENUM(NSUInteger, FBSDKGameRequestActionType) Additional context about the nature of the request. @@ -35,7 +37,7 @@ typedef NS_ENUM(NSUInteger, FBSDKGameRequestActionType) FBSDKGameRequestActionTypeAskFor, /** Turn action type: It is the turn of the friends to play against the user in a match. (no object) */ FBSDKGameRequestActionTypeTurn, -}; +} NS_SWIFT_NAME(GameRequestActionType); /** NS_ENUM(NSUInteger, FBSDKGameRequestFilters) @@ -49,11 +51,12 @@ typedef NS_ENUM(NSUInteger, FBSDKGameRequestFilter) FBSDKGameRequestFilterAppUsers, /** Friends not using the app can be displayed. */ FBSDKGameRequestFilterAppNonUsers, -}; +} NS_SWIFT_NAME(GameRequestFilter); /** A model for a game request. */ +NS_SWIFT_NAME(GameRequestContent) @interface FBSDKGameRequestContent : NSObject /** @@ -77,7 +80,7 @@ typedef NS_ENUM(NSUInteger, FBSDKGameRequestFilter) 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; +@property (nonatomic, copy, nullable) NSString *data; /** This controls the set of friends someone sees if a multi-friend selector is shown. @@ -110,7 +113,7 @@ typedef NS_ENUM(NSUInteger, FBSDKGameRequestFilter) This is equivalent to the "to" parameter when using the web game request dialog. */ -@property (nonatomic, copy) NSArray *recipients; +@property (nonatomic, copy) NSArray *recipients; /** An array of user IDs that will be included in the dialog as the first suggested friends. @@ -118,25 +121,13 @@ typedef NS_ENUM(NSUInteger, FBSDKGameRequestFilter) This is equivalent to the "suggestions" parameter when using the web game request dialog. */ -@property (nonatomic, copy) NSArray *recipientSuggestions; - -/** - -@warning Use `recipientSuggestions` instead. -*/ -@property (nonatomic, copy) NSArray *suggestions -DEPRECATED_MSG_ATTRIBUTE("use recipientSuggestions instead"); +@property (nonatomic, copy) NSArray *recipientSuggestions; /** The title for the dialog. */ @property (nonatomic, copy) NSString *title; -/** - -@warning Use `recipients` instead. - */ -@property (nonatomic, copy) NSArray *to -DEPRECATED_MSG_ATTRIBUTE("use recipients instead"); - @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m index 19ed890..eb3ca66 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m @@ -18,7 +18,11 @@ #import "FBSDKGameRequestContent.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareConstants.h" #import "FBSDKShareUtility.h" @@ -84,9 +88,9 @@ if (mustHaveobjectID ^ hasobjectID) { if (errorRef != NULL) { NSString *message = @"The objectID is required when the actionType is either send or askfor."; - *errorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"objectID" - message:message]; + *errorRef = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"objectID" + message:message]; } return NO; } @@ -96,20 +100,20 @@ if (hasTo && hasFilters) { if (errorRef != NULL) { NSString *message = @"Cannot specify to and filters at the same time."; - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"recipients" - value:_recipients - message:message]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"recipients" + value:_recipients + message:message]; } return NO; } if (hasTo && hasSuggestions) { if (errorRef != NULL) { NSString *message = @"Cannot specify to and suggestions at the same time."; - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"recipients" - value:_recipients - message:message]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"recipients" + value:_recipients + message:message]; } return NO; } @@ -117,10 +121,10 @@ if (hasFilters && hasSuggestions) { if (errorRef != NULL) { NSString *message = @"Cannot specify filters and suggestions at the same time."; - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"recipientSuggestions" - value:_recipientSuggestions - message:message]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"recipientSuggestions" + value:_recipientSuggestions + message:message]; } return NO; } @@ -128,10 +132,10 @@ if (_data.length > 255) { if (errorRef != NULL) { NSString *message = @"The data cannot be longer than 255 characters"; - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"data" - value:_data - message:message]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"data" + value:_data + message:message]; } return NO; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h index d403007..05a590b 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h @@ -20,24 +20,42 @@ #import +NS_ASSUME_NONNULL_BEGIN + @protocol FBSDKGameRequestDialogDelegate; /** A dialog for sending game requests. */ +NS_SWIFT_NAME(GameRequestDialog) @interface FBSDKGameRequestDialog : NSObject +- (instancetype)init NS_DESIGNATED_INITIALIZER +NS_SWIFT_UNAVAILABLE("Use init(content:delegate:) instead"); ++ (instancetype)new NS_UNAVAILABLE; + /** - Convenience method to build up a game request with content and a delegate. + 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; ++ (instancetype)dialogWithContent:(FBSDKGameRequestContent *)content + delegate:(nullable id)delegate +NS_SWIFT_NAME(init(content:delegate:)); + +/** + Convenience method to build up and show 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:(nullable id)delegate +NS_SWIFT_UNAVAILABLE("Use init(content:delegate:).show() instead"); /** The receiver's delegate or nil if it doesn't have a delegate. */ -@property (nonatomic, weak) id delegate; +@property (nonatomic, weak, nullable) id delegate; /** The content for game request. @@ -47,7 +65,7 @@ /** Specifies whether frictionless requests are enabled. */ -@property (nonatomic, assign) BOOL frictionlessRequestsEnabled; +@property (nonatomic, assign, getter=isFrictionlessRequestsEnabled) BOOL frictionlessRequestsEnabled; /** A Boolean value that indicates whether the receiver can initiate a game request. @@ -83,6 +101,7 @@ 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. */ +NS_SWIFT_NAME(GameRequestDialogDelegate) @protocol FBSDKGameRequestDialogDelegate /** @@ -90,7 +109,7 @@ @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; +- (void)gameRequestDialog:(FBSDKGameRequestDialog *)gameRequestDialog didCompleteWithResults:(NSDictionary *)results; /** Sent to the delegate when the game request encounters an error. @@ -106,3 +125,5 @@ - (void)gameRequestDialogDidCancel:(FBSDKGameRequestDialog *)gameRequestDialog; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m index 6e5678d..2df0ff6 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m @@ -18,7 +18,11 @@ #import "FBSDKGameRequestDialog.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKGameRequestFrictionlessRecipientCache.h" #import "FBSDKShareConstants.h" #import "FBSDKShareUtility.h" @@ -45,11 +49,17 @@ static FBSDKGameRequestFrictionlessRecipientCache *_recipientCache = nil; } } -+ (instancetype)showWithContent:(FBSDKGameRequestContent *)content delegate:(id)delegate ++ (instancetype)dialogWithContent:(FBSDKGameRequestContent *)content delegate:(id)delegate { FBSDKGameRequestDialog *dialog = [[self alloc] init]; dialog.content = content; dialog.delegate = delegate; + return dialog; +} + ++ (instancetype)showWithContent:(FBSDKGameRequestContent *)content delegate:(id)delegate +{ + FBSDKGameRequestDialog *dialog = [self dialogWithContent:content delegate:delegate]; [dialog show]; return dialog; } @@ -82,9 +92,9 @@ static FBSDKGameRequestFrictionlessRecipientCache *_recipientCache = nil; { NSError *error; if (!self.canShow) { - error = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - message:@"Game request dialog is not available."]; + error = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorDialogNotAvailable + message:@"Game request dialog is not available."]; [_delegate gameRequestDialog:self didFailWithError:error]; return NO; } @@ -100,14 +110,14 @@ static FBSDKGameRequestFrictionlessRecipientCache *_recipientCache = nil; } 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"]; + [FBSDKBasicUtility dictionary:parameters setObject:[content.recipients componentsJoinedByString:@","] forKey:@"to"]; + [FBSDKBasicUtility dictionary:parameters setObject:content.message forKey:@"message"]; + [FBSDKBasicUtility dictionary:parameters setObject:[self _actionTypeNameForActionType:content.actionType] forKey:@"action_type"]; + [FBSDKBasicUtility dictionary:parameters setObject:content.objectID forKey:@"object_id"]; + [FBSDKBasicUtility dictionary:parameters setObject:[self _filtersNameForFilters:content.filters] forKey:@"filters"]; + [FBSDKBasicUtility dictionary:parameters setObject:[content.recipientSuggestions componentsJoinedByString:@","] forKey:@"suggestions"]; + [FBSDKBasicUtility dictionary:parameters setObject:content.data forKey:@"data"]; + [FBSDKBasicUtility 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 @@ -139,10 +149,10 @@ static FBSDKGameRequestFrictionlessRecipientCache *_recipientCache = nil; return [self.content validateWithOptions:FBSDKShareBridgeOptionsDefault error:errorRef]; } if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"content" - value:self.content - message:nil]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"content" + value:self.content + message:nil]; } return NO; } @@ -159,7 +169,7 @@ static FBSDKGameRequestFrictionlessRecipientCache *_recipientCache = nil; } [self _cleanUp]; - NSError *error = [NSError fbErrorWithCode:[FBSDKTypeUtility unsignedIntegerValue:results[@"error_code"]] + NSError *error = [FBSDKError errorWithCode:[FBSDKTypeUtility unsignedIntegerValue:results[@"error_code"]] message:[FBSDKTypeUtility stringValue:results[@"error_message"]]]; if (!error.code) { // reformat "to[x]" keys into an array. diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h index 7c9c529..4c640b4 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h @@ -20,9 +20,12 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** Represents a single hashtag that can be used with the share dialog. */ +NS_SWIFT_NAME(Hashtag) @interface FBSDKHashtag : NSObject /** @@ -30,7 +33,8 @@ `stringRepresentation` property. @param hashtagString The hashtag string. */ -+ (instancetype)hashtagWithString:(NSString *)hashtagString; ++ (instancetype)hashtagWithString:(NSString *)hashtagString +NS_SWIFT_NAME(init(_:)); /** The hashtag string. @@ -59,3 +63,5 @@ - (BOOL)isEqualToHashtag:(FBSDKHashtag *)hashtag; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m index 5c10a59..034167a 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m @@ -18,7 +18,11 @@ #import "FBSDKHashtag.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #define FBSDK_HASHTAG_STRING_KEY @"hashtag" diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h deleted file mode 100644 index dcfc9f6..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 - -/** - Warning: This class is deprecated. - A button to like an object. - - 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. - */ -DEPRECATED_MSG_ATTRIBUTE("This is no longer available") -@interface FBSDKLikeButton : FBSDKButton - -/** - If YES, a sound is played when the receiver is toggled. - - @default YES - */ -@property (nonatomic, assign, getter = isSoundEnabled) BOOL soundEnabled; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m deleted file mode 100644 index e946c61..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m +++ /dev/null @@ -1,294 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h deleted file mode 100644 index 0bf9f87..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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 - -/** - NS_ENUM (NSUInteger, FBSDKLikeControlAuxiliaryPosition) - - 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, -}; - -/** - Converts an FBSDKLikeControlAuxiliaryPosition to an NSString. - */ -FOUNDATION_EXPORT NSString *NSStringFromFBSDKLikeControlAuxiliaryPosition(FBSDKLikeControlAuxiliaryPosition auxiliaryPosition); - -/** - NS_ENUM(NSUInteger, FBSDKLikeControlHorizontalAlignment) - - 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, -}; - -/** - Converts an FBSDKLikeControlHorizontalAlignment to an NSString. - */ -FOUNDATION_EXPORT NSString *NSStringFromFBSDKLikeControlHorizontalAlignment(FBSDKLikeControlHorizontalAlignment horizontalAlignment); - -/** - NS_ENUM (NSUInteger, FBSDKLikeControlStyle) - - 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, -}; - -/** - Converts an FBSDKLikeControlStyle to an NSString. - */ -FOUNDATION_EXPORT NSString *NSStringFromFBSDKLikeControlStyle(FBSDKLikeControlStyle style); - -/** - Warning: This class is deprecated. - UI control to like an object in the Facebook graph. - - - 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. - */ -DEPRECATED_MSG_ATTRIBUTE("This is no longer available") -@interface FBSDKLikeControl : UIControl - -/** - The foreground color to use for the content of the receiver. - */ -@property (nonatomic, strong) UIColor *foregroundColor; - -/** - The position for the auxiliary view for the receiver. - - - @see FBSDKLikeControlAuxiliaryPosition - */ -@property (nonatomic, assign) FBSDKLikeControlAuxiliaryPosition likeControlAuxiliaryPosition; - -/** - The text alignment of the social sentence. - - - This value is only valid for FBSDKLikeControlStyleStandard with - FBSDKLikeControlAuxiliaryPositionTop|Bottom. - */ -@property (nonatomic, assign) FBSDKLikeControlHorizontalAlignment likeControlHorizontalAlignment; - -/** - The style to use for the receiver. - - - @see FBSDKLikeControlStyle - */ -@property (nonatomic, assign) FBSDKLikeControlStyle likeControlStyle; - -/** - The preferred maximum width (in points) for autolayout. - - - 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; - -/** - If YES, a sound is played when the receiver is toggled. - - @default YES - */ -@property (nonatomic, assign, getter = isSoundEnabled) BOOL soundEnabled; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m deleted file mode 100644 index 8482e00..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m +++ /dev/null @@ -1,664 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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; -} - -- (instancetype)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.backgroundColor = 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.opaque = 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(self->_socialSentenceLabel); - } completion:^(BOOL finished) { - self->_socialSentenceLabel.text = likeActionController.socialSentence; - [self setNeedsLayout]; - [self setNeedsUpdateConstraints]; - [self invalidateIntrinsicContentSize]; - [self layoutIfNeeded]; - hideView(self->_socialSentenceLabel); - - [UIView animateWithDuration:kFBLikeControlAnimationDuration animations:^{ - self->_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.enabled; - super.enabled = 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/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h index ce7b8f6..b52ff04 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** NS_ENUM (NSUInteger, FBSDKLikeObjectType) Specifies the type of object referenced by the objectID for likes. @@ -30,9 +32,12 @@ typedef NS_ENUM(NSUInteger, FBSDKLikeObjectType) FBSDKLikeObjectTypeOpenGraph, /** The objectID refers to an Page object. */ FBSDKLikeObjectTypePage, -}; +} NS_SWIFT_NAME(LikeObjectType); /** Converts an FBLikeControlObjectType to an NSString. */ -FOUNDATION_EXPORT NSString *NSStringFromFBSDKLikeObjectType(FBSDKLikeObjectType objectType); +FOUNDATION_EXPORT NSString *NSStringFromFBSDKLikeObjectType(FBSDKLikeObjectType objectType) +NS_REFINED_FOR_SWIFT; + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h index 57fbd22..86f6d56 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h @@ -18,6 +18,10 @@ #import +#import "FBSDKLikeObjectType.h" + +NS_ASSUME_NONNULL_BEGIN + /** The common interface for components that initiate liking. @@ -25,6 +29,7 @@ @see FBSDKLikeControl */ +NS_SWIFT_NAME(Liking) @protocol FBSDKLiking /** @@ -32,7 +37,7 @@ 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. + Open Graph object. The objects may be public objects, like pages, or objects that are defined by your application. */ @property (nonatomic, copy) NSString *objectID; @@ -47,3 +52,5 @@ @property (nonatomic, assign) FBSDKLikeObjectType objectType; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h index 1604f80..91288e2 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h @@ -19,6 +19,9 @@ #import #import +#import + +NS_ASSUME_NONNULL_BEGIN /** A dialog for sharing content through Messenger. @@ -35,13 +38,28 @@ - FBSDKShareVideoContent - Any other types that are not one of the four supported types listed above */ +NS_SWIFT_NAME(MessageDialog) +DEPRECATED_FOR_MESSENGER @interface FBSDKMessageDialog : NSObject +/** + Convenience method to return a Message Share Dialog with content and a delegate. + @param content The content to be shared. + @param delegate The receiver's delegate. + */ ++ (instancetype)dialogWithContent:(id)content + delegate:(nullable id)delegate +NS_SWIFT_NAME(init(content:delegate:)); + /** 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; ++ (instancetype)showWithContent:(id)content + delegate:(nullable id)delegate +NS_SWIFT_UNAVAILABLE("Use init(content:delegate:).show() instead"); @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m index 8865cf0..beffc12 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m @@ -18,7 +18,11 @@ #import "FBSDKMessageDialog.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareCameraEffectContent.h" #import "FBSDKShareConstants.h" #import "FBSDKShareDefines.h" @@ -31,7 +35,10 @@ #define FBSDK_MESSAGE_DIALOG_APP_SCHEME @"fb-messenger-share-api" +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" @implementation FBSDKMessageDialog +#pragma clang diagnostic pop #pragma mark - Class Methods @@ -43,11 +50,18 @@ } } -+ (instancetype)showWithContent:(id)content delegate:(id)delegate ++ (instancetype)dialogWithContent:(id)content + delegate:(nullable id)delegate { FBSDKMessageDialog *dialog = [[self alloc] init]; dialog.shareContent = content; dialog.delegate = delegate; + return dialog; +} + ++ (instancetype)showWithContent:(id)content delegate:(id)delegate +{ + FBSDKMessageDialog *dialog = [self dialogWithContent:content delegate:delegate]; [dialog show]; return dialog; } @@ -69,9 +83,9 @@ { NSError *error; if (!self.canShow) { - error = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - message:@"Message dialog is not available."]; + error = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorDialogNotAvailable + message:@"Message dialog is not available."]; [self _invokeDelegateDidFailWithError:error]; return NO; } @@ -84,7 +98,7 @@ NSDictionary *parameters = [FBSDKShareUtility parametersForShareContent:shareContent bridgeOptions:FBSDKShareBridgeOptionsDefault shouldFailOnDataError:self.shouldFailOnDataError]; - NSString *methodName = ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]] ? + NSString *methodName = ([shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")] ? FBSDK_SHARE_OPEN_GRAPH_METHOD_NAME : FBSDK_SHARE_METHOD_NAME); FBSDKBridgeAPIRequest *request; @@ -96,11 +110,11 @@ userInfo:nil]; FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; BOOL useSafariViewController = [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameMessage]; - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + FBSDKBridgeAPIResponseBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { [self _handleCompletionWithDialogResults:response.responseParameters response:response]; [FBSDKInternalUtility unregisterTransientObject:self]; }; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request + [[FBSDKBridgeAPI sharedInstance] openBridgeAPIRequest:request useSafariViewController:useSafariViewController fromViewController:nil completionBlock:completionBlock]; @@ -121,9 +135,9 @@ if (errorRef != NULL) { NSString *message = [NSString stringWithFormat:@"Message dialog does not support %@.", NSStringFromClass(self.shareContent.class)]; - *errorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - message:message]; + *errorRef = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + message:message]; } return NO; } @@ -161,9 +175,9 @@ FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Cancelled, }; - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult parameters:parameters + isImplicitlyLogged:YES accessToken:[FBSDKAccessToken currentAccessToken]]; if (!_delegate) { @@ -179,9 +193,9 @@ FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Completed, }; - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult parameters:parameters + isImplicitlyLogged:YES accessToken:[FBSDKAccessToken currentAccessToken]]; if (!_delegate) { @@ -198,9 +212,9 @@ parameters[FBSDKAppEventParameterDialogErrorMessage] = [NSString stringWithFormat:@"%@", error]; } - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult parameters:parameters + isImplicitlyLogged:YES accessToken:[FBSDKAccessToken currentAccessToken]]; if (!_delegate) { @@ -213,7 +227,7 @@ - (void)_logDialogShow { NSString *contentType; - if([self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + if([self.shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { contentType = FBSDKAppEventsDialogShareContentTypeOpenGraph; } else if ([self.shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { contentType = FBSDKAppEventsDialogShareContentTypeStatus; @@ -235,9 +249,9 @@ FBSDKAppEventParameterDialogShareContentUUID : self.shareContent.shareUUID ?: [NSNull null], FBSDKAppEventParameterDialogShareContentPageID : self.shareContent.pageID ?: [NSNull null]}; - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogShow - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogShow parameters:parameters + isImplicitlyLogged:YES accessToken:[FBSDKAccessToken currentAccessToken]]; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h index 8dc40ac..08bd5e0 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h @@ -20,14 +20,21 @@ #import +#import #import +NS_ASSUME_NONNULL_BEGIN + /** A button to send content through Messenger. Tapping the receiver will invoke the FBSDKShareDialog with the attached shareContent. If the dialog cannot be shown, the button will be disable. */ +DEPRECATED_FOR_MESSENGER +NS_SWIFT_NAME(FBSendButton) @interface FBSDKSendButton : FBSDKButton @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m index 0b01279..1a69f7f 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m @@ -18,14 +18,21 @@ #import "FBSDKSendButton.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKMessageDialog.h" #import "FBSDKMessengerIcon.h" @interface FBSDKSendButton () @end +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" @implementation FBSDKSendButton +#pragma clang diagnostic pop { FBSDKMessageDialog *_dialog; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h index 01ae3e8..0fd038b 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h @@ -23,6 +23,8 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** A utility class for sharing through the graph API. Using this class requires an access token that has been granted the "publish_actions" permission. @@ -31,19 +33,35 @@ If you want to use FBSDKShareAPI in a background thread, you must manage the run loop yourself. */ +NS_SWIFT_NAME(ShareAPI) @interface FBSDKShareAPI : NSObject +- (instancetype)init NS_DESIGNATED_INITIALIZER +NS_SWIFT_UNAVAILABLE("Use init(content:delegate:) instead"); ++ (instancetype)new NS_UNAVAILABLE; + /** 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; ++ (instancetype)apiWithContent:(id)content + delegate:(nullable id)delegate +NS_SWIFT_NAME(init(content:delegate:)); + +/** + Convenience method to build up and share 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:(nullable id)delegate +NS_SWIFT_UNAVAILABLE("Use init(content:delegate:).share() instead"); /** The message the person has provided through the custom dialog that will accompany the share content. */ -@property (nonatomic, copy) NSString *message; +@property (nonatomic, copy, nullable) NSString *message; /** The graph node to which content should be shared. @@ -57,7 +75,7 @@ Defaults to [FBSDKAccessToken currentAccessToken]. Setting this to nil will revert the access token to [FBSDKAccessToken currentAccessToken]. */ -@property (nonatomic, strong) FBSDKAccessToken *accessToken; +@property (nonatomic, strong, nullable) FBSDKAccessToken *accessToken; /** A Boolean value that indicates whether the receiver can send the share. @@ -92,3 +110,5 @@ - (BOOL)share; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m index 9a4360d..5ce91de 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m @@ -18,14 +18,18 @@ #import "FBSDKShareAPI.h" -#if !TARGET_OS_TV +#if !TARGET_OS_TV && !TARGET_OS_MACCATALYST #import #endif #import #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareConstants.h" #import "FBSDKShareDefines.h" #import "FBSDKShareLinkContent.h" @@ -49,18 +53,24 @@ static NSMutableArray *g_pendingFBSDKShareAPI; @implementation FBSDKShareAPI { NSFileHandle *_fileHandle; -#if !TARGET_OS_TV +#if !TARGET_OS_TV && !TARGET_OS_MACCATALYST ALAssetRepresentation *_assetRepresentation; #endif } #pragma mark - Class Methods -+ (instancetype)shareWithContent:(id)content delegate:(id)delegate ++ (instancetype)apiWithContent:(id)content delegate:(id)delegate { FBSDKShareAPI *API = [[self alloc] init]; API.shareContent = content; API.delegate = delegate; + return API; +} + ++ (instancetype)shareWithContent:(id)content delegate:(id)delegate +{ + FBSDKShareAPI *API = [self apiWithContent:content delegate:delegate]; [API share]; return API; } @@ -74,7 +84,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; #pragma mark - Object Lifecycle -#if !TARGET_OS_TV +#if !TARGET_OS_TV && !TARGET_OS_MACCATALYST + (ALAssetsLibrary *)defaultAssetsLibrary { static dispatch_once_t pred = 0; static ALAssetsLibrary *library = nil; @@ -112,9 +122,9 @@ static NSMutableArray *g_pendingFBSDKShareAPI; NSError *error; if (!self.canShare) { NSString *message = @"Share API is not available; verify 'canShare' returns YES"; - error = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - message:message]; + error = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorDialogNotAvailable + message:message]; [_delegate sharer:self didFailWithError:error]; return NO; } @@ -123,9 +133,9 @@ static NSMutableArray *g_pendingFBSDKShareAPI; [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:message]; } if (!openGraphObject) { - error = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"openGraphObject" - message:nil]; + error = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"openGraphObject" + message:nil]; [_delegate sharer:self didFailWithError:error]; return NO; } @@ -149,9 +159,9 @@ static NSMutableArray *g_pendingFBSDKShareAPI; NSError *error; if (!self.canShare) { NSString *message = @"Share API is not available; verify 'canShare' returns YES"; - error = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - message:message]; + error = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorDialogNotAvailable + message:message]; [_delegate sharer:self didFailWithError:error]; return NO; } @@ -171,8 +181,11 @@ static NSMutableArray *g_pendingFBSDKShareAPI; return [self _sharePhotoContent:(FBSDKSharePhotoContent *)shareContent]; } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { return [self _shareVideoContent:(FBSDKShareVideoContent *)shareContent]; - } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + } else if ([shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" return [self _shareOpenGraphContent:(FBSDKShareOpenGraphContent *)shareContent]; +#pragma GCC diagnostic pop } else { return NO; } @@ -183,28 +196,28 @@ static NSMutableArray *g_pendingFBSDKShareAPI; id shareContent = self.shareContent; if (!shareContent) { if (errorRef != NULL) { - *errorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - message:@"Share content cannot be null."]; + *errorRef = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + message:@"Share content cannot be null."]; } return NO; } if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { if (shareContent.peopleIDs.count > 0) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"peopleIDs" - value:shareContent.peopleIDs - message:@"Cannot specify peopleIDs with FBSDKShareVideoContent."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"peopleIDs" + value:shareContent.peopleIDs + message:@"Cannot specify peopleIDs with FBSDKShareVideoContent."]; } return NO; } if (shareContent.placeID) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"placeID" - value:shareContent.placeID - message:@"Cannot specify place ID with FBSDKShareVideoContent."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"placeID" + value:shareContent.placeID + message:@"Cannot specify place ID with FBSDKShareVideoContent."]; } return NO; } @@ -248,10 +261,10 @@ static NSMutableArray *g_pendingFBSDKShareAPI; } else { tags = [content.peopleIDs componentsJoinedByString:@","]; } - [FBSDKInternalUtility dictionary:parameters setObject:tags forKey:@"tags"]; + [FBSDKBasicUtility dictionary:parameters setObject:tags forKey:@"tags"]; } - [FBSDKInternalUtility dictionary:parameters setObject:content.placeID forKey:@"place"]; - [FBSDKInternalUtility dictionary:parameters setObject:content.ref forKey:@"ref"]; + [FBSDKBasicUtility dictionary:parameters setObject:content.placeID forKey:@"place"]; + [FBSDKBasicUtility dictionary:parameters setObject:content.ref forKey:@"ref"]; } - (BOOL)_hasPublishActions @@ -261,7 +274,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; - (BOOL)_shareLinkContent:(FBSDKShareLinkContent *)linkContent { - FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + FBSDKGraphRequestBlock completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!self->_delegate) { return; } @@ -270,23 +283,17 @@ static NSMutableArray *g_pendingFBSDKShareAPI; } 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]; + [FBSDKBasicUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST + forKey:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + [FBSDKBasicUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:result[@"id"]] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; [self->_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"]; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.imageURL forKey:@"picture"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentTitle forKey:@"name"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentDescription forKey:@"description"]; -#pragma clang diagnostic pop + [FBSDKBasicUtility dictionary:parameters setObject:self.message forKey:@"message"]; + [FBSDKBasicUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"]; [[[FBSDKGraphRequest alloc] initWithGraphPath:[self _graphPathWithSuffix:@"feed", nil] parameters:parameters tokenString:self.accessToken.tokenString @@ -295,6 +302,8 @@ static NSMutableArray *g_pendingFBSDKShareAPI; return YES; } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - (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 @@ -306,26 +315,26 @@ static NSMutableArray *g_pendingFBSDKShareAPI; void(^stagingHandler)(NSDictionary *) = ^(NSDictionary *stagedContainer) { NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithDictionary:stagedContainer]; [self _addCommonParameters:parameters content:openGraphContent]; - [FBSDKInternalUtility dictionary:parameters setObject:self.message forKey:@"message"]; + [FBSDKBasicUtility dictionary:parameters setObject:self.message forKey:@"message"]; - FBSDKGraphRequestHandler requestHandler = ^(FBSDKGraphRequestConnection *requestConnection, + FBSDKGraphRequestBlock requestHandler = ^(FBSDKGraphRequestConnection *requestConnection, id result, NSError *requestError) { if (!self->_delegate) { return; } if (requestError) { - NSError *error = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorOpenGraph - message:@"Error sharing Open Graph content" - underlyingError:requestError]; + NSError *error = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorOpenGraph + message:@"Error sharing Open Graph content" + underlyingError:requestError]; [self->_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]; + [FBSDKBasicUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST + forKey:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + [FBSDKBasicUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:result[@"id"]] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; [self->_delegate sharer:self didCompleteWithResults:shareResults]; } }; @@ -343,6 +352,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; } return YES; } +#pragma GCC diagnostic pop - (BOOL)_sharePhotoContent:(FBSDKSharePhotoContent *)photoContent { @@ -358,7 +368,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; [self _addCommonParameters:parameters content:photoContent]; NSString *caption = photo.caption ?: self.message; - [FBSDKInternalUtility dictionary:parameters setObject:caption forKey:@"caption"]; + [FBSDKBasicUtility dictionary:parameters setObject:caption forKey:@"caption"]; parameters[@"picture"] = image; [requests addObject:[[FBSDKGraphRequest alloc] initWithGraphPath:graphPath parameters:parameters @@ -371,10 +381,10 @@ static NSMutableArray *g_pendingFBSDKShareAPI; NSMutableArray *results = [[NSMutableArray alloc] init]; NSMutableArray *errors = [[NSMutableArray alloc] init]; __block NSUInteger completedCount = 0; - FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + FBSDKGraphRequestBlock completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { result = [FBSDKTypeUtility dictionaryValue:result]; - [FBSDKInternalUtility array:results addObject:result]; - [FBSDKInternalUtility array:errors addObject:error]; + [FBSDKBasicUtility array:results addObject:result]; + [FBSDKBasicUtility array:errors addObject:error]; if (++completedCount != requestCount) { return; } @@ -387,12 +397,12 @@ static NSMutableArray *g_pendingFBSDKShareAPI; NSArray *individualPhotoIDs = [results valueForKeyPath:@"id"]; // 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]; + [FBSDKBasicUtility 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]; - [FBSDKInternalUtility dictionary:shareResults setObject:individualPhotoIDs forKey:FBSDK_SHARE_RESULT_PHOTO_IDS_KEY]; + [FBSDKBasicUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:firstResult[@"post_id"]] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; + [FBSDKBasicUtility dictionary:shareResults setObject:individualPhotoIDs forKey:FBSDK_SHARE_RESULT_PHOTO_IDS_KEY]; [self->_delegate sharer:self didCompleteWithResults:shareResults]; } }; @@ -406,17 +416,14 @@ static NSMutableArray *g_pendingFBSDKShareAPI; { NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; [self _addCommonParameters:parameters content:videoContent]; - [FBSDKInternalUtility dictionary:parameters setObject:self.message forKey:@"description"]; + [FBSDKBasicUtility dictionary:parameters setObject:self.message forKey:@"description"]; if ([self.accessToken.permissions containsObject:@"ads_management"]) { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - FBSDKSharePhoto *photo = videoContent.previewPhoto; -#pragma clang diagnostic pop + FBSDKSharePhoto *photo = videoContent.video.previewPhoto; UIImage *image = photo.image; if (!image && photo.imageURL.fileURL) { image = [UIImage imageWithContentsOfFile:photo.imageURL.path]; } - [FBSDKInternalUtility dictionary:parameters setObject:image forKey:@"thumb"]; + [FBSDKBasicUtility dictionary:parameters setObject:image forKey:@"thumb"]; } FBSDKShareVideo *video = videoContent.video; NSURL *videoURL = video.videoURL; @@ -438,7 +445,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; [videoUploader start]; return YES; } else if (videoURL) { -#if TARGET_OS_TV +#if TARGET_OS_TV || TARGET_OS_MACCATALYST return NO; #else if (![self _addToPendingShareAPI]) { @@ -498,10 +505,10 @@ static NSMutableArray *g_pendingFBSDKShareAPI; } } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:key - value:value - message:nil]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:key + value:value + message:nil]; } return NO; } @@ -539,10 +546,10 @@ static NSMutableArray *g_pendingFBSDKShareAPI; stagedArray[idx] = stagedValue; itemDidSucceed(); } else { - NSError *error = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"value" - value:item - message:@"Error staging object."]; + NSError *error = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"value" + value:item + message:@"Error staging object."]; [self->_delegate sharer:self didFailWithError:error]; itemDidFail(); *stop = YES; @@ -569,17 +576,17 @@ static NSMutableArray *g_pendingFBSDKShareAPI; NSString *type = [FBSDKTypeUtility stringValue:openGraphObject[@"og:type"]]; if (!type) { NSString *message = @"Open Graph objects must contain a og:type value."; - NSError *error = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"og:type" - message:message]; + NSError *error = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"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]; + NSString *objectString = [FBSDKBasicUtility JSONStringForObject:stagedContainer + error:&JSONError + invalidObjectHandler:NULL]; if (!objectString) { [self->_delegate sharer:self didFailWithError:JSONError]; return; @@ -591,7 +598,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; tokenString:self.accessToken.tokenString version:nil HTTPMethod:@"POST"]; - FBSDKGraphRequestHandler requestCompletionHandler = ^(FBSDKGraphRequestConnection *requestConnection, + FBSDKGraphRequestBlock requestCompletionHandler = ^(FBSDKGraphRequestConnection *requestConnection, id result, NSError *requestError) { if (!self->_delegate) { @@ -600,10 +607,10 @@ static NSMutableArray *g_pendingFBSDKShareAPI; if (requestError) { NSString *message = [[NSString alloc] initWithFormat:@"Error creating Open Graph object: %@", requestError.description]; - NSError *error = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorOpenGraph - message:message - underlyingError:requestError]; + NSError *error = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorOpenGraph + message:message + underlyingError:requestError]; [self->_delegate sharer:self didFailWithError:error]; } else if (completionHandler != NULL) { completionHandler([FBSDKTypeUtility dictionaryValue:result]); @@ -690,7 +697,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; @"url": photo.imageURL.absoluteString, @"user_generated": @(photo.userGenerated), }]; - [FBSDKInternalUtility dictionary:stagedPhoto setObject:photo.caption forKey:@"caption"]; + [FBSDKBasicUtility dictionary:stagedPhoto setObject:photo.caption forKey:@"caption"]; if (stagingHandler) { stagingHandler(stagedPhoto); } @@ -703,32 +710,32 @@ static NSMutableArray *g_pendingFBSDKShareAPI; tokenString:self.accessToken.tokenString version:nil HTTPMethod:@"POST"]; - FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *requestConnection, + FBSDKGraphRequestBlock completionHandler = ^(FBSDKGraphRequestConnection *requestConnection, id result, NSError *requestError) { NSString *stagedPhotoURLString = [FBSDKTypeUtility stringValue:result[@"uri"]]; if (requestError || !stagedPhotoURLString) { - NSError *error = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorOpenGraph - message:@"Error staging photo" - underlyingError:requestError]; + NSError *error = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorOpenGraph + message:@"Error staging photo" + underlyingError:requestError]; [self->_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"]; + [FBSDKBasicUtility dictionary:stagedPhoto setObject:photo.caption forKey:@"caption"]; stagingHandler(stagedPhoto); } }; [request startWithCompletionHandler:completionHandler]; return YES; } else { - NSError *error = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"photo" - value:photo - message:@"Photos must have an imageURL or image."]; + NSError *error = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"photo" + value:photo + message:@"Photos must have an imageURL or image."]; [self->_delegate sharer:self didFailWithError:error]; return NO; } @@ -759,10 +766,10 @@ static NSMutableArray *g_pendingFBSDKShareAPI; } else if ([value isKindOfClass:[NSArray class]]) { return [self _stageArray:(NSArray *)value connection:connection stagingHandler:stagingHandler]; } else { - NSError *error = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"value" - value:value - message:@"Invalid value type found in Open Graph object."]; + NSError *error = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"value" + value:value + message:@"Invalid value type found in Open Graph object."]; [_delegate sharer:self didFailWithError:error]; return NO; } @@ -770,7 +777,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; - (NSString *)_connection:(FBSDKGraphRequestConnection *)connection addRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)completionHandler + completionHandler:(FBSDKGraphRequestBlock)completionHandler { NSUInteger requestCount = connection.requests.count; NSString *batchEntryName = [[NSString alloc] initWithFormat:@"request_%lu", (unsigned long)requestCount]; @@ -795,7 +802,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; @synchronized(g_pendingFBSDKShareAPI) { [g_pendingFBSDKShareAPI removeObject:self]; _fileHandle = nil; -#if !TARGET_OS_TV +#if !TARGET_OS_TV && !TARGET_OS_MACCATALYST _assetRepresentation = nil; #endif } @@ -814,7 +821,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI; } return videoChunkData; } -#if !TARGET_OS_TV +#if !TARGET_OS_TV && !TARGET_OS_MACCATALYST else if (_assetRepresentation) { NSMutableData *data = [NSMutableData dataWithLength:chunkSize]; NSError *error; @@ -832,8 +839,8 @@ static NSMutableArray *g_pendingFBSDKShareAPI; { results = [FBSDKTypeUtility dictionaryValue:results]; 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:results[FBSDK_SHARE_VIDEO_ID]] forKey:FBSDK_SHARE_VIDEO_ID]; + [FBSDKBasicUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST forKey:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + [FBSDKBasicUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:results[FBSDK_SHARE_VIDEO_ID]] forKey:FBSDK_SHARE_VIDEO_ID]; [_delegate sharer:self didCompleteWithResults:shareResults]; [self _removeFromPendingShareAPI]; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h index c2565db..2c1614a 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h @@ -22,12 +22,17 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** A button to share content. Tapping the receiver will invoke the FBSDKShareDialog with the attached shareContent. If the dialog cannot be shown, the button will be disabled. */ +NS_SWIFT_NAME(FBShareButton) @interface FBSDKShareButton : FBSDKButton @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m index 17ecf71..08782df 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m @@ -18,7 +18,11 @@ #import "FBSDKShareButton.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareDialog.h" @implementation FBSDKShareButton diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h index 1309c8d..5386133 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h @@ -23,9 +23,12 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** A model for content to share with a Facebook camera effect. */ +NS_SWIFT_NAME(ShareCameraEffectContent) @interface FBSDKShareCameraEffectContent : NSObject /** @@ -51,3 +54,5 @@ - (BOOL)isEqualToShareCameraEffectContent:(FBSDKShareCameraEffectContent *)content; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m index 5e87a05..d50b3e8 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m @@ -20,7 +20,11 @@ #import "FBSDKCameraEffectArguments+Internal.h" #import "FBSDKCameraEffectTextures+Internal.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKHashtag.h" #import "FBSDKShareUtility.h" @@ -63,29 +67,23 @@ static NSString *const kFBSDKShareCameraEffectContentUUIDKey = @"uuid"; #pragma mark - FBSDKSharingContent -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [parameters addEntriesFromDictionary:[self addParameters:parameters bridgeOptions:bridgeOptions]]; -} - - (NSDictionary *)addParameters:(NSDictionary *)existingParameters bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions { NSMutableDictionary *updatedParameters = [NSMutableDictionary dictionaryWithDictionary:existingParameters]; - [FBSDKInternalUtility dictionary:updatedParameters - setObject:_effectID - forKey:@"effect_id"]; + [FBSDKBasicUtility dictionary:updatedParameters + setObject:_effectID + forKey:@"effect_id"]; NSString *effectArgumentsJSON; if (_effectArguments) { - effectArgumentsJSON = [FBSDKInternalUtility JSONStringForObject:[_effectArguments allArguments] - error:NULL - invalidObjectHandler:NULL]; + effectArgumentsJSON = [FBSDKBasicUtility JSONStringForObject:[_effectArguments allArguments] + error:NULL + invalidObjectHandler:NULL]; } - [FBSDKInternalUtility dictionary:updatedParameters - setObject:effectArgumentsJSON - forKey:@"effect_arguments"]; + [FBSDKBasicUtility dictionary:updatedParameters + setObject:effectArgumentsJSON + forKey:@"effect_arguments"]; NSData *effectTexturesData; if (_effectTextures) { @@ -102,9 +100,9 @@ static NSString *const kFBSDKShareCameraEffectContentUUIDKey = @"uuid"; }]; effectTexturesData = [NSKeyedArchiver archivedDataWithRootObject:texturesDataDict]; } - [FBSDKInternalUtility dictionary:updatedParameters - setObject:effectTexturesData - forKey:@"effect_textures"]; + [FBSDKBasicUtility dictionary:updatedParameters + setObject:effectTexturesData + forKey:@"effect_textures"]; return updatedParameters; } @@ -130,9 +128,9 @@ static NSString *const kFBSDKShareCameraEffectContentUUIDKey = @"uuid"; NSCharacterSet* nonDigitCharacters = [NSCharacterSet decimalDigitCharacterSet].invertedSet; if ([_effectID rangeOfCharacterFromSet:nonDigitCharacters].location != NSNotFound) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithName:@"effectID" - value:_effectID - message:@"Invalid value for effectID, effectID can contain only numerical characters."]; + *errorRef = [FBSDKError invalidArgumentErrorWithName:@"effectID" + value:_effectID + message:@"Invalid value for effectID, effectID can contain only numerical characters."]; } return NO; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h index 547a484..2e7716c 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h @@ -18,6 +18,12 @@ #import +#ifndef DEPRECATED_FOR_MESSENGER +#define DEPRECATED_FOR_MESSENGER DEPRECATED_MSG_ATTRIBUTE("Sharing to Messenger via the SDK is unsupported. https://developers.facebook.com/docs/messenger-platform/changelog/#20190610. Sharing should be performed by the native share sheet.") +#endif + +NS_ASSUME_NONNULL_BEGIN + #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 /** @@ -25,7 +31,8 @@ Error codes from the SDK in the range 200-299 are reserved for this domain. */ -FOUNDATION_EXPORT NSErrorDomain const FBSDKShareErrorDomain; +FOUNDATION_EXPORT NSErrorDomain const FBSDKShareErrorDomain +NS_SWIFT_NAME(ShareErrorDomain); #else @@ -34,7 +41,8 @@ FOUNDATION_EXPORT NSErrorDomain const FBSDKShareErrorDomain; Error codes from the SDK in the range 200-299 are reserved for this domain. */ -FOUNDATION_EXPORT NSString *const FBSDKShareErrorDomain; +FOUNDATION_EXPORT NSString *const FBSDKShareErrorDomain +NS_SWIFT_NAME(ShareErrorDomain); #endif @@ -71,15 +79,6 @@ typedef NS_ERROR_ENUM(FBSDKShareErrorDomain, FBSDKShareError) @The error code for unknown errors. */ FBSDKShareErrorUnknown, -}; +} NS_SWIFT_NAME(ShareError); -/** - Deprecated - */ -typedef NS_ENUM(NSInteger, FBSDKShareErrorCode) -{ - FBSDKShareReservedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKShareErrorReserved instead") = 200, - FBSDKShareOpenGraphErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKShareErrorOpenGraph instead"), - FBSDKShareDialogNotAvailableErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKShareErrorDialogNotAvailable instead"), - FBSDKShareUnknownErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKShareErrorUnknown instead"), -} DEPRECATED_MSG_ATTRIBUTE("use FBSDKShareError instead"); +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h index 18c4d3e..c801344 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h @@ -22,20 +22,35 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** A dialog for sharing content on Facebook. */ +NS_SWIFT_NAME(ShareDialog) @interface FBSDKShareDialog : NSObject /** - Convenience method to show an FBSDKShareDialog with a fromViewController, content and a delegate. + Convenience method to create a 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)dialogWithViewController:(nullable UIViewController *)viewController + withContent:(id)content + delegate:(nullable id)delegate +NS_SWIFT_NAME(init(fromViewController:content:delegate:)); + +/** + 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; + delegate:(nullable id)delegate +NS_SWIFT_UNAVAILABLE("Use init(fromViewController:content:delegate:).show() instead"); /** A UIViewController to present the dialog from. @@ -52,3 +67,5 @@ @property (nonatomic, assign) FBSDKShareDialogMode mode; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m index d639cf9..5de51a4 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m @@ -20,7 +20,11 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareCameraEffectContent.h" #import "FBSDKShareConstants.h" #import "FBSDKShareDefines.h" @@ -83,14 +87,24 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO } } -+ (instancetype)showFromViewController:(UIViewController *)viewController - withContent:(id)content - delegate:(id)delegate ++ (instancetype)dialogWithViewController:(nullable UIViewController *)viewController + withContent:(id)content + delegate:(nullable id)delegate { FBSDKShareDialog *dialog = [[self alloc] init]; dialog.fromViewController = viewController; dialog.shareContent = content; dialog.delegate = delegate; + return dialog; +} + ++ (instancetype)showFromViewController:(UIViewController *)viewController + withContent:(id)content + delegate:(id)delegate +{ + FBSDKShareDialog *dialog = [self dialogWithViewController:viewController + withContent:content + delegate:delegate]; [dialog show]; return dialog; } @@ -207,13 +221,13 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if (errorCode == 4201) { [self _invokeDelegateDidCancel]; } else if (errorCode != 0) { - NSError *error = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorUnknown - userInfo:@{ - FBSDKGraphRequestErrorGraphErrorCodeKey : @(errorCode) + NSError *error = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorUnknown + userInfo:@{ + FBSDKGraphRequestErrorGraphErrorCodeKey : @(errorCode) } - message:results[@"error_message"] - underlyingError:nil]; + message:results[@"error_message"] + underlyingError:nil]; [self _handleWebResponseParameters:nil error:error cancelled: NO]; } else { // not all web dialogs report cancellation, so assume that the share has completed with no additional information @@ -253,6 +267,8 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO return [configuration.defaultShareMode isEqualToString:@"share_sheet"]; } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (BOOL)_isOpenGraphURLShare:(FBSDKShareOpenGraphContent *)shareContent { __block BOOL hasOGURL = NO; @@ -263,6 +279,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO }]; return hasOGURL; } +#pragma clang diagnostic pop -(BOOL)_showAutomatic:(NSError **)errorRef { @@ -296,7 +313,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO // for an app that can handle the native share dialog NSString *methodName = nil; NSString *methodVersion = nil; - if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + if ([shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { methodName = FBSDK_SHARE_OPEN_GRAPH_METHOD_NAME; BOOL containsMedia = NO; [FBSDKShareUtility testShareContent:shareContent containsMedia:&containsMedia containsPhotos:NULL containsVideos:NULL]; @@ -503,9 +520,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO // 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]; + [FBSDKBasicUtility dictionary:results + setObject:webResponseParameters[FBSDK_SHARE_WEB_PARAM_POST_ID_KEY] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; [self _invokeDelegateDidCompleteWithResults:results]; } } @@ -530,7 +547,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]] && [self _photoContentHasAtLeastOneImage:(FBSDKSharePhotoContent *)shareContent]) { void(^completion)(BOOL, NSString *, NSDictionary *) = ^(BOOL successfullyBuilt, NSString *cMethodName, NSDictionary *cParameters) { if (successfullyBuilt) { - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + FBSDKBridgeAPIResponseBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { [self _handleWebResponseParameters:response.responseParameters error:response.error cancelled: response.isCancelled]; [FBSDKInternalUtility unregisterTransientObject:self]; }; @@ -541,7 +558,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO methodVersion:nil parameters:cParameters userInfo:nil]; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request + [[FBSDKBridgeAPI sharedInstance] openBridgeAPIRequest:request useSafariViewController:[self _useSafariViewController] fromViewController:self.fromViewController completionBlock:completionBlock]; @@ -559,7 +576,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO error:errorRef]) { return NO; } - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + FBSDKBridgeAPIResponseBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { [self _handleWebResponseParameters:response.responseParameters error:response.error cancelled: response.isCancelled]; [FBSDKInternalUtility unregisterTransientObject:self]; }; @@ -570,7 +587,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO methodVersion:nil parameters:parameters userInfo:nil]; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request + [[FBSDKBridgeAPI sharedInstance] openBridgeAPIRequest:request useSafariViewController:[self _useSafariViewController] fromViewController:self.fromViewController completionBlock:completionBlock]; @@ -585,7 +602,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO } id shareContent = self.shareContent; NSDictionary *parameters = [FBSDKShareUtility feedShareDictionaryForContent:shareContent]; - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + FBSDKBridgeAPIResponseBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { [self _handleWebResponseParameters:response.responseParameters error:response.error cancelled:response.isCancelled]; [FBSDKInternalUtility unregisterTransientObject:self]; }; @@ -596,7 +613,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO methodVersion:nil parameters:parameters userInfo:nil]; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request + [[FBSDKBridgeAPI sharedInstance] openBridgeAPIRequest:request useSafariViewController:[self _useSafariViewController] fromViewController:self.fromViewController completionBlock:completionBlock]; @@ -620,9 +637,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO { if (![self _canShowNative]) { if (canShowErrorRef != NULL) { - *canShowErrorRef = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - message:@"Native share dialog is not available."]; + *canShowErrorRef = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorDialogNotAvailable + message:@"Native share dialog is not available."]; } return NO; } @@ -649,7 +666,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO methodVersion:methodVersion parameters:parameters userInfo:nil]; - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + FBSDKBridgeAPIResponseBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { if (response.error.code == FBSDKErrorAppVersionUnsupported) { NSError *fallbackError; if ([self _showShareSheetWithCanShowError:NULL validationError:&fallbackError] || @@ -666,14 +683,14 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO [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]; + [FBSDKBasicUtility 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 + [[FBSDKBridgeAPI sharedInstance] openBridgeAPIRequest:request useSafariViewController:[self _useSafariViewController] fromViewController:self.fromViewController completionBlock:completionBlock]; @@ -684,9 +701,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO { if (![self _canShowShareSheet]) { if (canShowErrorRef != NULL) { - *canShowErrorRef = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - message:@"Share sheet is not available."]; + *canShowErrorRef = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorDialogNotAvailable + message:@"Share sheet is not available."]; } return NO; } @@ -696,9 +713,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO UIViewController *fromViewController = self.fromViewController; if (!fromViewController) { if (validationErrorRef != NULL) { - *validationErrorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"fromViewController" - message:nil]; + *validationErrorRef = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"fromViewController" + message:nil]; } return NO; } @@ -713,9 +730,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if (!composeViewController) { if (canShowErrorRef != NULL) { - *canShowErrorRef = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - message:@"Error creating SLComposeViewController."]; + *canShowErrorRef = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorDialogNotAvailable + message:@"Error creating SLComposeViewController."]; } return NO; } @@ -801,16 +818,16 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if ([self.shareContent isKindOfClass:[FBSDKShareCameraEffectContent class]] || [self.shareContent isKindOfClass:[FBSDKShareLinkContent class]] || [self.shareContent isKindOfClass:[FBSDKShareMediaContent class]] || - [self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]] || + [self.shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")] || [self.shareContent isKindOfClass:[FBSDKSharePhotoContent class]] || [self.shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { } else { if (errorRef != NULL) { NSString *message = [NSString stringWithFormat:@"Share dialog does not support %@.", NSStringFromClass(self.shareContent.class)]; - *errorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - message:message]; + *errorRef = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + message:message]; } return NO; } @@ -848,10 +865,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO } } if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"FBSDKShareDialogMode" - value:@(self.mode) - message:nil]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"FBSDKShareDialogMode" + value:@(self.mode) + message:nil]; } return NO; } @@ -877,10 +894,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO self.mode == FBSDKShareDialogModeShareSheet && ![self _canUseQuoteInShareSheet]) { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareLinkContent - message:@"Quotes are only supported if Facebook for iOS version 52 and above is installed"]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareLinkContent + message:@"Quotes are only supported if Facebook for iOS version 52 and above is installed"]; } return NO; } @@ -896,20 +913,20 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO FBSDKShareLinkContent *const linkContent = shareContent; if (!linkContent.contentURL) { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"FBSDKShareLinkContent contentURL is required."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"FBSDKShareLinkContent contentURL is required."]; } return NO; } } if ([shareContent isKindOfClass:[FBSDKShareCameraEffectContent class]]) { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"Camera Content must be shared in `Native` mode."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"Camera Content must be shared in `Native` mode."]; } return NO; } @@ -920,10 +937,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if (containsPhotos) { if ([FBSDKAccessToken currentAccessToken] == nil) { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"The web share dialog needs a valid access token to stage photos."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"The web share dialog needs a valid access token to stage photos."]; } return NO; } @@ -933,10 +950,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO } } else { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"Web share dialogs cannot include photos."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"Web share dialogs cannot include photos."]; } return NO; } @@ -944,10 +961,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if (containsVideos) { if ([FBSDKAccessToken currentAccessToken] == nil) { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"The web share dialog needs a valid access token to stage videos."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"The web share dialog needs a valid access token to stage videos."]; } return NO; } @@ -960,10 +977,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if (containsMedia) { if (bridgeOptions & FBSDKShareBridgeOptionsPhotoImageURL) { // a web-based URL is required if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"Web share dialogs cannot include local media."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"Web share dialogs cannot include local media."]; } return NO; } @@ -979,19 +996,19 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO FBSDKShareLinkContent *const linkContent = shareContent; if (!linkContent.contentURL) { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"FBSDKShareLinkContent contentURL is required."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"FBSDKShareLinkContent contentURL is required."]; } return NO; } } else { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"Feed share dialogs support FBSDKShareLinkContent."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"Feed share dialogs support FBSDKShareLinkContent."]; } return NO; } @@ -1004,10 +1021,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if ([shareContent isKindOfClass:[FBSDKShareMediaContent class]]) { if ([FBSDKShareUtility shareMediaContentContainsPhotosAndVideos:(FBSDKShareMediaContent *)shareContent]) { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"Multimedia Content is only available for mode `ShareSheet`"]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"Multimedia Content is only available for mode `ShareSheet`"]; } return NO; } @@ -1029,10 +1046,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO } else { if ((errorRef != NULL) && !*errorRef) { NSString *message = @"Share photo content must have UIImage photos in order to share with the share sheet"; - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:message]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:message]; } return NO; } @@ -1043,7 +1060,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO return ([self _canUseFBShareSheet] && [self _validateShareMediaContentAvailability:shareContent error:errorRef] && [(FBSDKShareMediaContent *)shareContent validateWithOptions:FBSDKShareBridgeOptionsDefault error:errorRef]); - } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + } else if ([shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" FBSDKShareOpenGraphContent *ogContent = (FBSDKShareOpenGraphContent *)shareContent; BOOL isOGURLShare = [self _isOpenGraphURLShare:ogContent]; @@ -1053,12 +1072,13 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if (!isValidOGShare) { if ((errorRef != NULL) && !*errorRef) { NSString *message = @"Share content must include an URL in the action, an action type, and a preview property name in order to share with the share sheet."; - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:message]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:message]; } } +#pragma GCC diagnostic pop return isValidOGShare; } else if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { return YES; @@ -1066,10 +1086,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO if ((errorRef != NULL) && !*errorRef) { NSString *message = [NSString stringWithFormat:@"Share sheet does not support %@.", NSStringFromClass(shareContent.class)]; - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:message]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:message]; } return NO; } @@ -1083,10 +1103,10 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO self.mode == FBSDKShareDialogModeShareSheet && ![self _canUseMMPInShareSheet]) { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:@"Multimedia content (photos + videos) is only supported if Facebook for iOS version 52 and above is installed"]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:@"Multimedia content (photos + videos) is only supported if Facebook for iOS version 52 and above is installed"]; } return NO; } @@ -1099,9 +1119,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Cancelled, }; - [FBSDKAppEvents logImplicitEvent:FBSDLAppEventNameFBSDKEventShareDialogResult - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKEventShareDialogResult parameters:parameters + isImplicitlyLogged:YES accessToken:[FBSDKAccessToken currentAccessToken]]; [_delegate sharerDidCancel:self]; @@ -1113,9 +1133,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Completed }; - [FBSDKAppEvents logImplicitEvent:FBSDLAppEventNameFBSDKEventShareDialogResult - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKEventShareDialogResult parameters:parameters + isImplicitlyLogged:YES accessToken:[FBSDKAccessToken currentAccessToken]]; [_delegate sharer:self didCompleteWithResults:[results copy]]; @@ -1128,9 +1148,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO FBSDKAppEventParameterDialogErrorMessage : [NSString stringWithFormat:@"%@", error] }; - [FBSDKAppEvents logImplicitEvent:FBSDLAppEventNameFBSDKEventShareDialogResult - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKEventShareDialogResult parameters:parameters + isImplicitlyLogged:YES accessToken:[FBSDKAccessToken currentAccessToken]]; [_delegate sharer:self didFailWithError:error]; @@ -1141,7 +1161,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO NSString *shareMode = NSStringFromFBSDKShareDialogMode(self.mode); NSString *contentType; - if([self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + if([self.shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { contentType = FBSDKAppEventsDialogShareContentTypeOpenGraph; } else if ([self.shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { contentType = FBSDKAppEventsDialogShareContentTypeStatus; @@ -1161,9 +1181,9 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO }; - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventShareDialogShow - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKEventShareDialogShow parameters:parameters + isImplicitlyLogged:YES accessToken:[FBSDKAccessToken currentAccessToken]]; } @@ -1186,7 +1206,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO parameters[FBSDKShareExtensionParamQuotes] = @[quote]; } } - if ([self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + if ([self.shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { NSDictionary *const ogData = [FBSDKShareUtility parametersForShareContent:self.shareContent bridgeOptions:FBSDKShareBridgeOptionsDefault shouldFailOnDataError:self.shouldFailOnDataError]; @@ -1194,7 +1214,7 @@ static inline void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanO } NSError *error = nil; - NSString *const jsonString = [FBSDKInternalUtility JSONStringForObject:parameters error:&error invalidObjectHandler:NULL]; + NSString *const jsonString = [FBSDKBasicUtility JSONStringForObject:parameters error:&error invalidObjectHandler:NULL]; if (error != nil) { return nil; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h index f7bc213..058ac1e 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** NS_ENUM(NSUInteger, FBSDKShareDialogMode) Modes for the FBSDKShareDialog. @@ -44,7 +46,7 @@ typedef NS_ENUM(NSUInteger, FBSDKShareDialogMode) */ FBSDKShareDialogModeBrowser, /** - @Displays the dialog in a UIWebView within the app. + @Displays the dialog in a WKWebView within the app. */ FBSDKShareDialogModeWeb, /** @@ -52,12 +54,15 @@ typedef NS_ENUM(NSUInteger, FBSDKShareDialogMode) */ FBSDKShareDialogModeFeedBrowser, /** - @Displays the feed dialog in a UIWebView within the app. + @Displays the feed dialog in a WKWebView within the app. */ FBSDKShareDialogModeFeedWeb, -}; +} NS_SWIFT_NAME(ShareDialog.Mode); /** Converts an FBSDKShareDialogMode to an NSString. */ -FOUNDATION_EXPORT NSString *NSStringFromFBSDKShareDialogMode(FBSDKShareDialogMode dialogMode); +FOUNDATION_EXPORT NSString *NSStringFromFBSDKShareDialogMode(FBSDKShareDialogMode dialogMode) +NS_REFINED_FOR_SWIFT; + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m index 7791adb..4e7bc09 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m @@ -18,7 +18,11 @@ #import "FBSDKShareDialogMode.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif NSString *NSStringFromFBSDKShareDialogMode(FBSDKShareDialogMode dialogMode) { diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h index 30e36aa..5224d17 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h @@ -40,15 +40,11 @@ #import #if !TARGET_OS_TV -#import #import -#import #import -#import #import #import -#import -#import +#import #import #import #import diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h index 0a28377..5b7ba5f 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h @@ -20,53 +20,21 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** A model for status and link content to be shared. */ +NS_SWIFT_NAME(ShareLinkContent) @interface FBSDKShareLinkContent : NSObject -/** - The description of the link. - - 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 - - @deprecated `contentDescription` is deprecated from Graph API 2.9. - For more information, see https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations. - */ -@property (nonatomic, readonly) NSString *contentDescription - DEPRECATED_MSG_ATTRIBUTE("`contentDescription` is deprecated from Graph API 2.9"); - -/** - The title to display for this link. - - This value may be discarded for specially handled links (ex: iTunes URLs). - @return The link title - - @deprecated `contentTitle` is deprecated from Graph API 2.9. - For more information, see https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations - */ -@property (nonatomic, readonly) NSString *contentTitle - DEPRECATED_MSG_ATTRIBUTE("`contentTitle` is deprecated from Graph API 2.9"); - -/** - The URL of a picture to attach to this content. - @return The network URL of an image - - @deprecated `imageURL` is deprecated from Graph API 2.9. - For more information, see https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations - */ -@property (nonatomic, readonly) NSURL *imageURL - DEPRECATED_MSG_ATTRIBUTE("`imageURL` is deprecated from Graph API 2.9"); - /** Some quote text of the link. If specified, the quote text will render with custom styling on top of the link. @return The quote text of a link */ -@property (nonatomic, copy) NSString *quote; +@property (nonatomic, copy, nullable) NSString *quote; /** Compares the receiver to another link content. @@ -76,3 +44,5 @@ - (BOOL)isEqualToShareLinkContent:(FBSDKShareLinkContent *)content; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m index 113c401..6a6362b 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m @@ -16,23 +16,23 @@ // IN AN ACTION OF 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 "FBSDKShareLinkContent.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKHashtag.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_HASHTAG_KEY @"hashtag" -#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_PAGE_ID_KEY @"pageID" #define FBSDK_SHARE_STATUS_CONTENT_QUOTE_TEXT_KEY @"quote" -#define FBSDK_SHARE_STATUS_CONTENT_FEED_PARAMETERS_KEY @"feedParameters" #define FBSDK_SHARE_STATUS_CONTENT_UUID_KEY @"uuid" @implementation FBSDKShareLinkContent @@ -45,7 +45,6 @@ @synthesize placeID = _placeID; @synthesize ref = _ref; @synthesize pageID = _pageID; -@synthesize feedParameters = _feedParameters; @synthesize quote = _quote; @synthesize shareUUID = _shareUUID; @@ -62,7 +61,7 @@ #pragma mark - Setters -- (void)setPeopleIDs:(NSArray *)peopleIDs +- (void)setPeopleIDs:(NSArray *)peopleIDs { [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { @@ -70,41 +69,21 @@ } } -- (void)setFeedParameters:(NSDictionary *)feedParameters -{ - if (![_feedParameters isEqualToDictionary:feedParameters]) { - _feedParameters = [feedParameters copy]; - } -} - #pragma mark - FBSDKSharingContent -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [parameters addEntriesFromDictionary:[self addParameters:parameters bridgeOptions:bridgeOptions]]; -} - - (NSDictionary *)addParameters:(NSDictionary *)existingParameters bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions { NSMutableDictionary *updatedParameters = [NSMutableDictionary dictionaryWithDictionary:existingParameters]; - [FBSDKInternalUtility dictionary:updatedParameters setObject:_contentURL forKey:@"link"]; - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [FBSDKInternalUtility dictionary:updatedParameters setObject:_contentTitle forKey:@"name"]; - [FBSDKInternalUtility dictionary:updatedParameters setObject:_contentDescription forKey:@"description"]; - [FBSDKInternalUtility dictionary:updatedParameters setObject:_imageURL forKey:@"picture"]; -#pragma clang diagnostic pop - [FBSDKInternalUtility dictionary:updatedParameters setObject:_quote forKey:@"quote"]; + [FBSDKBasicUtility dictionary:updatedParameters setObject:_contentURL forKey:@"link"]; + [FBSDKBasicUtility dictionary:updatedParameters setObject:_quote forKey:@"quote"]; /** Pass link parameter as "messenger_link" due to versioning requirements for message dialog flow. We will only use the new share flow we developed if messenger_link is present, not link. */ - [FBSDKInternalUtility dictionary:updatedParameters setObject:_contentURL forKey:@"messenger_link"]; + [FBSDKBasicUtility dictionary:updatedParameters setObject:_contentURL forKey:@"messenger_link"]; return updatedParameters; } @@ -113,11 +92,7 @@ - (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - return ([FBSDKShareUtility validateNetworkURL:_contentURL name:@"contentURL" error:errorRef] && - [FBSDKShareUtility validateNetworkURL:_imageURL name:@"imageURL" error:errorRef]); -#pragma clang diagnostic pop + return [FBSDKShareUtility validateNetworkURL:_contentURL name:@"contentURL" error:errorRef]; } #pragma mark - Equality @@ -125,16 +100,12 @@ - (NSUInteger)hash { NSUInteger subhashes[] = { - _contentDescription.hash, _contentURL.hash, _hashtag.hash, - _imageURL.hash, _peopleIDs.hash, _placeID.hash, _ref.hash, _pageID.hash, - _contentTitle.hash, - _feedParameters.hash, _quote.hash, _shareUUID.hash, }; @@ -154,22 +125,15 @@ - (BOOL)isEqualToShareLinkContent:(FBSDKShareLinkContent *)content { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" return (content && - [FBSDKInternalUtility object:_contentDescription isEqualToObject:content.contentDescription] && - [FBSDKInternalUtility object:_contentTitle isEqualToObject:content.contentTitle] && [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && [FBSDKInternalUtility object:_hashtag isEqualToObject:content.hashtag] && - [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] && [FBSDKInternalUtility object:_pageID isEqualToObject:content.pageID] && [FBSDKInternalUtility object:_shareUUID isEqualToObject:content.shareUUID]) && [FBSDKInternalUtility object:_quote isEqualToObject:content.quote]; -#pragma clang diagnostic pop } #pragma mark - NSCoding @@ -182,13 +146,8 @@ - (instancetype)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]; _hashtag = [decoder decodeObjectOfClass:[FBSDKHashtag class] forKey:FBSDK_SHARE_STATUS_CONTENT_HASHTAG_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]; @@ -201,12 +160,8 @@ - (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:_hashtag forKey:FBSDK_SHARE_STATUS_CONTENT_HASHTAG_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]; @@ -220,12 +175,8 @@ - (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->_hashtag = [_hashtag copy]; - copy->_imageURL = [_imageURL copy]; copy->_peopleIDs = [_peopleIDs copy]; copy->_placeID = [_placeID copy]; copy->_ref = [_ref copy]; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h index ab9d895..684a504 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h @@ -20,16 +20,27 @@ #import +NS_ASSUME_NONNULL_BEGIN + +/** + A protocol for media content (photo or video) to be shared. + */ +NS_SWIFT_NAME(ShareMedia) +@protocol FBSDKShareMedia + +@end + /** A model for media content (photo or video) to be shared. */ +NS_SWIFT_NAME(ShareMediaContent) @interface FBSDKShareMediaContent : NSObject /** Media to be shared. @return Array of the media (FBSDKSharePhoto or FBSDKShareVideo) */ -@property (nonatomic, copy) NSArray *media; +@property (nonatomic, copy) NSArray> *media; /** Compares the receiver to another media content. @@ -39,3 +50,5 @@ - (BOOL)isEqualToShareMediaContent:(FBSDKShareMediaContent *)content; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m index 2142f1f..2f519bd 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m @@ -18,7 +18,11 @@ #import "FBSDKShareMediaContent.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKHashtag.h" #import "FBSDKShareConstants.h" #import "FBSDKSharePhoto.h" @@ -67,7 +71,7 @@ } } -- (void)setMedia:(NSArray *)media +- (void)setMedia:(NSArray> *)media { [FBSDKShareUtility assertCollection:media ofClassStrings:@[NSStringFromClass([FBSDKSharePhoto class]), NSStringFromClass([FBSDKShareVideo class])] name:@"media"]; if (![FBSDKInternalUtility object:_media isEqualToObject:media]) { @@ -77,12 +81,6 @@ #pragma mark - FBSDKSharingContent -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - // FBSDKShareMediaContent is currently available via the Share extension only (thus no parameterization implemented at this time) -} - - (NSDictionary *)addParameters:(NSDictionary *)existingParameters bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions { @@ -103,20 +101,20 @@ FBSDKSharePhoto *photo = (FBSDKSharePhoto *)media; if (![photo validateWithOptions:bridgeOptions error:NULL]) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"media" - value:media - message:@"photos must have UIImages"]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"media" + value:media + message:@"photos must have UIImages"]; } return NO; } } else if ([media isKindOfClass:[FBSDKShareVideo class]]) { if (videoCount > 0) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"media" - value:media - message:@"Only 1 video is allowed"]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"media" + value:media + message:@"Only 1 video is allowed"]; return NO; } } @@ -131,10 +129,10 @@ } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"media" - value:media - message:@"Only FBSDKSharePhoto and FBSDKShareVideo are allowed in `media` property"]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"media" + value:media + message:@"Only FBSDKSharePhoto and FBSDKShareVideo are allowed in `media` property"]; } return NO; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h index 8b18d07..710a600 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h @@ -19,10 +19,15 @@ #import #import +#import + +NS_ASSUME_NONNULL_BEGIN /** A base interface for Messenger share action buttons. */ +DEPRECATED_FOR_MESSENGER +NS_SWIFT_NAME(ShareMessengerActionButton) @protocol FBSDKShareMessengerActionButton /** @@ -32,3 +37,5 @@ @property (nonatomic, copy) NSString *title; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h index ffc1b7f..d65fd76 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h @@ -19,13 +19,17 @@ #import #import +#import + +NS_ASSUME_NONNULL_BEGIN @class FBSDKShareMessengerGenericTemplateElement; +DEPRECATED_FOR_MESSENGER typedef NS_ENUM(NSUInteger, FBSDKShareMessengerGenericTemplateImageAspectRatio) { FBSDKShareMessengerGenericTemplateImageAspectRatioHorizontal = 0, FBSDKShareMessengerGenericTemplateImageAspectRatioSquare -}; +} NS_SWIFT_NAME(ShareMessengerGenericTemplateImageAspectRatio); /** A model for sharing a generic template element to Messenger. This wrapper element allows @@ -33,6 +37,8 @@ typedef NS_ENUM(NSUInteger, FBSDKShareMessengerGenericTemplateImageAspectRatio) See https://developers.facebook.com/docs/messenger-platform/send-messages/template/generic for more details. */ +DEPRECATED_FOR_MESSENGER +NS_SWIFT_NAME(ShareMessengerGenericTemplateContent) @interface FBSDKShareMessengerGenericTemplateContent : NSObject /** @@ -53,3 +59,5 @@ typedef NS_ENUM(NSUInteger, FBSDKShareMessengerGenericTemplateImageAspectRatio) @property (nonatomic, copy) FBSDKShareMessengerGenericTemplateElement *element; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m index 4d1d702..afc7a55 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m @@ -18,7 +18,11 @@ #import "FBSDKShareMessengerGenericTemplateContent.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareMessengerContentUtility.h" #import "FBSDKShareMessengerGenericTemplateElement.h" #import "FBSDKShareMessengerURLActionButton.h" @@ -30,6 +34,7 @@ static NSString *const kGenericTemplateIsSharableKey = @"isSharable"; static NSString *const kGenericTemplateImageAspectRatioKey = @"imageAspectRatio"; static NSString *const kGenericTemplateElementKey = @"element"; +DEPRECATED_FOR_MESSENGER static NSString *_ImageAspectRatioString(FBSDKShareMessengerGenericTemplateImageAspectRatio imageAspectRatio) { switch (imageAspectRatio) { @@ -40,17 +45,18 @@ static NSString *_ImageAspectRatioString(FBSDKShareMessengerGenericTemplateImage } } +DEPRECATED_FOR_MESSENGER static NSArray *> *_SerializableGenericTemplateElementsFromElements(NSArray *elements) { NSMutableArray *> *serializableElements = [NSMutableArray array]; for (FBSDKShareMessengerGenericTemplateElement *element in elements) { NSMutableDictionary *elementDictionary = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:elementDictionary setObject:element.title forKey:@"title"]; - [FBSDKInternalUtility dictionary:elementDictionary setObject:element.subtitle forKey:@"subtitle"]; - [FBSDKInternalUtility dictionary:elementDictionary setObject:element.imageURL.absoluteString forKey:@"image_url"]; - [FBSDKInternalUtility dictionary:elementDictionary setObject:SerializableButtonsFromButton(element.button) forKey:kFBSDKShareMessengerButtonsKey]; + [FBSDKBasicUtility dictionary:elementDictionary setObject:element.title forKey:@"title"]; + [FBSDKBasicUtility dictionary:elementDictionary setObject:element.subtitle forKey:@"subtitle"]; + [FBSDKBasicUtility dictionary:elementDictionary setObject:element.imageURL.absoluteString forKey:@"image_url"]; + [FBSDKBasicUtility dictionary:elementDictionary setObject:SerializableButtonsFromButton(element.button) forKey:kFBSDKShareMessengerButtonsKey]; if ([element.defaultAction isKindOfClass:[FBSDKShareMessengerURLActionButton class]]) { - [FBSDKInternalUtility dictionary:elementDictionary setObject:SerializableButtonFromURLButton(element.defaultAction, YES) forKey:@"default_action"]; + [FBSDKBasicUtility dictionary:elementDictionary setObject:SerializableButtonFromURLButton(element.defaultAction, YES) forKey:@"default_action"]; } [serializableElements addObject:elementDictionary]; @@ -59,7 +65,10 @@ static NSArray *> *_SerializableGenericTemplateElem return serializableElements; } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" @implementation FBSDKShareMessengerGenericTemplateContent +#pragma clang diagnostic pop #pragma mark - Properties @@ -84,12 +93,6 @@ static NSArray *> *_SerializableGenericTemplateElem #pragma mark - FBSDKSharingContent -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [parameters addEntriesFromDictionary:[self addParameters:parameters bridgeOptions:bridgeOptions]]; -} - - (NSDictionary *)addParameters:(NSDictionary *)existingParameters bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions { @@ -110,10 +113,10 @@ static NSArray *> *_SerializableGenericTemplateElem FBSDKShareMessengerGenericTemplateElement *firstElement = _element; NSMutableDictionary *contentForPreview = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:@"DEFAULT" forKey:@"preview_type"]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:firstElement.title forKey:@"title"]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:firstElement.subtitle forKey:@"subtitle"]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:firstElement.imageURL.absoluteString forKey:@"image_url"]; + [FBSDKBasicUtility dictionary:contentForPreview setObject:@"DEFAULT" forKey:@"preview_type"]; + [FBSDKBasicUtility dictionary:contentForPreview setObject:firstElement.title forKey:@"title"]; + [FBSDKBasicUtility dictionary:contentForPreview setObject:firstElement.subtitle forKey:@"subtitle"]; + [FBSDKBasicUtility dictionary:contentForPreview setObject:firstElement.imageURL.absoluteString forKey:@"image_url"]; if (firstElement.button) { AddToContentPreviewDictionaryForButton(contentForPreview, firstElement.button); } else { diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h index d70dd96..0f76587 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h @@ -21,11 +21,15 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** A model for sharing a generic template element to Messenger. This allows specifying title, subtitle, image, default action, and any other buttons. Title is required. See https://developers.facebook.com/docs/messenger-platform/send-messages/template/generic for more details. */ +NS_SWIFT_NAME(ShareMessengerGenericTemplateElement) +DEPRECATED_FOR_MESSENGER @interface FBSDKShareMessengerGenericTemplateElement : NSObject /** @@ -36,21 +40,23 @@ /** The rendered subtitle for the shared generic template element. Optional. */ -@property (nonatomic, copy) NSString *subtitle; +@property (nonatomic, copy, nullable) NSString *subtitle; /** The image url that will be downloaded and rendered at the top of the generic template. Optional. */ -@property (nonatomic, copy) NSURL *imageURL; +@property (nonatomic, copy, nullable) NSURL *imageURL; /** The default action executed when this shared generic tempate is tapped. Title for this button is ignored. Optional. */ -@property (nonatomic, copy) id defaultAction; +@property (nonatomic, copy, nullable) id defaultAction; /** This specifies what action button to show below the generic template. Optional. */ -@property (nonatomic, copy) id button; +@property (nonatomic, copy, nullable) id button; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m index 7268f78..dca574a 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m @@ -24,7 +24,10 @@ static NSString *const kGenericTemplateImageURLKey = @"imageURL"; static NSString *const kGenericTemplateDefaultActionKey = @"defaultAction"; static NSString *const kGenericTemplateButtonKey = @"button"; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" @implementation FBSDKShareMessengerGenericTemplateElement +#pragma clang diagnostic pop #pragma mark - NSCoding diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h index 142702d..8b272c4 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h @@ -21,17 +21,25 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + +DEPRECATED_FOR_MESSENGER typedef NS_ENUM(NSUInteger, FBSDKShareMessengerMediaTemplateMediaType) { FBSDKShareMessengerMediaTemplateMediaTypeImage = 0, FBSDKShareMessengerMediaTemplateMediaTypeVideo -}; +} NS_SWIFT_NAME(ShareMessengerMediaTemplateMediaType); /** A model for sharing media template content. See https://developers.facebook.com/docs/messenger-platform/send-messages/template/media for details. */ +NS_SWIFT_NAME(ShareMessengerMediaTemplateContent) +DEPRECATED_FOR_MESSENGER @interface FBSDKShareMessengerMediaTemplateContent : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** The media type (image or video) for this content. This must match the media type specified in the attachmentID/mediaURL to avoid an error when sharing. Defaults to image. @@ -41,19 +49,19 @@ typedef NS_ENUM(NSUInteger, FBSDKShareMessengerMediaTemplateMediaType) { /** The attachmentID of the item to share. Optional, but either attachmentID or mediaURL must be specified. */ -@property (nonatomic, copy, readonly) NSString *attachmentID; +@property (nonatomic, copy, readonly, nullable) NSString *attachmentID; /** The Facebook url for this piece of media. External urls will not work; this must be a Facebook url. See https://developers.facebook.com/docs/messenger-platform/send-messages/template/media for details. Optional, but either attachmentID or mediaURL must be specified. */ -@property (nonatomic, copy, readonly) NSURL *mediaURL; +@property (nonatomic, copy, readonly, nullable) NSURL *mediaURL; /** This specifies what action button to show below the media. Optional. */ -@property (nonatomic, copy) id button; +@property (nonatomic, copy, nullable) id button; /** Custom initializer to create media template share with attachment id. @@ -67,3 +75,5 @@ typedef NS_ENUM(NSUInteger, FBSDKShareMessengerMediaTemplateMediaType) { - (instancetype)initWithMediaURL:(NSURL *)mediaURL; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m index de9cf7e..1123af5 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m @@ -18,7 +18,11 @@ #import "FBSDKShareMessengerMediaTemplateContent.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKHashtag.h" #import "FBSDKShareConstants.h" #import "FBSDKShareMessengerContentUtility.h" @@ -55,6 +59,7 @@ static NSString *_MediaTemplateURLSerializationKey(NSURL *mediaURL) } } +DEPRECATED_FOR_MESSENGER static NSString *_MediaTypeString(FBSDKShareMessengerMediaTemplateMediaType mediaType) { switch (mediaType) { @@ -65,21 +70,25 @@ static NSString *_MediaTypeString(FBSDKShareMessengerMediaTemplateMediaType medi } } +DEPRECATED_FOR_MESSENGER static NSArray *> *_SerializableMediaTemplateContentFromContent(FBSDKShareMessengerMediaTemplateContent *mediaTemplateContent) { NSMutableArray *> *serializableMediaTemplateContent = [NSMutableArray array]; NSMutableDictionary *mediaTemplateContentDictionary = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:mediaTemplateContentDictionary setObject:_MediaTypeString(mediaTemplateContent.mediaType) forKey:@"media_type"]; - [FBSDKInternalUtility dictionary:mediaTemplateContentDictionary setObject:mediaTemplateContent.mediaURL.absoluteString forKey:@"url"]; - [FBSDKInternalUtility dictionary:mediaTemplateContentDictionary setObject:mediaTemplateContent.attachmentID forKey:@"attachment_id"]; - [FBSDKInternalUtility dictionary:mediaTemplateContentDictionary setObject:SerializableButtonsFromButton(mediaTemplateContent.button) forKey:kFBSDKShareMessengerButtonsKey]; + [FBSDKBasicUtility dictionary:mediaTemplateContentDictionary setObject:_MediaTypeString(mediaTemplateContent.mediaType) forKey:@"media_type"]; + [FBSDKBasicUtility dictionary:mediaTemplateContentDictionary setObject:mediaTemplateContent.mediaURL.absoluteString forKey:@"url"]; + [FBSDKBasicUtility dictionary:mediaTemplateContentDictionary setObject:mediaTemplateContent.attachmentID forKey:@"attachment_id"]; + [FBSDKBasicUtility dictionary:mediaTemplateContentDictionary setObject:SerializableButtonsFromButton(mediaTemplateContent.button) forKey:kFBSDKShareMessengerButtonsKey]; [serializableMediaTemplateContent addObject:mediaTemplateContentDictionary]; return serializableMediaTemplateContent; } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" @implementation FBSDKShareMessengerMediaTemplateContent +#pragma clang diagnostic pop #pragma mark - Properties @@ -115,12 +124,6 @@ static NSArray *> *_SerializableMediaTemplateConten #pragma mark - FBSDKSharingContent -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [parameters addEntriesFromDictionary:[self addParameters:parameters bridgeOptions:bridgeOptions]]; -} - - (NSDictionary *)addParameters:(NSDictionary *)existingParameters bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions { @@ -138,12 +141,12 @@ static NSArray *> *_SerializableMediaTemplateConten contentForShare[kFBSDKShareMessengerAttachmentKey] = attachment; NSMutableDictionary *contentForPreview = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:@"DEFAULT" forKey:@"preview_type"]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:_attachmentID forKey:@"attachment_id"]; - [FBSDKInternalUtility dictionary:contentForPreview - setObject:_mediaURL.absoluteString - forKey:_MediaTemplateURLSerializationKey(_mediaURL)]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:_MediaTypeString(_mediaType) forKey:@"media_type"]; + [FBSDKBasicUtility dictionary:contentForPreview setObject:@"DEFAULT" forKey:@"preview_type"]; + [FBSDKBasicUtility dictionary:contentForPreview setObject:_attachmentID forKey:@"attachment_id"]; + [FBSDKBasicUtility dictionary:contentForPreview + setObject:_mediaURL.absoluteString + forKey:_MediaTemplateURLSerializationKey(_mediaURL)]; + [FBSDKBasicUtility dictionary:contentForPreview setObject:_MediaTypeString(_mediaType) forKey:@"media_type"]; AddToContentPreviewDictionaryForButton(contentForPreview, _button); [FBSDKShareMessengerContentUtility addToParameters:updatedParameters contentForShare:contentForShare contentForPreview:contentForPreview]; @@ -157,9 +160,9 @@ static NSArray *> *_SerializableMediaTemplateConten { if (!_mediaURL && !_attachmentID) { if (errorRef != NULL) { - *errorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"attachmentID/mediaURL" - message:@"Must specify either attachmentID or mediaURL"]; + *errorRef = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"attachmentID/mediaURL" + message:@"Must specify either attachmentID or mediaURL"]; } return NO; } @@ -178,7 +181,7 @@ static NSArray *> *_SerializableMediaTemplateConten - (instancetype)initWithCoder:(NSCoder *)decoder { - if ((self = [self init])) { + if (self = [self initWithAttachmentID:@""]) { _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:kMediaTemplatePageIDKey]; _mediaType = [[decoder decodeObjectForKey:kMediaTemplateMediaTypeKey] unsignedIntegerValue]; _attachmentID = [decoder decodeObjectOfClass:[NSString class] forKey:kMediaTemplateAttachmentIDKey]; @@ -203,7 +206,8 @@ static NSArray *> *_SerializableMediaTemplateConten - (id)copyWithZone:(NSZone *)zone { - FBSDKShareMessengerMediaTemplateContent *copy = [[FBSDKShareMessengerMediaTemplateContent alloc] init]; + FBSDKShareMessengerMediaTemplateContent *copy = + [[FBSDKShareMessengerMediaTemplateContent alloc] initWithAttachmentID:@""]; copy->_pageID = [_pageID copy]; copy->_mediaType = _mediaType; copy->_attachmentID = [_attachmentID copy]; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h index f68f51c..3d1ba31 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h @@ -21,11 +21,15 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** This share content allows sharing a bubble that plays songs with Open Graph music. See https://developers.facebook.com/docs/messenger-platform/send-messages/template/open-graph for details. Passing property pageID is required for this type of share. */ +DEPRECATED_FOR_MESSENGER +NS_SWIFT_NAME(ShareMessengerOpenGraphMusicTemplateContent) @interface FBSDKShareMessengerOpenGraphMusicTemplateContent : NSObject /** @@ -36,6 +40,8 @@ /** This specifies what action button to show below the open graph music bubble. Optional. */ -@property (nonatomic, copy) id button; +@property (nonatomic, copy, nullable) id button; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m index 33fbdef..316aa43 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m @@ -18,7 +18,11 @@ #import "FBSDKShareMessengerOpenGraphMusicTemplateContent.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareMessengerContentUtility.h" #import "FBSDKShareUtility.h" @@ -27,19 +31,24 @@ static NSString *const kMusicTemplateURLKey = @"url"; static NSString *const kMusicTemplateButtonKey = @"button"; static NSString *const kMusicTemplateUUIDKey = @"uuid"; +DEPRECATED_FOR_MESSENGER static NSArray *> *_SerializableOpenGraphMusicTemplateContentFromContent(FBSDKShareMessengerOpenGraphMusicTemplateContent *openGraphMusicTemplateContent) { NSMutableArray *> *serializableOpenGraphMusicTemplateContent = [NSMutableArray array]; NSMutableDictionary *openGraphMusicTemplateContentDictionary = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:openGraphMusicTemplateContentDictionary setObject:openGraphMusicTemplateContent.url.absoluteString forKey:@"url"]; - [FBSDKInternalUtility dictionary:openGraphMusicTemplateContentDictionary setObject:SerializableButtonsFromButton(openGraphMusicTemplateContent.button) forKey:kFBSDKShareMessengerButtonsKey]; + [FBSDKBasicUtility dictionary:openGraphMusicTemplateContentDictionary setObject:openGraphMusicTemplateContent.url.absoluteString forKey:@"url"]; + [FBSDKBasicUtility dictionary:openGraphMusicTemplateContentDictionary setObject:SerializableButtonsFromButton(openGraphMusicTemplateContent.button) forKey:kFBSDKShareMessengerButtonsKey]; [serializableOpenGraphMusicTemplateContent addObject:openGraphMusicTemplateContentDictionary]; return serializableOpenGraphMusicTemplateContent; } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" @implementation FBSDKShareMessengerOpenGraphMusicTemplateContent +#pragma clang diagnostic pop #pragma mark - Properties @@ -64,12 +73,6 @@ static NSArray *> *_SerializableOpenGraphMusicTempl #pragma mark - FBSDKSharingContent -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [parameters addEntriesFromDictionary:[self addParameters:parameters bridgeOptions:bridgeOptions]]; -} - - (NSDictionary *)addParameters:(NSDictionary *)existingParameters bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions { @@ -87,8 +90,8 @@ static NSArray *> *_SerializableOpenGraphMusicTempl contentForShare[kFBSDKShareMessengerAttachmentKey] = attachment; NSMutableDictionary *contentForPreview = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:@"OPEN_GRAPH" forKey:@"preview_type"]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:_url.absoluteString forKey:@"open_graph_url"]; + [FBSDKBasicUtility dictionary:contentForPreview setObject:@"OPEN_GRAPH" forKey:@"preview_type"]; + [FBSDKBasicUtility dictionary:contentForPreview setObject:_url.absoluteString forKey:@"open_graph_url"]; AddToContentPreviewDictionaryForButton(contentForPreview, _button); [FBSDKShareMessengerContentUtility addToParameters:updatedParameters contentForShare:contentForShare contentForPreview:contentForPreview]; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h index 79feadd..78543d9 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h @@ -20,15 +20,19 @@ #import +NS_ASSUME_NONNULL_BEGIN + typedef NS_ENUM(NSUInteger, FBSDKShareMessengerURLActionButtonWebviewHeightRatio) { FBSDKShareMessengerURLActionButtonWebviewHeightRatioFull = 0, FBSDKShareMessengerURLActionButtonWebviewHeightRatioTall, FBSDKShareMessengerURLActionButtonWebviewHeightRatioCompact -}; +} NS_SWIFT_NAME(ShareMessengerURLActionButton.WebviewHeightRatio); /** A model for a Messenger share URL action button. */ +DEPRECATED_FOR_MESSENGER +NS_SWIFT_NAME(ShareMessengerURLActionButton) @interface FBSDKShareMessengerURLActionButton : NSObject /** @@ -51,7 +55,7 @@ typedef NS_ENUM(NSUInteger, FBSDKShareMessengerURLActionButtonWebviewHeightRatio Messenger Extensions. If this is not defined, the url will be used as a fallback. Optional, but ignored unless isMessengerExtensionURL == YES. */ -@property (nonatomic, copy) NSURL *fallbackURL; +@property (nonatomic, copy, nullable) NSURL *fallbackURL; /** This controls whether we want to hide the share button in the webview or not. It is useful to hide the share @@ -60,3 +64,5 @@ typedef NS_ENUM(NSUInteger, FBSDKShareMessengerURLActionButtonWebviewHeightRatio @property (nonatomic, assign) BOOL shouldHideWebviewShareButton; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m index 60df77c..ae53ea0 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m @@ -18,7 +18,11 @@ #import "FBSDKShareMessengerURLActionButton.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareUtility.h" static NSString *const kURLActionButtonTitleKey = @"title"; @@ -28,7 +32,10 @@ static NSString *const kURLActionButtonMessengerExtensionsKey = @"messengerExten static NSString *const kURLActionButtonFallbackURLKey = @"fallbackURL"; static NSString *const kURLActionButtonShouldHideWebviewShareButtonKey = @"shouldHideWebviewShareButton"; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" @implementation FBSDKShareMessengerURLActionButton +#pragma clang diagnostic pop #pragma mark - Properties diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h index 83e8883..c6facf0 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h @@ -23,13 +23,26 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** An Open Graph Action for sharing. The property keys MUST have namespaces specified on them, such as `og:image`. */ +NS_SWIFT_NAME(ShareOpenGraphAction) @interface FBSDKShareOpenGraphAction : FBSDKShareOpenGraphValueContainer +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +/** + Designated initializer to build a new action and set the object for the specified key. + @param actionType The action type of the receiver + */ +- (instancetype)initWithActionType:(NSString *)actionType +NS_SWIFT_NAME(init(type:)); + /** Convenience method to build a new action and set the object for the specified key. @param actionType The action type of the receiver @@ -68,3 +81,5 @@ - (BOOL)isEqualToShareOpenGraphAction:(FBSDKShareOpenGraphAction *)action; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m index c515199..b03a571 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m @@ -18,7 +18,11 @@ #import "FBSDKShareOpenGraphAction.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareOpenGraphValueContainer+Internal.h" #define FBSDK_SHARE_OPEN_GRAPH_ACTION_TYPE_KEY @"type" @@ -29,15 +33,14 @@ + (instancetype)actionWithType:(NSString *)actionType object:(FBSDKShareOpenGraphObject *)object key:(NSString *)key { - FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init]; - action.actionType = actionType; + FBSDKShareOpenGraphAction *action = [[self alloc] initWithActionType:actionType]; [action setObject:object forKey:key]; return action; } + (instancetype)actionWithType:(NSString *)actionType objectID:(NSString *)objectID key:(NSString *)key { - FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init]; + FBSDKShareOpenGraphAction *action = [[self alloc] initWithActionType:actionType]; action.actionType = actionType; [action setString:objectID forKey:key]; return action; @@ -45,7 +48,7 @@ + (instancetype)actionWithType:(NSString *)actionType objectURL:(NSURL *)objectURL key:(NSString *)key { - FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init]; + FBSDKShareOpenGraphAction *action = [[self alloc] initWithActionType:actionType]; action.actionType = actionType; [action setURL:objectURL forKey:key]; return action; @@ -83,6 +86,15 @@ return YES; } +- (instancetype)initWithActionType:(NSString *)actionType +{ + if (self = [super init]) { + self.actionType = actionType; + } + + return self; +} + - (instancetype)initWithCoder:(NSCoder *)decoder { if ((self = [super initWithCoder:decoder])) { @@ -101,8 +113,7 @@ - (id)copyWithZone:(NSZone *)zone { - FBSDKShareOpenGraphAction *copy = [[FBSDKShareOpenGraphAction alloc] init]; - copy->_actionType = [_actionType copy]; + FBSDKShareOpenGraphAction *copy = [[FBSDKShareOpenGraphAction alloc] initWithActionType:[_actionType copy]]; [copy parseProperties:[self allProperties]]; return copy; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h index faed0ba..bf5215d 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h @@ -21,9 +21,13 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** A model for Open Graph content to be shared. */ +NS_SWIFT_NAME(ShareOpenGraphContent) +DEPRECATED_MSG_ATTRIBUTE("Open Graph no longer available; use FBSDKShareLinkContent instead.") @interface FBSDKShareOpenGraphContent : NSObject /** @@ -36,7 +40,6 @@ Property name that points to the primary Open Graph Object in the action. 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; @@ -48,3 +51,5 @@ - (BOOL)isEqualToShareOpenGraphContent:(FBSDKShareOpenGraphContent *)content; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m index 49e5f2e..b714284 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m @@ -18,7 +18,11 @@ #import "FBSDKShareOpenGraphContent.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKHashtag.h" #import "FBSDKSharePhoto.h" #import "FBSDKShareUtility.h" @@ -33,8 +37,11 @@ #define FBSDK_SHARE_OPEN_GRAPH_CONTENT_PAGE_ID_KEY @"pageID" #define FBSDK_SHARE_OPEN_GRAPH_CONTENT_UUID_KEY @"uuid" +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" @implementation FBSDKShareOpenGraphContent + #pragma mark - Properties @synthesize contentURL = _contentURL; @@ -68,25 +75,19 @@ #pragma mark - FBSDKSharingContent -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [parameters addEntriesFromDictionary:[self addParameters:parameters bridgeOptions:bridgeOptions]]; -} - - (NSDictionary *)addParameters:(NSDictionary *)existingParameters bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions { NSMutableDictionary *updatedParameters = [NSMutableDictionary dictionaryWithDictionary:existingParameters]; NSString *previewPropertyName = [FBSDKShareUtility getOpenGraphNameAndNamespaceFromFullName:_previewPropertyName namespace:nil]; - [FBSDKInternalUtility dictionary:updatedParameters - setObject:previewPropertyName - forKey:@"previewPropertyName"]; - [FBSDKInternalUtility dictionary:updatedParameters setObject:_action.actionType forKey:@"actionType"]; - [FBSDKInternalUtility dictionary:updatedParameters - setObject:[FBSDKShareUtility convertOpenGraphValueContainer:_action requireNamespace:NO] - forKey:@"action"]; + [FBSDKBasicUtility dictionary:updatedParameters + setObject:previewPropertyName + forKey:@"previewPropertyName"]; + [FBSDKBasicUtility dictionary:updatedParameters setObject:_action.actionType forKey:@"actionType"]; + [FBSDKBasicUtility dictionary:updatedParameters + setObject:[FBSDKShareUtility convertOpenGraphValueContainer:_action requireNamespace:NO] + forKey:@"action"]; return updatedParameters; } @@ -123,7 +124,7 @@ if (self == object) { return YES; } - if (![object isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + if (![object isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { return NO; } return [self isEqualToShareOpenGraphContent:(FBSDKShareOpenGraphContent *)object]; @@ -199,3 +200,4 @@ } @end +#pragma clang diagnostic pop diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h index ef34e28..47f0ef3 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h @@ -22,6 +22,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** An Open Graph Object for sharing. @@ -41,13 +43,14 @@ @"fitness:metrics:location:longitude": @"2.17403", }]; */ +NS_SWIFT_NAME(ShareOpenGraphObject) @interface FBSDKShareOpenGraphObject : FBSDKShareOpenGraphValueContainer /** 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; ++ (instancetype)objectWithProperties:(NSDictionary *)properties; /** Compares the receiver to another Open Graph Object. @@ -57,3 +60,5 @@ - (BOOL)isEqualToShareOpenGraphObject:(FBSDKShareOpenGraphObject *)object; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h index 59b1699..3ed2f51 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h @@ -18,74 +18,106 @@ #import +NS_ASSUME_NONNULL_BEGIN + @class FBSDKShareOpenGraphObject; @class FBSDKSharePhoto; +/** + Enumeration Block + */ +typedef void (^FBSDKEnumerationBlock)(NSString *key, id object, BOOL *stop) +NS_SWIFT_NAME(EnumerationBlock) +NS_SWIFT_UNAVAILABLE(""); + /** Protocol defining operations on open graph actions and objects. The property keys MUST have namespaces specified on them, such as `og:image`. */ +NS_SWIFT_NAME(ShareOpenGraphValueContaining) @protocol FBSDKShareOpenGraphValueContaining +/** + Returns a dictionary of all the objects that lets you access each key/object in the receiver. + */ +@property (nonatomic, readonly, strong) NSDictionary *allProperties; + +/** + 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 + */ +@property (nonatomic, readonly, strong) NSEnumerator *keyEnumerator +NS_SWIFT_UNAVAILABLE(""); + +/** + 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 + */ +@property (nonatomic, readonly, strong) NSEnumerator *objectEnumerator +NS_SWIFT_UNAVAILABLE(""); + /** Gets an NSArray out of the receiver. @param key The key for the value @return The NSArray value or nil */ -- (NSArray *)arrayForKey:(NSString *)key; +- (nullable NSArray *)arrayForKey:(NSString *)key; /** 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; - -/** - 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; +- (void)enumerateKeysAndObjectsUsingBlock:(FBSDKEnumerationBlock)block +NS_SWIFT_UNAVAILABLE(""); /** Gets an NSNumber out of the receiver. @param key The key for the value @return The NSNumber value or nil */ -- (NSNumber *)numberForKey:(NSString *)key; +- (nullable NSNumber *)numberForKey:(NSString *)key; /** - 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 + Gets an NSString out of the receiver. + @param key The key for the value + @return The NSString value or nil */ -- (NSEnumerator *)objectEnumerator; +- (nullable NSString *)stringForKey:(NSString *)key; + +/** + Gets an NSURL out of the receiver. + @param key The key for the value + @return The NSURL value or nil + */ +- (nullable NSURL *)URLForKey:(NSString *)key; /** Gets an FBSDKShareOpenGraphObject out of the receiver. @param key The key for the value @return The FBSDKShareOpenGraphObject value or nil */ -- (FBSDKShareOpenGraphObject *)objectForKey:(NSString *)key; +- (nullable FBSDKShareOpenGraphObject *)objectForKey:(NSString *)key; /** Enables subscript access to the values in the receiver. @param key The key for the value @return The value */ -- (id)objectForKeyedSubscript:(NSString *)key; +- (nullable id)objectForKeyedSubscript:(NSString *)key; /** Parses properties out of a dictionary into the receiver. @param properties The properties to parse. */ -- (void)parseProperties:(NSDictionary *)properties; +- (void)parseProperties:(NSDictionary *)properties; /** Gets an FBSDKSharePhoto out of the receiver. @param key The key for the value @return The FBSDKSharePhoto value or nil */ -- (FBSDKSharePhoto *)photoForKey:(NSString *)key; +- (nullable FBSDKSharePhoto *)photoForKey:(NSString *)key; /** Removes a value from the receiver for the specified key. @@ -101,62 +133,57 @@ @param array The NSArray value @param key The key for the value */ -- (void)setArray:(NSArray *)array forKey:(NSString *)key; +- (void)setArray:(nullable NSArray *)array forKey:(NSString *)key +NS_SWIFT_NAME(set(_:forKey:)); /** 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; +- (void)setNumber:(nullable NSNumber *)number forKey:(NSString *)key +NS_SWIFT_NAME(set(_:forKey:)); /** 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; +- (void)setObject:(nullable FBSDKShareOpenGraphObject *)object forKey:(NSString *)key +NS_SWIFT_NAME(set(_:forKey:)); /** 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; +- (void)setPhoto:(nullable FBSDKSharePhoto *)photo forKey:(NSString *)key +NS_SWIFT_NAME(set(_:forKey:)); /** 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; +- (void)setString:(nullable NSString *)string forKey:(NSString *)key +NS_SWIFT_NAME(set(_:forKey:)); /** 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; - -/** - Gets an NSString out of the receiver. - @param key The key for the value - @return The NSString value or nil - */ -- (NSString *)stringForKey:(NSString *)key; - -/** - Gets an NSURL out of the receiver. - @param key The key for the value - @return The NSURL value or nil - */ -- (NSURL *)URLForKey:(NSString *)key; +- (void)setURL:(nullable NSURL *)URL forKey:(NSString *)key +NS_SWIFT_NAME(set(_:forKey:)); @end /** A base class to container Open Graph values. */ +NS_SWIFT_NAME(ShareOpenGraphValueContainer) @interface FBSDKShareOpenGraphValueContainer : NSObject @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m index 3b4066c..318fd73 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m @@ -19,7 +19,11 @@ #import "FBSDKShareOpenGraphValueContainer.h" #import "FBSDKShareOpenGraphValueContainer+Internal.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareOpenGraphObject.h" #import "FBSDKSharePhoto.h" #import "FBSDKShareUtility.h" @@ -28,7 +32,7 @@ @implementation FBSDKShareOpenGraphValueContainer { - NSMutableDictionary *_properties; + NSMutableDictionary *_properties; } #pragma mark - Object Lifecycle @@ -53,7 +57,7 @@ return [self _valueOfClass:[NSArray class] forKey:key]; } -- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(NSString *key, id object, BOOL *stop))block +- (void)enumerateKeysAndObjectsUsingBlock:(FBSDKEnumerationBlock)block { [_properties enumerateKeysAndObjectsUsingBlock:block]; } @@ -83,7 +87,7 @@ return [self _valueForKey:key]; } -- (void)parseProperties:(NSDictionary *)properties +- (void)parseProperties:(NSDictionary *)properties { [FBSDKShareUtility assertOpenGraphValues:properties requireKeyNamespace:[self requireKeyNamespace]]; [_properties addEntriesFromDictionary:[FBSDKShareUtility convertOpenGraphValues:properties]]; @@ -145,7 +149,7 @@ #pragma mark - Internal Methods -- (NSDictionary *)allProperties +- (NSDictionary *)allProperties { return _properties; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h index 7f8c2e4..0cd272c 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h @@ -19,14 +19,18 @@ #import #import +#import #import +NS_ASSUME_NONNULL_BEGIN + @class PHAsset; /** A photo for sharing. */ -@interface FBSDKSharePhoto : NSObject +NS_SWIFT_NAME(SharePhoto) +@interface FBSDKSharePhoto : NSObject /** Convenience method to build a new photo object with an image. @@ -60,19 +64,19 @@ If the photo is resident in memory, this method supplies the data. @return UIImage representation of the photo */ -@property (nonatomic, strong) UIImage *image; +@property (nonatomic, strong, nullable) UIImage *image; /** 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; +@property (nonatomic, copy, nullable) NSURL *imageURL; /** The representation of the photo in the Photos library. - Returns: PHAsset that represents the photo in the Photos library. */ -@property (nonatomic, copy) PHAsset *photoAsset; +@property (nonatomic, copy, nullable) PHAsset *photoAsset; /** Specifies whether the photo represented by the receiver was generated by the user or by the application. @@ -80,6 +84,13 @@ */ @property (nonatomic, assign, getter=isUserGenerated) BOOL userGenerated; +/** + 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, nullable) NSString *caption; + /** Compares the receiver to another photo. @param photo The other photo @@ -87,12 +98,7 @@ */ - (BOOL)isEqualToSharePhoto:(FBSDKSharePhoto *)photo; -/** - 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 + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m index 6d14cb0..7252b64 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m @@ -20,7 +20,11 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareConstants.h" NSString *const kFBSDKSharePhotoAssetKey = @"photoAsset"; @@ -123,10 +127,10 @@ NSString *const kFBSDKSharePhotoCaptionKey = @"caption"; if (_imageURL) { if (_imageURL.isFileURL) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"imageURL" - value:_imageURL - message:@"Cannot refer to a local file resource."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"imageURL" + value:_imageURL + message:@"Cannot refer to a local file resource."]; } return NO; } else { @@ -134,10 +138,10 @@ NSString *const kFBSDKSharePhotoCaptionKey = @"caption"; } } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"photo" - value:self - message:@"imageURL is required."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"photo" + value:self + message:@"imageURL is required."]; } return NO; } @@ -150,10 +154,10 @@ NSString *const kFBSDKSharePhotoCaptionKey = @"caption"; } } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"photoAsset" - value:_photoAsset - message:@"Must refer to a photo or other static image."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"photoAsset" + value:_photoAsset + message:@"Must refer to a photo or other static image."]; } return NO; } @@ -162,10 +166,10 @@ NSString *const kFBSDKSharePhotoCaptionKey = @"caption"; return YES; // will load the contents of the file and bridge the image } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"imageURL" - value:_imageURL - message:@"Must refer to a local file resource."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"imageURL" + value:_imageURL + message:@"Must refer to a local file resource."]; } return NO; } @@ -173,10 +177,10 @@ NSString *const kFBSDKSharePhotoCaptionKey = @"caption"; return YES; // will bridge the image } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"photo" - value:self - message:@"Must have an asset, image, or imageURL value."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"photo" + value:self + message:@"Must have an asset, image, or imageURL value."]; } return NO; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h index 427c315..fbb3e60 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h @@ -20,16 +20,21 @@ #import +NS_ASSUME_NONNULL_BEGIN + +@class FBSDKSharePhoto; + /** A model for photo content to be shared. */ +NS_SWIFT_NAME(SharePhotoContent) @interface FBSDKSharePhotoContent : NSObject /** Photos to be shared. @return Array of the photos (FBSDKSharePhoto) */ -@property (nonatomic, copy) NSArray *photos; +@property (nonatomic, copy) NSArray *photos; /** Compares the receiver to another photo content. @@ -39,3 +44,5 @@ - (BOOL)isEqualToSharePhotoContent:(FBSDKSharePhotoContent *)content; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m index c2db5ba..d9b874e 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m @@ -20,7 +20,11 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKHashtag.h" #import "FBSDKSharePhoto.h" #import "FBSDKShareUtility.h" @@ -77,12 +81,6 @@ #pragma mark - FBSDKSharingContent -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [parameters addEntriesFromDictionary:[self addParameters:parameters bridgeOptions:bridgeOptions]]; -} - - (NSDictionary *)addParameters:(NSDictionary *)existingParameters bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions { @@ -120,9 +118,9 @@ } } if (images.count > 0) { - [FBSDKInternalUtility dictionary:updatedParameters - setObject:images - forKey:@"photos"]; + [FBSDKBasicUtility dictionary:updatedParameters + setObject:images + forKey:@"photos"]; } return updatedParameters; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h index 09c13d1..4ceb32a 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h @@ -20,15 +20,19 @@ #import #import +#import #import +NS_ASSUME_NONNULL_BEGIN + @class FBSDKSharePhoto; @class PHAsset; /** A video for sharing. */ -@interface FBSDKShareVideo : NSObject +NS_SWIFT_NAME(ShareVideo) +@interface FBSDKShareVideo : NSObject /** Convenience method to build a new video object from raw data. @@ -73,25 +77,25 @@ The raw video data. - Returns: The video data. */ -@property (nonatomic, strong) NSData *data; +@property (nonatomic, strong, nullable) NSData *data; /** The representation of the video in the Photos library. @return PHAsset that represents the video in the Photos library. */ -@property (nonatomic, copy) PHAsset *videoAsset; +@property (nonatomic, copy, nullable) PHAsset *videoAsset; /** The file URL to the video. @return URL that points to the location of the video on disk */ -@property (nonatomic, copy) NSURL *videoURL; +@property (nonatomic, copy, nullable) NSURL *videoURL; /** The photo that represents the video. @return The photo */ -@property (nonatomic, copy) FBSDKSharePhoto *previewPhoto; +@property (nonatomic, copy, nullable) FBSDKSharePhoto *previewPhoto; /** Compares the receiver to another video. @@ -107,3 +111,5 @@ @property (nonatomic, copy, readonly) NSURL *videoURL; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m index 40c003b..b469a1a 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m @@ -18,7 +18,11 @@ #import "FBSDKShareVideo.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareConstants.h" #import "FBSDKSharePhoto.h" #import "FBSDKShareUtility.h" @@ -148,10 +152,10 @@ NSString *const kFBSDKShareVideoURLKey = @"videoURL"; } } if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"data" - value:data - message:@"Cannot share video data."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"data" + value:data + message:@"Cannot share video data."]; } return NO; } @@ -169,10 +173,10 @@ NSString *const kFBSDKShareVideoURLKey = @"videoURL"; } } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"videoAsset" - value:videoAsset - message:@"Must refer to a video file."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"videoAsset" + value:videoAsset + message:@"Must refer to a video file."]; } return NO; } @@ -194,10 +198,10 @@ NSString *const kFBSDKShareVideoURLKey = @"videoURL"; } } if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:kFBSDKShareVideoURLKey - value:videoURL - message:@"Must refer to an asset file."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:kFBSDKShareVideoURLKey + value:videoURL + message:@"Must refer to an asset file."]; } return NO; } @@ -214,10 +218,10 @@ NSString *const kFBSDKShareVideoURLKey = @"videoURL"; return [self _validateVideoURL:_videoURL withOptions:bridgeOptions error:errorRef]; } else { if ((errorRef != NULL) && !*errorRef) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"video" - value:self - message:@"Must have an asset, data, or videoURL value."]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"video" + value:self + message:@"Must have an asset, data, or videoURL value."]; } return NO; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h index 0f4fd37..80c222e 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h @@ -22,18 +22,14 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + /** A model for video content to be shared. */ +NS_SWIFT_NAME(ShareVideoContent) @interface FBSDKShareVideoContent : NSObject -/** - The photo that represents the video. - @return The photo - */ -@property (nonatomic, copy) FBSDKSharePhoto *previewPhoto -DEPRECATED_MSG_ATTRIBUTE("Use `video.previewPhoto`"); - /** The video to be shared. @return The video @@ -48,3 +44,5 @@ DEPRECATED_MSG_ATTRIBUTE("Use `video.previewPhoto`"); - (BOOL)isEqualToShareVideoContent:(FBSDKShareVideoContent *)content; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m index efa7b9b..196bfc4 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m @@ -20,7 +20,11 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKHashtag.h" #import "FBSDKShareUtility.h" @@ -69,12 +73,6 @@ #pragma mark - FBSDKSharingContent -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [parameters addEntriesFromDictionary:[self addParameters:parameters bridgeOptions:bridgeOptions]]; -} - - (NSDictionary *)addParameters:(NSDictionary *)existingParameters bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions { @@ -84,45 +82,48 @@ if (_video.videoAsset) { if (bridgeOptions & FBSDKShareBridgeOptionsVideoAsset) { // bridge the PHAsset.localIdentifier - [FBSDKInternalUtility dictionary:videoParameters - setObject:_video.videoAsset.localIdentifier - forKey:@"assetIdentifier"]; + [FBSDKBasicUtility dictionary:videoParameters + setObject:_video.videoAsset.localIdentifier + forKey:@"assetIdentifier"]; } else { // bridge the legacy "assets-library" URL from AVAsset - [FBSDKInternalUtility dictionary:videoParameters - setObject:_video.videoAsset.videoURL - forKey:@"assetURL"]; + [FBSDKBasicUtility dictionary:videoParameters + setObject:_video.videoAsset.videoURL + forKey:@"assetURL"]; } } else if (_video.data) { if (bridgeOptions & FBSDKShareBridgeOptionsVideoData) { // bridge the data - [FBSDKInternalUtility dictionary:videoParameters - setObject:_video.data - forKey:@"data"]; + [FBSDKBasicUtility dictionary:videoParameters + setObject:_video.data + forKey:@"data"]; } } else if (_video.videoURL) { if ([_video.videoURL.scheme.lowercaseString isEqualToString:@"assets-library"]) { // bridge the legacy "assets-library" URL - [FBSDKInternalUtility dictionary:videoParameters - setObject:_video.videoURL - forKey:@"assetURL"]; + [FBSDKBasicUtility dictionary:videoParameters + setObject:_video.videoURL + forKey:@"assetURL"]; } else if (_video.videoURL.isFileURL) { if (bridgeOptions & FBSDKShareBridgeOptionsVideoData) { // load the contents of the file and bridge the data NSData *data = [NSData dataWithContentsOfURL:_video.videoURL options:NSDataReadingMappedIfSafe error:NULL]; - [FBSDKInternalUtility dictionary:videoParameters - setObject:data - forKey:@"data"]; + [FBSDKBasicUtility dictionary:videoParameters + setObject:data + forKey:@"data"]; } } } - [FBSDKInternalUtility dictionary:videoParameters - setObject:[FBSDKShareUtility convertPhoto:_previewPhoto] - forKey:@"previewPhoto"]; - [FBSDKInternalUtility dictionary:updatedParameters - setObject:videoParameters - forKey:@"video"]; + if (_video.previewPhoto) { + [FBSDKBasicUtility dictionary:videoParameters + setObject:[FBSDKShareUtility convertPhoto:_video.previewPhoto] + forKey:@"previewPhoto"]; + } + + [FBSDKBasicUtility dictionary:updatedParameters + setObject:videoParameters + forKey:@"video"]; return updatedParameters; } @@ -146,7 +147,6 @@ _hashtag.hash, _peopleIDs.hash, _placeID.hash, - _previewPhoto.hash, _ref.hash, _pageID.hash, _video.hash, @@ -173,10 +173,6 @@ [FBSDKInternalUtility object:_hashtag isEqualToObject:content.hashtag] && [FBSDKInternalUtility object:_peopleIDs isEqualToObject:content.peopleIDs] && [FBSDKInternalUtility object:_placeID isEqualToObject:content.placeID] && -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [FBSDKInternalUtility object:_previewPhoto isEqualToObject:content.previewPhoto] && -#pragma clang diagnostic pop [FBSDKInternalUtility object:_ref isEqualToObject:content.ref] && [FBSDKInternalUtility object:_pageID isEqualToObject:content.pageID] && [FBSDKInternalUtility object:_shareUUID isEqualToObject:content.shareUUID] && @@ -197,8 +193,6 @@ _hashtag = [decoder decodeObjectOfClass:[FBSDKHashtag class] forKey:FBSDK_SHARE_VIDEO_CONTENT_HASHTAG_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]; _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_VIDEO_CONTENT_PAGE_ID_KEY]; _video = [decoder decodeObjectOfClass:[FBSDKShareVideo class] forKey:FBSDK_SHARE_VIDEO_CONTENT_VIDEO_KEY]; @@ -213,7 +207,6 @@ [encoder encodeObject:_hashtag forKey:FBSDK_SHARE_VIDEO_CONTENT_HASHTAG_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:_pageID forKey:FBSDK_SHARE_VIDEO_CONTENT_PAGE_ID_KEY]; [encoder encodeObject:_video forKey:FBSDK_SHARE_VIDEO_CONTENT_VIDEO_KEY]; @@ -229,7 +222,6 @@ copy->_hashtag = [_hashtag copy]; copy->_peopleIDs = [_peopleIDs copy]; copy->_placeID = [_placeID copy]; - copy->_previewPhoto = [_previewPhoto copy]; copy->_ref = [_ref copy]; copy->_pageID = [_pageID copy]; copy->_video = [_video copy]; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h index 9e4ff6b..c95c674 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h @@ -20,6 +20,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + @protocol FBSDKSharingDelegate; /** @@ -31,6 +33,7 @@ @see FBSDKShareAPI */ +NS_SWIFT_NAME(Sharing) @protocol FBSDKSharing /** @@ -63,6 +66,7 @@ /** The common interface for dialogs that initiate sharing. */ +NS_SWIFT_NAME(SharingDialog) @protocol FBSDKSharingDialog /** @@ -92,6 +96,7 @@ 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. */ +NS_SWIFT_NAME(SharingDelegate) @protocol FBSDKSharingDelegate /** @@ -99,7 +104,7 @@ @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; +- (void)sharer:(id)sharer didCompleteWithResults:(NSDictionary *)results; /** Sent to the delegate when the sharer encounters an error. @@ -115,3 +120,5 @@ - (void)sharerDidCancel:(id)sharer; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h index 13cfc1f..3f54925 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h @@ -20,6 +20,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** The common interface for sharing buttons. @@ -27,11 +29,14 @@ @see FBSDKShareButton */ +NS_SWIFT_NAME(SharingButton) @protocol FBSDKSharingButton /** The content to be shared. */ -@property (nonatomic, copy) id shareContent; +@property (nonatomic, copy, nullable) id shareContent; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h index 3c97c5e..ec2ca2e 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h @@ -21,11 +21,14 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + @class FBSDKHashtag; /** A base interface for content to be shared. */ +NS_SWIFT_NAME(SharingContent) @protocol FBSDKSharingContent /** @@ -41,7 +44,7 @@ Hashtag for the content being shared. @return The hashtag for the content being shared. */ -@property (nonatomic, copy) FBSDKHashtag *hashtag; +@property (nonatomic, copy, nullable) FBSDKHashtag *hashtag; /** List of IDs for taggable people to tag with this content. @@ -49,31 +52,31 @@ (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; +@property (nonatomic, copy) NSArray *peopleIDs; /** The ID for a place to tag with this content. @return The ID for the place to tag */ -@property (nonatomic, copy) NSString *placeID; +@property (nonatomic, copy, nullable) NSString *placeID; /** 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; +@property (nonatomic, copy, nullable) NSString *ref; /** For shares into Messenger, this pageID will be used to map the app to page and attach attribution to the share. - @return The ID of the Facebok page this share is associated with. + @return The ID of the Facebook page this share is associated with. */ -@property (nonatomic, copy) NSString *pageID; +@property (nonatomic, copy, nullable) NSString *pageID; /** A unique identifier for a share involving this content, useful for tracking purposes. @return A unique string identifying this share data. */ -@property (nonatomic, copy, readonly) NSString *shareUUID; +@property (nonatomic, copy, readonly, nullable) NSString *shareUUID; /** Adds content to an existing dictionary as key/value pairs and returns the @@ -83,16 +86,9 @@ @return A new dictionary with the modified contents */ - (NSDictionary *)addParameters:(NSDictionary *)existingParameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions; - -/** - Adds content to a dictionary as key/value pairs. - @param parameters A mutable dictionary that may be appended with key/value pairs of content. - @param bridgeOptions The options for bridging - */ - -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -DEPRECATED_MSG_ATTRIBUTE("`addToParameters` is deprecated. Use `addParameters`"); + bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions +NS_SWIFT_NAME(addParameters(_:options:)); @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h index 1d81771..031158e 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h @@ -18,16 +18,21 @@ #import "FBSDKShareDialogMode.h" +NS_ASSUME_NONNULL_BEGIN + /** A base interface for indicating a custom URL scheme */ +NS_SWIFT_NAME(SharingScheme) @protocol FBSDKSharingScheme /** Asks the receiver to provide a custom scheme. - - Parameter mode: The intended dialog mode for sharing the content. - - Returns: A custom URL scheme to use for the specified mode, or nil. + @param mode The intended dialog mode for sharing the content. + @return A custom URL scheme to use for the specified mode, or nil. */ - (nullable NSString *)schemeForMode:(FBSDKShareDialogMode)mode; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h index b16454a..bf9b52f 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** Flags to indicate support for newer bridge options beyond the initial 20130410 implementation. */ @@ -29,11 +31,12 @@ typedef NS_OPTIONS(NSUInteger, FBSDKShareBridgeOptions) FBSDKShareBridgeOptionsVideoAsset = 1 << 2, FBSDKShareBridgeOptionsVideoData = 1 << 3, FBSDKShareBridgeOptionsWebHashtag = 1 << 4, // if set, pass the hashtag as a string value, not an array of one string -}; +} NS_SWIFT_NAME(ShareBridgeOptions); /** A base interface for validation of content and media. */ +NS_SWIFT_NAME(SharingValidation) @protocol FBSDKSharingValidation /** @@ -44,3 +47,5 @@ typedef NS_OPTIONS(NSUInteger, FBSDKShareBridgeOptions) - (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h index 73e0cc4..882b421 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h @@ -20,6 +20,6 @@ @interface FBSDKCameraEffectArguments () -- (NSDictionary *)allArguments; +- (NSDictionary *)allArguments; @end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h index 06fde34..b6294c0 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h @@ -18,8 +18,13 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif +NS_SWIFT_NAME(CheckmarkIcon) @interface FBSDKCheckmarkIcon : FBSDKIcon @end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h index ad0a20e..0b02670 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(GameRequestFrictionlessRecipientCache) @interface FBSDKGameRequestFrictionlessRecipientCache : NSObject - (BOOL)recipientsAreFrictionless:(id)recipients; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m index 9107d2b..3779870 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m @@ -20,7 +20,11 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif @implementation FBSDKGameRequestFrictionlessRecipientCache { diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h index bc5eda4..7d2e27d 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h @@ -37,6 +37,7 @@ FOUNDATION_EXPORT NSString *const FBSDKLikeActionControllerDidUpdateNotification FOUNDATION_EXPORT NSString *const FBSDKLikeActionControllerAnimatedKey; +NS_SWIFT_NAME(LikeActionController) @interface FBSDKLikeActionController : NSObject + (BOOL)isDisabled; @@ -52,6 +53,5 @@ FOUNDATION_EXPORT NSString *const FBSDKLikeActionControllerAnimatedKey; @property (nonatomic, copy, readonly) NSString *socialSentence; - (void)refresh; -- (void)toggleLikeWithSoundEnabled:(BOOL)soundEnabled analyticsParameters:(NSDictionary *)analyticsParameters fromViewController:(UIViewController *)fromViewController; @end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m index 3cd5aa2..29bedbd 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m @@ -22,9 +22,12 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKLikeActionControllerCache.h" -#import "FBSDKLikeButtonPopWAV.h" #import "FBSDKLikeDialog.h" #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 @@ -306,69 +309,6 @@ static FBSDKLikeActionControllerCache *_cache = nil; [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 @@ -429,9 +369,9 @@ static FBSDKLikeActionControllerCache *_cache = nil; if ([error.userInfo[@"error_reason"] isEqualToString:@"dialog_disabled"]) { _fbsdkLikeActionControllerDisabled = YES; - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidDisable - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKLikeControlDidDisable parameters:[_dialogToAnalyticsParametersMap objectForKey:likeDialog] + isImplicitlyLogged:YES accessToken:_accessToken]; [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKLikeActionControllerDidDisableNotification @@ -469,12 +409,12 @@ static void FBSDKLikeActionControllerLogError(NSString *currentAction, @"current_action": currentAction, @"error": error.description ?: @"", }; - NSString *eventName = (error.isNetworkError ? + NSString *eventName = ([FBSDKError isNetworkError:error] ? FBSDKAppEventNameFBSDKLikeControlNetworkUnavailable : FBSDKAppEventNameFBSDKLikeControlError); - [FBSDKAppEvents logImplicitEvent:eventName - valueToSum:nil + [FBSDKAppEvents logInternalEvent:eventName parameters:parameters + isImplicitlyLogged:YES accessToken:accessToken]; } @@ -672,7 +612,7 @@ static void FBSDKLikeActionControllerAddPublishUnlikeRequest(FBSDKAccessToken *a fbsdk_like_action_controller_publish_unlike_completion_block completionHandler) { FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:unlikeToken - parameters:nil + parameters:@{} tokenString:accessToken.tokenString version:nil HTTPMethod:@"DELETE"]; @@ -797,9 +737,9 @@ static void FBSDKLikeActionControllerAddRefreshRequests(FBSDKAccessToken *access analyticsParameters:(NSDictionary *)analyticsParameters fromViewController:(UIViewController *)fromViewController { - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidPresentDialog - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKLikeControlDidPresentDialog parameters:analyticsParameters + isImplicitlyLogged:YES accessToken:_accessToken]; FBSDKLikeDialog *dialog = [[FBSDKLikeDialog alloc] init]; dialog.objectID = _objectID; @@ -839,9 +779,9 @@ static void FBSDKLikeActionControllerAddRefreshRequests(FBSDKAccessToken *access NSString *unlikeToken) { self->_objectIsLikedIsPending = NO; if (success) { - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidLike - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKLikeControlDidLike parameters:analyticsParameters + isImplicitlyLogged:YES accessToken:self->_accessToken]; self->_objectIsLikedOnServer = YES; self->_unlikeToken = [unlikeToken copy]; @@ -879,9 +819,9 @@ static void FBSDKLikeActionControllerAddRefreshRequests(FBSDKAccessToken *access fbsdk_like_action_controller_publish_unlike_completion_block completionHandler = ^(BOOL success) { self->_objectIsLikedIsPending = NO; if (success) { - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidUnlike - valueToSum:nil + [FBSDKAppEvents logInternalEvent:FBSDKAppEventNameFBSDKLikeControlDidUnlike parameters:analyticsParameters + isImplicitlyLogged:YES accessToken:self->_accessToken]; self->_objectIsLikedOnServer = NO; self->_unlikeToken = nil; @@ -956,7 +896,6 @@ static void FBSDKLikeActionControllerAddRefreshRequests(FBSDKAccessToken *access socialSentenceWithLike:socialSentenceWithLike socialSentenceWithoutLike:socialSentenceWithoutLike unlikeToken:unlikeToken - soundEnabled:NO animated:NO deferred:NO]; [self _setExecuting:NO forKey:FBSDK_LIKE_ACTION_CONTROLLER_REFRESH_PROPERTY_KEY]; @@ -994,7 +933,6 @@ static void FBSDKLikeActionControllerAddRefreshRequests(FBSDKAccessToken *access socialSentenceWithLike:(NSString *)socialSentenceWithLike socialSentenceWithoutLike:(NSString *)socialSentenceWithoutLike unlikeToken:(NSString *)unlikeToken - soundEnabled:(BOOL)soundEnabled animated:(BOOL)animated deferred:(BOOL)deferred { @@ -1040,16 +978,7 @@ static void FBSDKLikeActionControllerAddRefreshRequests(FBSDKAccessToken *access self->_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 diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h index 62be3ea..e287c6a 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h @@ -18,6 +18,7 @@ #import +NS_SWIFT_NAME(LikeActionControllerCache) @interface FBSDKLikeActionControllerCache : NSObject - (instancetype)init NS_UNAVAILABLE; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h index 8ad46b6..d8a1433 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h @@ -20,6 +20,7 @@ #import "FBSDKLikeBoxView.h" +NS_SWIFT_NAME(FBLikeBoxBorderView) @interface FBSDKLikeBoxBorderView : UIView @property (nonatomic, assign) CGFloat borderCornerRadius; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m index 0b35a98..e8ef62a 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m @@ -18,7 +18,11 @@ #import "FBSDKLikeBoxBorderView.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #define FBSDK_LIKE_BOX_BORDER_CARET_WIDTH 6.0 #define FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT 3.0 diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h index 9f7a3da..8bf6622 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h @@ -33,8 +33,9 @@ typedef NS_ENUM(NSUInteger, FBSDKLikeBoxCaretPosition) FBSDKLikeBoxCaretPositionBottom, /** The caret is on the right of the box. */ FBSDKLikeBoxCaretPositionRight, -}; +} NS_SWIFT_NAME(LikeBoxCaretPosition); +NS_SWIFT_NAME(FBLikeBoxView) @interface FBSDKLikeBoxView : UIView @property (nonatomic, assign) FBSDKLikeBoxCaretPosition caretPosition; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m index e0afeac..545cc53 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m @@ -18,7 +18,11 @@ #import "FBSDKLikeBoxView.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKLikeBoxBorderView.h" @implementation FBSDKLikeBoxView diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h index 2f8688f..eeb1472 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h @@ -18,7 +18,8 @@ #import -#import "FBSDKCoreKit+Internal.h" +#import + #import "FBSDKLikeActionController.h" #import "FBSDKLikeButton.h" diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h deleted file mode 100644 index aa4c1d8..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m deleted file mode 100644 index c021293..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h index 9d7748f..530aea5 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h @@ -23,6 +23,7 @@ @protocol FBSDKLikeDialogDelegate; +NS_SWIFT_NAME(LikeDialog) @interface FBSDKLikeDialog : NSObject + (instancetype)likeWithObjectID:(NSString *)objectID @@ -41,9 +42,10 @@ @end +NS_SWIFT_NAME(LikeDialogDelegate) @protocol FBSDKLikeDialogDelegate -- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didCompleteWithResults:(NSDictionary *)results; +- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didCompleteWithResults:(NSDictionary *)results; - (void)likeDialog:(FBSDKLikeDialog *)likeDialog didFailWithError:(NSError *)error; @end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m index 2355aaf..ed37bc9 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m @@ -18,7 +18,11 @@ #import "FBSDKLikeDialog.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareConstants.h" #import "FBSDKShareDefines.h" @@ -61,9 +65,9 @@ { NSError *error; if (![self canLike]) { - error = [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorDialogNotAvailable - message:@"Like dialog is not available."]; + error = [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorDialogNotAvailable + message:@"Like dialog is not available."]; [_delegate likeDialog:self didFailWithError:error]; return NO; } @@ -73,17 +77,17 @@ } NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:parameters setObject:self.objectID forKey:@"object_id"]; - [FBSDKInternalUtility dictionary:parameters - setObject:NSStringFromFBSDKLikeObjectType(self.objectType) - forKey:@"object_type"]; + [FBSDKBasicUtility dictionary:parameters setObject:self.objectID forKey:@"object_id"]; + [FBSDKBasicUtility 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) { + FBSDKBridgeAPIResponseBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { [self _handleCompletionWithDialogResults:response.responseParameters error:response.error]; }; @@ -98,7 +102,7 @@ userInfo:nil]; void (^networkCompletionBlock)(FBSDKBridgeAPIResponse *) = ^(FBSDKBridgeAPIResponse *response) { if (response.error.code == FBSDKErrorAppVersionUnsupported) { - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:webRequest + [[FBSDKBridgeAPI sharedInstance] openBridgeAPIRequest:webRequest useSafariViewController:useSafariViewController fromViewController:self.fromViewController completionBlock:completionBlock]; @@ -106,12 +110,12 @@ completionBlock(response); } }; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:nativeRequest + [[FBSDKBridgeAPI sharedInstance] openBridgeAPIRequest:nativeRequest useSafariViewController:useSafariViewController fromViewController:self.fromViewController completionBlock:networkCompletionBlock]; } else { - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:webRequest + [[FBSDKBridgeAPI sharedInstance] openBridgeAPIRequest:webRequest useSafariViewController:useSafariViewController fromViewController:self.fromViewController completionBlock:completionBlock]; @@ -124,9 +128,9 @@ { if (!self.objectID.length) { if (errorRef != NULL) { - *errorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"objectID" - message:nil]; + *errorRef = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"objectID" + message:nil]; } return NO; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h index b3b6965..f7d02ce 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h @@ -18,8 +18,13 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif +NS_SWIFT_NAME(MessengerIcon) @interface FBSDKMessengerIcon : FBSDKIcon @end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h deleted file mode 100644 index c9269de..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. -// -// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, -// copy, modify, and distribute this software in source code or binary form for use -// in connection with the web services and APIs provided by Facebook. -// -// As with any software that integrates with the Facebook platform, your use of -// this software is subject to the Facebook Developer Principles and Policies -// [http://developers.facebook.com/policy/]. This copyright notice shall be -// included in all copies or substantial portions of the software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF 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/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h index 7ae231e..b4148e8 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h @@ -17,24 +17,37 @@ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #import +#import @class FBSDKShareMessengerURLActionButton; @protocol FBSDKShareMessengerActionButton; +DEPRECATED_FOR_MESSENGER FOUNDATION_EXPORT NSString *const kFBSDKShareMessengerTemplateTypeKey; +DEPRECATED_FOR_MESSENGER FOUNDATION_EXPORT NSString *const kFBSDKShareMessengerTemplateKey; +DEPRECATED_FOR_MESSENGER FOUNDATION_EXPORT NSString *const kFBSDKShareMessengerPayloadKey; +DEPRECATED_FOR_MESSENGER FOUNDATION_EXPORT NSString *const kFBSDKShareMessengerTypeKey; +DEPRECATED_FOR_MESSENGER FOUNDATION_EXPORT NSString *const kFBSDKShareMessengerAttachmentKey; +DEPRECATED_FOR_MESSENGER FOUNDATION_EXPORT NSString *const kFBSDKShareMessengerElementsKey; +DEPRECATED_FOR_MESSENGER FOUNDATION_EXPORT NSString *const kFBSDKShareMessengerButtonsKey; +DEPRECATED_FOR_MESSENGER void AddToContentPreviewDictionaryForButton(NSMutableDictionary *dictionary, id button); NSDictionary *SerializableButtonFromURLButton(FBSDKShareMessengerURLActionButton *button, BOOL isDefaultAction); + +DEPRECATED_FOR_MESSENGER NSArray *> *SerializableButtonsFromButton(id button); +DEPRECATED_FOR_MESSENGER +NS_SWIFT_NAME(ShareMessengerContentUtility) @interface FBSDKShareMessengerContentUtility : NSObject + (void)addToParameters:(NSMutableDictionary *)parameters diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m index 13a7807..75be492 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m @@ -18,7 +18,11 @@ #import "FBSDKShareMessengerContentUtility.h" +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareConstants.h" #import "FBSDKShareMessengerGenericTemplateContent.h" #import "FBSDKShareMessengerGenericTemplateElement.h" @@ -35,6 +39,7 @@ NSString *const kFBSDKShareMessengerAttachmentKey = @"attachment"; NSString *const kFBSDKShareMessengerElementsKey = @"elements"; NSString *const kFBSDKShareMessengerButtonsKey = @"buttons"; +DEPRECATED_FOR_MESSENGER static void _AddToContentPreviewDictionaryForURLButton(NSMutableDictionary *dictionary, FBSDKShareMessengerURLActionButton *urlButton) { @@ -47,8 +52,8 @@ static void _AddToContentPreviewDictionaryForURLButton(NSMutableDictionary 0 ? [NSString stringWithFormat:@"%@ - %@", urlButton.title, shortURLString] : shortURLString; - [FBSDKInternalUtility dictionary:dictionary setObject:previewString forKey:@"target_display"]; - [FBSDKInternalUtility dictionary:dictionary setObject:urlButton.url.absoluteString forKey:@"item_url"]; + [FBSDKBasicUtility dictionary:dictionary setObject:previewString forKey:@"target_display"]; + [FBSDKBasicUtility dictionary:dictionary setObject:urlButton.url.absoluteString forKey:@"item_url"]; } void AddToContentPreviewDictionaryForButton(NSMutableDictionary *dictionary, @@ -59,7 +64,10 @@ void AddToContentPreviewDictionaryForButton(NSMutableDictionary } } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" @implementation FBSDKShareMessengerContentUtility +#pragma clang diagnostic pop static NSString *_WebviewHeightRatioString(FBSDKShareMessengerURLActionButtonWebviewHeightRatio heightRatio) { switch (heightRatio) { @@ -82,15 +90,15 @@ NSDictionary *SerializableButtonFromURLButton(FBSDKShareMessenge // Strip out title for default action if (!isDefaultAction) { - [FBSDKInternalUtility dictionary:serializableButton setObject:button.title forKey:@"title"]; + [FBSDKBasicUtility dictionary:serializableButton setObject:button.title forKey:@"title"]; } - [FBSDKInternalUtility dictionary:serializableButton setObject:@"web_url" forKey:@"type"]; - [FBSDKInternalUtility dictionary:serializableButton setObject:button.url.absoluteString forKey:@"url"]; - [FBSDKInternalUtility dictionary:serializableButton setObject:_WebviewHeightRatioString(button.webviewHeightRatio) forKey:@"webview_height_ratio"]; - [FBSDKInternalUtility dictionary:serializableButton setObject:@(button.isMessengerExtensionURL) forKey:@"messenger_extensions"]; - [FBSDKInternalUtility dictionary:serializableButton setObject:button.fallbackURL.absoluteString forKey:@"fallback_url"]; - [FBSDKInternalUtility dictionary:serializableButton setObject:_WebviewShareButtonString(button.shouldHideWebviewShareButton) forKey:@"webview_share_button"]; + [FBSDKBasicUtility dictionary:serializableButton setObject:@"web_url" forKey:@"type"]; + [FBSDKBasicUtility dictionary:serializableButton setObject:button.url.absoluteString forKey:@"url"]; + [FBSDKBasicUtility dictionary:serializableButton setObject:_WebviewHeightRatioString(button.webviewHeightRatio) forKey:@"webview_height_ratio"]; + [FBSDKBasicUtility dictionary:serializableButton setObject:@(button.isMessengerExtensionURL) forKey:@"messenger_extensions"]; + [FBSDKBasicUtility dictionary:serializableButton setObject:button.fallbackURL.absoluteString forKey:@"fallback_url"]; + [FBSDKBasicUtility dictionary:serializableButton setObject:_WebviewShareButtonString(button.shouldHideWebviewShareButton) forKey:@"webview_share_button"]; return serializableButton; } @@ -99,7 +107,7 @@ NSArray *> *SerializableButtonsFromButton(id *> *serializableButtons = [NSMutableArray array]; if ([button isKindOfClass:[FBSDKShareMessengerURLActionButton class]]) { - [FBSDKInternalUtility array:serializableButtons addObject:SerializableButtonFromURLButton(button, NO)]; + [FBSDKBasicUtility array:serializableButtons addObject:SerializableButtonFromURLButton(button, NO)]; } return serializableButtons; @@ -115,9 +123,9 @@ NSArray *> *SerializableButtonsFromButton(id *messengerShareContent = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:messengerShareContent setObject:contentForShareDataString forKey:@"content_for_share"]; - [FBSDKInternalUtility dictionary:messengerShareContent setObject:contentForPreview forKey:@"content_for_preview"]; - [FBSDKInternalUtility dictionary:parameters setObject:messengerShareContent forKey:@"messenger_share_content"]; + [FBSDKBasicUtility dictionary:messengerShareContent setObject:contentForShareDataString forKey:@"content_for_share"]; + [FBSDKBasicUtility dictionary:messengerShareContent setObject:contentForPreview forKey:@"content_for_preview"]; + [FBSDKBasicUtility dictionary:parameters setObject:messengerShareContent forKey:@"messenger_share_content"]; } } @@ -136,10 +144,10 @@ NSArray *> *SerializableButtonsFromButton(id #import +/** + Web Share Block + */ +typedef void (^FBSDKWebPhotoContentBlock)(BOOL, NSString *, NSDictionary *) +NS_SWIFT_NAME(WebPhotoContentBlock); + +NS_SWIFT_NAME(ShareUtility) @interface FBSDKShareUtility : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -42,7 +49,7 @@ error:(NSError *__autoreleasing *)errorRef; + (NSString *)buildWebShareTags:(NSArray *)peopleIDs; + (void)buildAsyncWebPhotoContent:(FBSDKSharePhotoContent *)content - completionHandler:(void(^)(BOOL, NSString *, NSDictionary *))completion; + completionHandler:(FBSDKWebPhotoContentBlock)completion; + (id)convertOpenGraphValue:(id)value; + (NSDictionary *)convertOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)container requireNamespace:(BOOL)requireNamespace; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m index 6b5256b..5f3e825 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m @@ -20,9 +20,13 @@ #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareConstants.h" -#import "FBSDKShareLinkContent+Internal.h" +#import "FBSDKShareLinkContent.h" @implementation FBSDKShareUtility @@ -119,32 +123,35 @@ { NSString *methodName = nil; NSMutableDictionary *parameters = nil; - if ([content isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + if ([content isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { methodName = @"share_open_graph"; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" FBSDKShareOpenGraphContent *const openGraphContent = (FBSDKShareOpenGraphContent *)content; FBSDKShareOpenGraphAction *const action = openGraphContent.action; +#pragma clang diagnostic pop NSDictionary *const properties = [self convertOpenGraphValueContainer:action requireNamespace:NO]; - NSString *const propertiesJSON = [FBSDKInternalUtility JSONStringForObject:properties + NSString *const propertiesJSON = [FBSDKBasicUtility JSONStringForObject:properties error:errorRef invalidObjectHandler:NULL]; parameters = [NSMutableDictionary new]; - [FBSDKInternalUtility dictionary:parameters setObject:action.actionType forKey:@"action_type"]; - [FBSDKInternalUtility dictionary:parameters setObject:propertiesJSON forKey:@"action_properties"]; + [FBSDKBasicUtility dictionary:parameters setObject:action.actionType forKey:@"action_type"]; + [FBSDKBasicUtility dictionary:parameters setObject:propertiesJSON forKey:@"action_properties"]; } else { methodName = @"share"; if ([content isKindOfClass:[FBSDKShareLinkContent class]]) { FBSDKShareLinkContent *const linkContent = (FBSDKShareLinkContent *)content; if (linkContent.contentURL != nil) { parameters = [NSMutableDictionary new]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentURL.absoluteString forKey:@"href"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.quote forKey:@"quote"]; + [FBSDKBasicUtility dictionary:parameters setObject:linkContent.contentURL.absoluteString forKey:@"href"]; + [FBSDKBasicUtility dictionary:parameters setObject:linkContent.quote forKey:@"quote"]; } } } if (parameters) { - [FBSDKInternalUtility dictionary:parameters setObject:[self hashtagStringFromHashtag:content.hashtag] forKey:@"hashtag"]; - [FBSDKInternalUtility dictionary:parameters setObject:content.placeID forKey:@"place"]; - [FBSDKInternalUtility dictionary:parameters setObject:[FBSDKShareUtility buildWebShareTags:content.peopleIDs] forKey:@"tags"]; + [FBSDKBasicUtility dictionary:parameters setObject:[self hashtagStringFromHashtag:content.hashtag] forKey:@"hashtag"]; + [FBSDKBasicUtility dictionary:parameters setObject:content.placeID forKey:@"place"]; + [FBSDKBasicUtility dictionary:parameters setObject:[FBSDKShareUtility buildWebShareTags:content.peopleIDs] forKey:@"tags"]; } if (methodNameRef != NULL) { *methodNameRef = methodName; @@ -174,7 +181,7 @@ } + (void)buildAsyncWebPhotoContent:(FBSDKSharePhotoContent *)content - completionHandler:(void(^)(BOOL, NSString *, NSDictionary *))completion + completionHandler:(FBSDKWebPhotoContentBlock)completion { void(^stageImageCompletion)(NSArray *) = ^(NSArray *stagedURIs) { NSString *const methodName = @"share"; @@ -183,13 +190,13 @@ bridgeOptions:FBSDKShareBridgeOptionsWebHashtag shouldFailOnDataError:NO] mutableCopy]; [parameters removeObjectForKey:@"photos"]; - NSString *const stagedURIJSONString = [FBSDKInternalUtility JSONStringForObject:stagedURIs - error:nil - invalidObjectHandler:NULL]; - [FBSDKInternalUtility dictionary:parameters - setObject:stagedURIJSONString - forKey:@"media"]; - [FBSDKInternalUtility dictionary:parameters setObject:[FBSDKShareUtility buildWebShareTags:content.peopleIDs] forKey:@"tags"]; + NSString *const stagedURIJSONString = [FBSDKBasicUtility JSONStringForObject:stagedURIs + error:nil + invalidObjectHandler:NULL]; + [FBSDKBasicUtility dictionary:parameters + setObject:stagedURIJSONString + forKey:@"media"]; + [FBSDKBasicUtility dictionary:parameters setObject:[FBSDKShareUtility buildWebShareTags:content.peopleIDs] forKey:@"tags"]; if (completion != NULL) { completion(YES, methodName, [parameters copy]); } @@ -221,7 +228,7 @@ } else if ([value isKindOfClass:[NSArray class]]) { NSMutableArray *array = [[NSMutableArray alloc] init]; for (id subValue in (NSArray *)value) { - [FBSDKInternalUtility array:array addObject:[self convertOpenGraphValue:subValue]]; + [FBSDKBasicUtility array:array addObject:[self convertOpenGraphValue:subValue]]; } return [array copy]; } else { @@ -233,7 +240,7 @@ { NSMutableDictionary *convertedDictionary = [[NSMutableDictionary alloc] init]; [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { - [FBSDKInternalUtility dictionary:convertedDictionary setObject:[self convertOpenGraphValue:obj] forKey:key]; + [FBSDKBasicUtility dictionary:convertedDictionary setObject:[self convertOpenGraphValue:obj] forKey:key]; }]; return [convertedDictionary copy]; } @@ -243,19 +250,13 @@ NSMutableDictionary *parameters = nil; if ([content isKindOfClass:[FBSDKShareLinkContent class]]) { FBSDKShareLinkContent *linkContent = (FBSDKShareLinkContent *)content; - parameters = [[NSMutableDictionary alloc] initWithDictionary:linkContent.feedParameters]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.quote forKey:@"quote"]; - [FBSDKInternalUtility dictionary:parameters setObject:[self hashtagStringFromHashtag:linkContent.hashtag] forKey:@"hashtag"]; - [FBSDKInternalUtility dictionary:parameters setObject:content.placeID forKey:@"place"]; - [FBSDKInternalUtility dictionary:parameters setObject:[FBSDKShareUtility buildWebShareTags:content.peopleIDs] forKey:@"tags"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.ref forKey:@"ref"]; -#pragma clang diagnostic pop -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentDescription forKey:@"description"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentTitle forKey:@"name"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.imageURL forKey:@"picture"]; -#pragma clang diagnostic pop + parameters = [[NSMutableDictionary alloc] init]; + [FBSDKBasicUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"]; + [FBSDKBasicUtility dictionary:parameters setObject:linkContent.quote forKey:@"quote"]; + [FBSDKBasicUtility dictionary:parameters setObject:[self hashtagStringFromHashtag:linkContent.hashtag] forKey:@"hashtag"]; + [FBSDKBasicUtility dictionary:parameters setObject:content.placeID forKey:@"place"]; + [FBSDKBasicUtility dictionary:parameters setObject:[FBSDKShareUtility buildWebShareTags:content.peopleIDs] forKey:@"tags"]; + [FBSDKBasicUtility dictionary:parameters setObject:linkContent.ref forKey:@"ref"]; } return [parameters copy]; } @@ -304,23 +305,26 @@ // This was changed to support a single hashtag; however, the mobile app still expects to receive an array. // When hashtag support was added to web dialogs, a single hashtag was passed as a string. if (bridgeOptions & FBSDKShareBridgeOptionsWebHashtag) { - [FBSDKInternalUtility dictionary:parameters setObject:hashtagString forKey:@"hashtag"]; + [FBSDKBasicUtility dictionary:parameters setObject:hashtagString forKey:@"hashtag"]; } else { - [FBSDKInternalUtility dictionary:parameters setObject:@[hashtagString] forKey:@"hashtags"]; + [FBSDKBasicUtility dictionary:parameters setObject:@[hashtagString] forKey:@"hashtags"]; } } - [FBSDKInternalUtility dictionary:parameters setObject:shareContent.pageID forKey:@"pageID"]; - [FBSDKInternalUtility dictionary:parameters setObject:shareContent.shareUUID forKey:@"shareUUID"]; - if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + [FBSDKBasicUtility dictionary:parameters setObject:shareContent.pageID forKey:@"pageID"]; + [FBSDKBasicUtility dictionary:parameters setObject:shareContent.shareUUID forKey:@"shareUUID"]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + if ([shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { FBSDKShareOpenGraphAction *const 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"]; + [FBSDKBasicUtility dictionary:parameters setObject:shareContent.peopleIDs forKey:@"tags"]; + [FBSDKBasicUtility dictionary:parameters setObject:shareContent.placeID forKey:@"place"]; + [FBSDKBasicUtility dictionary:parameters setObject:shareContent.ref forKey:@"ref"]; } +#pragma clang diagnostic pop parameters[@"dataFailuresFatal"] = @(shouldFailOnDataError); @@ -359,11 +363,14 @@ containsMedia:&containsMedia containsPhotos:&containsPhotos containsVideos:&containsVideos]; - } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + } else if ([shareContent isKindOfClass:NSClassFromString(@"FBSDKShareOpenGraphContent")]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" [self _testOpenGraphValueContainer:((FBSDKShareOpenGraphContent *)shareContent).action containsMedia:&containsMedia containsPhotos:&containsPhotos containsVideos:&containsVideos]; +#pragma clang diagnostic pop } if (containsMediaRef != NULL) { *containsMediaRef = containsMedia; @@ -400,10 +407,10 @@ return [shareContent validateWithOptions:bridgeOptions error:errorRef]; } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:@"shareContent" - value:shareContent - message:nil]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:@"shareContent" + value:shareContent + message:nil]; } return NO; } @@ -428,7 +435,7 @@ } else if ([object isKindOfClass:[NSArray class]]) { NSMutableArray *array = [[NSMutableArray alloc] init]; for (id item in (NSArray *)object) { - [FBSDKInternalUtility array:array addObject:[self _convertObject:item]]; + [FBSDKBasicUtility array:array addObject:[self _convertObject:item]]; } object = array; } @@ -499,9 +506,9 @@ } NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; dictionary[@"user_generated"] = @(photo.userGenerated); - [FBSDKInternalUtility dictionary:dictionary setObject:photo.caption forKey:@"caption"]; + [FBSDKBasicUtility dictionary:dictionary setObject:photo.caption forKey:@"caption"]; - [FBSDKInternalUtility dictionary:dictionary setObject:photo.image ?: photo.imageURL.absoluteString forKey:@"url"]; + [FBSDKBasicUtility dictionary:dictionary setObject:photo.image ?: photo.imageURL.absoluteString forKey:@"url"]; return dictionary; } @@ -632,10 +639,10 @@ name, (unsigned long)minCount, (unsigned long)maxCount]; - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:name - value:array - message:message]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:name + value:array + message:message]; } return NO; } else { @@ -656,10 +663,10 @@ } if (!URL.isFileURL) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:name - value:URL - message:nil]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:name + value:URL + message:nil]; } return NO; } @@ -670,11 +677,11 @@ options:NSDataReadingMapped error:&fileError]) { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:name - value:URL - message:@"Error reading file" - underlyingError:fileError]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:name + value:URL + message:@"Error reading file" + underlyingError:fileError]; } return NO; } @@ -693,10 +700,10 @@ return YES; } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:name - value:URL - message:nil]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:name + value:URL + message:nil]; } return NO; } @@ -709,9 +716,9 @@ ([value isKindOfClass:[NSArray class]] && !((NSArray *)value).count) || ([value isKindOfClass:[NSDictionary class]] && !((NSDictionary *)value).count)) { if (errorRef != NULL) { - *errorRef = [NSError fbRequiredArgumentErrorWithDomain:FBSDKShareErrorDomain - name:name - message:nil]; + *errorRef = [FBSDKError requiredArgumentErrorWithDomain:FBSDKShareErrorDomain + name:name + message:nil]; } return NO; } @@ -735,10 +742,10 @@ } } if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:argumentName - value:@(value) - message:nil]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:argumentName + value:@(value) + message:nil]; } return NO; } @@ -752,10 +759,10 @@ return YES; } else { if (errorRef != NULL) { - *errorRef = [NSError fbInvalidArgumentErrorWithDomain:FBSDKShareErrorDomain - name:name - value:videoURL - message:nil]; + *errorRef = [FBSDKError invalidArgumentErrorWithDomain:FBSDKShareErrorDomain + name:name + value:videoURL + message:nil]; } return NO; } diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h index 382a2f3..f937049 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h @@ -31,6 +31,7 @@ see https://developers.facebook.com/docs/graph-api/video-uploads */ +NS_SWIFT_NAME(VideoUploader) @interface FBSDKVideoUploader : NSObject - (instancetype)init NS_UNAVAILABLE; @@ -80,6 +81,7 @@ NS_DESIGNATED_INITIALIZER; The delegate passes video chunk to `FBSDKVideoUploader` object in `NSData` format and is notified with the results of the uploader. */ +NS_SWIFT_NAME(VideoUploaderDelegate) @protocol FBSDKVideoUploaderDelegate /** @@ -95,7 +97,8 @@ NS_DESIGNATED_INITIALIZER; @param videoUploader The `FBSDKVideoUploader` object which is performing the upload process @param results The result from successful upload */ -- (void)videoUploader:(FBSDKVideoUploader *)videoUploader didCompleteWithResults:(NSDictionary *)results; +- (void)videoUploader:(FBSDKVideoUploader *)videoUploader +didCompleteWithResults:(NSDictionary *)results; /** Notify the delegate that upload process fails. diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m index 2aa0a19..3e7f3a0 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m +++ b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m @@ -23,7 +23,11 @@ #import #import +#ifdef COCOAPODS +#import +#else #import "FBSDKCoreKit+Internal.h" +#endif #import "FBSDKShareDefines.h" static NSString *const FBSDKVideoUploaderDefaultGraphNode = @"me"; @@ -63,7 +67,7 @@ static NSString *const FBSDKVideoUploaderEdge = @"videos"; - (void)_postStartRequest { - FBSDKGraphRequestHandler startRequestCompletionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) + FBSDKGraphRequestBlock startRequestCompletionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (error) { [self.delegate videoUploader:self didFailWithError:error]; @@ -75,9 +79,9 @@ static NSString *const FBSDKVideoUploaderEdge = @"videos"; NSDictionary *offsetDictionary = [self _extractOffsetsFromResultDictionary:result]; if (uploadSessionID == nil || videoID == nil) { [self.delegate videoUploader:self didFailWithError: - [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorUnknown - message:@"Failed to get valid upload_session_id or video_id."]]; + [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorUnknown + message:@"Failed to get valid upload_session_id or video_id."]]; return; } else if (offsetDictionary == nil) { return; @@ -89,9 +93,9 @@ static NSString *const FBSDKVideoUploaderEdge = @"videos"; }; if (_videoSize == 0) { [self.delegate videoUploader:self didFailWithError: - [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorUnknown - message:[NSString stringWithFormat:@"Invalid video size: %lu", (unsigned long)_videoSize]]]; + [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorUnknown + message:[NSString stringWithFormat:@"Invalid video size: %lu", (unsigned long)_videoSize]]]; return; } [[[FBSDKGraphRequest alloc] initWithGraphPath:_graphPath @@ -122,9 +126,9 @@ static NSString *const FBSDKVideoUploaderEdge = @"videos"; NSData *data = [self.delegate videoChunkDataForVideoUploader:self startOffset:startOffset endOffset:endOffset]; if (data == nil || data.length != chunkSize) { [self.delegate videoUploader:self didFailWithError: - [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorUnknown - message:[NSString + [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorUnknown + message:[NSString stringWithFormat:@"Fail to get video chunk with start offset: %lu, end offset : %lu.", (unsigned long)startOffset, (unsigned long)endOffset]]]; @@ -133,7 +137,7 @@ static NSString *const FBSDKVideoUploaderEdge = @"videos"; dispatch_async(dispatch_get_main_queue(), ^{ FBSDKGraphRequestDataAttachment *dataAttachment = [[FBSDKGraphRequestDataAttachment alloc] initWithData:data filename:self->_videoName - contentType:nil]; + contentType:@""]; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:self->_graphPath parameters:@{ FBSDK_SHARE_VIDEO_UPLOAD_PHASE: FBSDK_SHARE_VIDEO_UPLOAD_PHASE_TRANSFER, @@ -173,9 +177,9 @@ static NSString *const FBSDKVideoUploaderEdge = @"videos"; result = [FBSDKTypeUtility dictionaryValue:result]; if (result[FBSDK_SHARE_VIDEO_UPLOAD_SUCCESS] == nil) { [self.delegate videoUploader:self didFailWithError: - [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorUnknown - message:@"Failed to finish uploading."]]; + [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorUnknown + message:@"Failed to finish uploading."]]; return; } NSMutableDictionary *shareResult = [[NSMutableDictionary alloc] init]; @@ -194,16 +198,16 @@ static NSString *const FBSDKVideoUploaderEdge = @"videos"; NSNumber *endNum = [self.numberFormatter numberFromString:result[FBSDK_SHARE_VIDEO_END_OFFSET]]; if (startNum == nil || endNum == nil) { [self.delegate videoUploader:self didFailWithError: - [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorUnknown - message:@"Fail to get valid start_offset or end_offset."]]; + [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorUnknown + message:@"Fail to get valid start_offset or end_offset."]]; return nil; } if ([startNum compare:endNum] == NSOrderedDescending) { [self.delegate videoUploader:self didFailWithError: - [NSError fbErrorWithDomain:FBSDKShareErrorDomain - code:FBSDKShareErrorUnknown - message:@"Invalid offset: start_offset is greater than end_offset."]]; + [FBSDKError errorWithDomain:FBSDKShareErrorDomain + code:FBSDKShareErrorUnknown + message:@"Invalid offset: start_offset is greater than end_offset."]]; return nil; } diff --git a/Example/Pods/FBSDKShareKit/README.md b/Example/Pods/FBSDKShareKit/README.md index 1d8dcae..ad7fa15 100644 --- a/Example/Pods/FBSDKShareKit/README.md +++ b/Example/Pods/FBSDKShareKit/README.md @@ -1,7 +1,7 @@ # Facebook SDK for iOS [![Platforms](https://img.shields.io/cocoapods/p/FBSDKCoreKit.svg)](https://cocoapods.org/pods/FBSDKCoreKit) -[![Build Status](https://travis-ci.org/facebook/facebook-objc-sdk.svg?branch=master)](https://travis-ci.org/facebook/facebook-objc-sdk) +[![Build Status](https://travis-ci.org/facebook/facebook-ios-sdk.svg?branch=master)](https://travis-ci.org/facebook/facebook-ios-sdk) [![CocoaPods](https://img.shields.io/cocoapods/v/FBSDKCoreKit.svg)](https://cocoapods.org/pods/FBSDKCoreKit) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) @@ -31,10 +31,12 @@ NOTE: By default, the Facebook SDK for iOS is installed in ~/Documents/FacebookS ## GIVE FEEDBACK -Please report bugs or issues to +Please report bugs or issues to our designated developer support team -- -- as this will help us resolve them more quickly. -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) +You can also visit our [Facebook Developer Community Forum](https://developers.facebook.com/community/), +join the [Facebook Developers Group on Facebook](https://www.facebook.com/groups/fbdevelopers/), +ask questions on [Stack Overflow](http://facebook.stackoverflow.com), +or open an issue in this repository. ## LICENSE diff --git a/Example/Pods/Headers/Private/Bolts/BFAppLink.h b/Example/Pods/Headers/Private/Bolts/BFAppLink.h deleted file mode 120000 index 3f79bee..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFAppLink.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLink.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFAppLinkNavigation.h b/Example/Pods/Headers/Private/Bolts/BFAppLinkNavigation.h deleted file mode 120000 index 6962356..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFAppLinkNavigation.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkNavigation.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFAppLinkResolving.h b/Example/Pods/Headers/Private/Bolts/BFAppLinkResolving.h deleted file mode 120000 index 94cc66f..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFAppLinkResolving.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkResolving.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererController.h b/Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererController.h deleted file mode 120000 index 95067f0..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererController.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView.h b/Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView.h deleted file mode 120000 index cc00897..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView_Internal.h b/Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView_Internal.h deleted file mode 120000 index 3df8117..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView_Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFAppLinkTarget.h b/Example/Pods/Headers/Private/Bolts/BFAppLinkTarget.h deleted file mode 120000 index 90a41f6..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFAppLinkTarget.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkTarget.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFAppLink_Internal.h b/Example/Pods/Headers/Private/Bolts/BFAppLink_Internal.h deleted file mode 120000 index 12d9304..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFAppLink_Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/Internal/BFAppLink_Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFCancellationToken.h b/Example/Pods/Headers/Private/Bolts/BFCancellationToken.h deleted file mode 120000 index 0b69486..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFCancellationToken.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFCancellationToken.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFCancellationTokenRegistration.h b/Example/Pods/Headers/Private/Bolts/BFCancellationTokenRegistration.h deleted file mode 120000 index c587ca7..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFCancellationTokenRegistration.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFCancellationTokenRegistration.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFCancellationTokenSource.h b/Example/Pods/Headers/Private/Bolts/BFCancellationTokenSource.h deleted file mode 120000 index d3d5985..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFCancellationTokenSource.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFCancellationTokenSource.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFExecutor.h b/Example/Pods/Headers/Private/Bolts/BFExecutor.h deleted file mode 120000 index c071e8c..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFExecutor.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFExecutor.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFGeneric.h b/Example/Pods/Headers/Private/Bolts/BFGeneric.h deleted file mode 120000 index bd63ccc..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFGeneric.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFGeneric.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFMeasurementEvent.h b/Example/Pods/Headers/Private/Bolts/BFMeasurementEvent.h deleted file mode 120000 index 2eb6c11..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFMeasurementEvent.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFMeasurementEvent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFMeasurementEvent_Internal.h b/Example/Pods/Headers/Private/Bolts/BFMeasurementEvent_Internal.h deleted file mode 120000 index 633f673..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFMeasurementEvent_Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/Internal/BFMeasurementEvent_Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFTask.h b/Example/Pods/Headers/Private/Bolts/BFTask.h deleted file mode 120000 index 5468334..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFTask.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFTask.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFTaskCompletionSource.h b/Example/Pods/Headers/Private/Bolts/BFTaskCompletionSource.h deleted file mode 120000 index c74760f..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFTaskCompletionSource.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFTaskCompletionSource.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFURL.h b/Example/Pods/Headers/Private/Bolts/BFURL.h deleted file mode 120000 index df21bd9..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFURL.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFURL.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFURL_Internal.h b/Example/Pods/Headers/Private/Bolts/BFURL_Internal.h deleted file mode 120000 index bf9b0fc..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFURL_Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/Internal/BFURL_Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/BFWebViewAppLinkResolver.h b/Example/Pods/Headers/Private/Bolts/BFWebViewAppLinkResolver.h deleted file mode 120000 index bf250db..0000000 --- a/Example/Pods/Headers/Private/Bolts/BFWebViewAppLinkResolver.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Bolts/Bolts.h b/Example/Pods/Headers/Private/Bolts/Bolts.h deleted file mode 120000 index 146ac6e..0000000 --- a/Example/Pods/Headers/Private/Bolts/Bolts.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/Bolts.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3.h deleted file mode 120000 index 46569e0..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3_17.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3_17.h deleted file mode 120000 index f621d58..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3_17.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3_21.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3_21.h deleted file mode 120000 index 07599a9..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV3_21.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV4.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV4.h deleted file mode 120000 index f994f64..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessTokenCacheV4.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents+Internal.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents+Internal.h index 2d70800..fd90f26 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents+Internal.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents+Internal.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEvents+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents.h index 95c1d00..08573c6 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsDeviceInfo.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsDeviceInfo.h index e15efbe..001ba73 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsDeviceInfo.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsDeviceInfo.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsDeviceInfo.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsState.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsState.h index 91e6faa..b63867d 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsState.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsState.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsState.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsStateManager.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsStateManager.h index e9ca586..44a5c79 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsStateManager.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsStateManager.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsStateManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsUtility.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsUtility.h index 795a990..cdae4f9 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsUtility.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsUtility.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsUtility.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLink.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLink.h index 0550510..5682f85 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLink.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLink.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLink.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkNavigation.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkNavigation.h index db857a2..b4410d1 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkNavigation.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkNavigation.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolver.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolver.h index 69c20f5..e1c6345 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolver.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolver.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolving.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolving.h index 3bbab2b..e010152 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolving.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolving.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolving.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolving.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h index 93492bc..e4724b4 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h index 71947d8..753ad0c 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkTarget.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkTarget.h index 6f43bba..24e26cb 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkTarget.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkTarget.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkTarget.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkUtility.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkUtility.h index fef519c..7d5c8bc 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkUtility.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkUtility.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKApplicationObserving.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKApplicationObserving.h new file mode 120000 index 0000000..5184d7f --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKApplicationObserving.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationObserving.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBasicUtility.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBasicUtility.h new file mode 120000 index 0000000..d7ae12a --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBasicUtility.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBoltsMeasurementEventListener.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBoltsMeasurementEventListener.h deleted file mode 120000 index f39004f..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBoltsMeasurementEventListener.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBridgeAPI.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBridgeAPI.h new file mode 120000 index 0000000..bf87824 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBridgeAPI.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBridgeAPICrypto.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBridgeAPICrypto.h deleted file mode 120000 index bbdc21f..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKBridgeAPICrypto.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessIndexer.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessIndexer.h index b1db635..4673506 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessIndexer.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessIndexer.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessIndexer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessMacros.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessMacros.h index 705deb9..741be6f 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessMacros.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessMacros.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessMacros.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessParameterComponent.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessParameterComponent.h index 4ad3bf4..e58b257 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessParameterComponent.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessParameterComponent.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessParameterComponent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessPathComponent.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessPathComponent.h index cda0936..4603cda 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessPathComponent.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessPathComponent.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessPathComponent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashHandler.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashHandler.h new file mode 120000 index 0000000..92cd4d4 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashHandler.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashObserver.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashObserver.h new file mode 120000 index 0000000..54e5464 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashObserver.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashObserving.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashObserving.h new file mode 120000 index 0000000..6915310 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCrashObserving.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashObserving.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKErrorReport.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKErrorReport.h new file mode 120000 index 0000000..170e8f5 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKErrorReport.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKEventBinding.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKEventBinding.h index fb74b39..c7d8eb5 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKEventBinding.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKEventBinding.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBinding.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKEventBindingManager.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKEventBindingManager.h index ec9a750..b65a808 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKEventBindingManager.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKEventBindingManager.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBindingManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKFeatureManager.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKFeatureManager.h new file mode 120000 index 0000000..3880dec --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKFeatureManager.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKHybridAppEventsScriptMessageHandler.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKHybridAppEventsScriptMessageHandler.h index 3d41605..8dcccaa 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKHybridAppEventsScriptMessageHandler.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKHybridAppEventsScriptMessageHandler.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKHybridAppEventsScriptMessageHandler.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKInstrumentManager.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKInstrumentManager.h new file mode 120000 index 0000000..a727e32 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKInstrumentManager.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKLibAnalyzer.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKLibAnalyzer.h new file mode 120000 index 0000000..09c39a0 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKLibAnalyzer.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMacros.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMacros.h deleted file mode 120000 index f9059c1..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMacros.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMeasurementEventListener.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMeasurementEventListener.h new file mode 120000 index 0000000..87a235a --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMeasurementEventListener.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/Internal/FBSDKMeasurementEventListener.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMetadataIndexer.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMetadataIndexer.h new file mode 120000 index 0000000..0d7bc05 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKMetadataIndexer.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKPaymentObserver.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKPaymentObserver.h index 7a79f63..cd0c096 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKPaymentObserver.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKPaymentObserver.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKPaymentObserver.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKRestrictiveDataFilterManager.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKRestrictiveDataFilterManager.h new file mode 120000 index 0000000..cb4bfac --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKRestrictiveDataFilterManager.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKSystemAccountStoreAdapter.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKSystemAccountStoreAdapter.h deleted file mode 120000 index 1c8b506..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKSystemAccountStoreAdapter.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKTimeSpentData.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKTimeSpentData.h index e7b486a..247b403 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKTimeSpentData.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKTimeSpentData.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKTimeSpentData.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKTypeUtility.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKTypeUtility.h index ece247e..bac7620 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKTypeUtility.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKTypeUtility.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKTypeUtility.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLSession.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLSession.h new file mode 120000 index 0000000..9a99146 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLSession.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLSessionTask.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLSessionTask.h index 1210465..0437d82 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLSessionTask.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLSessionTask.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKUserDataStore.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKUserDataStore.h index 4b1ad3e..966da67 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKUserDataStore.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKUserDataStore.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKViewHierarchy.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKViewHierarchy.h index a7f7aea..d3057ca 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKViewHierarchy.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKViewHierarchy.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKViewHierarchy.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h index e3ddd5f..8d5bd3d 120000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h deleted file mode 120000 index 67d7080..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h deleted file mode 120000 index 32e79a7..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h deleted file mode 120000 index 16f9d52..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h deleted file mode 120000 index 1e9ecee..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButtonPopWAV.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButtonPopWAV.h deleted file mode 120000 index 3693592..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButtonPopWAV.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl+Internal.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl+Internal.h deleted file mode 120000 index 89509cd..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h deleted file mode 120000 index 984a2ff..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent+Internal.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent+Internal.h deleted file mode 120000 index 15eb00f..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFAppLink.h b/Example/Pods/Headers/Public/Bolts/BFAppLink.h deleted file mode 120000 index 3f79bee..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFAppLink.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLink.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFAppLinkNavigation.h b/Example/Pods/Headers/Public/Bolts/BFAppLinkNavigation.h deleted file mode 120000 index 6962356..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFAppLinkNavigation.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkNavigation.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFAppLinkResolving.h b/Example/Pods/Headers/Public/Bolts/BFAppLinkResolving.h deleted file mode 120000 index 94cc66f..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFAppLinkResolving.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkResolving.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererController.h b/Example/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererController.h deleted file mode 120000 index 95067f0..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererController.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView.h b/Example/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView.h deleted file mode 120000 index cc00897..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFAppLinkTarget.h b/Example/Pods/Headers/Public/Bolts/BFAppLinkTarget.h deleted file mode 120000 index 90a41f6..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFAppLinkTarget.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFAppLinkTarget.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFCancellationToken.h b/Example/Pods/Headers/Public/Bolts/BFCancellationToken.h deleted file mode 120000 index 0b69486..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFCancellationToken.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFCancellationToken.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFCancellationTokenRegistration.h b/Example/Pods/Headers/Public/Bolts/BFCancellationTokenRegistration.h deleted file mode 120000 index c587ca7..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFCancellationTokenRegistration.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFCancellationTokenRegistration.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFCancellationTokenSource.h b/Example/Pods/Headers/Public/Bolts/BFCancellationTokenSource.h deleted file mode 120000 index d3d5985..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFCancellationTokenSource.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFCancellationTokenSource.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFExecutor.h b/Example/Pods/Headers/Public/Bolts/BFExecutor.h deleted file mode 120000 index c071e8c..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFExecutor.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFExecutor.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFGeneric.h b/Example/Pods/Headers/Public/Bolts/BFGeneric.h deleted file mode 120000 index bd63ccc..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFGeneric.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFGeneric.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFMeasurementEvent.h b/Example/Pods/Headers/Public/Bolts/BFMeasurementEvent.h deleted file mode 120000 index 2eb6c11..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFMeasurementEvent.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFMeasurementEvent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFTask.h b/Example/Pods/Headers/Public/Bolts/BFTask.h deleted file mode 120000 index 5468334..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFTask.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFTask.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFTaskCompletionSource.h b/Example/Pods/Headers/Public/Bolts/BFTaskCompletionSource.h deleted file mode 120000 index c74760f..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFTaskCompletionSource.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/BFTaskCompletionSource.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFURL.h b/Example/Pods/Headers/Public/Bolts/BFURL.h deleted file mode 120000 index df21bd9..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFURL.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFURL.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/BFWebViewAppLinkResolver.h b/Example/Pods/Headers/Public/Bolts/BFWebViewAppLinkResolver.h deleted file mode 120000 index bf250db..0000000 --- a/Example/Pods/Headers/Public/Bolts/BFWebViewAppLinkResolver.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Bolts/Bolts.h b/Example/Pods/Headers/Public/Bolts/Bolts.h deleted file mode 120000 index 146ac6e..0000000 --- a/Example/Pods/Headers/Public/Bolts/Bolts.h +++ /dev/null @@ -1 +0,0 @@ -../../../Bolts/Bolts/Common/Bolts.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppEvents.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppEvents.h index 95c1d00..08573c6 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppEvents.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppEvents.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLink.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLink.h index 0550510..5682f85 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLink.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLink.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLink.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkNavigation.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkNavigation.h index db857a2..b4410d1 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkNavigation.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkNavigation.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolver.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolver.h index 69c20f5..e1c6345 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolver.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolver.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolving.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolving.h index 3bbab2b..e010152 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolving.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolving.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolving.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolving.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h index 93492bc..e4724b4 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h index 71947d8..753ad0c 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkTarget.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkTarget.h index 6f43bba..24e26cb 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkTarget.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkTarget.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkTarget.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkUtility.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkUtility.h index fef519c..7d5c8bc 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkUtility.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkUtility.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKMacros.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKMacros.h deleted file mode 120000 index f9059c1..0000000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKMacros.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h index e3ddd5f..8d5bd3d 120000 --- a/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h +++ b/Example/Pods/Headers/Public/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h @@ -1 +1 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h \ No newline at end of file +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h deleted file mode 120000 index 67d7080..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h deleted file mode 120000 index 32e79a7..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h deleted file mode 120000 index 16f9d52..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h deleted file mode 120000 index 1e9ecee..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h deleted file mode 120000 index 984a2ff..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h \ No newline at end of file diff --git a/Example/Pods/Local Podspecs/PNObject.podspec.json b/Example/Pods/Local Podspecs/PNObject.podspec.json index c7e84de..6b3878f 100644 --- a/Example/Pods/Local Podspecs/PNObject.podspec.json +++ b/Example/Pods/Local Podspecs/PNObject.podspec.json @@ -1,6 +1,6 @@ { "name": "PNObject", - "version": "2.6.4", + "version": "2.6.5", "summary": "PNObject is a simple replica of the more complex ParseObject", "homepage": "https://github.com/giuseppenucifora/PNObject", "license": { @@ -12,10 +12,10 @@ }, "source": { "git": "https://github.com/giuseppenucifora/PNObject.git", - "tag": "2.6.4" + "tag": "2.6.5" }, "platforms": { - "ios": "9.0" + "ios": "10.0" }, "source_files": "PNObject/Classes/**/*", "dependencies": { diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 3f2be17..8ba7027 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -14,33 +14,35 @@ PODS: - AFNetworking/Serialization (3.2.1) - AFNetworking/UIKit (3.2.1): - AFNetworking/NSURLSession - - Bolts (1.9.0): - - Bolts/AppLinks (= 1.9.0) - - Bolts/Tasks (= 1.9.0) - - Bolts/AppLinks (1.9.0): - - Bolts/Tasks - - Bolts/Tasks (1.9.0) - CodFis-Helper (0.1.3) - DDDKeychainWrapper (1.0.0) - DJLocalization (1.2.2): - DJLocalization/Core (= 1.2.2) - DJLocalization/Core (1.2.2) - Expecta (1.0.6) - - FBSDKCoreKit (4.41.0): - - Bolts (~> 1.9) - - FBSDKLoginKit (4.41.0): - - FBSDKCoreKit - - FBSDKPlacesKit (4.41.0): - - FBSDKCoreKit - - FBSDKShareKit (4.41.0): - - FBSDKCoreKit + - FBSDKCoreKit (5.8.0): + - FBSDKCoreKit/Basics (= 5.8.0) + - FBSDKCoreKit/Core (= 5.8.0) + - FBSDKCoreKit/Basics (5.8.0) + - FBSDKCoreKit/Core (5.8.0): + - FBSDKCoreKit/Basics + - FBSDKLoginKit (5.8.0): + - FBSDKLoginKit/Login (= 5.8.0) + - FBSDKLoginKit/Login (5.8.0): + - FBSDKCoreKit (~> 5.0) + - FBSDKPlacesKit (5.3.0): + - FBSDKCoreKit (~> 5.0) + - FBSDKShareKit (5.8.0): + - FBSDKShareKit/Share (= 5.8.0) + - FBSDKShareKit/Share (5.8.0): + - FBSDKCoreKit (~> 5.0) - NSDataAES (0.2.2) - NSDate_Utils (1.1.0): - DJLocalization - NSString-Helper (1.2.0) - nv-ios-http-status (0.0.1) - PEAR-FileManager-iOS (1.3.1) - - PNObject (2.6.4): + - PNObject (2.6.5): - AFNetworking - CodFis-Helper - DDDKeychainWrapper @@ -57,11 +59,11 @@ PODS: - RZDataBinding - StrongestPasswordValidator - UIDevice-Utils - - PureLayout (3.1.4) + - PureLayout (3.1.5) - RZDataBinding (2.1.1) - Specta (1.0.7) - StrongestPasswordValidator (0.1.2) - - UIDevice-Utils (1.0.9) + - UIDevice-Utils (1.1.0) DEPENDENCIES: - Expecta @@ -70,9 +72,8 @@ DEPENDENCIES: - Specta SPEC REPOS: - https://github.com/cocoapods/specs.git: + trunk: - AFNetworking - - Bolts - CodFis-Helper - DDDKeychainWrapper - DJLocalization @@ -98,27 +99,26 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057 - Bolts: ac6567323eac61e203f6a9763667d0f711be34c8 CodFis-Helper: 28be4c74d7202542459d72354f59b1215871de87 DDDKeychainWrapper: e681a4daba6448786fa83b4941f58102a33b1897 DJLocalization: 0c84029af375647d4104a42ae36be87194c46c47 Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5 - FBSDKCoreKit: 974810fe3806173f3777c68062fa8ed6fa59b59d - FBSDKLoginKit: 159a5c2eebe6a0774c3b128f5085128679233d2b - FBSDKPlacesKit: 8dc2ca787f8934c021876d9e51bf3a5508b0675c - FBSDKShareKit: 79dfd0c51f1a241f33e219fcc39e7cc69534b900 + FBSDKCoreKit: e7dcac0aabcfb09d0166998edd95fe3b05a0ce5d + FBSDKLoginKit: 1b0cf04df0370b37404213157b060d6666ede814 + FBSDKPlacesKit: 0388766304ff7a89630bcc211db9f500d549f403 + FBSDKShareKit: abc29e1bb4f9f59f679adf1ae191006d68455f96 NSDataAES: 967ea3337476a80e9838a533c25d570a06855ed0 NSDate_Utils: c858a89da6e204ecf53aca48dbccb4da4d25bc9e NSString-Helper: 1c259caa6c845e79e0bb45ee25e34f95d86d2317 nv-ios-http-status: b6c2b5fc8656cc19e0d3000dadce2080b99d0e2f PEAR-FileManager-iOS: 3bc403f68a53483f5629aa822f4649e40275c4d3 - PNObject: 5d8947012a711816bceedce57d07762327ac57c6 - PureLayout: f08c01b8dec00bb14a1fefa3de4c7d9c265df85e + PNObject: 050cb74316db4833c551ae9732db81f6fb8c6416 + PureLayout: 9b4ad47b2f0388c84ff534af23d96e720c1b875a RZDataBinding: 289e2fbdce8b9585afef69def83425c5d380ffbd Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66 StrongestPasswordValidator: 921e42615bdf353513c6f925bffd4fc29865dbd7 - UIDevice-Utils: 6ba44475416a1e823f214a8ed26fc9a0761db096 + UIDevice-Utils: 9efdf0f9fb3c07a53595d39981d3c04ce39aba5f -PODFILE CHECKSUM: eec9c921f7aee591fd1fdea1fd3e5a191b74a436 +PODFILE CHECKSUM: 1dc1681e732f85afd3765f49346295b2d8460102 -COCOAPODS: 1.6.0 +COCOAPODS: 1.8.4 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 043db99..f4cb11a 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,1848 +7,1744 @@ objects = { /* Begin PBXBuildFile section */ - 006BED8BFE932DD7340DA37AD07F02BE /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FACC2892857FDA98FD4BDF9CE744287 /* FBSDKAppLinkUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 00F15AC64D9BC14645D7EB2B8A02C10B /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 90588E8B37E34AA3C22F91A841EAA7C3 /* FBSDKBoltsMeasurementEventListener.m */; }; - 01603B55BD9BA807AF0192B008D7B958 /* FBSDKShareCameraEffectContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E6A0C46FA248391EC2345394188BDF1 /* FBSDKShareCameraEffectContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01B301AA87DA06AC4A3B90EADE3BC990 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 3791911718EC7488D00D5409925A6AD6 /* FBSDKLoginUtility.m */; }; - 022A26B6602D92E968B5D7EF2025DC7C /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EA832132E2F55847B7F7427B4434385 /* FBSDKLikeDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 022AA9C914C08FE164F6A72C4C3ECCE2 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AE80A55083472B8056AC6B1257A9F39 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 02318965FBB73CF4641E85D5BD63CE25 /* NSDate_Utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 69EF28D6F008F53D7ABC77D9E8AF8B9C /* NSDate_Utils-dummy.m */; }; - 031D3C85F580318DBACE34745F397CE6 /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = DCF1A2B764698D3914EDBF3F326115A9 /* FBSDKKeychainStoreViaBundleID.m */; }; - 041F212A0C424EC0D3F57B8395DA4426 /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = C0F2D5FAF356B29232D4981538F0FC2E /* EXPMatchers.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0440A497F08A03E848834C920594FFB1 /* AFHTTPRequestSerializer+OAuth2.h in Headers */ = {isa = PBXBuildFile; fileRef = 63C0BC977F90EFFB1EDE6089E231EFA0 /* AFHTTPRequestSerializer+OAuth2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 044A08F91D03EC5DFD6A556057341CC5 /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = F3D0DCE4A54E49B927ADFE291C35DB38 /* FBSDKMessageDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 04619F2FC955F439C9826AEE09727E43 /* NSData+AESKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 707B3A1063FE330DDF1BDDC42C35B478 /* NSData+AESKey.m */; }; - 04D38499EDB58829E869093378800678 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = D7E298E48D1C63DF1B44F7E6764B9A7B /* FBSDKBridgeAPIRequest.m */; }; - 04DA92C91D355F1BD1362E64BF9983DB /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D186D3F2E558797188A95F3D609ABB4 /* FBSDKGraphErrorRecoveryProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 04F8C5939F5CEDA1001D6F83A2BF5456 /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BC8EDA93EEF3C522920BF96CCF7B48A /* FBSDKConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 057F1FBCC48FE26BEAAFC841166A24F6 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C8D8ED83FB04860566696F2F50BCB92 /* FBSDKAppEventsStateManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05B1643814E247E0ADF23AA912EECCE3 /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 964B53AAE68DDABD727A9EA8BC348AAD /* ExpectaObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05C088DFC6B7B78CEBC3CC583F9EFD5D /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = CF160737F9DEDAD37F5CA70D9780F04D /* FBSDKBridgeAPIProtocolType.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 065C8F38AC6414257FAC099F41A8CAAA /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BBE94DF76EC0F55859A3A516D3BE7D8 /* _FBSDKLoginRecoveryAttempter.m */; }; - 06C0C60D56A7C0CCAF768E3A4E9AB6B9 /* FBSDKAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D4D238950FCEDACE20DA84B233D3F2D /* FBSDKAppLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 073DCBF5208DF7716D4560CDE267AB63 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2140789A5983168DFAF7DEE92DBF6852 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 08748D8BD4D1D8F1A59A3680E51C3019 /* EXPDoubleTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BDB69F27DB5EB0E81E9C070DD9433B7 /* EXPDoubleTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 087E194397DCCE3FDB9AEDB456481000 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A827A2BA23752A42665F07AA763ED5 /* FBSDKShareDialogMode.m */; }; - 09571939EB55461BEC842C7FD4882D80 /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3637212D99E5D9D594B142A123B12D /* FBSDKMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09BACA441264BCB9BA37CC51C72362FA /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = E09816165A3429E6898C6570A4C62778 /* FBSDKError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09F7D05FEBD4F98146BFE58421B16042 /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1F0C213F4FF21C08A1F9C246A7E24E /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0A00079E6C88034A271D3302A67B141C /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = F9068CD92F1AE7C3DD8B51A8D42A35FA /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0AC90D35ED1DE0CA3040C345BC226480 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 95166DEFF81A3E56BA87EFD60B898F38 /* FBSDKServerConfigurationManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B7212916C37EFA267481E4FCC43E8C3 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 74725CF7D6F8C6598117247945C2B247 /* FBSDKErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B7F510030167772AFD8D39C9BA22F11 /* EXPMatchers+beNil.h in Headers */ = {isa = PBXBuildFile; fileRef = B37CD7F5B03C088CAE63670A3B0F4409 /* EXPMatchers+beNil.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B9C6B2F98C3A87D1912E7D661BD36FB /* SPTSharedExampleGroups.m in Sources */ = {isa = PBXBuildFile; fileRef = 3711275873E6DBA973EBB050248D3277 /* SPTSharedExampleGroups.m */; }; - 0BC3AFB238C982D905401F0567D3AB34 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E3E2E0E25740B4D5F7A040F5AFCB77F5 /* FBSDKGraphRequestPiggybackManager.m */; }; - 0BECDCD35BA52877636F10A0267F1DA3 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = A5A00FC655B7C980C7419EC45F43B13F /* FBSDKLikeControl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0BF47C6B9FF679AB3B62E4BF239FDEAC /* PNLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = A4419967EB400220B04C43140AB234A3 /* PNLocation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C06F38E2739F2221ED383FBCC31E0B0 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = EA7F85994C03848985B7F6D6989CC8D0 /* AFImageDownloader.m */; }; - 0C3788D7C3966CE01D70E2A9A5FCFDF9 /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = B40C2594CD425E72DD20993A7B76A99C /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0CDE4C718DBECE970D5889AA6A83B636 /* FBSDKPlacesBluetoothScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B710FBF14B5F01B7DACDD8307EE0241 /* FBSDKPlacesBluetoothScanner.m */; }; - 0DCF99229D6CEB4F9B047273EF6760F8 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3888A0F4A81ABDD4F044E36198568B3B /* FBSDKViewImpressionTracker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0DFEE1E89932FCF077A79BC770959C6F /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 896596E22E5952435B390ECB02A540EE /* FBSDKButton+Subclass.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E41D3EF3FCAC995C4BBDA55E86ECC31 /* UIDevice-Hardware.m in Sources */ = {isa = PBXBuildFile; fileRef = BA60CE8853503D22C319CB0C52BA8139 /* UIDevice-Hardware.m */; }; - 0E96B74B9A624C37AEA6523C571783DF /* EXPMatchers+beInstanceOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 3158077E76A8DF4FD04C623F11FFBC28 /* EXPMatchers+beInstanceOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0EB50B5404623747D104A9FC47B2CBCE /* ALView+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = DC190C2584B64F33B43E412E2B921F48 /* ALView+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0F3CE44572417072F9294F57B640C46F /* SpectaUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = FAD5E72E0081CBB972F6F9223A9CD595 /* SpectaUtility.m */; }; - 0F71E761514FE3BE7ADD33E329DE6A71 /* NSData+AESValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 66C2E247EB99AC60927C83B23AFF5B0E /* NSData+AESValue.m */; }; - 0F952F6D3A5081CC52B018493F427E75 /* DJLocalizableString.m in Sources */ = {isa = PBXBuildFile; fileRef = DBA8BBCF0CA2AC1812646FB22835B12E /* DJLocalizableString.m */; }; - 0FCDBD23A36B2852D5F959AF817C6BAB /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 9563DEDCA2EA8A2E4D08BBC2437E75C6 /* UIProgressView+AFNetworking.m */; }; - 0FD4255074CB4D198BD752828B9E31CF /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = A6FF1CA21BC7672D566D7A7BAB40B0B0 /* FBSDKLoginError.m */; }; - 1105C1BD653A0E9D12F55605D1A43E20 /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BCC911BBF329B8E7AECD00D25AD2B17 /* FBSDKBridgeAPICrypto.m */; }; - 11554582DE4C60CEF2FAD10BA4C650F2 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 85FF72C395AA6D3D18BFED154970FCE3 /* FBSDKAppGroupAddDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11A032D6F1C58ECE5032A9792F94A606 /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8E0B555B6519C73FDC9A8567EEA7F7 /* FBSDKBridgeAPIRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1240B44D07E5C748DE29CE790FF09102 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D697A55184BFCA58EA3426B82026F57D /* AFNetworkActivityIndicatorManager.m */; }; - 1365944E062C822DAE50841B591092DE /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 41BE2B3CE06A539EE51DC17FD2C87F35 /* FBSDKBridgeAPIProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1387C9B33E3189F9B6F20DC5AFFEFFDB /* EXPMatchers+beGreaterThan.m in Sources */ = {isa = PBXBuildFile; fileRef = A272C53D2709EFE1A8745B50DAC95A0A /* EXPMatchers+beGreaterThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 138AF6F8EE18CF4DFC8376DD0546A24F /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 316F52AA93E18FEB28CC7AF2689318DE /* BFWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 139660A6542DB48C400EB295765ACF8D /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEC7C6B47E639C82F7B3B5A8B3EF45E /* FBSDKShareLinkContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 14E8B9C24C72C97657A66404B188EEC4 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F5EF72C72FCB505E53954C97066D9CB /* FBSDKAppGroupContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 14F21094B0CF6F465BEDEAA6615C8B96 /* PureLayout+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 94A18D545C1EE623676C8F1CE1CDFC68 /* PureLayout+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1514DD47DD0EFE7D6ABFC27EE743D12C /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D4892E09F91736B6CA8BF5AA1373BD /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1516236708036531F5389345869FC723 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = CE2C28DFD1E5A9412217647B521F0162 /* FBSDKAppEventsUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 151F56E6C4E03522C0E66B524F884B93 /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = C11A5474BDDD996985739D792062ECF7 /* FBSDKTypeUtility.m */; }; - 152654B44B1E78BA1AC303AEEF315D3A /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m in Sources */ = {isa = PBXBuildFile; fileRef = A24D3345D779CB0F2EED4746C0D36DAA /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m */; }; - 15295CEF88568A41209A9E95CAE4443D /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3177A3C9B3C8BFF821785E3B07D0F1A4 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 155702E102F845242B9DA9DF458264EE /* NSData+AESValue.h in Headers */ = {isa = PBXBuildFile; fileRef = A053D1FBB84B51F2751692C804B1499C /* NSData+AESValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15D9E4CAA3777CEAFEF8E2919E1E8695 /* FBSDKSharingScheme.h in Headers */ = {isa = PBXBuildFile; fileRef = A5BEBF002E637D9105337027ED351A51 /* FBSDKSharingScheme.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15E68BA97C1324F72EFD112964AC1B9C /* PNObject+PNObjectGETConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EE345E7C72682CBA86096BE1C173A6D /* PNObject+PNObjectGETConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 16C06142EE4616367556CB7438F6DDB8 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 32433AF8FA28B0D0E2F36128EE536F98 /* BFCancellationTokenSource.m */; }; - 16C7677384CA26F4E858E8628B41440A /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = C61B837CB3195F2C9943B1AED1F9F19F /* FBSDKAppEvents.m */; }; - 170DBB47E413244BEDCC46719DE8847F /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 953E51768F131AAF8387BCC13496F136 /* BFExecutor.m */; }; - 172585039DEB391779214F92C15804EA /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E949BF07B3F978082F8A7982FD247F0 /* FBSDKShareAPI.m */; }; - 17C87219DE92B3C47CAFF4F9ED2293D3 /* FBSDKDeviceRequestsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 7256815F8C1E6E1B8D491EE1F2FAA575 /* FBSDKDeviceRequestsHelper.m */; }; - 17F70A5452F1555154103B1AE6976CF6 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EEFB5ADA1B95FB3EEF52E2148EA679 /* Bolts.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 18881AD82DBE7AECA3D0C5DC25441F0C /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BFAB2A8ABAE3F37496DF1732892309 /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 189A69B2392D21B7D75C3AB9D194D750 /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AD30B20662249C3967C75F41F99FECD /* FBSDKSharePhoto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 18A239FDECEB25DFBF63D1ACBDE7A7EA /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = C6B90089F681632D8939C7088B7F7DA1 /* FBSDKShareLinkContent.m */; }; - 18DA1F3528A51CFF8425A84403AB3EC8 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = FB00299734B1BA388AAA5E113E34F44F /* FBSDKCrypto.m */; }; - 1915723952046FD1EB8EF6BFC64ECD43 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FB090B9C628CEEFBDDAC406092F8D085 /* FBSDKShareOpenGraphValueContainer+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 19226E62E6F9DEA5FFEA8BDC070769EC /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 4338430881B368C3FD1BE9A2FC71B3D2 /* FBSDKSharing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 197018DA7F50C8DCE3210895F0888274 /* SPTExcludeGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B08B36BD24CEAD1D95BA1FA4802D108 /* SPTExcludeGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 19AB1FD73939BF22F37F33C3D65B1EF9 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E5B97B6101A57C96FE481CB9E613CCD /* FBSDKCheckmarkIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1A228D9ABBC4FC04C35FE1EC76311F56 /* FBSDKHashtag.m in Sources */ = {isa = PBXBuildFile; fileRef = 70007DF54ED17951A47EC0CAA5625152 /* FBSDKHashtag.m */; }; - 1A8DAF192608984F0C5BF370F2643DA2 /* EXPExpect.m in Sources */ = {isa = PBXBuildFile; fileRef = 20FEABFE1CEDC4D9F325D07DB76ADF46 /* EXPExpect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 1ABA9189B4CF40B27C000C977FFFF3B3 /* NSData+SHA.h in Headers */ = {isa = PBXBuildFile; fileRef = AB921BAA0B87876CB598B74CC15965DF /* NSData+SHA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1B34C3F71090E7EDD712A9FBEF7FF31F /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3900B179B07BC1E2E443BE149B8A4D36 /* FBSDKKeychainStore.m */; }; - 1B4A7350A020D3B11310E66714B3A66A /* PNObject+Protected.h in Headers */ = {isa = PBXBuildFile; fileRef = EBDAF77420FDB4828B6BF33817FF1FF3 /* PNObject+Protected.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1B99B3B19F9FD7BF3A1B17EC6B68F8BA /* FBSDKEventBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F29554C2768B6E8C2F71AC5CF284F8 /* FBSDKEventBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C63D642F3E573214FE093DD28080E81 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 6007FF7DBED0A6E14792E0848FB6407D /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C967D6533390811826C73FB07D17A10 /* FBSDKSharingValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EB779AE5CD8F55FA700C0EBA7148870 /* FBSDKSharingValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1D8210F566BBEB2CB9B9CA62348B949F /* PNObject+PNObjectGETConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = CAAD426738CEEC7606CD1FE2F5D2AB46 /* PNObject+PNObjectGETConnection.m */; }; - 1DA7B8C1C0838A8752F63FEFF160134D /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = C76AE4D97024E30E41427574560B724C /* FBSDKAppEventsUtility.m */; }; - 1DA92C112EC6520678B1C9426733431C /* PNObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = EB16386971F06C4720EB7A01324F0A75 /* PNObjectConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E1933CF48DE4C04F572656399BC5EAB /* EXPMatchers+haveCountOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 09DD98B79912EB2484843E3D95FE4F75 /* EXPMatchers+haveCountOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E3EDBCCB0B3312BBB581929F61AC67B /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = F98533D8D30B29D9AD2A935E5AB2991B /* FBSDKWebDialog.m */; }; - 1E6AE9732A1E90A408D95505C01E253E /* RZDBTransforms.m in Sources */ = {isa = PBXBuildFile; fileRef = F47A51EBDF2942C2BF0F2E89844ED688 /* RZDBTransforms.m */; }; - 1EC667C28A883F71E73B11957A351A90 /* FBSDKAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = A37D3A7B2CDCECECC766D2C81855DDA3 /* FBSDKAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1ECCF9FD4CAB281DC71836406297EEEA /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 425BCC180D0345E8C4B0ADC8B1701889 /* FBSDKBridgeAPIProtocolWebV2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F6BF31D1D8E7E8F5E0B40C2F7C53A7A /* PNObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BB0FF5C809A421C2EF24D4165E41AD19 /* PNObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F6EA5090831FF0A81191F7B3E86D2A4 /* SpectaUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 173CC0E93B9ECD7E72EB5EB4181C1703 /* SpectaUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1FD8D59C1DC1182D17C50FA8F39F1BAC /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 95ACDC86CD9D2A9C67568F9E6340034D /* BFURL_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1FFF1C0BF427C479547A1B6D7A5F245C /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F81808A22C2B64B21EBAC60C04E9D8D /* FBSDKAccessTokenCache.m */; }; - 205A700B86FFC41BC2D9E959C44568E4 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = EA66EA7AE41598503A94F8B8CEA9B07A /* FBSDKTooltipView.m */; }; - 20B7E433DFBD0DBED56893BFF3BF0BE2 /* FBSDKAccessTokenExpirer.h in Headers */ = {isa = PBXBuildFile; fileRef = 36263CA62B1CDCF318BC1664ECE07634 /* FBSDKAccessTokenExpirer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 20CDA1602422F6AA07DD2836C9EB2CD6 /* SPTTestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B1BBC53A00585C1BDD65A27CB02EBD1 /* SPTTestSuite.m */; }; - 20DE18D2C8A23A5BFBA7D5C26936952C /* PNObject+PNObjectPOSTConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = C0AAD202D7069DC71C7B9404A20324B5 /* PNObject+PNObjectPOSTConnection.m */; }; - 20E969B72751C31E0CCD1FA60E87624B /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6430A4D020AF934C8EB61D5A8C4093 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 220762FD930FD827F1B57E8B44C1DFD9 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F9CDF1697BBB5E64C4ED478A91B0A61E /* FBSDKSettings+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2288B0C86E48CB2DB3E62EF41BE13F2B /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = 58010336F943048ECFA0A1AAC735B4FD /* FBSDKAccessTokenCacheV3_17.m */; }; - 2288D8F67198C774B8204CDB45AF4A16 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8871173B41249C1FC241B882B9866E4A /* FBSDKCoreKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 23736F4F02682FF1825F13764B9AD952 /* PNObjcPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A3B2AF6253FF385B19D746BC3421E1A /* PNObjcPassword.m */; }; - 23D4E2666316628C43DAAC4B225B0C36 /* SPTGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 501348201A745DB29FA49340A0F04CF4 /* SPTGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2444B1ACDFE80A90670CA47D9C1EB301 /* FBSDKHybridAppEventsScriptMessageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 11D89E48B7975320184D6D79E3CCE715 /* FBSDKHybridAppEventsScriptMessageHandler.m */; }; - 24BE4F5B9CF5D4788AE9305A92810983 /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = E5D8891444EE9ACC6E67DA9AB862D8A8 /* BFURL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 250B47B2A7AC33A50E4CB6879A66E407 /* UIStoryboard+DJLocalization.m in Sources */ = {isa = PBXBuildFile; fileRef = C40C9C5CF2D2F44EE522F692722FB7C1 /* UIStoryboard+DJLocalization.m */; }; - 2569731EC01713651BCCCEF26FBA4B2B /* FBSDKMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 36B84180D825D51CD538A3C8DD90DB0E /* FBSDKMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 262C8C58ABCB1A53ED85EFB444B5CE55 /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = D06DA231BBDC01C157B1B7B728A9541B /* FBSDKContainerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 26341154ABEC6374052CB8B32F612B7B /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 780EB870D682B26487EA7ED3CD6483BF /* FBSDKLoginError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2661EE0A798F488AF6E173BED7FFD213 /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF3D875D80D2EE1229786CFF989100C /* FBSDKTestUsersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2813FBF676A5A4363799BA4A20637923 /* FBSDKURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0141F45C056C12BE42836B932C742FEB /* FBSDKURL_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 281E3ECBACBFB3452590BABC2302C807 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 50846CBCA2B8D71AFC25775782EA1F78 /* FBSDKProfile.m */; }; - 286AA56F94B5F9621AEE8E0ABC78BB62 /* FBSDKSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B60DF9FAF514E71418E410001F5B95 /* FBSDKSwizzler.m */; }; - 294A49F93F2D6FC1E68AD209331789C1 /* PNObjectModel.m in Sources */ = {isa = PBXBuildFile; fileRef = F468B98197451903A0E37C764D850E6E /* PNObjectModel.m */; }; - 296EF40D064952BAF86099E7AFC4BBDB /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 450D8F2ED6F012DFB6572D0CB2D90566 /* UIWebView+AFNetworking.m */; }; - 2AC0F08B7A751361B3E952A8F0DCFC02 /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = B149B61A2E8A5CAF7ED3D8AF703D6A62 /* FBSDKAccessTokenCacheV3_21.m */; }; - 2BED55731EE66CE43B17B9CECB6F842D /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = C9FDBF97257B999F0518CC9DAAE4D1ED /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 2C0E8693F9FDA0D0630FFF392EDAD872 /* FBSDKViewHierarchy.h in Headers */ = {isa = PBXBuildFile; fileRef = F743CDE85BB80D3D263C45B889C27EE2 /* FBSDKViewHierarchy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C34DD855E93BB8329604ECDAF9D2A02 /* FBSDKImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = ECCA59DF3BE08873773EB45AFCF309C2 /* FBSDKImageDownloader.m */; }; - 2C9C681DED4716979EDBE2C3128E5272 /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = C7260A05BAD8E247C27CF35AED4D6DAD /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2D60E84EAA85EBC431599D3BB63EA829 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDE351C77B8E516588EE281F458DD05 /* FBSDKShareDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2E56A479EE5632B3F07EF6A4EAE12F6E /* NSData+AES.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D3010A0367831EE82017D8EB41781DA /* NSData+AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2EDC5BAB1A8387E932D038B467503DBA /* FBSDKShareExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = CDF23647D254D7A667873235587D1E57 /* FBSDKShareExtension.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 301D62CCE707EE59229E5F9AEA4E101F /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BC6D7BF53C698B7C45AF9D9581E70B3 /* FBSDKSharePhotoContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3020AB1E8ABA04D350B6F43AD6B8653A /* FBSDKViewHierarchy.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC557752B89810471682B9DA154733B /* FBSDKViewHierarchy.m */; }; - 306ED9CA12E16C708E56BD16635A6C15 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 3050DE354CD6B3906D8E195C2B426717 /* FBSDKMutableCopying.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3103D38EB328E45383D3F4CED21F94E1 /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 880BBE3B833545E556508AED24391025 /* BFAppLinkNavigation.m */; }; - 31292B0F3D8739FA5F2358CE2EAEB400 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A1A22D9D64368A6444DAADD596284647 /* FBSDKShareButton.m */; }; - 31D77A4F74849AF2D4766F704C9CE6D1 /* CodFis-Helper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 756F693A95219BC9E7CD9179F08C664B /* CodFis-Helper-dummy.m */; }; - 3232BB7516ABA0A4F425F1DA3D602560 /* FBSDKHashtag.h in Headers */ = {isa = PBXBuildFile; fileRef = 74E0F3CE5BE31E0656A2F19BF3F03490 /* FBSDKHashtag.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 32F6C485413FAE4B39E84BB82662A79F /* DDDKeychainWrapper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 030C92F2459CEF4CBBB7B4897D9D2380 /* DDDKeychainWrapper-dummy.m */; }; - 3394DDA959CE87540B4F85CE0C00F681 /* FBSDKEventBindingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 02F645A0F8E3E9FB2C954ED5E77D22CB /* FBSDKEventBindingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33CC0F7B13AC73575172BA815BF10E0D /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CEE28ACBCB76E48C6CECF1B56BD72BF /* FBSDKPaymentObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3442DCE79E49CD932713E862427F0919 /* NSMutableData+AES.m in Sources */ = {isa = PBXBuildFile; fileRef = 89741F7CC818B4B06019F65E6832BD0F /* NSMutableData+AES.m */; }; - 34A6E6F55828F2654103AC63E1999D8F /* PNObjectFormData.m in Sources */ = {isa = PBXBuildFile; fileRef = 557AA9E59CB8292BE87DEA7EF0D5D65A /* PNObjectFormData.m */; }; - 34D6E9DFB6DA988BF48FA9FA35B705FA /* SpectaDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AE81C354021542B04BEE0FB2A3E61D /* SpectaDSL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3549AA6E940ABC495E3DE5B8C68DFB3C /* FBSDKCodelessIndexer.m in Sources */ = {isa = PBXBuildFile; fileRef = CC1167BE518A66E03A59202D74A9B567 /* FBSDKCodelessIndexer.m */; }; - 35ED53AF759D4DEE65B4F5F03AB32863 /* FBSDKPlacesBluetoothScanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 72AE50F1F02EF4E9A375EF76D14FCB49 /* FBSDKPlacesBluetoothScanner.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 35F1AC0D09B83FF3386DA1AEF8D56C17 /* StrongestPasswordValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E08E9634486D671EED88EECBDEC18E0 /* StrongestPasswordValidator.m */; }; - 36AAF9740A4C29C073321F5D19B3AEDD /* PEARFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FBC58D5C116C30C2C9FA4E8FA969CC89 /* PEARFileManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 36DD3860485616833D2A190DA0039B59 /* SpectaDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 98985DB3C6A3CA6E3251B8690025641C /* SpectaDSL.m */; }; - 3751DD959CE2542A89E95639325A9308 /* FBSDKShareMessengerContentUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 68119EB2898F2D1707ADCAC372FB92B9 /* FBSDKShareMessengerContentUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 37A14F41B74182E1F4352765133F4D3A /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C80CE7F8202FAE0212600334F73C626E /* FBSDKAppEventsDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 37CE84524E4CDE3130E062BBE89D76CF /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 04EDDC006508D124F74E5B0CC961BD18 /* FBSDKLoginCompletion.m */; }; - 383428C3888B12581E14BFAD70B79C1F /* StrongestPasswordValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = C78134E0CA15EF551455C4494784DAE3 /* StrongestPasswordValidator.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 383E9DF08C169EC6B43AFCD4B9A67B11 /* FBSDKAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D13DA27869E09F92FC87BAAEE03E24E /* FBSDKAppLinkNavigation.m */; }; - 384FCFC0E19D105A55F1FE13D55FB325 /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C5310533EB4F9ABFC5B143636A802B4 /* BFAppLink_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 38EBB0F084B8597B8C9AA5634F7924C6 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 99766581F3ED9EE101848320FE097C3C /* FBSDKLoginManagerLoginResult.m */; }; - 38EFD39C20E2EEDD66372D8F68056FAE /* FBSDKMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = A7436B149F7AA7DED9A0DDAB8606B22E /* FBSDKMeasurementEvent.m */; }; - 38FB3016F4A392DECF2DEF4F1CE9338F /* FBSDKVideoUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 348915D5410F79D9A4C2A5BA76CA8B3A /* FBSDKVideoUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3905F44A6CB8EC982796F25D562DD5DB /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F73CA776F3A066330DE862E1DA100CE /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 39ED2FEB2712AC2FCCE9C3343E43C0B6 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D2A21159AA1DCA73B83A40AB029D6D60 /* BFMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A08F93A52731850172B936A74FC8B63 /* DJLocalizationSystem+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4074D9857D6E6F58769A514119FB7676 /* DJLocalizationSystem+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A295C732917B0BF242CD61CDB557477 /* FBSDKDeviceLoginCodeInfo+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A817FF01F498861F82275F33792A36D7 /* FBSDKDeviceLoginCodeInfo+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A514261550472C40826165150A10A32 /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D833AB2284A684F816E4664C009E70 /* FBSDKCheckmarkIcon.m */; }; - 3BEAB8AE0D3D6B4F0DA5C3F2477E7C08 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = EB1CD55C50641A9849B06F1F765F5006 /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 3C99AF91E2501167B5461DCC24F5B2FD /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = 2879F575FF8553684935318188B30284 /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3CAD7C140B36E3D3E598054D5D09300D /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = DA932ECCF24384784CD1237378076B34 /* EXPDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3CB72956B9180AC1BA25765975B54CAA /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1287BDC30BBDE83DF240B0C744F57674 /* FBSDKShareOpenGraphAction.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3D445933D315AD15BEB85279F96AE853 /* AFOAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 0504B1A342444AE7F47B822A4497A15F /* AFOAuthCredential.m */; }; - 3E3A00360C400B866423F45B3F741ED5 /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BB1E36689F5554BAC591B87077238BE /* FBSDKShareKit-dummy.m */; }; - 3F0A79B89682AFFA3570AA4B56976AE2 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 442A70A7AF5B4BD3ABC94F1AF9551DE7 /* FBSDKShareAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FDFF86F1C57C32D81DD974494E3F195 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = AF42BD4BDCEC3CEED17676D81C4F1A74 /* FBSDKProfile+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 40326479D044EF77DA5048A61EA3605C /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = F0385C6D2F93A7C8AFB0CFA0DD973B28 /* FBSDKColor.m */; }; - 403D749E00A9BF47E45BAC57CB84D418 /* Specta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CC878F74315147F19195A5415CB303A3 /* Specta-dummy.m */; }; - 406F6344A6E0E6FC7CFF8BD2149EA2DA /* EXPMatchers+equal.h in Headers */ = {isa = PBXBuildFile; fileRef = CB203005E7E1F9F462978DC12B1A7C62 /* EXPMatchers+equal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 408027D0F27D619451276ADB71072900 /* FBSDKURL.m in Sources */ = {isa = PBXBuildFile; fileRef = B01A82939912B5AC60C4A4B5BA9B42CE /* FBSDKURL.m */; }; - 40A4B68F5BF655D5A30456E8A32AA6F0 /* PNObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 944CFEEBBC319A1B242E21DEDF6DA177 /* PNObjectUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 41C540E352DF635CCC085367ECDB6C88 /* FBSDKShareMessengerActionButton.h in Headers */ = {isa = PBXBuildFile; fileRef = AF49B9332E839F16E347B598440301F3 /* FBSDKShareMessengerActionButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42D023EAB5F7F8E7564B6194F97215F5 /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = B3CB76C1DA8AACA2180A1159A901850A /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42E656540376D9D3B03B88DE84948EFF /* NSDate+NSDate_Util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FA95DDB4EE259D0108EEA5D9E02B4AD /* NSDate+NSDate_Util.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 43BCB76A3185070ADED799224C849F95 /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 7384B5AEB63E0040B3EF5101BCCA576F /* FBSDKShareOpenGraphAction.m */; }; - 445FEF66C84DA5BF03E0C5C77B4D7D62 /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = 24F33CC4C21214AAEF13CD898EEDDA59 /* FBSDKMath.m */; }; - 451652DE766742F806CAE717299121F1 /* DDDKeychainWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A12D650526A67F373774663DA15A225B /* DDDKeychainWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 45491B67D31F288432C930D591FA1DFC /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8725EEB96D3254318C1B72332D7008 /* FBSDKLoginManagerLoginResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 454DBC808AF53BD0EB30C5C3C1201BCA /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 0862998C4EB72A4814898F075366EA06 /* FBSDKGameRequestDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 456A612700CF066CA8E77976387D7AD9 /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = A24703334123300C7A5DC51D092F1AFE /* FBSDKAccessTokenCacheV4.m */; }; - 45B6DFDCCE83BD9FE36DCD09496A8AD6 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 77E1C856F9E6CBC3DAFC3F560FEB269B /* FBSDKIcon.m */; }; - 462612245A0C6F4EF354C7521A3BA05F /* PNObjectFormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8CE31FF3AAD59EF217D52466217801 /* PNObjectFormData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 46C8B745A76BCED9F1638C20B749B7B7 /* SPTCompiledExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 03FF433EF175C201E7EC50611214A946 /* SPTCompiledExample.m */; }; - 47368195F19C1C46383355E2F9192403 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 1755DD410FCEDF8A2C8E08D839A2CEC5 /* FBSDKURLOpening.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 48315CA2F57C4A84F21B045208FB3064 /* PNObject+PNObjectPOSTConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B926C2C5A4A1AC59AB31BFDBC8E07A7 /* PNObject+PNObjectPOSTConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4916752367EF5E2CC0FF6B729E6847ED /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 226B2BC5EAF4EB8468B2C989D5CD0806 /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 492E0F81FF29B651268BBC58F52A6B86 /* RZDataBinding-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C006FBBC73377EC9A4431A356710F5A /* RZDataBinding-dummy.m */; }; - 4931C07E07520F809488D789C5EB2712 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E6F5A48940CEB8FB0F3405324B6C350 /* AFNetworking-dummy.m */; }; - 49986E9ECBCB45781614F54F15210768 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BEDB38D6E278A58C8A59B1A7DD33DC2 /* FBSDKButton.m */; }; - 4A76C618F60268660B024DC54B19B0A1 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D521EF5B9E56E155A5DA9D5595F7C881 /* UIActivityIndicatorView+AFNetworking.m */; }; - 4AB3B89F758FCDD2F00974B052A01E46 /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 74DEDEDFF18AA47B62133705F28F80B8 /* FBSDKLikeBoxView.m */; }; - 4AD98DB3C8CD46AA2EDF65D8C567D07E /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AB9394910259FF62951218A126BE2FC /* FBSDKGraphErrorRecoveryProcessor.m */; }; - 4ADE9BBFD6AC48AF95EB8446D4684F27 /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7513CFDFAA4E1AC9F3E0758174E9B83B /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4AF2E480F668CE59755717CF6F1E9057 /* NSMutableData+AES.h in Headers */ = {isa = PBXBuildFile; fileRef = E075F16267D1B23E02CE22AA226F390A /* NSMutableData+AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4B57A6F4019CD902317D4D15342633D9 /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 08D9341033C71F59BD76AF80DAB3C66F /* AFAutoPurgingImageCache.m */; }; - 4BDBBB75791153E6EDE0F469582C3125 /* AFOAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 274548FF8D402009D18E89A75B703E08 /* AFOAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C4298D11A87C3FA81CF25C82D421845 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ABCFC6DC888341D4E7EBA03DCA6B8994 /* FBSDKLoginManager.m */; }; - 4CA1F64D6A78A6B04C0F7238C84D8610 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = A184A9239C81C7D3A176CFED80C1D523 /* FBSDKGraphRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4CC29A85E310674DAFF5BACCC3BA935F /* FBSDKURLSessionTask.h in Headers */ = {isa = PBXBuildFile; fileRef = CF22A7A862461ADDBF6314E4C63C3553 /* FBSDKURLSessionTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D1B4825F1CC49FEE7951A0DE73D5402 /* SpectaTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 47299D3D86205AFECEB38FCFE7E291C9 /* SpectaTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D45BCD71A67412E66CD5F5FBC09817A /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E0B3CA33E133107D98130512D5ABCA4 /* FBSDKAccessToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4DA62BFA89CEB176F4FBCFEAC444B1BB /* FBSDKURLSessionTask.m in Sources */ = {isa = PBXBuildFile; fileRef = A298A8B4FA902909A38E1FF9DC786725 /* FBSDKURLSessionTask.m */; }; - 4DC019EBC0437E505E4D0C2B1FDD7565 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FF0409608986977B99F59A93A1CA8D6 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4DE291731DC4B09C7EE55342FB8EB195 /* EXPBlockDefinedMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 64E33BD2479294C9D42CCAE10E99D628 /* EXPBlockDefinedMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 4DF82289D87CCE08962DDB38385A527D /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 931602784F81FC5F0637EF3E7B4DCB89 /* UIButton+AFNetworking.m */; }; - 4E12A3E10CFDD210DB39E9EBE8317572 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C389F8C57479C85C7090D73FB7FA9E0 /* FBSDKCoreKit-dummy.m */; }; - 4EF7C6AA4CF67637C088A692D97A3F3C /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = C9E743A8CAC5904C22B2693CB537CDAB /* FBSDKAccessTokenCacheV3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4EFF12BFC4AC7C62227D75954539ED2D /* PNObject+PNObjectConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 84FE562C45F8ED5DB5C65AFF6293562F /* PNObject+PNObjectConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F0BD87C7F25FDC953B6CD83BDA64CB3 /* FBSDKShareMessengerMediaTemplateContent.h in Headers */ = {isa = PBXBuildFile; fileRef = B970FAC57B92374DEEBD5FBED0713E0D /* FBSDKShareMessengerMediaTemplateContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4FF263E71134A1B69876DB33F6CE2B90 /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8668A46046AD973E8CFBC1CE133B6786 /* FBSDKLikeButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5040181D8857BDDEDCF2F1AF40F96BBD /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B199A3F2DA53DD054ACD84E1EFD468C6 /* FBSDKLikeControl.m */; }; - 504823050C9106E2EAE7F37A0008306F /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = DFE96E0182677627BF9004910D997204 /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50656201B47E491AD58231E71330470A /* DJLocalization-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 33444B08145A331D85B322E2FFD5B509 /* DJLocalization-dummy.m */; }; - 50FA7FB55AB0B6EE328F078F83953B88 /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 606A20728ABEA2C55C5E70041F584CB0 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 51248D48597E9CA126CCD79F2CA731D8 /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F2BB3A37FE79EFDC3B9E6F1C8D1BF15C /* FBSDKShareLinkContent+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 51251C1E47DDE11C4ADC69A6AC173311 /* CodFis+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = D2D354169C2DEF1A66D64D0F5CBA7504 /* CodFis+Helper.m */; }; - 5149A2FBFC82FF90F424E1C66A6A19E0 /* FBSDKShareMessengerGenericTemplateElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 58D5028E4C8BCED2E915CA3B6EFD6441 /* FBSDKShareMessengerGenericTemplateElement.m */; }; - 530D070E0E04E37792153D7ECEBCBB14 /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = 4451BB26B646DD6B5974BD3BFA3FE0EC /* EXPExpect.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5474BCEBBDBDA530287ACD7A6D6A2D05 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F96D729DE3542FD79C39F64559159C9 /* FBSDKLikeActionControllerCache.m */; }; - 549DEFC9FAF64B596B68DF254BF36744 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CD4FEDA02383F2282ECAB7B869631CA /* FBSDKSendButton.m */; }; - 558CBB2413898CE8A5E21E8D0BCEE17A /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = BC471364835E49717263F070CDE2FE65 /* FBSDKSettings.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55BA02495EB085FDB538A23E4BBE3766 /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = DC6D511D07823A0A99B3C177D48AEDFD /* _FBSDKLoginRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 57B54BD5D85F5BABE3CC4F9883824D63 /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E7290D84AFA95237D882664949AF43FD /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 57BCDE287B036DAAB6BA95EC8B8B8571 /* FBSDKShareMessengerGenericTemplateContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 23DD6EC6D7063AA5D086642C0CFBA167 /* FBSDKShareMessengerGenericTemplateContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59474AB9E989D6A93A3FBCC7992F664A /* NSDataAESCipher.h in Headers */ = {isa = PBXBuildFile; fileRef = 7579A421D264AD066DACAF48D5B02B7D /* NSDataAESCipher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 596433C80F3DE2E83672C744FF1F62C6 /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A1F0C57AB361A0B5448BB5A8C0652B3 /* FBSDKAudioResourceLoader.m */; }; - 5988A752ACC6F8A00AFB5333484372A7 /* PNObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 31AB445EB5B9A76AF0A31B0358630D97 /* PNObjectUtilities.m */; }; - 59E81EF550ED5634D936FF64F3C5E17D /* FBSDKPlacesKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 323EA10A630576B4449366F0EAE52579 /* FBSDKPlacesKit-dummy.m */; }; - 5AFB53D54EE2316DC4023811A7CCE6D3 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 37287A6C0CA17545202D7C45248C7F06 /* FBSDKGraphRequestDataAttachment.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5AFF9E2DE3A73D45DD58D5DA876432EE /* PNObject+PNObjectDELETEConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E8F08DC670EA8205CA05FE35171BAA /* PNObject+PNObjectDELETEConnection.m */; }; - 5B64BBFA0CD5D63E1E5809D92B6E7FDF /* Expecta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 205526DE5340AA0EB851E8D34BC83227 /* Expecta-dummy.m */; }; - 5BA1F16E65D3271517D45CD86E3E29A3 /* FBSDKUserDataStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 703420D6AEDF7263176E2A6B5FF420B3 /* FBSDKUserDataStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5BFC31C26836F6EECABC630FEA42C47F /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5ECE22AA714C9BB53DCDC4FBD072C712 /* FBSDKAppEventsState.m */; }; - 5C6FDDA71C273EF1F1E046C1467B3067 /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = E12197EC5BF60887660A76FD829E8A0E /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5CA4BF972E5149C07FF6797B2419DA69 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E7323524C148345091271F799EE35D9B /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D2182FD08AE062F92FE88931DBFAD46 /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F23E6A7CCC11A73F926A17E7BFE16A23 /* FBSDKGraphRequestPiggybackManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D263D870F4DDC61D61A4E649226BC12 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = CA5B655BF6FF4897556A74A8A3A66AD2 /* BFWebViewAppLinkResolver.m */; }; - 5DBF4B42B1928DBB6A347770A24B8C25 /* XCTestCase+Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = E33B851B183ADE1FA936A2A9C738CB43 /* XCTestCase+Specta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5DD7516B5E3585855927D1146F75E389 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F6CDCF57E54FF1CFF72622445A698CC /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5F7AA3B0AEC77D6DF21ADE213C80D711 /* UIStoryboard+DJLocalization.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A33DA3C920305BBC61E8D81434CA15E /* UIStoryboard+DJLocalization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5F978E50EE337C460D3EF59FACEA5F06 /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F3C82CA9BCD1A5B0FCEF6FF7F9B5DFF /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 600D7885388C1092338A4568C4C59072 /* FBSDKPlacesKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAC68E37B0CC26B916B2C972ED26B29 /* FBSDKPlacesKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 60111251C8646FA2E47259CCCE8460B7 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = D391B61CBB04FE8ABA143F2DB2A9DEE2 /* FBSDKCoreKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6077978DFD6AEB722C14F5454152CB13 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2DE3F1BE6C875B3EC6C6D3BCBBE51A /* FBSDKBoltsMeasurementEventListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 608D70BFC901F0E0850FE905E1B22ED5 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = FB5F8762D5C07C9D2811801D81762DE6 /* FBSDKAccessTokenCacheV4.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6103B0C9AE3D86390099F01C063DA7D1 /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 36D218DC7AE122AFC8B53E9A609D15D3 /* FBSDKLikeDialog.m */; }; - 6125083C466D040C555D34186F555A71 /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FB9BF4E318472196FE02A15F9E2FEBE /* FBSDKAppInviteContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 612ED10A63135D146B827CE33308890A /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = C2EC2E0E8FA24217C1F6578088D45AAB /* FBSDKAppInviteDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 61A4A967808D0BDAFED867D708198A7A /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F98A877909D0481D378DB77DDCD1E0E3 /* FBSDKAppEventsStateManager.m */; }; - 61E398EBE7381BD52A0432F06D20F2DA /* ResponseConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C5E6D8755BCF17AFD627A8D4C4CA67 /* ResponseConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 622EFC5D70F5D017140A44AE3BD6C525 /* XCTest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 473A6E85D1BFC301D7A586D8FC067FBE /* XCTest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 622EFD6D2100D9051D89920B9996B302 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0F2D27F7A09E8498AACAE42D7A1780 /* AFURLResponseSerialization.m */; }; - 628239A60B30AEBD2F4A910F9F633792 /* NSArray+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = B3019F0E31A4BEE27714C2F10B1F5FD0 /* NSArray+PureLayout.m */; }; - 62CD7EEF2ECEF4C717B34EAC31FF1616 /* FBSDKAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 573A51D5E127CF2886394160D7BD2F03 /* FBSDKAppLinkNavigation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 63A5D66809EDA1E856FB05BEEBBC915F /* FBSDKShareMessengerGenericTemplateContent.m in Sources */ = {isa = PBXBuildFile; fileRef = A2DA433F3522890248D9DAB1D97CB95E /* FBSDKShareMessengerGenericTemplateContent.m */; }; - 63FC78E420303599334F77814AFD92EC /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 60DDB47BCC36A082BDADDA61FF885C9A /* FBSDKInternalUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 64382C59124DAB31C0FE1B8FBD58471F /* EXPMatchers+beGreaterThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 3292D60C81D863C85DB658AE02DBD614 /* EXPMatchers+beGreaterThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 649351C8A1DCCED1BCEED150FC385D2E /* PEARFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 05203B6E52E606A94BE5C6D83DE66E2D /* PEARFileManager.m */; }; - 65E08733AD44AEF2C331C3AB7E202554 /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = F01B1A800F49F2274FC123B2C8BC8A5A /* FBSDKShareOpenGraphContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 660148CE4CFAD377D84C5CBCB40D1691 /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = BB72CAC232E284BB20997A0E504D4C81 /* EXPMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 660A7608EA012E8C1DC1662AE20083CE /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = 37EB26347BB4DFC8DA1383518BAE555C /* FBSDKWebDialogView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 663DF12A83821F8F6FAE312C5AD4025E /* FBSDKCodelessPathComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C467E3B1B45720906379D75092FAD95 /* FBSDKCodelessPathComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 667A9135AFFFDF5CF39767073454D40B /* FBSDKCodelessParameterComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 438004F3EA56A0997D8DC72AB1E872F1 /* FBSDKCodelessParameterComponent.m */; }; - 66E4F66F6C7D19706C21F97C8121AFB4 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A2448A7336544D2B9F6BAAAFAA14673 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6783D65D5490CF526EC449E5D769C4F3 /* BFGeneric.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D0A99B2023C12BABCF67DA0F8B278E3 /* BFGeneric.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 679A3F2EA0B058BFFCA9920E67F1E558 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA9BAB3196387E0314C46866E835E46 /* FBSDKSystemAccountStoreAdapter.m */; }; - 67B555ACBE5C6DC20FDF554CD01F9A1F /* FBSDKCameraEffectTextures.h in Headers */ = {isa = PBXBuildFile; fileRef = 22D3FB3D32CFFB5A4A7F571CDF9BDD23 /* FBSDKCameraEffectTextures.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6832975463D985146A4C9AD0BB93CAC0 /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = DD44F8C72BB19AAF2BDFBA1D2DBAFEDD /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 685FA7DE0DADF7840F125B5D17764A3A /* SPTExample.h in Headers */ = {isa = PBXBuildFile; fileRef = A8055EB4C162D7C55AC079B761F72B90 /* SPTExample.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 690368971F2E9CE324EAD3E5BCB09EC4 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FDF542EF058BB0A95BAE3B0CF1AEE20 /* FBSDKBridgeAPICrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6924AE2C8D5D3E2BDF6411698B8A6BA4 /* SPTExampleGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 09CC72C94998E3F08716C55214E8DBEF /* SPTExampleGroup.m */; }; - 698450776E546993476421851C8C9E59 /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FFE608C9A0239AD81100BCF0613F55A9 /* FBSDKShareConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A3402625C37F719805DFA566F4D450B /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 93560A3DEE1CECCDC107CFAB3BB499F6 /* FBSDKCloseIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A9077D9ED73D8F084547624D2295E02 /* EXPMatchers+beLessThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E95CB506B2439A75B5B95A981BF41DC /* EXPMatchers+beLessThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6AA7F55001F7351BF7B7787DACF76112 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = E8F0AEC6BE33E5FD1E96549A225F2770 /* FBSDKBridgeAPIProtocolWebV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B5CDE3D3C40393CECAFAFEBBB0D698A /* NSString-Helper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E06A4FD0148EDDBC7F0A342EEB7F2C /* NSString-Helper-dummy.m */; }; - 6BA8CE4B55263E270BA4AEBE3E70E761 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F5917B42BB69D38F16B5DA236BD1F801 /* FBSDKLoginCompletion+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6BE6BC99B6D907D0323D873560E50953 /* PNUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 13428BB285271A36CCEED4F3ECFB667D /* PNUser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C8B06985746612ABE8D97720DADAE8A /* nv_ios_http_status.m in Sources */ = {isa = PBXBuildFile; fileRef = C0B91BF7F5022663D654DC2E26B78A76 /* nv_ios_http_status.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6D5DEEE8EAEAD1ECFF1D9E6F4D9EB3E4 /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = F9E40DA91ACB8A442FC9A18D88852045 /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E61EEFA86C08E2215BA43070C28D728 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = F4729C3F5071C54DEFEB4216B8B2323A /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6EAE68AF1C3675D0A6EF837953C810C0 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D356FBA9BA750D10CD0A64F98C6E0FC /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6EB647BD1B9DE3803A530BBF22F389E2 /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FEB1FA457053F713CF353AD6F0409CC /* FBSDKShareOpenGraphContent.m */; }; - 6F113E5FC370DCCD136805E92AA6E286 /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 88C1AB3D247B276DA891FB403754FDD8 /* FBSDKAccessTokenCaching.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7030759772B01F05620150FDAC7D2043 /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = C58561CD2B4083F279873492FE620845 /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 706FF60E17254728EF4B6F2C0E3E6DBB /* FBSDKAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 01D09DB0E935D388A430A6170C8C64FD /* FBSDKAppLink.m */; }; - 709254FF22BE9F0FA57F75D74F0BAF35 /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 90EC50FD3AFF315F5139B2A96D7A889C /* FBSDKAppLinkResolver.m */; }; - 7148ED4F09ADB5724647B175681F43AD /* nv_ios_http_status.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F1B10111FE3A6954232AD285EF2B061 /* nv_ios_http_status.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 723EEBD7EBE3B3F7D1612218AD41D5CD /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = E881A81652A1D0BAE466BDF1E38A7A9E /* FBSDKGraphRequestDataAttachment.m */; }; - 72C57AB2D67201704CF966637360DD8B /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4905BBEB19AAE0AB35F26F8F0A891C9B /* BFAppLinkReturnToRefererController.m */; }; - 72D51D3F0F18B9F8B5B75C23FC55FD1D /* FBSDKGateKeeperManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9011A772C24067C794791AEC930D8E9D /* FBSDKGateKeeperManager.m */; }; - 733577888FC1EF0B9618414A68E28647 /* FBSDKAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2416AFA5E5D17796B7F4B7DD8EB11D7A /* FBSDKAppLinkReturnToRefererController.m */; }; - 73C78C225B11ABF105BAD8AA9332B033 /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A774FE4B93A9712D216B5CC65BE17CB /* FBSDKProfilePictureView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 73FE9194E5401C931F15E4AD9588AC97 /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 98DE9A917E74C29FF0C04D3F34577E34 /* FBSDKAccessToken.m */; }; - 740667B5E21C75E36A436B6527883CFB /* EXPMatchers+contain.m in Sources */ = {isa = PBXBuildFile; fileRef = 9287095BE84FE3329CB5E8222A1E260F /* EXPMatchers+contain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7442B0F755193F24903A4E658847866A /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = A96A81448CFB04966D204959D007DCAF /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 747F329080B138F5A187DD770EB34287 /* PNAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = FE44E0CB7E59F22EC909AA1CE0B0833A /* PNAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 74BD6EA63472F447A81A316FE8914104 /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B782BC239707388476B0CA2E1DE9758 /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 75591B618278962C31B36C2F2519ED11 /* PNAddress.m in Sources */ = {isa = PBXBuildFile; fileRef = F1A06D1F7E18B0171C5B4A4E8DFCBADA /* PNAddress.m */; }; - 75C312CEC1C737CAFC84563F54509DB5 /* HTTPStatusCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = B9BB38B31600C2898B43E4370DC1DEBC /* HTTPStatusCodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 76080290D275B0929A7BA893204AA4BE /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = BDFBAB4D2E42A0039BA1993C7797D48D /* FBSDKUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 76AB87F41C396B78EEA5F42E3F3E87D0 /* PNObject+Protected.m in Sources */ = {isa = PBXBuildFile; fileRef = 095C5D2657B6C18E9BADD9BD60987D5F /* PNObject+Protected.m */; }; - 76DC5B8FFD0FFD75C7ECCF26223C864C /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 3402E6F10B522B2C59BFFD3D0E53B5D4 /* FBSDKError.m */; }; - 76E184465B6EF5CCC71FD3BCB0EA66B6 /* PNUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 36990228D26480FC0CD775CFAB1D6C05 /* PNUser.m */; }; - 7715D828E563776C1BC279C6CAB91C40 /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A71DEAFC5D1009BF6562C06AC1F291C /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 773BEA3FAAE0997715C221C487EB0F59 /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 694ED0A520C178548F0E7A0208477BBD /* FBSDKProfile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77D2DBD091ABBC8CB9F64F67CD2DE718 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 910CB851BE5295852DB67915E3780799 /* FBSDKServerConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 782D593E3ABC8D9ED33D07428C74A0E9 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D96068655E217940EC090E765BB43E4A /* FBSDKAppEvents+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7849CA8886BF558557A9248D6BDB02CC /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E96FEB04D1490C013EC27F7E6CE71C84 /* UIRefreshControl+AFNetworking.m */; }; - 784AC80BD7D4B2A6E9E64C17E2E347B7 /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = 0221477A84DB7AE745BA7E5137425706 /* FBSDKLikeObjectType.m */; }; - 7895827122C110CD4FD94EE3EFA5501A /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CF577695B20B43B340A19B7A913A702 /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 78B8BE94445C35BDAAC5FFBDF9FD7AEE /* ExpectaObject.m in Sources */ = {isa = PBXBuildFile; fileRef = F961523E35F56B47186A1BEB60D9F938 /* ExpectaObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 791D1ACAB34690FE79503B9947F1FBA1 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 47B0EEF66C09BC69BEE0F1E6EA4E4E5C /* BFAppLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7A06ACDB2006C0BAB5F57B0864425FF2 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E05958B26EC4042BF5AD4CFF089FAC3 /* FBSDKBridgeAPIProtocolWebV1.m */; }; - 7A217415A41DE6A06320429B1B21791D /* PNObject-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 856C7F85343BF8C08D2A9C78C15EFFED /* PNObject-dummy.m */; }; - 7B87CF545BCF960866A8509FB65DAA00 /* AFJSONResponseSerializerWithData.m in Sources */ = {isa = PBXBuildFile; fileRef = 591DAF3CD399270B45B09427B91CEB50 /* AFJSONResponseSerializerWithData.m */; }; - 7C2EA3131444E4FC36EDAF006A8E08A4 /* UIImage+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = DE12B7C44CCA2977928D828FA0F06149 /* UIImage+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C90690CE642CB2CE06FAD18D1865323 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = F91BF8019854B2B40EE1F12EEDB6FCF1 /* FBSDKLoginButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7CB2BF3C7E4544249F9A173FC3527924 /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9521C06B9845141BD23CA3B646A34D8A /* FBSDKShareVideo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7D382DCC79396B351FFA1A681E508F43 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 87A1C683F9BBBCE5E83E55B5C7944670 /* FBSDKInternalUtility.m */; }; - 7D52500D3FDDABE7E762E2BA32A829A8 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = D147AE625F780B9CAA047297593B0642 /* FBSDKAccessTokenCacheV3_21.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7E5F26F88D173036FE047C2E9765D0F8 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 634A6D0CE66AD43D2448801BB07FB84F /* FBSDKLoginConstants.m */; }; - 7E6290315B3DB1962203187523CA830C /* PNInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = D6FF72EAB049F36694ED80195CEFB913 /* PNInstallation.m */; }; - 7FE1F44B78F993DEA4B39C317F07D847 /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D119B74AEEE53B239E3BF8A882A4E1D /* BFAppLinkResolving.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 807A67F3000BB2E93CA78A9780EBF90E /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F42EDD249E020DA7B4651744A7C3181 /* FBSDKLoginManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8121BA41DC0BC7F18CA5428839AA4040 /* EXPMatchers+raise.h in Headers */ = {isa = PBXBuildFile; fileRef = D4F81C19AE74129BA00955CCAD756210 /* EXPMatchers+raise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 820CB15C513F2BA704C19F14D8F5551B /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6D228AE815C06E133EF64C174C72E8 /* FBSDKLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82160641E649C133D36DECDA65B12EB4 /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = AC78466C6503F2605491E70FBA411AD0 /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 827306C210FF38DBAF3E6C91FA8D4FF4 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 89C12DCC14242D50F00DB197FB432DD2 /* FBSDKLoginButton.m */; }; - 8297FD21B64B012772B096D0505D372A /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = C38E84A00A266EE60FD62DAE91CFEA16 /* FBSDKLikeButtonPopWAV.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8341BAC483AC0FA5AD7A859B2D7E363C /* RZDataBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 1334C677ADF397C0DDB7298DB2903C43 /* RZDataBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8380C55715AEEFB35B07C5A172AFB155 /* FBSDKURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D72D062B7C25C77BDF7FE2899F37579 /* FBSDKURL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 83ACD50059EAA83201765D377E297C81 /* PNObject+PNObjectDELETEConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D05D92A891D88478B23ACA10C24B87F1 /* PNObject+PNObjectDELETEConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 842837419CCE9CDC87632A14F4EDCE83 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = FFD15CE16D879EDCC9BB4CEE6E57E5A7 /* FBSDKLikeBoxBorderView.m */; }; - 843D825F85404AFDD19EBDEA51DCCA6B /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3048AD4F8EDA8275428C4C7811A80A4C /* FBSDKBridgeAPIRequest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 847CC4B90F07C5024194751E754D1CEF /* SPTTestSuite.h in Headers */ = {isa = PBXBuildFile; fileRef = AD3C80F5ABD635FCEEAF5AECDE2E7B76 /* SPTTestSuite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8527C392C4672EA0DC765BF16B54862A /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = BC80862D881A63BCA79DE6DDC918B107 /* UIImageView+AFNetworking.m */; }; - 856B47D9261866D7518102A41DAA8FF7 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = EEAA97C42918442A9D343A8584C06BA3 /* BFCancellationTokenRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 85AFFE1B5492C45C944657FE0D88286B /* FBSDKEventBindingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 71310AF7EA7E6C52FA807CAA53194991 /* FBSDKEventBindingManager.m */; }; - 86013E3F57948C6BF2FDBC281C41570A /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F0B3D551C9DBDF26AFDD994EE7DCBD4C /* FBSDKLoginKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 86E82FF06A948A071AB219D3C384BA7A /* NSObject+RZDataBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = F88E96559DC569AFF4344537FB9D25C5 /* NSObject+RZDataBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 86FD8CFC129904FD6CCA48958E061D55 /* FBSDKShareMessengerContentUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F263BA13CB6D200FFCFB703248D796 /* FBSDKShareMessengerContentUtility.m */; }; - 8772BC040CEFA103A8EF256FCFC06765 /* Pods-PNObject_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1E3FFC89E664CB08207E423CDF1CB6 /* Pods-PNObject_Example-dummy.m */; }; - 87E3E8408EE856438E5149336B58FFC9 /* DJLocalizationSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FD0258FA67F6312F538FCFA66ECF893 /* DJLocalizationSystem.m */; }; - 884BDEF749328B492C5602B3455C6C86 /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E1170EA7FE107E90826D0BF6FA9CC2 /* FBSDKLikeBoxView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8996AF75B66A11AF74575C329451A936 /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AF06C969B2C2C97DA627F0C3C4FE1EE /* FBSDKPaymentObserver.m */; }; - 89CEC6535AFFB3BC339553C36AF707EC /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F80D89CE379089B4C6871717BB4E80 /* FBSDKLikeButton+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89F6AA6386BE29948AA66450EF70CD0A /* EXPMatchers+beFalsy.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2A3BEF3CD518D6BD82EC679DC60DCD /* EXPMatchers+beFalsy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A299FB00D3AFF3B1C761417CC91C58A /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DF255B58A329E38BC3725F6C1718D34A /* AFURLSessionManager.m */; }; - 8A2C30B037DDE21189FC6D217576C619 /* DJLocalizationSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 597048BB4B8C11A8571132F090140004 /* DJLocalizationSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A5B72A126547D6C812B2FB44E876AF4 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 72A35EB40312EF278B4D7F556322D40A /* FBSDKGameRequestFrictionlessRecipientCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A732A16036A2FDAD3C9618984EB9F15 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 3914AF5468160CCCABE4E00BBE8D0C3F /* FBSDKAppLinkUtility.m */; }; - 8A79FFB248E9955E448982F64B3DE140 /* FBSDKShareMessengerURLActionButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C194550C79BFF4F3BD784E2F397905E /* FBSDKShareMessengerURLActionButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8ABF83D7E78BF47FBC028DFF9542C335 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 4356A5464CA359F3AAF442305B61C0E6 /* FBSDKGraphRequestMetadata.m */; }; - 8B131A472B68C36AEB6B1CFFCECE464A /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 35264EAAEDA442D61366C2579D737096 /* FBSDKMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8B2BEB38ECC367F3452CD67D353AA21E /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E71E04C89033BABA0BA2AE1FBFB36C9 /* BFMeasurementEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8B399E946AD1773EA4B06C4E61342C9A /* FBSDKPlacesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 86E6DCB5CC9057A882CF430FD43FCA28 /* FBSDKPlacesManager.m */; }; - 8B4A888A598553557FD5E554B1869E76 /* FBSDKCameraEffectArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = A410EBF4B429E2F42DFD00471B526EE9 /* FBSDKCameraEffectArguments.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8B9B6F936EAD4802B58A3202994D1ECF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 165E3EA43C3711455B28381BB81B8695 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C80CA7960ABD2E07E31BB751E8B4C9E /* PNObjectConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = CB1585C12AF2712FC8A4E7B8B8D863E9 /* PNObjectConfig.m */; }; - 8D11ACA6AF1DB292B1CFF4C0205C51F0 /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BF557EE92E2C1880BDEE22CE07CE5430 /* FBSDKShareKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8D844A897C252A4BC5A990B088120C27 /* EXPMatchers+conformTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 72EFF8E7F7BAA04608D76AC14CCF31A2 /* EXPMatchers+conformTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8DC4443B35B3586B8AC917797647E366 /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B806E99B38970FADA34F5BA7380E4081 /* FBSDKAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E1276E77FF9EFDE159D2E7D3E6C4721 /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = E08596D6F1F254C28C3372465E1EE717 /* BFAppLink.m */; }; - 8E128B01B2CB2BD03E91AE7FF25F3F11 /* DJLocalization.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BCE7F7A87D04C5891CCC6BF68872E00 /* DJLocalization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8EFCF0B87B5096003C7AFDEDD4A42323 /* SPTCallSite.h in Headers */ = {isa = PBXBuildFile; fileRef = 350832271DA41A0CDA90C2D109C288A7 /* SPTCallSite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F28879286915373FB094878B3CD0214 /* EXPMatchers+beSupersetOf.h in Headers */ = {isa = PBXBuildFile; fileRef = ACEE1C7FF14C3816B1FBAAA85CA1C308 /* EXPMatchers+beSupersetOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F44CADA2F6E4DCBDBEBED9BF42E9934 /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 74183EA0C98FDD0C21C76BB3EF08A551 /* FBSDKApplicationDelegate.m */; }; - 900A5C13CF40C08194F4249F6DCBEF0D /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = DA33A6F563BC549ABBF2614E294A7A88 /* FBSDKSharePhotoContent.m */; }; - 902C09F3912C0DE87AAC6D5C69699CFD /* FBSDKAccessTokenExpirer.m in Sources */ = {isa = PBXBuildFile; fileRef = FD54212F3F49662E7496C1424579F714 /* FBSDKAccessTokenExpirer.m */; }; - 902EB295597FDE2452897CF427756E64 /* nv-ios-http-status-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F82B8B52280513D450B72898E138C793 /* nv-ios-http-status-dummy.m */; }; - 9250DECACCD8A0807C6828E50CCCFE6A /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 550DF2E78B55F72CFDA12C2C72E41082 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; - 9286B9627358DF5D7FBD4C66742ECF34 /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = DB2EF850EBCE09CACDAC3FC08C5A6316 /* FBSDKSystemAccountStoreAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92B8BFBF73EB6CA19F40B82B11D70363 /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = E2C18F1DE394BBAA158B7DF75CCD1F50 /* BFCancellationToken.m */; }; - 930DFE7A7C0E8897AD9C48D2A289D5FF /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = BDD7FC61CF4EFCF8C1A4126BCA4F58EB /* FBSDKBridgeAPIProtocolNativeV1.m */; }; - 9364D869A81C48946007BFE5E5F2B8A2 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = EC9E958B12B7011BF73EFEEBD1E109EA /* FBSDKLogger.m */; }; - 937D855E531774439FE3A402843893B1 /* FBSDKDeviceLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D632F0777EB3EC788F19472C6E6A80F /* FBSDKDeviceLoginManager.m */; }; - 9435F2185FB8F1F920F74F28D9FBE849 /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = 15F9A8A62DACFD81B83DB82829BBA2B7 /* FBSDKAccessTokenCacheV3_17.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 943D7A03B91F45530811A4B2CF1C1678 /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF0042AB89E1A1C29ED9963E8D58B26 /* FBSDKMaleSilhouetteIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 955834F1FBBC2B2B57AD6CFC5C9D3ADB /* FBSDKImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 753B43030C94B5D482765D5AEE8AD428 /* FBSDKImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 95FE7AD05F56358F323316ADB389D9F1 /* NSArray+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A2FE75AF2CA28250A88813CAC29FA8 /* NSArray+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9649C3E0977C601124B165F614A8003F /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D83C014061E0574D9D69E704DE50470 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 968591F9BE33B80DCD2923CB0E27946C /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = F50EB83BD39BE11D2533696E6F5124E0 /* FBSDKKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9737A90D97365E4B64ABC1C17D006AF3 /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23768DAF0342C9701207F4FC0DF777BA /* FBSDKWebDialogView.m */; }; - 9791FBBE0A7A98C66984F2CC0DD31343 /* EXPBlockDefinedMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 27DD44A926F61A51075B512EBE47392E /* EXPBlockDefinedMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 97C34A7386E4EE92D33E9AAC35646083 /* FBSDKAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = E32E2DD7DF8121A3D4E45ECDC0D14A16 /* FBSDKAppLinkTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 98E0CBE196EAB87956A159467606E5AC /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 728CCDBCE8BCE04530872D25A40EC26B /* FBSDKMonotonicTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 99BFBE99E1A22245B809C60AF559CAFC /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 24BA06B392DB8D437D93EA2D46E6E6E6 /* FBSDKGameRequestContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 99ECED1C0B7A5C43B3ACB08FFE2F338A /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 552959FE670D63C938C2E841A05FE5EE /* FBSDKUtility.m */; }; - 99F88C201A81FFB30AA8C597BA83E7CD /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA2B01A6741A994FF113A8A4BFE17B6A /* FBSDKProfilePictureView.m */; }; - 9AB17B45667874F391B048A7A16AFA5F /* CodFisResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = A8991BDCA4688910D587A6E1C7B8F5B4 /* CodFisResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B1EFE6DE4A457EDB03EF9B34E7BF617 /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 7619B1BF2E2D702CCAAFA00584962DF7 /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B343883F082BF15DB5B07B293A1750A /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B2537B31361C13151CB98CE129F33891 /* AFHTTPSessionManager.m */; }; - 9C5CF0725B222176901AF0515E5691EF /* NSDate+NSDate_Util.m in Sources */ = {isa = PBXBuildFile; fileRef = 49D729484FFEBE88C7D8876222FA0F4C /* NSDate+NSDate_Util.m */; }; - 9D4A3CD450738122D81E268CD283AC06 /* NSData+AES.m in Sources */ = {isa = PBXBuildFile; fileRef = 726D8B7EE69194657847796A7870362D /* NSData+AES.m */; }; - 9D65BEC481A4AE632E38696C3CC2A1A0 /* VatNumber+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 549A9F71AE9170B962A91B44D91ED2AC /* VatNumber+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9D9FB049251334E4FE9410562C252F32 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E39F5220794779C50D89AE4C271A6D4 /* FBSDKLoginManagerLogger.m */; }; - 9DCF7992E8000C108DC900A22B3167F0 /* NSString+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 77974FF94F96E1308ACF8A44CD26A33B /* NSString+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E171C0F9990E5B1427C657C5EDC5F9D /* NSData+AESKey.h in Headers */ = {isa = PBXBuildFile; fileRef = BC10EA8FFDF08A2DB1D765F329EECAD7 /* NSData+AESKey.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E1AF6FEED6769F86D5343D386585EF6 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = C40F1DE62C95574FE8D8AF679382D0E4 /* FBSDKLoginManagerLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E345583493920D776D6DBF4D5D9FCC6 /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 36EAC42123EF9F27EDFC19D47B4E4240 /* FBSDKApplicationDelegate+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9EBF6C7BB5AAFE1D481FC88ECF18EF34 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = E281A6482328DF905399F975E90A072F /* FBSDKCopying.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9ED31CD8DFCACF06F51A88E559058705 /* ExpectaSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = D607292FA0EDC05A47EE34EFD7F7DB8A /* ExpectaSupport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9F1A518724A89BDFC274B0D19EBC21E6 /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8372F447CB58D6A7AEE4F77E6E1AA18A /* FBSDKTooltipView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9FD9C3873FFEFB06B0EFC348EBD3CDA4 /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 01AF86DAC152D8BE492546EFBBECD676 /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9FF7FE9B7F2E9D26A4449E7377AD5DFB /* NSDataAES-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F4F14083CD0AE5C686561B2C6BE053C1 /* NSDataAES-dummy.m */; }; - A025A53FE2F050ABD4D3D78C6B09AD50 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C95079CAEF32DDC64E1C89A7F39EDA8 /* FBSDKAppEventsDeviceInfo.m */; }; - A054A5283AF7F8320A2AE5E035F64413 /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = 16390584C10137F0595960B2FFEEE130 /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A0D66110DEA3DF96063B779073CCDF4F /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D2EE10241E3819E49B5C2F29028E57C /* FBSDKServerConfiguration.m */; }; - A186AA6E4FDBBA2E17C50A4F36E3D169 /* AFOAuth2Manager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A890DC51AD91BA9FFA1613FA801318E /* AFOAuth2Manager.m */; }; - A1DBEC43A74AB591D124082B553AFE69 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E32B065D58A2B4AFE2422A48B8F7A541 /* FBSDKLoginKit-dummy.m */; }; - A223DB95BADE8CA6350C6D839E8006F8 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F10622A859F51223BFB3719B712B0DC /* FBSDKAppGroupJoinDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A451F5481F36852FD7046D3F628C11E2 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 42990E7EDC81CEF4009E53A783446E0C /* FBSDKLoginCompletion.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A4961564C76B4356F6119763931588A7 /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 418E169913134AAC85D7BD3CB9C4D4E7 /* Bolts-dummy.m */; }; - A5C7D257AAFB512208845FAD808E6073 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = C17F6454E13C9663C48BEB635BE2105B /* AFSecurityPolicy.m */; }; - A7677CEBE8C676B695C959384BC57583 /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = 49326D405F247F73110BCF8B55BE3036 /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A9B2B355214771031DE427BA9BAB8733 /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = D901E6042A710EE92A50F390A2385645 /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AA0FD9848E49AAB39F0C733B725CAE71 /* ALView+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B4493384AD7A2DCE8136BE1E319516D /* ALView+PureLayout.m */; }; - AA1224AA5D1FE230F8776B2FD4C44B64 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 31679FC9974982AA582E5C4B21F49015 /* FBSDKAppInviteContent.m */; }; - AAD9EEE42FD921B664A3F6B5008E3CF8 /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = DEE4A5FC5FA4E4D6868D5FD9D957F62C /* FBSDKTriStateBOOL.m */; }; - AB3D8E75A0DAEC2949F98D48182FBD5B /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B4725411032D487B7C207E9F2B84E0F /* FBSDKShareDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ABC263D1031969C1D71B3041C4DD4755 /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 85D1C691880860955FF8B13B8109A98D /* FBSDKErrorRecoveryConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AC44DE40BEF8C05542070EFBAFACA661 /* FBSDKWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 19FE382DC78491713543561BBBF1ACB4 /* FBSDKWebViewAppLinkResolver.m */; }; - AC9CFE383D39E16256D56882ADE4FCC1 /* FBSDKDeviceLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 76A70F698BFE983DBF82C8227AB92226 /* FBSDKDeviceLoginManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD47C71EA1346DB59FDBE1714C8E51EE /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F1BE6199278BCFEF09116D734B09D /* FBSDKTimeSpentData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD4C199923F7CA4BC528E9D6393A7759 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 49F85DFE8E5A6AC34239ABF8277E1C53 /* FBSDKGraphRequestBody.m */; }; - AD605012F17A374A4E122900C378BFA3 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 571D00EBFC740915CC8BF1BF0CF042DB /* FBSDKGraphRequest+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD662AF33EF58AAA3B3EA8DA94527250 /* FBSDKPlacesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E3F7880B2158C8011C87CF6C9743E27 /* FBSDKPlacesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ADD90DF6C7D31810F9ADF616567DA690 /* FBSDKCameraEffectTextures+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 19490BAD0244A4E12B248DC26B839BA0 /* FBSDKCameraEffectTextures+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AF948C6632A0F6B5E995B937B31993B7 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 68E50591AC0CCC87D3E270FB013DC1AB /* FBSDKBridgeAPIProtocolWebV2.m */; }; - AFD138ADA91B4FCDC2F4A352964A3F96 /* SPTSharedExampleGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC39B114E45C2E927673D70C67596A8 /* SPTSharedExampleGroups.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B00B1DBFD57BE261FC3C1F720A2416CA /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CCC2C7B7ECA4908B30783AE4C009544 /* FBSDKTypeUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0691216975A0869780B661AAF32738D /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = E9DBFA6CE29F0364CCDAD26D5C469E45 /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B0CDDA9474468A04C15A805F90CC63B5 /* AFJSONResponseSerializerWithData.h in Headers */ = {isa = PBXBuildFile; fileRef = C3275DA10A054A3F7921D8193E25E8AA /* AFJSONResponseSerializerWithData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0EEAE3F44DD15E0483FC8E11A37250A /* NSLayoutConstraint+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FCD223F9878F02F67107144335D6B1B /* NSLayoutConstraint+PureLayout.m */; }; - B187325EAC5A946E0D6B44FBE22149CC /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B367B8D6C41F0896DA749F72427B5705 /* FBSDKServerConfigurationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B1BF1608B2900CEFD4F09E54237B3086 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = B117169BAC759590BB98AE1623DAF7D9 /* FBSDKBridgeAPIProtocolNativeV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B27731D7870ACB9E57C629A60864F3D2 /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = D4BB00D2BD5D097C64D11D9F9E5C72A2 /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B2B2E34B0EA3A2D01698D21FA3BA0D4F /* FBSDKSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B98C09EEA0F0C0EC0F64F559DB33544 /* FBSDKSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B2DB629669B8DDCCBB909D4C7AB56CEF /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 241114E6ED48E89A7730832FCCDEF2DB /* FBSDKGameRequestContent.m */; }; - B3726BEAE3E7088884EF5B4DA8A00FDE /* PNObject+PNObjectConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 29D766A1203304C908352A70FFA9A08C /* PNObject+PNObjectConnection.m */; }; - B3C7FD6BF422D28D02E63DDDC0FF4620 /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D02FDE3DC28C5271AA85D1C05D5EC1C /* FBSDKKeychainStoreViaBundleID.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B403AAFCF2C668C6CF5E3D24AEB896C4 /* SPTExample.m in Sources */ = {isa = PBXBuildFile; fileRef = F5EB804C14B0975944019BF7E7B3FBCD /* SPTExample.m */; }; - B406E031D2059063DE73037525A78E64 /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = A09BCDD2BCA71DE80AC4A9533FD9D46A /* BFMeasurementEvent.m */; }; - B40A58D8C94D0179F2775DEB419AD1C7 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DCF10C254F77068C96E2CDFC78408AC /* BFTaskCompletionSource.m */; }; - B42014397B63BA7D730F730A29C75D60 /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 80242BBD0563FE70C2FEEBCCD6A018A6 /* BFAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B487E5F672B23BF88E0E92DF3568615F /* PNInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F2045E1B5721C1ABEC5D62D592C4C2 /* PNInstallation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B49871FCA14AA68FE381F0C24BEE5FA8 /* UIDevice-Utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F1E3D7C19D043CE985CD26AEBA1634B9 /* UIDevice-Utils-dummy.m */; }; - B49A9CF379362DE0292F335B81459FA7 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CD930FB246DD35558DF0A705CE410B4 /* FBSDKBase64.m */; }; - B50D3CB4B413342105B295E3C97F0A86 /* FBSDKAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F60DB3479D89EE24B07B63FC5BAA6556 /* FBSDKAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B5457148EA7A5BEEAD13759AE3740702 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BA89D73886C8179F2DD51EECA66C779 /* FBSDKShareDialogMode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B56295163A81105E4A6D40E5DC0DD1B4 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D97CFF2F987725B6B78D935EFA9B76F /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B5EEA3FDB2A4EEA5468E0A6D2E81E71A /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5710DEE324135045C5E85E1EDBBFEE49 /* BFAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B64D85DEE857327E1A38EEB9AF83F359 /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1022E78850B9799A390121FA4E72649E /* FBSDKShareOpenGraphValueContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B67814E94FAC645E91C52EF002E961A0 /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = 52417322792DA7847140539AD1E36B84 /* FBSDKAccessTokenCacheV3.m */; }; - B73C3F89E7E9FCFD987824DF0DD49935 /* FBSDKHybridAppEventsScriptMessageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 17F1E6CE494509C9A030CBE8BA8DC373 /* FBSDKHybridAppEventsScriptMessageHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B74296BD93127B03BCCE75268C243381 /* PNObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA883A48286B9FA836AAD116A5F843B /* PNObject.m */; }; - B775A74175C9590B464B59DDB24462B1 /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 36DEEB1D20C9CEE6C8967EC6612AE4D2 /* FBSDKErrorRecoveryAttempter.m */; }; - B7A9B0821275DB29D1240878B12B1827 /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 48780EAE32D0050BA1DA3EA09E613B6C /* FBSDKLoginTooltipView.m */; }; - B7B751FAF2A2EFE61F4ABCA55379D2D9 /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EC323AE5EC694C58AACA37EA56DD8E9 /* FBSDKColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B82C81E98702A45E2765B93BAEC5BE8F /* StrongestPasswordValidator-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 17F91B456ADCD5FBADA773A357BEB3AA /* StrongestPasswordValidator-dummy.m */; }; - B82E6F93A321C222F1A65991CA162046 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CCFEFB3F60B7C03C9E254956B2654CA /* FBSDKAudioResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B890B155903A154005EE5651865DD151 /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = FCC4E649557ED5D3291F71B4D89FAB43 /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B96A7F9A9B09709BFBC64E9A70AD5504 /* EXPMatchers+beSubclassOf.h in Headers */ = {isa = PBXBuildFile; fileRef = A7851BDC39CD46B37607CBE96FF362DE /* EXPMatchers+beSubclassOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B99EB3B1145B9AFD0708D92B3B40AC35 /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = BB09A21246937F41D7479DD7D904734E /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - BA0DD61D8263AC3C2E23F674D333D3FA /* SPTSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5042B7D31D77B6F95E351BD17B643F8A /* SPTSpec.m */; }; - BA89E8ED9EC70698FA446DDD072DBBE7 /* FBSDKVideoUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 7038F673E9E3DFFA8B59D3F6B8F21FC0 /* FBSDKVideoUploader.m */; }; - BAB8DAF7B70E8B2E4B5E16B6CEE9CC1E /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 89C30A5ECEA9C68DE0DAE413425CF012 /* FBSDKShareDialog.m */; }; - BBC7464CD68B6860CEB96F7D162820CC /* RZDBTransforms.h in Headers */ = {isa = PBXBuildFile; fileRef = F5129552D4EDABC83ACAA3F97E631ED0 /* RZDBTransforms.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC6139D83A8C5AA7CD654026143F7BEA /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = B7B7AF3EA14D9351A999E7AA062F3D5D /* FBSDKAppGroupAddDialog.m */; }; - BC6AEE42E926DB1FFE5074FA01F0D826 /* FBSDKCameraEffectTextures.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F83F49018CE20D565DA7F1CB683A83F /* FBSDKCameraEffectTextures.m */; }; - BD070DA749633C9C7F4600ADC2A211F9 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D6E8FD3B0E3FFDCE14B06B88AF029D4 /* FBSDKCloseIcon.m */; }; - BD933A069DC28703FECFC4B5D4ACA64C /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 3150ABF5C9C0D2822665AFE650D52922 /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - BDE88D4CBA76A00F02B3C763C888C062 /* EXPMatchers+beCloseTo.h in Headers */ = {isa = PBXBuildFile; fileRef = BFB183FB9A8C21E8A1B2C2BE3514728A /* EXPMatchers+beCloseTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE592D8848201570E2C598E1E78F681A /* PNObjectConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 8979C061E911DB86EABEEA679BB0824E /* PNObjectConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE8295C4E3771FE39FA2CDC523623C1A /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 12B1D426C6C9FF6CCDD64703D6E5DB47 /* FBSDKLoginManagerLoginResult+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BFD599BA403C7BD26002ED3F7742F301 /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = BA43540311CC563BB250930A6EA182E4 /* FBSDKDynamicFrameworkLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BFD91A1C929C6C2877E5724CFA850D23 /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = D5382BA900C7270128420C06132D3F9A /* FBSDKGraphRequestMetadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C036434251013DBEEEFD233DF9906D55 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = B974808D7E1DCE12500E0CCE413D3FE7 /* FBSDKGraphRequest.m */; }; - C04DA1E565046BEF8539D81B5B2DB055 /* AFHTTPRequestSerializer+OAuth2.m in Sources */ = {isa = PBXBuildFile; fileRef = C06A8ED05937C9777C59B5352AB4BF5D /* AFHTTPRequestSerializer+OAuth2.m */; }; - C105A8EC420C24019F9CDC69EE1125FD /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = CF6278548ACA09ED08E53E362AC2D377 /* FBSDKAppEventsState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C1DC2A9EB7B4A41D33AE508114D482CD /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 12FCAC125C461790BE3DD5F1BA62F2AF /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C2A4A25A3E0BDBC5F8B0DF934159D591 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = AC6435A432236BB94BD1265AE00CA84D /* FBSDKLoginUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C2B290A18E64DAEE933E613FF738F2D8 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = CD7C42343EA4E9375F9C8787A29D207C /* BFExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C31E39A53C341A1195CC5843D5D5166E /* FBSDKWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = DA77070E05A05346F4AE2A2DC5D66D34 /* FBSDKWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C4F436981FBAF80D096DDC9F106D8496 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 73C4EE95261A817643E40926A0821908 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C52C26006BF633968AD16A807FAD1628 /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 1494E5A5D9A558C6227FFF8DC84DCE68 /* FBSDKErrorConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C58B6DDD7DD36CCD7769307172ECD448 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B638C25B25775A690E5D64EE127A86 /* FBSDKLikeActionControllerCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C5FD25B3068659B8C78B07BA391784F9 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F60B0E02293AC8E709CD993C57467DC /* FBSDKGameRequestDialog.m */; }; - C6151BEEB23DDF196D6E95CF193B531F /* FBSDKCodelessParameterComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DFD1785AB2CB6CC7B8E6BA2EA7451CA /* FBSDKCodelessParameterComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C6266199C8C5D915151C09A4B981F4DD /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C762EA4AA67E9FDAB588DA182CE79AC /* BFAppLinkTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C6AAD41B77B22C62B25D8E30526E9C5D /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = E0882FA044EA8CB080A8FAB44BA9A906 /* FBSDKShareUtility.m */; }; - C6EDB48E711DB3EF190C537E3F0DE2FC /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F22817755999F07C72B9926B2951E5E5 /* FBSDKAccessTokenCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C7F5581A893E93765ADAEE143A5DE180 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA8B7E84F01F3C9999DC0CACEDA96E /* FBSDKLikeBoxBorderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C82194DE44F522CE03A597BEC431463B /* VatNumber+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D3732D2047E04F8B6E125CFECB4CDA8 /* VatNumber+Helper.m */; }; - C85B3DC7D51FB6B53BBF31828A2133C3 /* RZDBCoalesce.m in Sources */ = {isa = PBXBuildFile; fileRef = CEEFEE4D2B5FAD5B19D3D6A483A064CA /* RZDBCoalesce.m */; }; - C8BA51F7719C03739F5B6189E2FEB3EB /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 5142FF672B17019276C209CC0276D25D /* FBSDKMessageDialog.m */; }; - C94E1F15CB6315709356671DE50B4F11 /* PNObjectModel.h in Headers */ = {isa = PBXBuildFile; fileRef = D746073D457DD21C98FFE96414952A89 /* PNObjectModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C98A0F9C04BB43D9336B3178A78DA9BB /* FBSDKShareExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CE006B6D683D6F48FDAFFA2B0CDE738 /* FBSDKShareExtension.m */; }; - CA649B81C91FD77E38DA4B2175542160 /* EXPUnsupportedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 50EDCC7C13811E7B32FDF02A0A6FAF92 /* EXPUnsupportedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CA7D3AE9AF043D378754554AC305FAA1 /* FBSDKDeviceLoginManagerResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 2689D69C583916AE1D6BAFE0D4FAD0DE /* FBSDKDeviceLoginManagerResult.m */; }; - CAA25A80017BA67098F97D8DC8F2BF4D /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = E163C0A847A3C5C16669D7DE4A88B426 /* FBSDKTimeSpentData.m */; }; - CADBA7E876B2CB31F41F880D05C1719B /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FC337BEBCC2F3E574AF4FBFAFEEE2A9 /* FBSDKDialogConfiguration.m */; }; - CAECF55A4A5FA2E9C137863C5F39FDD9 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F77C49002C9EC92243873ABA535AD8B /* FBSDKViewImpressionTracker.m */; }; - CAEDE3A9DFD0F0BD418FC491A5D7243F /* FBSDKPlacesKitConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = BFCB440772958796BDAC1EE3004D4871 /* FBSDKPlacesKitConstants.m */; }; - CAF38F968DC3D6CEA55FBC2CF1F60859 /* SPTSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A06DBD55AC48C20563EDB6ABFC904C5 /* SPTSpec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CBA77D599BDFF778B491C16C5ECB8D8E /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 102CF1BFC6BD44D8F2ED514A3FEB9C52 /* FBSDKShareKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CBD74B3F19C637F4BE1EC0434E5F4F0A /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 14E45E0644E288274AFEECE47A2C0794 /* FBSDKLikeButton.m */; }; - CC4207349F072356E518D42133602EEB /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A28474AC50C565106BE610B08E1078B /* FBSDKLoginKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC6D6F9C08C987CC8704E6404146994C /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FD4ECA15BFD23F6048602A09043402B /* FBSDKShareVideo.m */; }; - CD2519D4F0CC588038B64ACA9456FEF0 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 75FEB5265D3E6A8EA37CE79FF28CC305 /* FBSDKConstants.m */; }; - CD3D96D84B338C672AD633AB94417531 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 492AD5E601B229EC94FCC401C595A8A5 /* FBSDKGraphRequestConnection+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CDB2EBF1987BAD791CBF319911DE5343 /* Pods-PNObject_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 30F7AF67CB30B392C29AE6D0EEC80CDF /* Pods-PNObject_Tests-dummy.m */; }; - CDBD2C452D108ADD42475E4BEF6822E5 /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F923853AC5FA5E6F9FC0F5013D8AB985 /* FBSDKContainerViewController.m */; }; - CDF60AB216F7505AA4BE3529CF791A83 /* SPTCallSite.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AD4CD699988FDB293695E9B7B21C432 /* SPTCallSite.m */; }; - CE145B8A8873360D79264DEFFAA43D1D /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = D21B76D37523D3AF4207427341438F84 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CE2985CCB7A75E8DEB6E6B20F8221B6C /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 84775819BE28E43353420F0E6F1B8FCC /* FBSDKBridgeAPIResponse.m */; }; - CE6C89A752B368F9FFCDFB01560BA0E1 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8728096184D423AA616318E7342FC705 /* FBSDKShareOpenGraphObject.m */; }; - CE6FC656B71CE49D1929B03DAA4C01BD /* FBSDKCodelessIndexer.h in Headers */ = {isa = PBXBuildFile; fileRef = F2AEBCE4368B77C3D1009CE796BC42FF /* FBSDKCodelessIndexer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CE954D5AB7B9E31FF353B612ED4FEC3D /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B8BD0FA937E87F8F17C87B2A35B0A012 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CEA5812E90BAABDDD6423FF3CA847FF6 /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = 430A02A93F5FECAAE90FBDF4933C688C /* FBSDKLogo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF19B0873AA3B7F9BCD5597F81868D69 /* FBSDKUserDataStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 98260EDA28424DEDF24F0757EE90ED2C /* FBSDKUserDataStore.m */; }; - CFF6748F7FFDF1A8E1C5AFF87DEC3FF7 /* PureLayout-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9E42CE4EEC9EEF2088501CDA95AE68 /* PureLayout-dummy.m */; }; - D0A3B7DB082E85DF5A1BF164603CB211 /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = CDB23D4DE44B47E81839DCFC38357489 /* FBSDKSharePhoto.m */; }; - D13823551BE04038F6444A00DFE4122F /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E41A3FB8FF46EA229ABE19782E1520E /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D26FC8DE38F5861F870809CCAAEFD892 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F5FA93A8843A8A24C1DD22FA4790374 /* FBSDKGraphRequestConnection.m */; }; - D28A04764B5CDFA967FC656486D48951 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E51439F5BC49A0852132AD199CA0DC5 /* FBSDKBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D28CCDE613D51CD98C868931285261DC /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 872AFF912B872C834616F86910AE7D58 /* FBSDKMonotonicTime.m */; }; - D29747D066D10796D0C993F4A573A234 /* FBSDKAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CF04024AA57BCD9CF217BFD80DFCF0A /* FBSDKAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D2EC017CC394C76654C0969221D3E911 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1719F88393B42FE2CE9453D442D4C897 /* FBSDKShareConstants.m */; }; - D308822ED3D6ACB439BF8EC0A519D4B1 /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1030628E5473343492BCAE6BCA61C31C /* AFNetworkReachabilityManager.m */; }; - D32B990072C67035E81DDA98268CFDCD /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = F955FB53B26A9C088F7041127BEAE077 /* FBSDKSettings.m */; }; - D3AC389E6BA3181AD81E46FB4F033CF5 /* EXPMatchers+beInTheRangeOf.m in Sources */ = {isa = PBXBuildFile; fileRef = FF4CC77D3D95971AC00DCFC797DD324A /* EXPMatchers+beInTheRangeOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D3F4CB7B7E59A376CBB90C7E9FD040F2 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = D6C11975903993C33B758858CD139334 /* FBSDKCrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D441DEEB7BC6F19A4BD742AFBEBF12C8 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = FAD7F6532EF00AC46B5CBCFE444BD15B /* AFURLRequestSerialization.m */; }; - D47F4E3AB146D6CB3CB2C56E9F4BFE36 /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C85018DCA4E8E1BBF28EF811D48B21B /* FBSDKSendButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D4AFD6F4208B6E81C2DE8C1947907581 /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = BAFD4DC2FDE6045F22F8CBC783903256 /* FBSDKShareOpenGraphValueContainer.m */; }; - D5267DBF729B6CC084014413DDF3E70E /* FBSDKGateKeeperManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 637542F760DC2652DDD04CCA71B39141 /* FBSDKGateKeeperManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D59FEC69B8B0E0993BDABC2848689212 /* CodFis+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1071A64D0AA1AC68898E6DD2AF9757F9 /* CodFis+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D62C2EC17900D03C1A9EF95F52BBFB6B /* FBSDKCameraEffectArguments+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 42E8055272E870E86104349D6DA9B416 /* FBSDKCameraEffectArguments+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D637B0FB606F96DDB1090405AC68DA7F /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = EFAEDF1263682F6600319D221F5B319D /* FBSDKButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D683A7251327E661F61B718CBEB4E3C0 /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 46E4806CAB95C8B48475BEBC0E874E3C /* FBSDKMaleSilhouetteIcon.m */; }; - D71128F7FA61C7DC0DF30D0D78FFA9F7 /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9EE33CDB6F4A474942660C4C90389AC2 /* FBSDKErrorRecoveryConfiguration.m */; }; - D757070A74D2EF521FE79475E701D906 /* EXPMatchers+match.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD7726578AEDB853810856C4C23EDA0 /* EXPMatchers+match.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D75C08A935C6A3B505959E3CA7C8D557 /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = E9F6093BA73FBC577856D2EDF5933F42 /* FBSDKIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D7A97CBB2FAB81157A076992090224B3 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = D60A5DE7BC8975EC909F89F396E34B02 /* FBSDKGraphRequestBody.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D87FBA678EECC7D878159DCA26BA7400 /* FBSDKShareCameraEffectContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 327F45E58558B5326C9A46FFB8400296 /* FBSDKShareCameraEffectContent.m */; }; - D98F802AC2D08618AF4989EA2ABA6A64 /* SPTExampleGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BFED846F96B9BD8DFB182FFDAAC3305 /* SPTExampleGroup.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D9AC160C1D04F4E96F949762670749BB /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 229E4B42AEB7173DF9150585C9BD3BD3 /* Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DA01FB67D979A8AAF96362514E177D99 /* FBSDKCodelessMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = E56BF6A2B12AD3BCA56AF7D85E9789EC /* FBSDKCodelessMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DA045350E1EADB3BFE170AD8512D3963 /* NSObject+RZDataBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = 2010F5178F912157AFAA4E3E81CAA192 /* NSObject+RZDataBinding.m */; }; - DA95AF32B46E0A5FD02890D1EECFA8D3 /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = C945FD29E5F4FF45963B8ED5BD5E7419 /* FBSDKTriStateBOOL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DAA86EE60437B778BBA4A6D9D7ABB337 /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BBF21A0DE8D9464944CEA946888E203 /* FBSDKTestUsersManager.m */; }; - DBA91801F16600DE9E2ACDD7577146B6 /* FBSDKShareMediaContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED48EC5F3BB981EE45BBFCFD85B5019 /* FBSDKShareMediaContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DC2B40B9217FF9B1E1CDEB86E0499364 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F014F85FF0564123AE92E06EE1AE8F4 /* BFTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DCB834362AE3F81F92EE24D1514B84A1 /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = F8AFC580CDE696A0C6A0219AAC766B78 /* FBSDKErrorConfiguration.m */; }; - DDB495B545E898DAAC7EDEE440B9AE7D /* NSData+SHA.m in Sources */ = {isa = PBXBuildFile; fileRef = 7367038DADDD1891DC469540DB3387E4 /* NSData+SHA.m */; }; - DDBCE19574CF87AC15F9830C6615F1A2 /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = D0CE9FB255D704C4696E2CE178E9359E /* FBSDKDialogConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DDE9E4D3301783369597800913F88A6E /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A61AFC807F6C8014E337C23ACE1304F /* BFCancellationTokenRegistration.m */; }; - DE3C349E2871D795132F014FF8F61ECC /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BBCA6B341ACD2A12FE0C81B01DBDF79A /* FBSDKLikeControl+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DEBB0609855CA3B665A100A9FBEF1985 /* UIDevice-Hardware.h in Headers */ = {isa = PBXBuildFile; fileRef = 63173E5B639070BA427CD0A1443671DF /* UIDevice-Hardware.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DECD9FBA9FC5465D2E443693F14BB047 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = EF288E956A08FF3866590042EBB85D37 /* Bolts.m */; }; - DF0FAD206F1B439E62D730635EE8DAF5 /* FBSDKDeviceLoginCodeInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A471C34221A873F410B41D4CB836683 /* FBSDKDeviceLoginCodeInfo.m */; }; - DF4831B00C4C154E76D7B03F3D3211A0 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 597450F63277CB0C0E57D5DBB6812CB2 /* BFTask.m */; }; - DF4EFE7558ADE6C16FDFAA759B6FD6FC /* PNLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = FC63360F75920E73E70A8F8A94B37976 /* PNLocation.m */; }; - DF517BE4BA209F29252A51D9A0C19F2B /* FBSDKDeviceLoginManagerResult.h in Headers */ = {isa = PBXBuildFile; fileRef = FCE4A8027CEC46F6E7577042A32DF2CF /* FBSDKDeviceLoginManagerResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF5BA3CDA109C7FABC41D1E2B1963F80 /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 27AF4F86F743BDEFCCD6F45E4E8806D4 /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF7383AD5EE0F40AB790F0EC5B0E9B09 /* FBSDKPlacesKitConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = D4A3F38EC44363F5BC4284848207155F /* FBSDKPlacesKitConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF850DB12562FEFDF1C72AC62D8DFF5F /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = FE722832EC472C5E16F1AC80C1BA9576 /* FBSDKShareButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF932A448D602A6EB68228586D90DB77 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 49BD041C7E0E4CC5D7F744C8E72E13DF /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E04633AA0FEF2BD076ACF70315D2DA15 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = A576F08EE335C908C31799B2A12030B9 /* BFAppLinkReturnToRefererView.m */; }; - E04648FC3DB7B73293FDC4B0FCF6C516 /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 79B189EBE40BC1ECF4D06618B33E43CF /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E089BBB1A5A7A5E813B69B9BF4FB09C0 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9637DE2BCB0C07ED47A9CE4C279B25DB /* FBSDKLoginManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E18057422723A35A17E5406B92B18C22 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = FF0061924D0DC116A613AE4C9DAE01F9 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E1F2F044D01F3094BD8EBABF28A441C7 /* SPTCompiledExample.h in Headers */ = {isa = PBXBuildFile; fileRef = EED5B2423D952EC9DFCB17159FA6466E /* SPTCompiledExample.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E21661116BD0FA3533E09989C2D09FB5 /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = AC56E678BF71344FCE4D2F0C449A4C6A /* FBSDKUIUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E29D0F459D2434B32E483FDB1CD26C7B /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 48C57F0B0F44B45B793C87D46EF597EC /* FBSDKGraphRequestConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E3193EBEFB3FD8D8CC1CE4DBD88D9E47 /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8DA29AE18A76F41A348FF6AB8B379C /* FBSDKMessengerIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E44C14AD33CD2405A53E830846C71D5C /* Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FE96DE348BD51445BFBAB67B70E47CD /* Specta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E51B702526AAAC282503FC2104DD63DF /* FBSDKShareMessengerURLActionButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A6EA8EAE6DEF723DCDD633912B55A2 /* FBSDKShareMessengerURLActionButton.m */; }; - E59DC70A134CFC7A0A1CF06684FE3F3C /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A1539B870F9BF14B66F7A6970C48E40E /* FBSDKServerConfigurationManager.m */; }; - E7358E18422A9CCD13217A2A172AD265 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 557C5C3EF93AA53A21DEF5D79BD826AA /* FBSDKShareUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7A29FD264197E966B2F75F2F7844D48 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B3680969EAA8B942230DFB1AA765553 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7B74FAFCE246C2DEA0D85F4613277B1 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 727606916A3164048FD93AB35F980937 /* FBSDKLiking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E94363317A12653D288FCD15CCAC566C /* PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 282ABE16C6FF308F3CEC6206019493BE /* PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EA7E1A9727F7DC10403EC7CC81BE7D80 /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FE4032350E85F10B125E9CF5BDE9060 /* FBSDKLogo.m */; }; - EAF3850F8972DA21B78AEAF55B6D661D /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E64A481A444C01DA2688182A6EA8EF2 /* FBSDKApplicationDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EBA369EB3402EC6CDCB15B28867D51AB /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = DA24B1B4D51C15879627A5F0E9DF3FE1 /* FBSDKMessengerIcon.m */; }; - EBB11D36A3171B0F9D90000F4B95136B /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = BD361E1A52D3B43FC0C15423FFE233E6 /* BFAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EC2E9780DD5B6574F32FB0E097459CFC /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ECDC77A52766A87EA95232978B0F06E /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EC653215D3ADA72FD4BCAAB57C03F762 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = A7077EE27E4C3ACA0EFB1D30EC17EE5A /* FBSDKBridgeAPIResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EC6F4D4EB03B32982BD40AFA33E5162E /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = B98D238832E1EBB4A426476C4DB4D052 /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EC780ACDA2648C960E0A2207848CDC09 /* DJLocalizableString.h in Headers */ = {isa = PBXBuildFile; fileRef = 08D5371E49C72C6051B759DE8FD0A3AE /* DJLocalizableString.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ECC022ABC95BF854F43EA7B25AE68520 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 21307D8E64F587BFE50B6D8F35471A1D /* FBSDKShareVideoContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EDF10A8E2C7E448DA6B062FB501101EB /* FBSDKShareMediaContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 46335ECEC631F753490EF43F7DE7F5B2 /* FBSDKShareMediaContent.m */; }; - EE5799BEC21E38EA19D4040F442B2084 /* FBSDKShareMessengerMediaTemplateContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B3E40CD864FC71A372F7F9A38931946 /* FBSDKShareMessengerMediaTemplateContent.m */; }; - EE7D0E748F35874C0E87C02DF6AFF7A7 /* FBSDKDeviceLoginManagerResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E05B1A66A9C6944FB5E89AB95965C5C /* FBSDKDeviceLoginManagerResult+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EEB4DAF3EC4BE2A1425BACE61EC5B87D /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8278B5A64341179AC2522EC1D10CF0 /* FBSDKAppGroupJoinDialog.m */; }; - EEC44F41A7BBA3CBDF6C3BF7E2B542B1 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = F888697534D7DD7964A73F8BB7FD9CE7 /* FBSDKLikeObjectType.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EECF7AA8F87B3D42FF0549120636F4C9 /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6880F2907AC6DDAFBACA76A47CF74DBF /* FBSDKWebDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF262E90BFF196D39BD0BB9FB60E266B /* PNObjcPassword.h in Headers */ = {isa = PBXBuildFile; fileRef = 353419D5AE11FB9175B1D26E5AE288F0 /* PNObjcPassword.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EFF7774E8E652C465F47EA43F95D49C5 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8508795C53C9A6012CA83D7EE10ACFF5 /* FBSDKLikeActionController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F10B31BBFB40D7BBFC8DA991BFFC9CA9 /* FBSDKAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E53843C7E6B238722F8F0BBC442689 /* FBSDKAppLinkResolving.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F124E713787CDE2910453FB16BD3D4E1 /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 637F614A142E33D8FF0BD49303E7FB85 /* FBSDKAppEvents.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F129A3E8DFB18B1BAF0319F2E2E4E569 /* NSDataAESCipher.m in Sources */ = {isa = PBXBuildFile; fileRef = 11BDA3A15607E417EA80DDE9DE585029 /* NSDataAESCipher.m */; }; - F150E5C983FBA255C10F5EA5C4E2D478 /* DDDKeychainWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 93176C2E368BA455CC3DA70528CF96FB /* DDDKeychainWrapper.m */; }; - F19D6F0E7FE4EC81D874DEA19DC5A53E /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = F1696D2F0700A48B91BA9A4ABAD47EFF /* FBSDKAppInviteDialog.m */; }; - F1C701950A48E1D9343669B852BAE661 /* FBSDKCodelessPathComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCDB26FCDD6C563AAA95B866AB3B749 /* FBSDKCodelessPathComponent.m */; }; - F1EDBB2FDA3EA365FA56A9294BCB30C6 /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A63C66BED0B466E36F0F993C7BE4315 /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F224FAFD1E06F812884D9B2F5D4C843F /* FBSDKEventBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CB02102AAE2843CFC8BE65E6DF92B68 /* FBSDKEventBinding.m */; }; - F2316598F9BBA8363F45B64D6B8F93F4 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = EEB4228586192CAD4EB36147216A3AFE /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F2704F8067DF64A541892B4DB90A84A4 /* FBSDKCameraEffectArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = F35F29B146D842F82150642B51EB152F /* FBSDKCameraEffectArguments.m */; }; - F2723299CEE9794AD6D3A4653812EA23 /* PureLayoutDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 7918A7BE17EAA3CEF419426BD6E3D39D /* PureLayoutDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F2E4AE166A19DE12DB21CDA14592C984 /* PEAR-FileManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E4CC676077B9CDC8DD32E5EAA44E7D9D /* PEAR-FileManager-iOS-dummy.m */; }; - F3037EF2E349AB27A3904D31F08AFF95 /* CodFisResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 11CED45F1E15BD9F3E84E7149502983D /* CodFisResponse.m */; }; - F321F642A030FB90B6DB084309D0A75D /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F851E4CA569BD52B5BB72EA54B863FD /* FBSDKAppGroupContent.m */; }; - F35999453F79D2FCAD8FA05420EE462D /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = DB55FF18FF578DF41A247ABD8C167992 /* FBSDKLoginConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F46EAE5DAB069B1B7B786A8B2CA1D7C3 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = E1DB759BDF514710BD51B507072523B1 /* BFAppLinkNavigation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F49537FCF3A337C569BEA6C5C7B60740 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FFC1B831ADD9CD9C5B5F180E0C6F4D8A /* FBSDKServerConfiguration+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F5F720E61CADB70A155B81FFB7C3C0AE /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 71D1D5E712D5FE0416A65DC9B5034FEA /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; - F5FA918124E77A2011B20CFE7EA37C9F /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 28D39904B2DFABE6683F8674EC6099E6 /* FBSDKSharingButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F609ACC22A11A52BC513CF6C49C66B60 /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 70456E77233811453A50481D21DD9281 /* FBSDKLikeActionController.m */; }; - F67549EC0D030EC73D49C4C9F8F5CC98 /* XCTestCase+Specta.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E8C398362337962B597901EEBA499A6 /* XCTestCase+Specta.m */; }; - F69B64787ED8C19E43D778D06F3884CC /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EE9D0B8A3BA39B486D7C39861C7CB8 /* FBSDKShareOpenGraphObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F6B5D5CF2BE8D7C645D0FBE4E2667EE2 /* RZDBMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = D6C1CBE929F193DA29B496D6B47D7C9F /* RZDBMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F6BE061A6B0677D514359B2C324578FB /* FBSDKMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2199B0D3020321AECE2FCAB35519F2D8 /* FBSDKMeasurementEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F70F41EF72F7A20E8477C34B0C72B0BB /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 15945FC869A967AA2CE0A303D4CF9FF5 /* AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F74EA5AFD09EB190CAD4081E2CD20441 /* FBSDKDeviceLoginCodeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 70569B31499C7F90A6477AFDBE1BA69B /* FBSDKDeviceLoginCodeInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7DD73A32118EFA275D9DFA9A179A39F /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2783A0CEF7B60E8F6A82CF077D963D /* FBSDKLoginTooltipView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F8CF621A2EC0CAB9CD03329E4728A861 /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C7778B2EAD7BBE9F8A0E77CB9269BB8 /* BFAppLinkTarget.m */; }; - F92B3375B4C56B53AD510DBC775568E0 /* FBSDKDeviceRequestsHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA221D791E87BBA9576770858C23B30 /* FBSDKDeviceRequestsHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9A2496D0F25756B5A1162FD962D4BA4 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8615B58E1B612FA1DBF2A386AFA870 /* FBSDKSharingContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FA3588472C453DF382F84C2C090FC4EF /* AFOAuth2Manager.h in Headers */ = {isa = PBXBuildFile; fileRef = 535C9E3A23A0CC026A7CAA5D7A5BCAA4 /* AFOAuth2Manager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB18C6948AEE7EACCDC1FDF668CE4256 /* FBSDKAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB20B84C2F6319B37C11B510F2A75E4 /* FBSDKAppLink_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB2102733B09BE3723D5BBF1DB8361D7 /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = A80F4CA4A07D4C646662DBBF273551CF /* FBSDKShareVideoContent.m */; }; - FB605D946034EAD5A2D9420C96B207FA /* RZDBCoalesce.h in Headers */ = {isa = PBXBuildFile; fileRef = 893EED4B142C7712269D7508B429DC66 /* RZDBCoalesce.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB825CE3B4D4F3B3180B2AB4BF30E3C0 /* FBSDKAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 79D6C0D493E1CB052FD78ABBAD93F9F3 /* FBSDKAppLinkTarget.m */; }; - FB892ED1EA5F6784C75947FF4F7EE015 /* NSString+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = F27AD68924104919A000C0F1AF24933A /* NSString+Helper.m */; }; - FBB65BA80A0CDD08FB0293A85B6FA7EC /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = B080D071620CA9EB75BE1155F0AA0BB1 /* BFURL.m */; }; - FC2BEE5A649BD9ED667DC117524ED92E /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 00790927A0389B09506C892EFBCB8276 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FC581640011812355E1D9AE4BF1C2AF9 /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = CB220B5F21AADEB4889864CE03657F06 /* FBSDKLikeButtonPopWAV.m */; }; - FD678ACCB6B29F8DADD882EA98148249 /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A05C4E0D355A8375AC32F33F3798FED /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FDC38DF5D59074B7F6934726A6BBEC79 /* NSLayoutConstraint+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = DBA00107A9AD6F2C91F50776BE1E0A98 /* NSLayoutConstraint+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FE35C071F54DADA3BE7FA3CC2D3DEDE9 /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 460EDB379472C44703E3A25B51ABCB69 /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FFEA251CF70E8C54B51A3A89841DFAE1 /* FBSDKShareMessengerGenericTemplateElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F94E6B5A268FBAD5F4EDEDD7779603 /* FBSDKShareMessengerGenericTemplateElement.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FFF6BE01C265D5762AFE8D18E93F13AD /* FBSDKAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = FB8CD6DAB348DAFD9E9DBCEEEA92ED15 /* FBSDKAppLinkReturnToRefererView.m */; }; + 00A5DF2FEF31E60003B8E79FAC839DE9 /* NSData+AES.m in Sources */ = {isa = PBXBuildFile; fileRef = A3E867E287FBBD998314D306E8C87A79 /* NSData+AES.m */; }; + 01553AD27014C8C896436C76DCC5D2C8 /* FBSDKShareMessengerMediaTemplateContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 21705F2CDA390D5966CF85B65CD17838 /* FBSDKShareMessengerMediaTemplateContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01703FAF18A4CC39A19BB17C46698DC0 /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 082E03B027940675085E020F5A7FED86 /* FBSDKErrorRecoveryAttempter.m */; }; + 01BEC5CACA72D69AB8B9A3104AF68F57 /* FBSDKAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AFF4D5E6635B7D8CA8C1CE6570B2202 /* FBSDKAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01EDDA9F4924F37D6DDC01128542B79B /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A05B6A32AB0DE46405048793A4239B /* FBSDKDynamicFrameworkLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 02397C379F7A219CC002B067C1AF3D2F /* SPTSharedExampleGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 92901B1B84165929BFBF3932DE2F1B25 /* SPTSharedExampleGroups.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 033BFC0A9EF075A3772EFF982C672541 /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 94B52210332ED8A9A65CC8DC843C5FC2 /* FBSDKSharePhotoContent.m */; }; + 0343B86E9B9F5619970FCBD7370E033A /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 87B5E8AEEAA01EE673F4B83048FDDDF8 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 044B01DD0158972D4219C82FB0EFBE3A /* AFOAuth2Manager.h in Headers */ = {isa = PBXBuildFile; fileRef = FF26A81D3DD4C37A3232FFAB6A6722A1 /* AFOAuth2Manager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 046B5BE460A9DC194F7CE5220F1E2523 /* FBSDKShareCameraEffectContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 48591606E58469749C184FD2DCCBBF63 /* FBSDKShareCameraEffectContent.m */; }; + 04DDC981AAD7F73EFDFD96393C227827 /* EXPUnsupportedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EBCEF5C49E4721AE9226049493F2DE /* EXPUnsupportedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 04E724A97339965ACA4E5D60226DA001 /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 610F8746DECF126B1DBF4C5158552EB4 /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 051D4B5709A6257B6F79D54D9139E812 /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F42210398D96D2542A18AB72A735CA3 /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 053DB041D877E8070A15CB87EEC73335 /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 01D218EAE243861488C477C51C4D6D55 /* FBSDKSharePhoto.m */; }; + 055F4832BDEE32389F781B1B59C2EE11 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC2BFA2C3D857613FD68721F9B59992 /* FBSDKDialogConfiguration.m */; }; + 05AB469F0F79C648F8E637F88CDB9E97 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A9BB37CE3F8E4D764DBABEE64479E35 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07909550495F3C6B06EC03412AC7F69A /* FBSDKCrashHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 26344EC14781F553C8D5820612FCD0A1 /* FBSDKCrashHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07E5854E45B4F185DAE8FDC36C94EECE /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AD4791D9F4FCABA1938A671283DC1EF /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07FEFBE3A9138B18A923888DFFCE52C4 /* FBSDKShareCameraEffectContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5200D160FB01896D7B466E6D82BAC9 /* FBSDKShareCameraEffectContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 08561C60FDF903821F70BA23806480B8 /* FBSDKDeviceLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F89E7E3B86ED150A201E9DEFC41C0072 /* FBSDKDeviceLoginManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 08972BEC745F3895C5FE98732BB0E646 /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = C689C9A0453789D01E90675C058F8F3A /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 0A40566546E05326121C56702976E4AE /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 6803142BD4EF1A0ABFFAB74909305200 /* FBSDKServerConfiguration.m */; }; + 0A480DDBB4513FA71D8860E7B7C42129 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CFB86C7F509E6095CE81A567505872D /* FBSDKButton.m */; }; + 0A615DC24D2F1C1AE5017B31B08A6D5E /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3985C8B76FCB8450D5C7343151A403 /* FBSDKGameRequestDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0AF50F644A85936FDFE4AAE26187D33D /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BF355F6F84D556D41A199F377ECB47D9 /* FBSDKGraphRequestPiggybackManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0B2C5F285D5D826F1B210382F5F9AA57 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = D10AA455463C5CF36E6CDB4E2DA29C9A /* FBSDKSharingContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0B4608049B42989519201069B9038802 /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7058BFB61D3C842CDF3C069BED46FA74 /* FBSDKErrorConfiguration.m */; }; + 0BA11B2B13120BA81CE8EF5E787AA054 /* FBSDKDeviceLoginManagerResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCD28AD7A9829C2574D2F53127070F6 /* FBSDKDeviceLoginManagerResult+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0BCE59B499391666A94C6DFC1FF956DE /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DE2D5C43D1B651A52F608D4F61B8DB2B /* FBSDKAccessTokenCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C08A22B8649CAB4ECD39A8FD5D3331E /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 90ABC7B86067CC7A4DC6DEEDA52E20E0 /* FBSDKPaymentObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C0CD78C3FA9CC547C359497CCBA2E79 /* FBSDKWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 94F9C00B9755F7AAE306BDDFAFC097E0 /* FBSDKWebViewAppLinkResolver.m */; }; + 0C18E0C1B47D130BF6A0F4CE585D6AB4 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = D983CF804D5EDDC7B43BB588FD5CC312 /* FBSDKBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C1E588185163C1B61EAD0911D35D3A3 /* AFHTTPRequestSerializer+OAuth2.m in Sources */ = {isa = PBXBuildFile; fileRef = F7EDF49E14E6E707D6934656A5378941 /* AFHTTPRequestSerializer+OAuth2.m */; }; + 0C26E8CE5202114A92A9CFFBA1A9CE88 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 98857CB1030FB61A153843E317B27C29 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C4322DF9D42238D5BCD3D6218BC6165 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E68F5A08A8ECE4BBFA26DD8956D8457 /* FBSDKGraphRequestBody.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0D37BF48ED0A0717217DC596363863D3 /* NSDate_Utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 092828F37B6F6040EC3A135EF34B1DEA /* NSDate_Utils-dummy.m */; }; + 0E66A0F36DD725E82041A51F593EA534 /* EXPMatchers+conformTo.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EC042BCFC92EBCE5D22A947F8F3D13 /* EXPMatchers+conformTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0EDD4A7611A8278F62892F28E2C69CFE /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7299A9BB9B87CEAB0A4A0932D8DE62AC /* FBSDKLoginManagerLoginResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0EFBEC06FDEB1750FA785CE4D18A1553 /* FBSDKURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 82BBB3C4E136144F1C24CCA37C518308 /* FBSDKURLSession.m */; }; + 0FE8923A542EA92C4CEB103B54EB6D13 /* FBSDKShareMediaContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E3A9E5FD94D0AB8FB7C088EACCE8E36 /* FBSDKShareMediaContent.m */; }; + 0FF7506CDCAF7A6C1F6DAF768429FBFF /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = C2E7D662849D07D99A5F6C898BA6B22F /* FBSDKTriStateBOOL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1029701CE9DE4C4027F7F2A5FA2C777A /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = AECD1C016D32B4D781530DBF50320BBF /* FBSDKServerConfigurationManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10EB9A7552672DC328F8695A98E605B3 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F143CE20C361DA7E9B8F72CDB661712 /* AFImageDownloader.m */; }; + 1102564C9CDAC18DF8D6DB20F6523E72 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C130B5215215D471AB0FA75C997001AC /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1146D0D7AD4DE05E687155439C32246A /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = AC750148FC0A844C66EC2128DE0BDD06 /* FBSDKShareVideo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1158F1EFA8C8E23EF61441D5C52E4FB8 /* PNObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = F4E998FB363C76769F64E038AB63711C /* PNObjectConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1203843ED4564D33EF4DB0B8D3B7CF1E /* FBSDKShareMessengerMediaTemplateContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 34D3B3F7605EB46274E23F7222D55038 /* FBSDKShareMessengerMediaTemplateContent.m */; }; + 1222560B913CB9C9C0D14221D02C8306 /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A17A27D588C937F8DA18DCECC93205 /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 13F2D53D7D3ED41BEB944ABAAFF77F23 /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 69456DCF04406FF22F463AC92BF41880 /* FBSDKShareOpenGraphContent.m */; }; + 14320520311E7D69F7359C4183EFAA43 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = E02781430F177771D2E8655D9A95BC00 /* FBSDKInternalUtility.m */; }; + 1492F9B3729350F15969D57DF966FEC2 /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A9484FA4FD2C96B30336A4F70848912 /* FBSDKPaymentObserver.m */; }; + 160D6D36C3EE541D74D28561998E1B0F /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = F99A02DCAF18AEDF13AF8AB831A51437 /* FBSDKLogo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 169E1E76112E93D0F615D868454BA152 /* PNObject+PNObjectGETConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AE0AE80AAFE77A9F7BAB3DBCA09C8EA /* PNObject+PNObjectGETConnection.m */; }; + 175920BC859127C0435A40DCD5C6F42B /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 593A978C64770DB6C35CF4DB5B1E8EDB /* FBSDKAppEventsState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 17E2936B89B3C181576B0B87BFF77455 /* ALView+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = BE70CAC82850A6F70D65E76BCC1822B7 /* ALView+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1839C37F21FD26A6A1288A7FA1FCB59D /* FBSDKAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA2E79DB7FC7C052E221BE4510AB923 /* FBSDKAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 184156CAD5B59811F1E93880393DC57E /* FBSDKAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 739F366C25646AF7A07E63ED3EEC5435 /* FBSDKAppLinkNavigation.m */; }; + 1925DD576E8D7CFA05D9F8754782D8B5 /* FBSDKMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C827DDF8E201EAA880AB1534DDDE2C8 /* FBSDKMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1BC1D119D08B50D32B33B557F86151C9 /* PNObject+PNObjectConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = DCED347C1E22F10908A1057764ABF8D4 /* PNObject+PNObjectConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1BF2C4BD47F6723A0A9C92B54A0DDEBC /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DBE520B4740BDDEA0416B0D821EFA03 /* FBSDKMaleSilhouetteIcon.m */; }; + 1CDA59AD9E032636E29AA192023C1C2D /* UIDevice-Utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D2F9DA7AA2014E4797F0324FE8AE39E /* UIDevice-Utils-dummy.m */; }; + 1CE288226DA4D5164FDE93288F20616B /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A789E504CF93C16DF08CE7BB92EF43 /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1CE88FDF414290A8716A7854ED2D1EAE /* FBSDKSharingScheme.h in Headers */ = {isa = PBXBuildFile; fileRef = 30777BEA30E91B9AB92D6D7B41721548 /* FBSDKSharingScheme.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1D58C6BA2F38E80634D5B3949C5E311D /* FBSDKBasicUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = EA87AC4E9A5B15656386CF5A2AE7E030 /* FBSDKBasicUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E97B67A63A524CED8A0F4BEF063F8D6 /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 938AA1D23500E0430E124EEC643DBF48 /* FBSDKProfile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1EA1235398DAC98440B2EFBE43839FD1 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 795DADA0B9B333CDB165507CB9204A32 /* AFSecurityPolicy.m */; }; + 1ED46BC57F049FE0FB33E3945113495D /* FBSDKCameraEffectArguments+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F39B1EC1AAD4B5594FE86B5ADC35ADD1 /* FBSDKCameraEffectArguments+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1F05E84D04AFB3A281348CAFFF7D471C /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E0C52CDCBC2376BC932D9162D36B6CA /* FBSDKShareUtility.m */; }; + 1F66F73B61BEA115076A9CF7DD463832 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 46E7278CF50B1CF42F86A357ED26A424 /* AFNetworkActivityIndicatorManager.m */; }; + 1FA2115E731999E6AF68FB0C34126B56 /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 877C92E2C50463D3AD052157A007D76B /* FBSDKCloseIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1FF106F974C13FD7D5B90B996E7F615E /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 630A3E96C8DD173D7A2DA8CF136578F6 /* FBSDKError.m */; }; + 201D380515469CE43EE5B4A93C79E24F /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C23340C1222262A1BE81FE5B910E044 /* FBSDKAppEvents+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2049537737C21E5761B2D612F6231671 /* AFOAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 2694CAD098705CB36D133B33B21A64A9 /* AFOAuthCredential.m */; }; + 20C3B439E4CD31E49EB5ED540E737646 /* NSObject+RZDataBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 521775EB399337CD348D3B112E93D803 /* NSObject+RZDataBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21311844BE2E85B1E7E9EF015EB75620 /* FBSDKPlacesKitConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BBE4D2C7BE7775552D9DF216E2B64DE /* FBSDKPlacesKitConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2161EEAF18690ADA5484FB01F0DF94F6 /* FBSDKAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = F420A9F64AAA45338FAEB04AEE098449 /* FBSDKAppLinkNavigation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21C0F4D653C086115150F2DC30774421 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A29DCD66495B880BD286BF7D4674B0F /* FBSDKLikeBoxBorderView.m */; }; + 21D97B29CD24881CDB275150FFACB46C /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = A71DD561B20BE8BB3DED6AAA17262AAE /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 22C26991FD4181CF006E4E76E3751CC1 /* FBSDKShareMessengerActionButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B6E44E09D6054D05E608F289A1B98BBA /* FBSDKShareMessengerActionButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 235706D179481DF0FCA5E6A9CC0FA312 /* SpectaDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = DC5794CA698723054481D94D0FD3813B /* SpectaDSL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2396AF52609298B1808D77429EB44B01 /* FBSDKAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = 31166C290739F2716E38353B55051FE3 /* FBSDKAppLinkResolving.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 23F8F08D194860BBA4E29411586E68D9 /* RZDBCoalesce.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9FA285D8D5DF8C9C71A2EAC0BDE803 /* RZDBCoalesce.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2468C3103B89DD87D7961CA0F4F2E171 /* FBSDKUserDataStore.m in Sources */ = {isa = PBXBuildFile; fileRef = FB9E90DF2EF107A165E0EE72E911C0D3 /* FBSDKUserDataStore.m */; }; + 249397D154959DF820D067523F963A4C /* FBSDKShareMediaContent.h in Headers */ = {isa = PBXBuildFile; fileRef = EBB92AE34EA2B11598B7A78DA48EADDD /* FBSDKShareMediaContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 24FA3E595D90D5CF85FD84998A688683 /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = CDBB708831E5671B330744AF3BEA58E9 /* FBSDKLoginError.m */; }; + 2558253F9289D3DBA925D2CE92FC7124 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 2832EAD55A32C350FD70C2FB4DA66901 /* FBSDKGraphRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 25932B1A98AA3BB95A7CF363477F9F9D /* SPTExample.m in Sources */ = {isa = PBXBuildFile; fileRef = C0E99999F93D99D0647675E3BE69CD54 /* SPTExample.m */; }; + 25AE71D41142A334E5CF052D8624B330 /* PNInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = E75944AFC65460CE9BDE73442A1B20F9 /* PNInstallation.m */; }; + 2617FE2E594C70DDA2867296776C9BB6 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CC06C1C1357A7B08713C7E439362F68 /* FBSDKLikeActionController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2638AA1B1CE294903F58A60E049AA6C2 /* FBSDKURLSessionTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 30023AD00462C918D7A590E707D9E450 /* FBSDKURLSessionTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 26E33CBCA823C72C51357582994E746C /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B39E35E4965B54F6A34E661EB8AAAB5 /* EXPMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 26E75E5DDADA7660EFAC393566C7EE84 /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 97EB69F0CB7C2AB767DFE2440B644F9C /* FBSDKErrorRecoveryConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2754C09135972E5963D1630DCD94EAD8 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B65791AB86DD5C751334C1EE0EBEB6 /* FBSDKGameRequestFrictionlessRecipientCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 27C697694BBB44931325AD88AD25FB89 /* PNObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A219D28BE411B73330C49B119CCDF7BE /* PNObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2956B7412CDA9D609D9975A168D95523 /* PNLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = C05ABB4A36B18442EE918526657C6E1A /* PNLocation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2975DE77D38E869D432FF7219F588236 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E39BC50961FC3818A27ABEFCD4C871A1 /* FBSDKProfile+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2A73AD392736E738D3F2193DA7F0486D /* SPTExcludeGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BA081D038CAB2EEB584B958DC491908 /* SPTExcludeGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2A8C3B74B582AE2EC6B7574210E3BEC0 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = C45930CC650995447A46944DFFB8A64A /* FBSDKShareOpenGraphAction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2A900BF2297113B84FEA1A90DAF248C8 /* NSDate+NSDate_Util.m in Sources */ = {isa = PBXBuildFile; fileRef = FC791EBC8F47DF84687F5296635D6A93 /* NSDate+NSDate_Util.m */; }; + 2B2C648B72BDD621ED44468B9C5CF92B /* SPTCompiledExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C84E36354FE89AFA78359E1319E358F /* SPTCompiledExample.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2B57D149DBB09E43C13FDE324674CC2B /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 191238D431153D9F6D1144EC7926DC6D /* FBSDKGraphRequestDataAttachment.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2BD2B00B25A0D9117DAE59627D0173D8 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C7E921815C3B02578A9DB2BBE641EF8 /* FBSDKLoginManagerLogger.m */; }; + 2C0878060882734C7EEBD8582F2B5B47 /* DJLocalization.h in Headers */ = {isa = PBXBuildFile; fileRef = E1AD2CE238B724D7DB3A874E57DD5144 /* DJLocalization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2C95C61175E1EB929A4B094581747835 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CAD5A03A97C2DF86FCBA41D106AD1C7 /* AFURLResponseSerialization.m */; }; + 2CACE3F2264B0A1C2DF425FFABDD488E /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFD222B193C28AB5D745469C138B7A4 /* FBSDKTooltipView.m */; }; + 2D5858A78F99A1196B5416C63B18F8AA /* EXPMatchers+haveCountOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 72E0C56AE7BE0541257FCCC4E1AA2CEE /* EXPMatchers+haveCountOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D9F6ED20ECF34A954681DDEBF6C4ACB /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 32233C13E1C85E7E70A5E7064C8C5EF6 /* FBSDKTriStateBOOL.m */; }; + 2E18BAF256E8415EF0CA35314DE0A94F /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B8A1C2D8D7C58D7AAC91E706B636EBEA /* FBSDKAppInviteContent.m */; }; + 2E40A6D2C309AB2B655F0415E6122BDA /* FBSDKMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A4D753B1B7EEFF3EED1BB67A1EF5296 /* FBSDKMeasurementEvent.m */; }; + 2E8705A15AB5324F225D3CE28F8103E5 /* PEARFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F58166002875B7C79F42C9D089DD39EF /* PEARFileManager.m */; }; + 2EA5FEB880B02E4B1BBFA708B3284E31 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0070B094EF00720DBBC6A900DAB293DE /* FBSDKCoreKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F83D813F941FD4EEBB8EC6547101929 /* FBSDKViewHierarchy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93C7E0526D406C88C9065ED2980240CA /* FBSDKViewHierarchy.m */; }; + 304FB2F3CB19F5C44D812D90AA2F1121 /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 19F77004B1D23F585E26D32EF720CB98 /* UIRefreshControl+AFNetworking.m */; }; + 306CE82B21363D3A2BE5791B0441F22C /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = A0B24FAFA4AB3C187C7B848EBE928E7D /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 30CFBF25179B0193B747DB98CBE35E77 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 673B3CFAA2E0052F2A03EA4C7A923325 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; + 31CEC96EEC7257709A75EAAEA05EA461 /* ALView+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = F4CD0649E2166455008350FF470C8CB6 /* ALView+PureLayout.m */; }; + 31E39A710A9347F8B10CC6AA5EB14854 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 622422F03D3CC3C8D6997AACE80866FD /* FBSDKLoginButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 320AA878A70439F06845774F8EA90BE9 /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B0D2A3575862DAB8F0F29AF18451868 /* FBSDKUtility.m */; }; + 32191F502809599463A4C660C3D87C3D /* Specta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 79F4FFDC3C9C25E846E0965C26D5BF60 /* Specta-dummy.m */; }; + 326DDBC15726EB2B09FD91B2C449C94F /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4527227EECBBCF381A6BECB09E513679 /* FBSDKAppEventsUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 337C8A9592224E2629F71F4759AE0DF2 /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = DDEDEE1FD437ED5BB2C80CD481EA89CB /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3436A06B7F0BB9698CB232E1DF77F248 /* FBSDKCodelessIndexer.m in Sources */ = {isa = PBXBuildFile; fileRef = B6F29A81363A213ECAD0155BD1A8E7FC /* FBSDKCodelessIndexer.m */; }; + 3440F7F8223B10CAD56EB004757BB31F /* CodFisResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 82B2ABB3ECFC314DAC6C05C5158EEB79 /* CodFisResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 34DC4A810C58968D387D181FB6100A02 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = C9215416FC27002A06E684803F6AAA1E /* FBSDKMonotonicTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 34DF35A715C0D162D727E53A94B2E3B7 /* SPTExampleGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = CFDE73962E698ED06ACCF47522AC99BB /* SPTExampleGroup.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 35D39EE91E1C865AA806ACE519D5CEA6 /* PNObject+PNObjectDELETEConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F9236AE41E46BD402F54FEAAC041B5 /* PNObject+PNObjectDELETEConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36BC18AD13268193F98AB2B89DA0D47B /* NSData+AES.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D88B2B9429B2B0ABD4DAB8F20C57CEF /* NSData+AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3726CD36BF4080EE1145EC822AA6BF4C /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = 672C713AC7988B36109550948C8F5DF9 /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37EB8AC990291C121498DC06EEFABA14 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 375802A884DCBF305C9B4F79202E842C /* FBSDKLikeBoxBorderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37EC250D38DBF6FC46F542686176C106 /* FBSDKCrashObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = 19E18AA883A199B346FF991904823CA2 /* FBSDKCrashObserving.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37FA5B47B14C02C8C71CB66D98EFCF03 /* FBSDKCodelessParameterComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = EAC556858D6A32FBD3794E052A18111C /* FBSDKCodelessParameterComponent.m */; }; + 3801A443834985F278FE479B54319B4F /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BFA0C3CF436A169D6B0EA24BF4AADABA /* AFNetworkReachabilityManager.m */; }; + 3819C9D8B1F371F0F6BE19773DB27D35 /* FBSDKCameraEffectArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = BB56BD89D3AFA2D1A28AC669368564EE /* FBSDKCameraEffectArguments.m */; }; + 39DCF6FB22692BA9F559E1ED7130381E /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C242F4E115A5C19B823F1EC4849F83F /* _FBSDKLoginRecoveryAttempter.m */; }; + 39E882F1716C244F910D33A0573E6C36 /* FBSDKInstrumentManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F3C9482910901214BD10BD8E636F733A /* FBSDKInstrumentManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3AAF46B09CA6561F0F5589158DED8EAC /* CodFis-Helper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 510F585C11307EFFA19A465A785D935A /* CodFis-Helper-dummy.m */; }; + 3DD25E9D298146D13916809A80D21DE9 /* SPTTestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = 96F3F275F6896395A41279D61E69DB17 /* SPTTestSuite.m */; }; + 3E640D86A20D7FFE4E15947EE77BFE86 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 72D8654191BFD8AE73FA44549CF90463 /* FBSDKInternalUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3EB3F60CF7AE71F87BDBED0BE0E9BA16 /* NSMutableData+AES.m in Sources */ = {isa = PBXBuildFile; fileRef = 679E153A6099301D90429DBCCC92D8CF /* NSMutableData+AES.m */; }; + 3F29B68624F8CCACC4E5FDE6E6F47708 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 2305575DD63A7D23F99008BF5A760562 /* FBSDKBridgeAPIRequest.m */; }; + 3FB675C0E73B6F8058EA1467E1A33C16 /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 588745FFE2819E59769E5EC37121C120 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 40153D6A9D54F8B271C863C9B7004563 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C994B65A5252BA70C2E59D4F42E1D7 /* FBSDKCheckmarkIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4039162BA501526DC285B581CDE94C23 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B1D76CCF7D39B681A5517380E9BC9F6 /* FBSDKCoreKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 40AB74DAEBC0BE7DC63052C42AFFB28F /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A68A3BED2C8CD7AE035BACC0E815AF /* FBSDKBridgeAPIRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 40AC362AC89A0FF99DE0A33E34B9F365 /* XCTestCase+Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = F29856E04BD45F93207E457B6317D43B /* XCTestCase+Specta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 40CC5005C417FA963E6082B995E18C51 /* FBSDKPlacesBluetoothScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = C2C2769758032EC587B2C434555DECA1 /* FBSDKPlacesBluetoothScanner.m */; }; + 40F9C3B7C0CCD0982FD14728F2595632 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 46E67BA60AE693C2F674A4186C8FC4A5 /* UIImageView+AFNetworking.m */; }; + 418985D1EA0253EAA3C02FC1F31CA5E8 /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AF4AA6B9439CE9EB38237BEBD1DF9A5 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 418B6888649CD1639A0C395A164CDE18 /* UIDevice-Hardware.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C22AE1671F6617E31D2229B42E91C91 /* UIDevice-Hardware.m */; }; + 41DCADEC9B5D1FB60CC9049E21F8B80F /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 53ECC4CA77C8333DB19D21E647E6A122 /* FBSDKGraphRequest+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 41FB085C802D4FFE829CA9AC2D8FA1C7 /* FBSDKImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A5BB4BB15846EC61C20595F1630B231 /* FBSDKImageDownloader.m */; }; + 4202FE397B5127D6840408EFEA52B3F0 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFC8188AF5438832A8A51DF0A1BCD8C /* FBSDKAudioResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 421A8E7E4FF3EEF021292F1734534FAE /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 147232795DA583F933A389EF7CA2AA81 /* FBSDKShareOpenGraphContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 426503A51E858686B9027DCE8E3526E5 /* RZDataBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = CD49C581FEBBF6F04C32E690962D53AA /* RZDataBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42D8BB2726F0E8A390A969448A16E968 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A36A70395FE8D9715D9269F9768236 /* FBSDKBridgeAPIResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 43163FF5C47E1BAAC12E171C188302E1 /* EXPExpect.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D8E3BB5C5B32D155372E60B95AF2755 /* EXPExpect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 44225C41E291CB30A3B9FA1B95BABBDB /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = C5502B4C026B51AF0003FC85554C4E42 /* FBSDKWebDialog.m */; }; + 4458BC0C4BC35FF62B62E2122A85696F /* PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = E168ED7FBC6679698B8AA7CE74CD125B /* PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4458C28B8D890DE2C4CF875C145CC945 /* FBSDKDeviceRequestsHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F6A9A4FE9928B45AB12BB991BD30F7 /* FBSDKDeviceRequestsHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4482F032DD037987815F6CF1AC1B91B9 /* FBSDKEventBindingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D5CC3D5CDC3953EE68C798402065CA81 /* FBSDKEventBindingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 44EB293EADD274700837944AB0D6DE03 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C0A0A60EC21AC0133E91AE3A21AC1A7 /* FBSDKShareOpenGraphValueContainer+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4512317B3FFCFCFF2FD21C40DA117FC9 /* FBSDKBridgeAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 09969D98BBE6206293463FEBF5024F3D /* FBSDKBridgeAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4529634D0C2C76D1268FFE63697EED08 /* DJLocalization-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EE27B78FA2481DD4C41969817B6A276 /* DJLocalization-dummy.m */; }; + 4569A753B1478B70933F1D64400CD41F /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B696B371B113A88AE6CD91AE08725B69 /* FBSDKLoginKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 45CCF51B9627B5EF0C61D7825B0F517F /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = B02666B8373DF794BE71849357488408 /* FBSDKKeychainStoreViaBundleID.m */; }; + 46B6AE049B20D63BCA73EDC7AC8135E8 /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = C3149BF51580996CF29A646305A654D2 /* FBSDKAppEventsState.m */; }; + 4748C387115ED762EC38BB1852F74949 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C1FAD6615297E3D7F09BD4A1EDFBEB1 /* FBSDKServerConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 477C77170BBEBE5DA4591B9C45A375B4 /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = E90F18911A2D806F2E6F49F5360E4131 /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 47A20BB0CF4428AD7FE39F0154FD5089 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 20DAF9898D1FB5AE1BA63DA82A735129 /* FBSDKLoginError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 48D4A2545775F1FBF565D8EC0B3870CB /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 61EAEC22E0A83C8EB5D18C0C900E9EE7 /* FBSDKShareOpenGraphObject.m */; }; + 4942A54A0D322357D7127C05EC14DD0E /* PEARFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 737491033C5995F397812BB31A49216C /* PEARFileManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 494347BD5D0D2058D276DB1A74D01FA7 /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 59076AE8B0B37FC426B608BB9D05806A /* _FBSDKLoginRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4954A385199A818B177E146777CF37D6 /* EXPMatchers+beGreaterThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3986655DF78BE1627AD25669F7917F /* EXPMatchers+beGreaterThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49EE0DD81084D4907ADBB4A810ECF6D8 /* NSData+AESKey.h in Headers */ = {isa = PBXBuildFile; fileRef = FE63419E7D132E5CADBDBD4224D984CF /* NSData+AESKey.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4A2A2A98F508605D9017420534982AE8 /* FBSDKRestrictiveDataFilterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C4052D665527DE0B6F8881B7B4D9419C /* FBSDKRestrictiveDataFilterManager.m */; }; + 4AC0EF50FA28ECD5CAE8ADD11B93568A /* FBSDKAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ED8C5E07BFBCB9CC1B4B97DBE01B406 /* FBSDKAppLinkReturnToRefererView.m */; }; + 4BD5CBCEAA6D12F5EAC58EED7B90CA33 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B881CA2353E43B6E26FAEA600D74E92 /* FBSDKShareButton.m */; }; + 4BEDEB993996A7BE2D8F9E79C5782642 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = E12729DB8DDEA6A6BF4A1B4B0C2E4F17 /* FBSDKSettings.m */; }; + 4C6AA149721AE3932943325535A628DE /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = BC545C24C5A8D54810D153FA6D509D52 /* FBSDKMessageDialog.m */; }; + 4C88659E29581FB400995A4F0308D9F9 /* CodFisResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4149576FC2346BA4CFC52A4E799384C3 /* CodFisResponse.m */; }; + 4D1EA65EEA148FC93AD5F0AEF580610E /* NSString+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = B07DC2326FABF8847AA40B7EA1432684 /* NSString+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D7CD31916B7F73BA49D58AE89F8DB46 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 39E89FFEED46C9F77762B85DB40ACD10 /* FBSDKGraphRequestPiggybackManager.m */; }; + 4DEC4FC7A759ED6E40C6706E5E500543 /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = 53841912EF195E68988ECF1B8296A94C /* EXPMatchers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4F1707CFD21586AC4838FEA05A5B3153 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E048E7F7632A10B967AB52D241858CFF /* FBSDKServerConfiguration+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4F33B4B8CFEF1BF41FE268E863F75BB6 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = C51EA81FEC773302CAECCE6E0EB8BE2E /* FBSDKLogger.m */; }; + 5088FB03E9800EDB5A79563B144CA9DA /* FBSDKURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F083C0EDB130FC352650DD469A74ECD /* FBSDKURL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 50A04036DE63DFC2414D7B4610169492 /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C30F20741A7E84FD7DB8C9AE5896798 /* FBSDKColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 527A1FD6FD79117C535D19213B9011D1 /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 1647A3E77AE17C5F75573847BFF8053A /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5399B5A477C804EF0AC35E557C113B7C /* FBSDKCrashHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 850F4F6B1A6A790ABA8C379270F93B89 /* FBSDKCrashHandler.m */; }; + 53BA0E3AB59E76BF49B7F93414640FB2 /* SPTCallSite.m in Sources */ = {isa = PBXBuildFile; fileRef = 9088EF562963E72AF1C93B8E5BEC4E78 /* SPTCallSite.m */; }; + 547AA9A7367677F93AB8E0A33AC5D4F0 /* DJLocalizationSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = F1C1E6199E71FFC5A2072E50100B4C13 /* DJLocalizationSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5481D8E3EA6573EEFACF370BC4A8B32E /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E6270260633D63019977D528D2A4AB89 /* FBSDKApplicationDelegate.m */; }; + 5481E706ACF50767B5C8F1E7EA281A3E /* NSArray+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EBBAC652074BC6E4238476EA9A52C0 /* NSArray+PureLayout.m */; }; + 548BAA76DFC7920AEAA38ED0FB145A27 /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = DDC642C99C587AE595714EB643296D52 /* FBSDKGraphRequestConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54C6163CAF9B3B6389CBC5789EC11DB2 /* FBSDKCameraEffectTextures.h in Headers */ = {isa = PBXBuildFile; fileRef = 65681CD9F13B5227C252F92592759BE5 /* FBSDKCameraEffectTextures.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54C97629E8EC8B19CE98188A713D7A84 /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE8675F77D1069CC1AEB30D63C6D49B /* FBSDKIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 551EDABAFCE6F89BB75C7174D4D9D059 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 49A329A23865766087180AEF35BC03E4 /* UIActivityIndicatorView+AFNetworking.m */; }; + 558C2AD45273CD90DC2994B6413D8F02 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4569DCAA55DEB84EA228E5AB559EF457 /* FBSDKGameRequestDialog.m */; }; + 55E5FF4DC5EEEC6B400A0D87E3193890 /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 72CC98D51B662AAF1F8309EECDEFD5CF /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5607AF83703C0AEDB12115740B6672BD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CAC747BE976C69C78E92A5C30034968 /* AFAutoPurgingImageCache.m */; }; + 5671A72ECAB90A855ECF6F69B750B4E1 /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 1940E37789851445FC73B7F51DBC3FAF /* UIWebView+AFNetworking.m */; }; + 56DD7C0D4C18495F76F7BB029AB79E0C /* SPTSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = D5BDF30AE482AD4AD331C89174B649B8 /* SPTSpec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 57008224D47AF88F479634EC856C1D1E /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 783F57714B50332B19C3657F77871C9D /* FBSDKLoginUtility.m */; }; + 57BA46DFE2F32F04F308289610F73EDD /* EXPMatchers+equal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FAF785EE645AD8E945106F8CDD47126 /* EXPMatchers+equal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 57C62D17B40BB4BF978DF60A8C39863F /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = D74927E0A9EA9D91EECA68353E797395 /* FBSDKAppEvents.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 585266AF43226FCCC597EA43C6F76BE8 /* FBSDKShareMessengerContentUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = FAEB954356BA94A927B8A6CDFB091B96 /* FBSDKShareMessengerContentUtility.m */; }; + 58759CE4B14E8B17D5D1C1E1F2B8B10F /* FBSDKUserDataStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 4096AE0BD63EE947F52B07F34F464249 /* FBSDKUserDataStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 59B277A45CB5664D2C238CB2DDF0D560 /* FBSDKMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BFBC54525BFFAE88820E17DE2AB3D3B /* FBSDKMeasurementEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A43305F185AD6B24558485ACBAC13D3 /* EXPMatchers+beInstanceOf.m in Sources */ = {isa = PBXBuildFile; fileRef = B59E36152C586B9F2C6B47CB2B3B2BFC /* EXPMatchers+beInstanceOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5AA91205FA3FAF4841D458CDC5A309EA /* SpectaUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = B1F12BFB830AAC4D9D8361F02670E091 /* SpectaUtility.m */; }; + 5BB7DB2B42E33838CDDAF4F62CA70627 /* FBSDKPlacesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D426A09DA2FF562ED75548AC40175759 /* FBSDKPlacesManager.m */; }; + 5BDD3C06521B8700F3B12224BCFA3374 /* SPTExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 4819C9E03F803CF58331075A60F2AAE5 /* SPTExample.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5D23F02C1BA3C61CE42C45C887266C8F /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = BEBAC0F707637128603A8648EB840712 /* FBSDKLikeDialog.m */; }; + 5D50EEA94797B128A59963EB19F9B2C1 /* NSDate+NSDate_Util.h in Headers */ = {isa = PBXBuildFile; fileRef = E4B65387584141E4B73D9E8C9135FCC3 /* NSDate+NSDate_Util.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5E1D0A74C516BA76CED6A0681E6CF2D2 /* FBSDKSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 30994CF2104FF9119BA225FE1F634BFE /* FBSDKSwizzler.m */; }; + 5E26BC3ABC91FC538D1FBAFE5B25012A /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = D8CE7A67905F955311866040C960DC67 /* FBSDKCrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5E6233C210A6AF47C79AC729CE57536E /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 230613DA21063BA374344D2AF71E64F6 /* Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5E650BBA668F8295AB82C6C547BCC4C4 /* FBSDKSharingValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F165E6B785D863D235B24394BEB9D9E /* FBSDKSharingValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5FF1B4EEDEE8BCA2E676E2548A412B02 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FEEB1FDC40BC7EB850FE55A82725FE9 /* AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 614EEB592BC35CB49DD0B4EB640012AD /* Pods-PNObject_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 31338E395206508C5383E020D7AC0A74 /* Pods-PNObject_Example-dummy.m */; }; + 61CFC7EFC595BFAC4950EBF8A29ABD73 /* FBSDKDeviceRequestsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = C7FCB8EDEE6D48048A6B7A334B0691A3 /* FBSDKDeviceRequestsHelper.m */; }; + 62087F74238165948006F933D2AF6998 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = DF71932C80B3083358F995D4EF5EC6A8 /* FBSDKGraphRequestBody.m */; }; + 6214814A6B4ED5038353C2DE0F71DE04 /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E22F633219F8A012A3A54523797CB23 /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6222B2B813E5259506BF12E63DBB2217 /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 48A09337B25EC327A11E810AFED75E71 /* FBSDKButton+Subclass.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 629647D0C6EC962A4DD4D50A8E1540F8 /* RZDBCoalesce.m in Sources */ = {isa = PBXBuildFile; fileRef = EB45F0AB152CB4892D84C798FE710145 /* RZDBCoalesce.m */; }; + 62FB37B3BACE413B79E1832D1779F113 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 020E249224444E8478B78D3625DE24C1 /* FBSDKShareConstants.m */; }; + 631357AF775A28B5B9A603B1036C03CD /* PNObjectConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = F57FFF38D26F413601D856556EC10660 /* PNObjectConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 63A811AA524F9C880A69F16BD83C1BF3 /* FBSDKURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 71ACE61C49A838AB171E9761AD0CA030 /* FBSDKURL.m */; }; + 63DBC63AF26A06940250773BCC634092 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A984BA92A8B42652828B6B3C7C434041 /* FBSDKAppEventsStateManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 63F67C87FF7F058C066AF598F419EA11 /* FBSDKCameraEffectTextures+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E08C92312D8EE063E663D79C076B5B0B /* FBSDKCameraEffectTextures+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 645E7803BA7624AEEF2F0695D8F5EE0A /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B31767BE817021B3A4BBED861534A34 /* FBSDKMonotonicTime.m */; }; + 64EFECEA0F9146C8E38F4C0A2D18ECF8 /* PNObject+PNObjectPOSTConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0D1B22AAC5A3CF541143E246D519B4 /* PNObject+PNObjectPOSTConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 653A3F89668CEC49C1BC55D9397397F8 /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 41FA8C2DB95796F6CF59F17F19CAAD64 /* FBSDKDialogConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6696CBE4654AD391C63CD4E85ACF2C97 /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = CA7CAD525621833F2B52EBEC7F7F6A45 /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 66BA804D90462B9C17804FA8C42CECF4 /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 00020ADE721B0B7BA5B6366521C3B8A8 /* FBSDKContainerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 66C07DFA234AEA73AE1B3CEFE2E81B20 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 2325EC8CC3E173B3C3D69138198D5FB4 /* FBSDKSharingButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 673FFCB118ADF8093A391410DF7AF375 /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E0B09873792C5BE04014F43BFDD6BA76 /* FBSDKContainerViewController.m */; }; + 688EDDFA0B01126673796E2C6CD957F1 /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = FBEF15B5B675FEAFC1DFB885307EFC13 /* FBSDKLoginCompletion.m */; }; + 69349BECD39FBA209D2ECA0AFE6550AE /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A44AF883D30E26BD4F5139F7D6D8047 /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 695128B32F956C20F612201E823C532A /* FBSDKShareMessengerURLActionButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 40EB7C011EE90C1626BAEB461A9DB92E /* FBSDKShareMessengerURLActionButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A615B1F741DEB7CF8F85CA4194EAECF /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h in Headers */ = {isa = PBXBuildFile; fileRef = B9ACA258E3F31D44676A7385ED9D8985 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6AB635E53472AFA729AD959EB18363B1 /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = F13955BC26ADB3F027F97DED8A31397B /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6ABAAA493B7FFF9CB93AF9E7BE91D9EF /* FBSDKPlacesKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C1FF9C182D30A3BC145CB4142C44AF44 /* FBSDKPlacesKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6B5B030904BA451F4FFE3AF2FD28D2DA /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 89D7AE658EB0D26CDDEED9E3D6EBECBB /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6BC2BD4E7EE77C749E7CC429B8CF5670 /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A960A67158114A27DAF3B16496FC3B5 /* FBSDKShareOpenGraphValueContainer.m */; }; + 6BC5464E4A0C2373D3E5FC8949D0830B /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 4916F2A6813091348D601DD5F661895A /* FBSDKAccessToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C01B82FC46CF65B8BEDCD23333AE647 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A78240FED00A790C106F16CD523120D /* FBSDKBridgeAPIProtocolNativeV1.m */; }; + 6C2B1FA8BDF3452AD5C6E640AE95AA6C /* EXPDoubleTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 4768A9C6013B0D59F546A8E580314D07 /* EXPDoubleTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6C2E531C57C4F1953FAACA2CB90B44F9 /* DJLocalizationSystem+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E66523DFCD4A69758D19F8FDE2C8B6D /* DJLocalizationSystem+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C5BBEA4988BD371422CB2F26909617C /* NSArray+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 79563E5CDB341577431723D647970A42 /* NSArray+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C908BCC245C3A7D504A018185708328 /* FBSDKWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D38597A20CD2A51D9A558B55DF648FB /* FBSDKWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6CBC773B81BFCDCEDBF341E9B9EF5F86 /* SpectaTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 52F36B4056B5E67790E3CDE1FCDCBDEA /* SpectaTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6CBF8A3B47B4F92B43A4C78E769D4B34 /* FBSDKCrashObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 518D90B042CAD631D7ECC4AE3D1C73B6 /* FBSDKCrashObserver.m */; }; + 6CC75EF927F9C0E860F82AB8821C9D00 /* NSLayoutConstraint+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = C7567BFFFC22DE8DF7536E547D076500 /* NSLayoutConstraint+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6CF2DBC0C134BD8E779F837704CA1005 /* FBSDKAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F1AD7F8935DC52E0657D5911ADC670A5 /* FBSDKAppLink_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D311E7FBE67BFDE9E812885324764C3 /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = B498833DF65EF5F6A923FBC2A4A80B7C /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D47CEF27286E4CFCFB22C508C0F89AB /* NSMutableData+AES.h in Headers */ = {isa = PBXBuildFile; fileRef = 39FFF15F6D13C4A523E97FE0C4450697 /* NSMutableData+AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D98847110770E896A206A16EB44F038 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = F125EC2D5C81E1A620636DC66E53E173 /* FBSDKLoginCompletion.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6EDA99560F8273FA4CA130BA4CC04162 /* PNObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DCFFFE5A713386F9B2818E4EAC4FB1 /* PNObjectUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7021D3AF25EC280F69E49EC9FBE59484 /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B8918FA74A9DCEB87C7DF313F936651 /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 70384A05DD64D46FE1E31969F1C4F88D /* EXPMatchers+beGreaterThan.m in Sources */ = {isa = PBXBuildFile; fileRef = 9770CC7D6AE8CC86B62BDC5746E6044B /* EXPMatchers+beGreaterThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 70CA9888EDD426D323A9F4E59EB61C58 /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FBD9308718C58F1D27DC93982C5B21C /* FBSDKTestUsersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 70CFE9C23D000064F5EAC103CAB191C9 /* DDDKeychainWrapper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1243093EA95001FDFE0D1F31BEAE71AA /* DDDKeychainWrapper-dummy.m */; }; + 71EB79CA9B68615A8C4E74B99558EF3D /* FBSDKAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = D542F91E9B9DBEEE243EED8DEF6867D7 /* FBSDKAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7277D7C51F94735F754A3DE6CAA43535 /* DDDKeychainWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE84A1116CF2ECC29DC49C5E14F04AB /* DDDKeychainWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 72797BC85469FCE7E6198B67EC88E851 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 5151B14C82DF25D0779A942FA300BD77 /* AFURLRequestSerialization.m */; }; + 72BD097F15B6FF82638E8193D2CA554D /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = E1EFD370D8CABADC2ECC250027A0293A /* FBSDKCrypto.m */; }; + 738B88E8018D3400546022C0A2641846 /* EXPMatchers+beNil.h in Headers */ = {isa = PBXBuildFile; fileRef = E9E60D273FC77D061562B01AA241275B /* EXPMatchers+beNil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 742920DE2DC904A9A9D3C2EF05120F62 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C6ECF01B450541081B0C19CE2175E80E /* FBSDKKeychainStore.m */; }; + 757A01B268965FF13D1FCB2DF6F56424 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D4C45BBFDF147786D2B427D5021DD817 /* FBSDKLoginConstants.m */; }; + 7596414895846763FA34D1708AF95F00 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C4E2D8365F3F2E2C28F284F6B73D5B2 /* FBSDKShareDialogMode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 75CBB925680E20709B117272D49DE1DF /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FEFAEA5263FE8E3D6FB9A99F04B1FA8 /* FBSDKButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76A2B77F22962B373B83D1CE8F22DEA4 /* FBSDKAccessTokenExpirer.h in Headers */ = {isa = PBXBuildFile; fileRef = EFE2784CAA418724A76D2587E0F2DECD /* FBSDKAccessTokenExpirer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76C12586B018B3565DA3814BF774067D /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D058CBB37AC27CFE1BF1A7F24628D3E /* FBSDKTooltipView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77322CBCEFED3975DDEB4996302369D8 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA10E3DB4798AC5863B7DA71517083A /* FBSDKLiking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77B38FE4923CE33A68280A4C4EDA79BD /* Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = 914C303A3970633C95914B4C96D6378A /* Specta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7872C1110B844B7FF25BB50E128654CC /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 611731CFC7178E30E450CCAF83607455 /* FBSDKShareVideoContent.m */; }; + 78CE7FE1DED29E5B110521C379316DF2 /* AFOAuth2Manager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1910972025C0A3811CA6B891AC5E7445 /* AFOAuth2Manager.m */; }; + 7A67D15EB1E9A04D206C732AF7EAB216 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 08721431B6068620A2DE09F7F52D06C6 /* FBSDKSendButton.m */; }; + 7B44616502D46DA861621DC19F3B5418 /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 94D34F4A0AD5F59B9D59B52D37E7AEF3 /* FBSDKGraphRequestMetadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7B85FE37D3808A77C05C1E2EAE5FBCB4 /* FBSDKPlacesBluetoothScanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B26CFEA32C0C3864F75B24684E93E86 /* FBSDKPlacesBluetoothScanner.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7BADB447A938E00B1012E711A61D704F /* PNObjectConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E4560ADAB93959DAA87F55CEEA2EA0B3 /* PNObjectConfig.m */; }; + 7BE5B5F1E86DD2C84CD89E6090096B64 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = B408B7DD1DD084A2865E1DC1F960C502 /* FBSDKKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7BF007AEAF21B3E55A442E727AA6565E /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = 392792D56AB5073333277DFACB736214 /* FBSDKWebDialogView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7C11F946C5C5F913CE3E9168C4FA0E5D /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = EFB4BE0278DD6AD031A26A4ABA150E99 /* FBSDKAppLinkResolver.m */; }; + 7C1632A83B80B163FAC5297F8E9576D1 /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D5F0AB7CCB95D5660C1CB68383975CC /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7D5565FD48A9B5B7CC3D32795897DC4B /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 26F1529DB3E65477AB369CEF7C16CFE8 /* FBSDKGraphRequestDataAttachment.m */; }; + 7DB6D06B53FED23EA85B2478A1207CB5 /* nv_ios_http_status.m in Sources */ = {isa = PBXBuildFile; fileRef = 5534A90C631B2C9A6876ECEEE1AAB59D /* nv_ios_http_status.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7DF8928DD35D4B01B8B9369F3B34DE48 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 06DC986B5883580D356547C4754730D4 /* FBSDKURLOpening.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7E5BBFD244069EB2C7835BF9BCFBFE0C /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = C29689896ED9C4CCA3235D84BDA47F95 /* FBSDKAppInviteContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7E67FF3A5C6EBFCC7BBAD24AF2BCDA0C /* PNObject+PNObjectConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 84EBD1E23F56EC2AD373B6810B8E1F9A /* PNObject+PNObjectConnection.m */; }; + 7F2DA9C9AD3E2C63869A7D0E9FA135F2 /* FBSDKImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 07844CF254823F4B1EBDDA1D926D92B2 /* FBSDKImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7F73798D76816D32B059A14321567751 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E738F593463D00EF1B37AAE88179048 /* FBSDKCoreKit-dummy.m */; }; + 7FABC46072D3B491F89AE04B15F857EC /* PureLayout-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F733CAC3E83253D9972F5D1E6EC32CEF /* PureLayout-dummy.m */; }; + 7FCC3D21B38D28CDA0B84382FB5DFC51 /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = BE49B64709567E7A145F4C5326F9BB47 /* FBSDKCheckmarkIcon.m */; }; + 7FD25AE74C165D37BB9909EF2026746C /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 18A8135050CEE2F3D458A8B0D7FA6CD9 /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7FFFFFAC636B155A3110E08C74D7C746 /* StrongestPasswordValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BC0962C85EBD262178848F2222A5DED /* StrongestPasswordValidator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 80196A511F8FEC222212A55D8FF24052 /* RZDBMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C3E5CEEBBA28A3EB21CB0A2B12400254 /* RZDBMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 80E371FE77A34E12BA35EE5C7EEC092C /* EXPMatchers+beLessThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = F98E70D66DE0111A380E283FE4E1967A /* EXPMatchers+beLessThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 810E214E4964D346322768E9CB6DDC9E /* FBSDKAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 54B1689F9B83329018AC6C8F66F1D110 /* FBSDKAppLink.m */; }; + 8177BFC285E3930D38496CB99BDA28A3 /* FBSDKCameraEffectArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 5354453D3F6BE5171EC3360413012962 /* FBSDKCameraEffectArguments.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 81D3E9271C2B6DD91DBAF95619118283 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 9197A92D99EF2622407DEDCDF386F1EE /* FBSDKShareUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8231FDD98A7D1659F4FA5788AFEEE6DF /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DCFEC270F299E79461760A3D89B223B8 /* AFHTTPSessionManager.m */; }; + 82B408305A7887C4115119FC0D3CE61C /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 4311F7F04CE792BE32135B03B319D499 /* FBSDKViewImpressionTracker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82C4278DE3D4C0B53798ECA7CC5EE646 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D01ABA1F3663926243C9C6C840A0C6B /* FBSDKShareDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83FF7BB5E66EFCE4F16C0BE7C72A9588 /* FBSDKHashtag.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CF37DE959D905214F8CD85474C82AF2 /* FBSDKHashtag.m */; }; + 859820E4DA51ECED0008EA01832E641C /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F90A263EA417FF6BB211C41A5A373B9 /* FBSDKGraphRequestConnection+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 85C159232C615BB37176C21D44A31B4F /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB0D3CEE222FC9108DF8C76EAB9B0F0 /* FBSDKAudioResourceLoader.m */; }; + 85C7FAA50BD579A20A9ED58B7D3BCAE9 /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 57E10D43C2D0C2A13A85317EE5A4A226 /* FBSDKMaleSilhouetteIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 85F1E88FEEBF9B0337821E05C048AC39 /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B86D5CF72EADDEBD38F7252545B55DA /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 86838320D9CF206B64107BD88DFCE163 /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB563C9AB0D99B6C125D6DB67E46943 /* FBSDKProfilePictureView.m */; }; + 86CAEB4C75338076105657BFE9893563 /* SPTCompiledExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E090BA8397F464E495907426EE323517 /* SPTCompiledExample.m */; }; + 8784B738E3DFADE24E98223F154F235E /* FBSDKApplicationObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = D12A9668459564BBFD480566188A3BDA /* FBSDKApplicationObserving.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 87993430EB92E6BC8A855A7113249987 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DF9FBD78DA4F4E3FC6A1E23A59FDC097 /* FBSDKLoginManager.m */; }; + 8873174683E2EE234F3A3EB7A9B4F15D /* ExpectaSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EBCF19657BC2856CEDCFB486B1DDA66 /* ExpectaSupport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 88DF8E3B926B1436918FD7D05FB3A522 /* SPTExampleGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F0B4E7ED20CE9625CD2F2E9D74FD841 /* SPTExampleGroup.m */; }; + 8932318D8D8C98EA2FA0C05DACF4A3AC /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 17964E8FD95FC261208056AA2B06347C /* FBSDKLogo.m */; }; + 894126828AF68F98598CA7B53E737AEF /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E0BD5FAE5D434555DB4594601FBDE6B0 /* UIProgressView+AFNetworking.m */; }; + 8946B5ED87F9788862A7832A710581CA /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = AF9DFEC95804545E472480D96442635C /* FBSDKProfilePictureView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 89CDC28A48EAA0E0FA8AF50A3B64206D /* FBSDKPlacesKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F8E665952F54F60A5633CAB1E206D970 /* FBSDKPlacesKit-dummy.m */; }; + 8BA1CFDE76C5611F900E4F1841FE03BB /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F875FA1BB5843FE4FAFF63DA739ACFCF /* FBSDKApplicationDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8CFE8B65BF88A8C9D162B199B7BBD5C6 /* FBSDKCodelessPathComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = A99D173CEE3D2C4617FEA128C402C683 /* FBSDKCodelessPathComponent.m */; }; + 8D27A8B27E33CEFE36705DA27D962B1E /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = C3FBBAC2044DD8001FBB00EC203559BE /* FBSDKShareOpenGraphAction.m */; }; + 8E00F339F07F0EAF5C65C676A94C38A6 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = C4F7C27E444E35D2BD1E9B2FBE5CEB6F /* FBSDKBridgeAPIProtocolWebV1.m */; }; + 8E06392A55FA4EEFBAD59A24B10E7C6F /* AFOAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 04DEFF5ABB743AF7640F7976419E8506 /* AFOAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E0CCDA72EBEB213ABEF444655FBF8CF /* FBSDKAccessTokenExpirer.m in Sources */ = {isa = PBXBuildFile; fileRef = DC68738AF329696AA58B007307B0542F /* FBSDKAccessTokenExpirer.m */; }; + 8E971E2458163B8D717523B8D8BC892D /* EXPMatchers+match.m in Sources */ = {isa = PBXBuildFile; fileRef = 3729E0EA5C863A17EB62904BD4F1A518 /* EXPMatchers+match.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 8ECB890498477AACDAD30DFCCFEB3916 /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 116161BAF7ED24A13EF3B45FAD9356CE /* FBSDKAccessToken.m */; }; + 8F5B10D2E6BD453C535653D36FFFE4BB /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0E5A35F49338AD11CD89875F129842 /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 907697EEF9E9A1B26350BEAF0857158F /* FBSDKVideoUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 45A8F579929F3D699481AD14D5B5BB0B /* FBSDKVideoUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 90CDDAAA379201234232360E33017308 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 95ABF045D43F3A4657BE496887C3FADE /* FBSDKLoginKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 914E01CDABB593DC9C605BC42E9E2B48 /* FBSDKDeviceLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 80FE97F3694EE6B6E4CB9155B58D0F33 /* FBSDKDeviceLoginManager.m */; }; + 9197618F7D7F7FBE14BE15F3CC3951B1 /* FBSDKBridgeAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F4D1295CA8B2F222CB1B4605BE9C976 /* FBSDKBridgeAPI.m */; }; + 9377564A208355895387DBC9416720D6 /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B7E08BB0F0CB9A81C1681534F500D40 /* FBSDKShareLinkContent.m */; }; + 94A899454728A627B3A09E219D11F90B /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = C3B88DAB639D3270262B8AEE1E71F01A /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 950B92435277B1CD5664F6641DA88B71 /* PureLayoutDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B98AB195D3D41840EE0E7ED7C01D8370 /* PureLayoutDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 95D094D1FA4C6E453C253F469B6AE8C5 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = F6256E5B7A2F0EEAA35AD974F3ED908E /* FBSDKShareDialogMode.m */; }; + 960AD9C539DEE5FF7CD5FE3F9551B264 /* PNAddress.m in Sources */ = {isa = PBXBuildFile; fileRef = FADAA3FF0222B5B84754FD3CA6737C89 /* PNAddress.m */; }; + 963D4FD958D554159FE45C275733F2B0 /* FBSDKAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9615C07E28B17A91E4308C7CFC07623A /* FBSDKAppLinkReturnToRefererController.m */; }; + 977D6656979885020355386006FDAF87 /* VatNumber+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = D6813DB633AAAC3F45EA69720EE117E5 /* VatNumber+Helper.m */; }; + 97B260866FB542F3180CE0F150961036 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 322EA7A4C0A8C70C8E58B6F4BB9705DB /* FBSDKLikeButton+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97B82F5D3F24BC7E39D132804F264406 /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CA6F7990B8777F44D1723868E9E700F /* FBSDKAccessTokenCaching.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97C571D4DE11A9BC5DB44E1C56AE3E81 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 411607A7BE0759E1E6D6A632175DF657 /* FBSDKServerConfigurationManager.m */; }; + 97D1EED8AF05B0BF835A8551A236D63F /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84C8E9ECCFFE9F07275DE7EE27EE9DC6 /* FBSDKErrorRecoveryConfiguration.m */; }; + 9910149C8EA11B21E778DF0C0AF34875 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 068A90B382A5BDAB956F85B721091B00 /* FBSDKBridgeAPIProtocolWebV2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 994B3B1534C55CEE64D5B037DE69DD9E /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 01EFCE9AAA60D82E564BD53C447C5C3D /* _FBSDKTemporaryErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 995E36B10245036B73BE5479BC8B7EE4 /* SpectaDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 97F53AE82F2774DB888015D933C1075D /* SpectaDSL.m */; }; + 9A7A3B80A68DB4A21A6833AA4683A7AD /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = D49411A7110F577BCDA9854417A548F8 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9AC413BEAA923D28381CF1BFB16B2974 /* CodFis+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = DC23077F9CA226D72E1B9815422F8D2B /* CodFis+Helper.m */; }; + 9BB8ED3882E21D87E2D42476191721D9 /* PNLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CE44581508EAE6436379B373E097CF6 /* PNLocation.m */; }; + 9BDDB82512D2E409922BB19C18CC929E /* FBSDKSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = F9ECFAB33114DB544F46EA164E06C27B /* FBSDKSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C21FACCDDADB8B9B8CB3D4930B14563 /* FBSDKCameraEffectTextures.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C5B7BA0C04E34412CA6AB9944D0C8FE /* FBSDKCameraEffectTextures.m */; }; + 9CBBC56F653655FB304D75D53C8F7022 /* FBSDKShareExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 07F242465FA619AD3802DB09F94589A2 /* FBSDKShareExtension.m */; }; + 9D27CD79098C4864CE7610D206FD3368 /* PNUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A1D5E7FB99AB4119487B6405B2A2365 /* PNUser.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D764267B82077209143B7CD260E4A67 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 21D7A6991DA2BE39B334B014560B7582 /* FBSDKConstants.m */; }; + 9D96E887F3AF3FCB896F40F6167D03AF /* ExpectaObject.m in Sources */ = {isa = PBXBuildFile; fileRef = C333064FF91CC3B29E8DA3FAED4852E1 /* ExpectaObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9E5ECABB948119FA2088578C3762F6F8 /* HTTPStatusCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E555AC810A2041B830D7329DA009658 /* HTTPStatusCodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9EAA62A589793958369FDBF4F136375E /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E61C2607807755DA4CDAC99A8E95F19 /* FBSDKShareOpenGraphObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9F626A7D5FD894DA71068A23E2127D41 /* RZDBTransforms.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8A96DC56B6770C15B0496B9BFC8426 /* RZDBTransforms.m */; }; + 9F7BC8845FED6EDA9E03A7E791989A60 /* FBSDKMetadataIndexer.h in Headers */ = {isa = PBXBuildFile; fileRef = A19F676E97C0A8A0AE86981F942EAD53 /* FBSDKMetadataIndexer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A0581613DF78EB1E6383C9FC20CAC15C /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = C5569A9C536755F132B7DBE3B3BFCFB6 /* FBSDKAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A07CD5D168B09E2E91DEEC3FF3936A2F /* FBSDKShareExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 44DE8C3820B0FF557F061B087EAA901D /* FBSDKShareExtension.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A080451B9A9657BEFFD52CFB585A63F1 /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B4671A98D9A3888F282292A1681AB95 /* FBSDKLikeBoxView.m */; }; + A12CFB59F38100C987161083B914187D /* EXPMatchers+beSubclassOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CC6852DAD5208810D3BBA0B9D4BAC5A /* EXPMatchers+beSubclassOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1583E29327E205E385C53156BD91207 /* PNObject+PNObjectGETConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB27DED4610BBF2E5C7C16E48223CE9 /* PNObject+PNObjectGETConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A16187923EA1A156F18C909206809C30 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 15532673F269791E0F4FB78CBD009CAE /* UIButton+AFNetworking.m */; }; + A19FFAFF76E0C882DCD18A628305248C /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD6374C7D61B357C54B4026EF0D3A96 /* FBSDKLikeObjectType.m */; }; + A1BDC2F1844D08BE57A7A543E71C8E18 /* XCTest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 53A5ADB303EAC54924E438A296F00E36 /* XCTest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A22BC00808F6D9E0500E0717FEE49A1A /* UIStoryboard+DJLocalization.m in Sources */ = {isa = PBXBuildFile; fileRef = 992B9F95645A6A2E44CD26C7559EF820 /* UIStoryboard+DJLocalization.m */; }; + A262EDBD5AD9FD6253FECD7405A316E1 /* PNObjectFormData.m in Sources */ = {isa = PBXBuildFile; fileRef = 054D06556574CF560E02B1BE3004FFE6 /* PNObjectFormData.m */; }; + A26ADE1931856B9F72370EB470D145D7 /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E70409621EC61E3F5D5C113B99CCF08 /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A299C477C3440AFE1CB91EAC6FB94B25 /* PNInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = C683BDEECC7BAFC3EA7D52560756D135 /* PNInstallation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A347BAB4B140C11C098B3B2F8F7E9D4A /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B123C23EFEA3CD8498334BF264118BD /* FBSDKAppLinkUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A3E9D8D3FCC116B9977B4D9D15931763 /* EXPMatchers+beInTheRangeOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A05D2404EF3D8FDD1CFE4186752A8E5 /* EXPMatchers+beInTheRangeOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A51F7ECF32728036C3977EA073A559AD /* EXPBlockDefinedMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = F061933CE5061B1ED24F6F671F836479 /* EXPBlockDefinedMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A58C186911AA304346D9FC1916AF3130 /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1973CC1259420A40AC5698C233F3C84F /* FBSDKWebDialogView.m */; }; + A5D55782524E9DA98FB2CF6C28E84110 /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = CA6F6CEB9A6C6B77A0B136867E3B5578 /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A61BB1434D3AD7F5AB4A5DF28ABA0925 /* FBSDKCodelessMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EE64BE00752BFBE1AAA68701AC365E7B /* FBSDKCodelessMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A66A3C5F57756630B48ACAD7F54C02E2 /* FBSDKInstrumentManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 43861F21D6F42EE64A99B330B3FADF21 /* FBSDKInstrumentManager.m */; }; + A7AFF805552754168FE472102902BEE8 /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = 11B40AD33B009F8CE971455A1FA2D593 /* EXPExpect.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A7D591CC1F33EDACCC0B17F858833578 /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 3414D8CFD8EFD71830E819582908FA7B /* FBSDKMessengerIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A845819E8332E3CA279E6B00EAA55366 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0238CC0291309C0FE2C236CE20E10A93 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A8AE6BF42C273F40614A9B51971DBE81 /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5DCBC122F8EC78B6D2BBBC294B4EF3 /* FBSDKUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A907C978C5EE1A845964E19900471D6F /* PNObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = BF2E8502436D721C84299D3DA65CBD3E /* PNObjectUtilities.m */; }; + A973B156FFA9FC59FBEA74D7DA973CA2 /* FBSDKViewHierarchy.h in Headers */ = {isa = PBXBuildFile; fileRef = 08F791F902E95C73B96C18E65B24EB8B /* FBSDKViewHierarchy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9A5AABC89D7A5FFAC2F7EAA4FB38129 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C0B0EE21BAFD10EEF5AE1BF4E0FAA8 /* FBSDKGameRequestContent.m */; }; + A9B89ED9133B7638F2B247702B0FA664 /* StrongestPasswordValidator-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A5C0A251195644515FF578981B6BEC5 /* StrongestPasswordValidator-dummy.m */; }; + AA89E9D0696282B8AF7F064E1D510ACB /* DJLocalizableString.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F940742E623C3AE826DAD0EC1D84A45 /* DJLocalizableString.m */; }; + ABD2757EE1D974309CAD8D604017D44E /* FBSDKDeviceLoginCodeInfo+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 58E83BE268B916C7492AA798119A6302 /* FBSDKDeviceLoginCodeInfo+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC070DB0500703DF0B9F2107BE5100CE /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = B16457B72C61791C11563E11D2F64610 /* FBSDKBridgeAPIResponse.m */; }; + AC588E1A0B03DCCA231DB1D2EBCABEB4 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = D8A836C8CD31662B3178DEC599FFFE5B /* FBSDKGraphErrorRecoveryProcessor.m */; }; + AC7B9D0B50473AD656DB7FB09CE86EDA /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 556BFF9FF8DEB2D7C3CD2ABB63202C70 /* FBSDKLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ACBC1264702F6F2AAF5DEF5BF090197F /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2976BB72E7664FCEAE9A408065D4A1C5 /* FBSDKLikeActionController.m */; }; + AD2CF66258C344DB8B748A7D7325059E /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5B66930BCD9E1B123DCC9CDD2EF0D2 /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD3450AB06530792E03EBF9D22E66872 /* NSLayoutConstraint+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 931DBB5DF436CADD0AF0B212894199EF /* NSLayoutConstraint+PureLayout.m */; }; + ADA3E569B52C8588483DA45D498B924C /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 01A6983CD7A00530A291B10286D5A4F2 /* FBSDKServerConfigurationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AE2A23026DCDD2EB1DE95DFF362C5808 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A87481DF9D74397BD5090A3AD4D1D4C /* FBSDKErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AF4EEDDC8B4D37D4105C7AC3A571A6B3 /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 7832DAC472266AF6637B8735A03F72B1 /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AF594713B675C2830CF7E5CE462E6568 /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5757E806F82DC0D01FD261979E1F23E8 /* FBSDKLoginTooltipView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AFA244786AEB3ABFCBEA1DD14D4B74CF /* RZDataBinding-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BA407A678EACC9F2DEB0185DE6D7F95E /* RZDataBinding-dummy.m */; }; + B0010BBE7F27AA63239F8B31D4AB4366 /* EXPMatchers+beSupersetOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 3724D1F1B00291D22EDF1043CE20B971 /* EXPMatchers+beSupersetOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B00EA522A62498626388BC649DFE2996 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E78B80A06ADEF143D3B7C7FC7B9BE22 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B060DE8A5D631F23BF283E7AB742A8C0 /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = D716E738A0815AD234AE9961EE3C7330 /* FBSDKMath.m */; }; + B098BC9005738774F6288FF2879FD51D /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E8941AD9D7EA5003CE7CDC855337856F /* AFNetworking-dummy.m */; }; + B1AD0A4FCBBBF8D07A269C6F259D9658 /* FBSDKShareMessengerGenericTemplateElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 573642D4018A98522956A13E0847A476 /* FBSDKShareMessengerGenericTemplateElement.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B1B055EEECB06663BDACFB2375B6845B /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = E780F73CDCC0DA3422751FA8F095BCFD /* FBSDKSharePhoto.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B1D1E30BA689172A84D7B39428543CCD /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 149FA64F5D3E9157CCCD2F5D4040AD0E /* FBSDKAppEventsDeviceInfo.m */; }; + B1F1A229A8713BB25B90789227D7D85C /* SpectaUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4135111B617AF1AFF945B0FEE8620780 /* SpectaUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B23F454F0680C742B9D052E6AC3F4F5B /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C260EA54EE75A4DE5E86A1F5D484BA6 /* FBSDKAppLinkUtility.m */; }; + B27878E3B8F8ADB1FE01DBD6CB5812E7 /* UIImage+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C85E59E3F90743871D0D27C59B20F7CD /* UIImage+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B353DEE0F707A17093B0D8A5F53894D9 /* Expecta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 65BCBD7278F0E5DFDEB0998AF0FC7E09 /* Expecta-dummy.m */; }; + B3DE86F8CBDA4C6C0CD8CE85A44F0ED7 /* FBSDKURLSessionTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 42DA9858438CCBE80CA7613FF57AD932 /* FBSDKURLSessionTask.m */; }; + B3FB219DB2CF6B0C2102538B1464B2E2 /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CCB02CC1D502C4FAA71F6D8CD6994B /* FBSDKShareConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B458BC2D677BFE2781CA179888E41364 /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = ABD73E7380E8484CE384D185D857A403 /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B4A5FB355527EDC56B58677399808AFC /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A23234F7910DD3182BC95D88893217B /* FBSDKBridgeAPIProtocolNativeV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B52035E151F76FB0559D1D84E133A3C8 /* FBSDKFeatureManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 46C36B2D10AA9F8F6C8F327DAFBBF054 /* FBSDKFeatureManager.m */; }; + B56FD8039F122A55F611F0CB10A2AEEE /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 1599B0A83F12955B16D69E671AB13931 /* FBSDKIcon.m */; }; + B5D629B65A97D9E8EF4D5BAA4F40C0FC /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 0470F435D4BB833B1C1AEB7FE464DB10 /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B67A7C086020006FC96A8E8C76B20E53 /* SPTSharedExampleGroups.m in Sources */ = {isa = PBXBuildFile; fileRef = 01044D987AB424AEEBD2DB04A7CABEB6 /* SPTSharedExampleGroups.m */; }; + B6DB2C7D731B52766EBB9C40A3BB1254 /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 64B2F4E165CE2E764E205F13F320487B /* FBSDKShareKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B74EC43FB63B138E9243419DFCC5EA30 /* PNAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 7938D545C7ECB8A31117F219C2AD44B9 /* PNAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B7603387DF30944EE2AF64E8AFD9B996 /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 48468FCCD7C9AAA18C34A90AE8C78A31 /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B90A1CC2798F13C56260D2AE4062AD86 /* FBSDKPlacesKitConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = EF5ACFD065B5DDB4D5EB938B5A248DA2 /* FBSDKPlacesKitConstants.m */; }; + B917AC54965414C8E8C1177893F71EB5 /* FBSDKShareMessengerContentUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4112ACE7113D5A437A69DACE432DFDBD /* FBSDKShareMessengerContentUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA2D4C72E2185DC986E32039A32F3C47 /* NSData+SHA.m in Sources */ = {isa = PBXBuildFile; fileRef = AF6F462E18F5FFA0C83FBA0907BFF831 /* NSData+SHA.m */; }; + BA3AC23B598A58E0BE1F92F97FCC4E82 /* PureLayout+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A618958FDEFB746E717DCF8065B27CA /* PureLayout+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA7642014EE39815D414EBBC6132FD7F /* FBSDKVideoUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 97ECC2D79326237AAFA4140AD0DA1EA7 /* FBSDKVideoUploader.m */; }; + BC10594FD1E8C7CB0C5F767DBB742CAD /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D7159B1A9D4B285709620EF6DFB4B5B /* FBSDKShareKit-dummy.m */; }; + BC64B4C0A755F41545C97183B0F877A0 /* FBSDKFeatureManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A35C8DE88425A94086651E757D7787D1 /* FBSDKFeatureManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BCCC03AB3BEC74DAD5170A8441D9BBEC /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 4995F1014F606C673716C0CE60010E47 /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + BD769EA7F521A62B01BA7C52FBFE218B /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = C6212CC4ED2994C808C36D839EAFD6D0 /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + BD9F7C859FF34C1EDA79355328957E9B /* DJLocalizableString.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BA8C4F75BE2E0BAFF5F16B984021BE0 /* DJLocalizableString.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BDB74714185C37A4B03130B7C708BFE7 /* PNObjectFormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F80B3A24ACA62A0E71909F94C5A0FFC /* PNObjectFormData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BED84F19DDD265A8DC03B3F4DFFEA254 /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B612F7111746B3D800CC013BDA56FB1 /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF0E9FC2F301F77F02220AA076BE6443 /* EXPMatchers+beCloseTo.h in Headers */ = {isa = PBXBuildFile; fileRef = CB6696088E5A6C9B0FD73CB2B38EAF83 /* EXPMatchers+beCloseTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF1661B34401873A82AAF7FB32BCEB60 /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 90F08D533B1E2A9EFD5054531F39FE9D /* FBSDKShareLinkContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF1BB85F5AE0CA3D82858CC2ED47F0BC /* AFJSONResponseSerializerWithData.m in Sources */ = {isa = PBXBuildFile; fileRef = 92FD59F1DE5437839C6B6000ADC62686 /* AFJSONResponseSerializerWithData.m */; }; + BF83718577817915669635406238850D /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = C610CC39FE25670ACC72D0F738694762 /* FBSDKKeychainStoreViaBundleID.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF9E3937CCFD78E7DBE3EF757C4B9093 /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 47FA866A06F3B382F4D8157612A3E285 /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BFDFB97AD59223EFFA6B4BE3269EB1AE /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m in Sources */ = {isa = PBXBuildFile; fileRef = EF4D1C1E110CDB46EAD80A76F7641B85 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m */; }; + C022574B7EA6C3CFFB670972FABF0FB7 /* SPTGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 430DF6E91D2D7820ED73D1B75ECC6450 /* SPTGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0356C8716EB1841EE835473D9B880D8 /* DJLocalizationSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D5DCDE366C3CE2E2147DD595343C520 /* DJLocalizationSystem.m */; }; + C03EA2808357221626B0A716243761F3 /* NSData+AESValue.h in Headers */ = {isa = PBXBuildFile; fileRef = C366D77560E2D813D88859B6DE207190 /* NSData+AESValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C06F61A759022A62864BD9F8EE3660F3 /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B0B24426C939A6FD4545BD5BE650AF6F /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C099F6C17B4935B2E76B8C8DCD4A3BC0 /* PNObject-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C06566592049441679F11F9C792106C /* PNObject-dummy.m */; }; + C169EC99C9964AD23FFAD7F857680620 /* FBSDKGateKeeperManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C35CCF08DC506C074C1F556A97CA790B /* FBSDKGateKeeperManager.m */; }; + C16C9F6565B81E5F551862AE2CC8BD58 /* FBSDKDeviceLoginCodeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 43DB2D37D43A11FC957C2A84F8962D67 /* FBSDKDeviceLoginCodeInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C1B08B66DE013F7EA440F2756086F25A /* FBSDKShareMessengerGenericTemplateContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B346B413AD002A0073BF6BE7F38BBD4 /* FBSDKShareMessengerGenericTemplateContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C1CCECA59CB104BE96FDDCA9487E83D4 /* PEAR-FileManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2819C17659A1EB1D2FC35741F314F1AF /* PEAR-FileManager-iOS-dummy.m */; }; + C1CE4EEE1CE1FDB961C3F5D3D93F3D0B /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = AEA471E330EF95488648136F59371857 /* FBSDKViewImpressionTracker.m */; }; + C1EE07F0E0B54668574633B545FBCE48 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = B8DB5620089FEC987D9A9BAE45377650 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C23C1C0ECD81172691DD6868F3A17C90 /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C9CC5FBA43E2F14284E595AFFCCCC00F /* FBSDKTestUsersManager.m */; }; + C258C308A02DF537A8E1069272064EF1 /* nv_ios_http_status.h in Headers */ = {isa = PBXBuildFile; fileRef = F27962468383B83224B0D9285E1F4EBF /* nv_ios_http_status.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C29138071BCF24E1800084726F030439 /* FBSDKEventBindingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C1DA6DC1AB07EF86698151725442D7C8 /* FBSDKEventBindingManager.m */; }; + C2BBF9A92208990FCA3F0E906A71F648 /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F869DD0E59B2F6A6890DA89A6E2AA98 /* FBSDKMessengerIcon.m */; }; + C4F437595BA38153B7F6A08B7CD04E4F /* FBSDKShareMessengerGenericTemplateContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 99B11789C43B5EDC49CD21BEF6B5887A /* FBSDKShareMessengerGenericTemplateContent.m */; }; + C4F94402E701E4A3BC820BDA61F9D541 /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = B384B8BE04E34F219B406C3966C64FCD /* FBSDKWebDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C545E27489D9E242EB8145E90E83160F /* FBSDKCodelessIndexer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FC40E92EC8260C2541042FBF3AD0F39 /* FBSDKCodelessIndexer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C54C91E1753EF3B7C9F1882E85D9F26B /* UIStoryboard+DJLocalization.h in Headers */ = {isa = PBXBuildFile; fileRef = D5E26C45A93F51B6EEE1D980BCDFDA29 /* UIStoryboard+DJLocalization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C5ABCAD032D262081CC9D9A46F2315E4 /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C707AD8126EC521EB1118418568C7E9 /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C6142A15B43050A1767DE262FEFD65DA /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = EDD527E4A6E47D3A2E41AC5DF33567C9 /* FBSDKSharePhotoContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C674D8A046DB79CE7E522E082872BF52 /* FBSDKGateKeeperManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CCA95C49E844F8E684D22E6A75757AA /* FBSDKGateKeeperManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C6B94ED7EC66C8BD304A127BFC33D3F6 /* NSDataAES-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F7BDD62FF3F5C3CC6A274EE7026C8ECE /* NSDataAES-dummy.m */; }; + C6D6D956D38FC516941F518B23E608EA /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 519F8BBCE03A24F08C071ACA2A32782F /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C79DBCD3EA3469AF1A30A5A9DAFF9010 /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 09FCD4D4C6FAE00C2867A08941862049 /* FBSDKLoginManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C7ADAB1B13901C6BF54DE5F6FCA95070 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DDC4437067875EB83C5C6949245167D3 /* FBSDKSettings+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C834CE7AE746FCA9913A6C00709FF1EA /* PNObject+PNObjectPOSTConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 0585396D8960F9DDEC28F0A1522F4A22 /* PNObject+PNObjectPOSTConnection.m */; }; + CA7D21AA224463EA25AA5441627D653A /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 92F01ED63A0E2407F3ED4A04CD456543 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; + CA84492809BB960C929C0EA3A70CEA4B /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 303D39A7D52B7C9EEDBE105E47A6D56D /* FBSDKBridgeAPIProtocolWebV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CAE8D9E60604DD9EEC6F00A0E01E0C4F /* EXPMatchers+contain.m in Sources */ = {isa = PBXBuildFile; fileRef = 68C3081F7E615F74573B5B756025DE7C /* EXPMatchers+contain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + CB9E66E4C557EEE7D90244B2B6DC7FC3 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E4CF2FFD60B7DEABD3BC9EFB5292AC /* FBSDKGameRequestContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CC867E9C867ACCA5C8C9524253343023 /* PNObjcPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = 40DE286B1D787AB5C09BD6CEE42CF607 /* PNObjcPassword.m */; }; + CCB699A2708BA34BAB125CAD2B0BA414 /* FBSDKShareMessengerGenericTemplateElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D9B74A7E8C0184A8E57DDAC6E59799ED /* FBSDKShareMessengerGenericTemplateElement.m */; }; + CCE7F26350575AF1495E20BDF9E5B2DA /* FBSDKCodelessParameterComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 12E79F4E565D05B31370FFCB7C2C6929 /* FBSDKCodelessParameterComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CDB52CD237828D6DC0A6C9230A765273 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 524B1AB1EA564E674BC11F5EC1DC5613 /* FBSDKShareVideo.m */; }; + CE9384609CBE1E079CCA2F5E1AC418E9 /* FBSDKURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = F16D58276EF58E713A42A1332CEDFD79 /* FBSDKURLSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CEA5A78F7CC93E133B26DED2036AFC65 /* nv-ios-http-status-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E9DC66BA4CF88F7C64A5541363FBED1 /* nv-ios-http-status-dummy.m */; }; + CEDFBB72C1E5B00A9D459D8B5BDE2EE3 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EC398B982FE89DC141E07985EC04F59 /* FBSDKLoginKit-dummy.m */; }; + CF1964D35075F7B7FF6601ACE8F4255D /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 05630D6B386EC092BB895660631D156A /* FBSDKConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D0815007848997ABC1C9FDBC0FD0D39D /* FBSDKAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FE03FCA42D6499B5007B72FAAF0C5CC /* FBSDKAppLinkTarget.m */; }; + D0FBCCC982FBB42CB85A06B78077D892 /* SPTSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = AEFBF6DDB67E4CBE8A585D1D375D6C52 /* SPTSpec.m */; }; + D1BF0D14765A5F2B82A53A58E7912DF5 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = F970E963E493BAB6B3EE3C06C448F66B /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D280A3B13923FF5FA778EF312BD965F7 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FEB9AB46A59F3099748319822466FE57 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D2B48F72B35198023F47386D7D7F7994 /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7167230857A7EA27D9ECA97C8011D44A /* FBSDKShareKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D30CE37C7AA114E0163EEB27F8662D81 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE518F62DC2DB07C8A4C65DC4E6440E /* FBSDKLikeObjectType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D31E058C9C37CA17095FFFC43833ECF1 /* FBSDKDeviceLoginManagerResult.h in Headers */ = {isa = PBXBuildFile; fileRef = D8E2FECC4AED326CB988EDEED6FE2C1E /* FBSDKDeviceLoginManagerResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D33C600E6B5E582C65F3EF397CAD3338 /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 23AD5EAC97E0698DF562534D5DEE5C28 /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D37717B6B3981504572E2664B35FFB08 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = BF44357D6412C9D88F62297B300AFEAA /* FBSDKShareVideoContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D3C594B2693F4D3E1541568585AB255E /* FBSDKMetadataIndexer.m in Sources */ = {isa = PBXBuildFile; fileRef = C0807EEBEF311B1D53BABD9DF7C3F616 /* FBSDKMetadataIndexer.m */; }; + D3DC240631E1FA883A5604B3E99BAE2B /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 00F67A252F852FA5D43DA99DC2BA9A27 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D45317A93C74A472F2B97B0B7A2607D2 /* NSData+AESValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D912DC91F7A820DF43989F8CA88C512 /* NSData+AESValue.m */; }; + D49DAAAF1F710727D4AACC703FB88FE4 /* UIDevice-Hardware.h in Headers */ = {isa = PBXBuildFile; fileRef = 35581B14530384F3A16EF07776851CCC /* UIDevice-Hardware.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D503B5BD9586567D2CCDC1BA79582BF1 /* NSObject+RZDataBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1CBD3430BF0C366C3308AACB9C2758 /* NSObject+RZDataBinding.m */; }; + D529AD614B9DD9CBA7E09119E334FE93 /* SPTCallSite.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FEA39F4A656674D3E7265B5E46BE64 /* SPTCallSite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D569D00367B456F6CDFE2700097562FC /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C79641482E2BCB08313521623979177 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D594ABD90A12CA1831333F8A6614AA7A /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A6C81893EF2FF726156CEFE134F9C7C /* FBSDKUIUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D62C6C33AE7D5E71C60F501B247C4208 /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BEA32004712657B1467A4BD9BD8C9944 /* FBSDKAppEventsUtility.m */; }; + D6C35611ED937AAD1DA62C7DC503F269 /* NSString+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BC7862E8F1078A956A32DD0E453F6BF /* NSString+Helper.m */; }; + D755065298354C4E28B9F9394E825DB4 /* AFJSONResponseSerializerWithData.h in Headers */ = {isa = PBXBuildFile; fileRef = BF1EBF6182F351F432E71FD681007AB1 /* AFJSONResponseSerializerWithData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D82507334C1F5A904534D905C8616D4D /* FBSDKCrashObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = F23C8CE73B9EF9A3F40B54582DB3594D /* FBSDKCrashObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D8AC260C7E4974140FFD01D4B1116B90 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B3F2022E39A8F990E4D6C680E5C3533 /* FBSDKGraphRequestMetadata.m */; }; + D925C0B9D5480E72B33A3EFB10F4B534 /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EBA8BCF69E54AB7862F642D4112ABFC /* FBSDKAppGroupContent.m */; }; + D941B1DB8FFAF4E1ACCBF00166602215 /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = F6EBD1DF9D97AEFB7791B74AB0489C22 /* FBSDKSendButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D94DF9E529070E1CF9139F5B88282432 /* SPTTestSuite.h in Headers */ = {isa = PBXBuildFile; fileRef = 922C489A72E620B06FD571F60C4B19C2 /* SPTTestSuite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D94E42F1FFC716035FCC843F2AF699B4 /* PNUser.m in Sources */ = {isa = PBXBuildFile; fileRef = FB210269B792D12FBF0B9F66012C955D /* PNUser.m */; }; + D96616EABC5D76ADCF7317AE5256FF8E /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BF92E7C59C370D8E28903FD19C3BD37 /* FBSDKBridgeAPIProtocolWebV2.m */; }; + D99E25CD2AF0C2C3335744C90A349A47 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 66F1B1CF3ADD75100BEFC6BA8C3C067E /* FBSDKAppEventsStateManager.m */; }; + D9CB24FF58A3FAAE3843CB89A22A764F /* PNObject+Protected.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D21D6E5BB43920DE5D5DF9EF749CC71 /* PNObject+Protected.m */; }; + DA7B989AFE2B409E9EF6BF04120B8C13 /* EXPBlockDefinedMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 79677632BDAB1A6B971D056E251BA26D /* EXPBlockDefinedMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + DA94D79EFBDF8CF360A1CF857B4BD2CE /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = CB283A120163B72644903E7B0333269D /* FBSDKBridgeAPIProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DB57317FD0BE62412763308D6E2D9550 /* PNObjectModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ABE5ABAB0FA7BDA703F9BB56FE8A6BA /* PNObjectModel.m */; }; + DBB120291993D46ADE4D99D47A99D390 /* PNObject+Protected.h in Headers */ = {isa = PBXBuildFile; fileRef = D8E3F5B68879DBEF72DD039EC6BDD89D /* PNObject+Protected.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DBE8A0B85B218B36310B08A7C9800879 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 61408B6AF822F067F9B34E42BCC34807 /* FBSDKProfile.m */; }; + DCC83D6D240944FA9572DB1DA097ADD3 /* FBSDKBasicUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 6652F25E12104D6BAF1B968347A4BB7B /* FBSDKBasicUtility.m */; }; + DD2D57180F5CF77AF85E337BDFE130B8 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = 79B8173AF129A64DD2BB0A07215BA388 /* FBSDKBridgeAPIProtocolType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DE84501032FA6F15D6ACC4A60A9D4F3B /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F7D00E21107A63C72DE494CF5182165 /* FBSDKAppEventsDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DE8787C97AFC77688F792F9603BF1368 /* FBSDKLibAnalyzer.h in Headers */ = {isa = PBXBuildFile; fileRef = C66B7016E44CE5370FDA15D25BFC6D53 /* FBSDKLibAnalyzer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DFDC4D3CC2A3B94A22E270FCCF4FDA73 /* FBSDKLibAnalyzer.m in Sources */ = {isa = PBXBuildFile; fileRef = 98D6A7ECEA775BE3727D8F8B9E06E0DB /* FBSDKLibAnalyzer.m */; }; + DFEEB75EA1B2172C382FA8594ADA0241 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A3A1BEB7D92DEAF7C63D2F9E861F439 /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E00B6C21CCFA76E6001B2BEEF74CF877 /* NSString-Helper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AEB4BF5F49550019E6EF58DFC56F5C96 /* NSString-Helper-dummy.m */; }; + E0812A0D4F73A83E9DD6CAF4F539E8A5 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 15F48A9728BBA277C804247BF08A55FF /* FBSDKLoginManagerLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E0ECB8810EBDD19D47565F74F446654B /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 05C215E17A0D28284936F71B51050A8A /* FBSDKMessageDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E0F6F28FB0C741429D56912880C9EC6E /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AAB21F5E01ED53C63D93A401FF2C09F /* FBSDKLikeBoxView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E110B9B426BCEB5134E8E6ECC9159D7B /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 280140A1423C56F4338FF1AA8CFC1F2E /* FBSDKShareAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E143127EDE5277A53DB9581B113B5755 /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A50E4ABA1C58A7A1EA08CA71E37AD9 /* FBSDKLoginConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E15CC4B751A945042607E4E899A23AA8 /* FBSDKErrorReport.h in Headers */ = {isa = PBXBuildFile; fileRef = FC9F7202337E591A5F9CDF166BA9B633 /* FBSDKErrorReport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1B8129B391F15DB90CD9AF9CC34F97D /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = DAAC2395F0B2B3A2483D7D44C4F4E793 /* FBSDKLoginManagerLoginResult.m */; }; + E1E26022893538C570CF0644AEFDB691 /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = A0E0873AD9B4907C5E21DA0088EA20BD /* FBSDKLoginTooltipView.m */; }; + E2532422ACCB40786E44EF3937D396C8 /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 40DC2622CCEFAA111ED478B6E90C1927 /* FBSDKShareAPI.m */; }; + E26BAA3BC52625A958D46CEDCE1D675E /* ResponseConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = B63474C8B0EF942C24E792B6EF995B9C /* ResponseConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E312794FDC7E4C0AADE3658947A2469C /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E9B849534DDF94779E0029CCB05A1D7 /* FBSDKMutableCopying.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E4628AF103BCCB9056D2CB6FB701F222 /* FBSDKEventBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D218B70DB72444681FDABA3687718AB /* FBSDKEventBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E46B16A4EB1E7FA65E221C11B6F7B802 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 5593729F7F5AF6A9F5D681EEEAFA7CF0 /* FBSDKGraphRequestConnection.m */; }; + E50B0C05E5E0E44EEC5CAE48FA209C55 /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF67E2919C554C3664A7B5FF105C57A /* FBSDKTimeSpentData.m */; }; + E5B75FB78E509A088C62525C0B92CED9 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 1334E2E526A24825BFBCF5F5E67FBFE9 /* FBSDKCloseIcon.m */; }; + E6B62AF97EC11069F34242721DA00232 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CBA0FFC1082F68D3300E57FA3DBBF40 /* FBSDKShareButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E6ECCD246E9787D61B452C3238817F9D /* FBSDKHashtag.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD25B32D581767390D2D3B6B50A2C03 /* FBSDKHashtag.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E70CA6A65E35197595645FFFCD7106A0 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = AC54AD6C42A54F6E1D99283F08DB5DA1 /* FBSDKAppGroupContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7351E56F4C49CE1F9559D5C69ECC1ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EFA2382012B03DC660D5DCD01DE6A613 /* AFURLSessionManager.m */; }; + E7D988B1D3A3B86F2C76C2DE4E84D3A1 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 36230C912F3C925DCE71A683EACEF954 /* FBSDKError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E856E695B4FC6E65DC49FF1565F9F372 /* RZDBTransforms.h in Headers */ = {isa = PBXBuildFile; fileRef = BA5341FAD301A6CACF31C220E5AED03D /* RZDBTransforms.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E8EAC22FD87B671CA5F544520FABCD25 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FD30BAE931271EA6C74D4B476940C1B /* FBSDKLoginUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E9914381C6A89C5CD9DB21569AAF45D9 /* FBSDKAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = B52D6C5D93A51A9052E511E5028E7E1B /* FBSDKAppLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EA29128C061B1FE473033E28C7B1C191 /* PNObject+PNObjectDELETEConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 05753AB3D2104B4761ED33675F674395 /* PNObject+PNObjectDELETEConnection.m */; }; + EA5CD83AE3E479DE893A0DFC881B9B23 /* FBSDKMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 0685E6F3FBB7EF2D7D57DD9C09E9AA28 /* FBSDKMeasurementEventListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EA7CCE29307048D044A60D1F8D63D87A /* EXPMatchers+raise.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FD5892343E0F442A13B22742BCB44 /* EXPMatchers+raise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EAE0FD987296897E06DE124CFE4E62D1 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = AD286DD1475A568027EA5B8E9FEF15B3 /* FBSDKGraphRequest.m */; }; + EAEE6576F3EC6416B0A408C19E82F35C /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 659E528421E332CA6024CC5F3808A845 /* FBSDKShareDialog.m */; }; + EC309C340C498027A2570504B6107BB5 /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 8494E1D82DAB47206891A3EEE7846AAD /* FBSDKSharing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ECDE83317B2888BCAF0AAC2C85501C36 /* Pods-PNObject_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 84A56B9A58AC73CA2C6AA15ACA5CC9EC /* Pods-PNObject_Tests-dummy.m */; }; + ED3555D058FCD393B40F1DFC55F52497 /* NSDataAESCipher.h in Headers */ = {isa = PBXBuildFile; fileRef = 990C5AE5707D6408B4338C07C0D05021 /* NSDataAESCipher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ED57D71A572237CB968F21444E5FC6A2 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E54734CCEA2CFA69B47CE059CE2F533 /* FBSDKLoginButton.m */; }; + EDDC4397F84F8D4F9338AC7A071FC655 /* VatNumber+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A1C1F52064517FDD0E2386A7EE14C1 /* VatNumber+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EE1BD70240E716299B584C318F3DBE81 /* FBSDKEventBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = D58F812E0E902D22282AC7569C19D03D /* FBSDKEventBinding.m */; }; + EE5DE937ED8857A7F4CAB974CBABF212 /* FBSDKErrorReport.m in Sources */ = {isa = PBXBuildFile; fileRef = B5601C81D2457CB87AEE9A69EC63DADE /* FBSDKErrorReport.m */; }; + EE62D51B4F4A55731CCD546D25BA1064 /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D75CBB018E83085F339DBA74274DCE /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EE76BD08CB9AA615D7B08BD4D1B7903E /* PNObjectModel.h in Headers */ = {isa = PBXBuildFile; fileRef = A34168060E8DDF8DC417EFF6F78A5150 /* PNObjectModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EED4D51267517F2D304C74540B6B0489 /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = C268799ABC759821B1BA9064BD537007 /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF07E681556BC7689CCED3B38434F00E /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D3DE24FB7A30370A4614D4A826DEF /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EF12FC5867E7A5144185995A355D99F2 /* FBSDKHybridAppEventsScriptMessageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D49862A22DB9572E568E7BC31E9EE0B5 /* FBSDKHybridAppEventsScriptMessageHandler.m */; }; + EF4CB02B792D809A26B1023DAE613474 /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B43DCCAEF495D17FE3C0D28994E435A /* FBSDKTypeUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF66DBF31300874EA4FCFDEC6757AF1B /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C759395AAAFB5714F0A316BF81AE9FB /* FBSDKColor.m */; }; + EFDA626D4243F0F76A04BD540C796B8A /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = EACEBEDDAB549C4EDC443FDEB38A3D2B /* FBSDKApplicationDelegate+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EFDC64DD3C580BD8CEDDB03763F5003E /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = EA167AC0457A533C13C42BEC83CAEFA1 /* FBSDKTypeUtility.m */; }; + F1136A056DBA6A7D6B0079719C940A19 /* FBSDKURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = EF9D3C5BCD850B98C235156F3237E0A3 /* FBSDKURL_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F168A3179B3FC4F4C35A24A9009FB97F /* PNObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 9588CC0CA3F3DDBBCC6A8C95B6D104DD /* PNObject.m */; }; + F17E924EBB994FF6A02A25FD91E6BD33 /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 3767F9AAD1DE4F2138E0165F5626D42B /* FBSDKErrorConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F19C7BCB319E7DE9F3AEAA926C7A1740 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C71567207924ECBD75EBEBCB1C92D50 /* FBSDKLoginManagerLoginResult+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F1DF5CBBB18A65D8289E1FC3E496CE95 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C050026AFEAE8FD7631245806A12A33 /* FBSDKMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F23E228CF81327451AEDAC3C41FE74B5 /* FBSDKMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BE3F33C0F4BA4687A20B6FBBB745E85 /* FBSDKMeasurementEventListener.m */; }; + F25AE0C0B6AF60F283BDD7339633CCA3 /* FBSDKRestrictiveDataFilterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A52D64A2E670AE0588E8FFD016F58249 /* FBSDKRestrictiveDataFilterManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F3D79EE95A53DC322C2F93551780FCC4 /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B454729F5EA166707A655DDA29E5C78 /* ExpectaObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F441987CA224DF041F49B20E6E406943 /* AFHTTPRequestSerializer+OAuth2.h in Headers */ = {isa = PBXBuildFile; fileRef = 0585A4D7B8316CF8C4B838FE63E34690 /* AFHTTPRequestSerializer+OAuth2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F4883DAE8A5121ED94AF2CCED7162EC6 /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ECD79783E5C1D0CD523F0B069E08BF0 /* FBSDKLikeDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F4C54CFD7E3E11931827BF5B9AF98DEE /* PNObjcPassword.h in Headers */ = {isa = PBXBuildFile; fileRef = 9282AF3EFCC357C5959675559F2884FD /* PNObjcPassword.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F51F3B5E3FD713B4863E577BB5C84545 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C732630D39AF9C837B3996E4A4D7977 /* FBSDKBase64.m */; }; + F540AC089C6DBCA43B0B7B6B50421539 /* XCTestCase+Specta.m in Sources */ = {isa = PBXBuildFile; fileRef = 14E9309B893DB28F15087129BB5A5444 /* XCTestCase+Specta.m */; }; + F5EFF8EEB284569DC2EFAE634BBF6B80 /* NSData+AESKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E99C4BE3197EC7614D33A918B2276B /* NSData+AESKey.m */; }; + F70E2BE9C9C78E74E603A30634D0521E /* DDDKeychainWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 261FF7B9E8B3B0E1E3A811BF7DACF445 /* DDDKeychainWrapper.m */; }; + F748060EBB5E0C0AA560ACE5EF524B5C /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2044442BDAE0CA0037CA983768B041A8 /* FBSDKLikeActionControllerCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F74BF06DBC15BB2A17E66943831132C2 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA5BA42074600BC5858568D8D1C5F47 /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F7572D21DF8AF5B54E84A07BE7269892 /* CodFis+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 31FD90CCBD96A0D2FAE4FAD926EAEE65 /* CodFis+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F7A59989178143222D025285EF295DC7 /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B353BD70DAE768DFDCA3BB4F7F074AF /* FBSDKSettings.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F7A9F53A68FF24600778D518BCD448F1 /* EXPMatchers+beFalsy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FE96923F0CDBEA77D75D44455A943D8 /* EXPMatchers+beFalsy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F7B19B68FAB73CB0732744B6A096D791 /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F65782E2CB6FB7322EA695EB7C30BF5 /* EXPDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F82B01CE9BDA0F950C9142C752D6A1BF /* FBSDKShareMessengerURLActionButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A3AE58262FDAD96053342442127E68F /* FBSDKShareMessengerURLActionButton.m */; }; + F920DCD33D8A7BDB1F104D37CE7AC0A3 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CAB0E80C58EF74906587549D87BFE2C /* FBSDKAccessTokenCache.m */; }; + F955BCBA0CEF2CC243718D6C2AAE634D /* FBSDKAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = AAF26D14FB30C4B340ADCFD906A44D7D /* FBSDKAppLinkTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F9AD2CFBEDD600706B921428D25DFA3A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = F4933595BDE477A93E7D21927E0E76D5 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F9E03AF48423E3D120FEDA2A9C049633 /* FBSDKDeviceLoginCodeInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 788FEB3D256D99DD8D7A722471620824 /* FBSDKDeviceLoginCodeInfo.m */; }; + FA4FD59114351BF749662266851488D8 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 23D55619D789DAD7C33C125AA9308EE3 /* FBSDKLoginCompletion+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FA57AF8147E5448E8970DE987ED9FCD3 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FFF9CC8B4BBBE7E5EE675C16648685D /* FBSDKLoginManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FAB6262456B929BC2B850B7589F86BFE /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9B3F046EBB1071AA8E5D2CCC54638D /* FBSDKShareDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FAC5E7C6A5F20E5EC91B3A16E5F562FF /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C2F5717736D436FD49E9302152F390C5 /* FBSDKBridgeAPIRequest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FAFD428333536F860928F80D98C3D077 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = E10E31949DD34DAA6813E72A2F7B8497 /* FBSDKAppEvents.m */; }; + FB6255ABC6BA0B68F13A2D6F0942A512 /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 698A8D327CDD33954411F4D87E536EF6 /* FBSDKShareOpenGraphValueContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB7628CE1E86E58F9274880682BCDF94 /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = EB79B4174867693BB380C3D6BC40D0A5 /* FBSDKTimeSpentData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FBDD5D83153C4F3F9995973EB87C5F79 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C10F5FEE351800D800D488147E5BD1D /* FBSDKLikeActionControllerCache.m */; }; + FC03EE048F70F1E14A2F78836CA26D49 /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A3A7E25BB3895B34344E6A1528B87BA /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + FC6376F1FD6A24B80B2938AF12E0C8B7 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C28818762C79A21B967D446FC1D225 /* FBSDKGraphErrorRecoveryProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FC7FDAC9FA73588BE2E8CBCB3BB56743 /* FBSDKCodelessPathComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 26885886696BBED4B1AA1728F7305710 /* FBSDKCodelessPathComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FC9695A93B5CE0B0A167E4293584D493 /* FBSDKPlacesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 28870C39752D0222B32D97A4F884E634 /* FBSDKPlacesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FD1D4FC31D4E5CC5668A499583D9DF1D /* StrongestPasswordValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B6A6BE27963BB397D2EC941D0FF2BBC /* StrongestPasswordValidator.m */; }; + FD92297260D8646C2CB33A4A0ECA52E3 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 15AE0E0A3E6F3782692B22BAC05CF8B2 /* FBSDKCopying.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE33707F9990A5CB0CB27925647C44F4 /* FBSDKDeviceLoginManagerResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 16C1C8A70B59DC2609612796ABC5F78D /* FBSDKDeviceLoginManagerResult.m */; }; + FEAA3C60F4BDDAC22BD1A6B047DBAAE9 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 116F9D84B0EF0D8D362E45B93BC3C327 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FEEA8DAB8CC7648226B6CF3DD1AA856D /* NSDataAESCipher.m in Sources */ = {isa = PBXBuildFile; fileRef = 783A44E6F339078137532B39959709DA /* NSDataAESCipher.m */; }; + FF1DF68946FE34199D3904837849BE3A /* NSData+SHA.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A4504204DEBA8BBC83BA876038713C /* NSData+SHA.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF20281019BE0FF38E71BA612756E5DF /* FBSDKHybridAppEventsScriptMessageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = B19BC3A3AF61B2C472A4FD2301955D73 /* FBSDKHybridAppEventsScriptMessageHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 08CFD7B90C65FCB9738DCDD06964347A /* PBXContainerItemProxy */ = { + 04D7216B3AB7320DA2BB8DEADA89679B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 726B72F15C52C6D77C1B71FD3640970D; - remoteInfo = AFNetworking; + remoteGlobalIDString = 78DF8EBCD3FA8CC121AA947CD3ACA29D; + remoteInfo = "PEAR-FileManager-iOS"; }; - 13C7C2399E414B7AC144E614F015498F /* PBXContainerItemProxy */ = { + 0A57B5AE1AFD7882B33ADD655F5F8B57 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F82F6D156A11A3A564623161D5DF0E1C; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = 78DF8EBCD3FA8CC121AA947CD3ACA29D; + remoteInfo = "PEAR-FileManager-iOS"; }; - 1D380C6D842C50DE22A52CDDC7C5AEBF /* PBXContainerItemProxy */ = { + 0E6F09D40C7B69C98565F26A37A8222A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 331B69A6E12311FA9485AF31E52534F6; + remoteGlobalIDString = 56B00F23AD384D6704BC01F9AB3E16E1; + remoteInfo = NSDataAES; + }; + 13956C1720124F1B09F5B86308751817 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A9C0F2028669FBE7E76BFAED238D845F; remoteInfo = DDDKeychainWrapper; }; - 2047F415834BB191517B254AF80CB901 /* PBXContainerItemProxy */ = { + 20B9748CF2DA7DE92D486ECEAE7E28F7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F6D80618FE30E0809B891A8B4361BD82; - remoteInfo = StrongestPasswordValidator; + remoteGlobalIDString = 89EF1085245EA10FA431ECBE3E002988; + remoteInfo = NSDate_Utils; }; - 20B473F9CB48426FBB42E58DB507666D /* PBXContainerItemProxy */ = { + 2CB5A22BC8D677C88E805ED48C1B85BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 41741B48B3525A9905AB215A91E2358B; - remoteInfo = "UIDevice-Utils"; + remoteGlobalIDString = A9C0F2028669FBE7E76BFAED238D845F; + remoteInfo = DDDKeychainWrapper; }; - 22724F18E3E68714606E9E95E3E6209F /* PBXContainerItemProxy */ = { + 2E8478ED29152AF23AB59BE5E00020D8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9A3E23EF4FFD3A9FD7136C452EA6ECCD; + remoteGlobalIDString = 89EF1085245EA10FA431ECBE3E002988; + remoteInfo = NSDate_Utils; + }; + 3364A4B1EDAFCFFBEC9000E676B20F73 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 29CC8E943A3DAF8A6C8B8A99047D0566; remoteInfo = "Pods-PNObject_Example"; }; - 3221CB525A4F9CC7786C7B6CB916735E /* PBXContainerItemProxy */ = { + 350B90DB4A3A118376667CB5CC4FFF47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = ECB5E7E8788197B450CD524AD4FAB627; - remoteInfo = "NSString-Helper"; - }; - 3227F1145EC35A81EF7E716BC692EA3C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = A3C3A40EFB5EA54D652EC5BEFDB4F726; - remoteInfo = RZDataBinding; - }; - 3A7A36AA64F9153DD340919EB645AC30 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B8BB9123545FB963281D96040E3DB350; - remoteInfo = FBSDKShareKit; - }; - 3BC97C757CCF68C05233F342377D5C27 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 176104A755EE5DE10141CB771E7807E1; - remoteInfo = "CodFis-Helper"; - }; - 43419EA6D273E12A6D5FAD8EFA8ED6A9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5B021706D5B7FCF7981EADD0D618968B; - remoteInfo = NSDate_Utils; - }; - 44BB2B8D5D83C2E161B4D87117BA8DD4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = ECB5E7E8788197B450CD524AD4FAB627; - remoteInfo = "NSString-Helper"; - }; - 4836C9942911DECBA8430E9BDB507938 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 49F9DBC21D7AACEE57AC6E48007A1F6B; - remoteInfo = FBSDKLoginKit; - }; - 4EC1DBC07001F6274FB3B84ADDF5D6C6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5E2AFD944F382B79C9F4C06E9E6288A6; - remoteInfo = NSDataAES; - }; - 4F04873EF4CE2844A91429E783DF7612 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F82F6D156A11A3A564623161D5DF0E1C; - remoteInfo = FBSDKCoreKit; - }; - 4F6198CBFFE36D093DF56BC80F1152C0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 41741B48B3525A9905AB215A91E2358B; - remoteInfo = "UIDevice-Utils"; - }; - 59AE7171A4968441A2D750E24D04E6C6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B58CAE7FB9E57F981D1B1787C13117F3; - remoteInfo = PureLayout; - }; - 5C6C1D4417ADF7698BFE3E88253C6678 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = A3C3A40EFB5EA54D652EC5BEFDB4F726; - remoteInfo = RZDataBinding; - }; - 6A51F20DECA65FB4E5BE11B4687994EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = BF53CA0511709E8CFC3A31040F5C3BD4; - remoteInfo = "PEAR-FileManager-iOS"; - }; - 6FCE5684A05FD93BD646A803D4BB9D1D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2EEE94220E4CB262F220514E2542D59D; - remoteInfo = DJLocalization; - }; - 7012C87AAC5014D0E9F6F68FF762C375 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2EEE94220E4CB262F220514E2542D59D; - remoteInfo = DJLocalization; - }; - 71BF3D2089C9D8A31D681EADBF3D33B1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = BF53CA0511709E8CFC3A31040F5C3BD4; - remoteInfo = "PEAR-FileManager-iOS"; - }; - 7707B30123AE1CEEC3CCC07FB7579879 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9C59561051F1403A293E0B943DB4E71F; - remoteInfo = Expecta; - }; - 81AD61098D6D2AB5E856FEF4FB8D0B01 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F82F6D156A11A3A564623161D5DF0E1C; - remoteInfo = FBSDKCoreKit; - }; - 8A528C8204BF7AD267111501DD364A62 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7CA27B1C39A0C1FE1AADBA1124CE8ABC; - remoteInfo = FBSDKPlacesKit; - }; - 8DC0A7720D173F6C07C069F14C7EA1F1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4CEEA3727864ACEF2729940C5CCFF752; - remoteInfo = Bolts; - }; - 900CF0F26EEF551F71B96746ACF940AD /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5B021706D5B7FCF7981EADD0D618968B; - remoteInfo = NSDate_Utils; - }; - 92B506EC0E2F33903E905ACAE4CD902E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F82F6D156A11A3A564623161D5DF0E1C; - remoteInfo = FBSDKCoreKit; - }; - 9656D2CEDD657183AE277E6928ACBB69 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 49F9DBC21D7AACEE57AC6E48007A1F6B; - remoteInfo = FBSDKLoginKit; - }; - 9E987CA2367395A64294C982EAA97A6C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F6D80618FE30E0809B891A8B4361BD82; - remoteInfo = StrongestPasswordValidator; - }; - A26F2889CAE7642999087A075671E13A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 176104A755EE5DE10141CB771E7807E1; - remoteInfo = "CodFis-Helper"; - }; - A4DC8D9C9D6ECC2741BC2B4AAE6BE30D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 192DBF78C939C1FE9C6EF8DA34F5FB58; + remoteGlobalIDString = 6D513278C42270774244D18170C8CC83; remoteInfo = PNObject; }; - A5FBDE546E1641F681DFF0EEAF51B7ED /* PBXContainerItemProxy */ = { + 3E6A3778E42BBF549A21EB0C960AF546 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 331B69A6E12311FA9485AF31E52534F6; - remoteInfo = DDDKeychainWrapper; - }; - A83B72AB740DC70D8057158E3343686B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 726B72F15C52C6D77C1B71FD3640970D; - remoteInfo = AFNetworking; - }; - AA7749C5784F4499C38DF103BCAC458E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 155BA346539E11AD5BD9EA31727A1C9A; - remoteInfo = "nv-ios-http-status"; - }; - ACE0063608CECA6DD681B3EA139E54A0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B8BB9123545FB963281D96040E3DB350; + remoteGlobalIDString = 56F4191D8CB8B4E6B4E5E4FA1A9F0F46; remoteInfo = FBSDKShareKit; }; - BD48FB7565F2AB73DB094084FFF541A1 /* PBXContainerItemProxy */ = { + 3F92927E8B02958A0AA133B119EE7311 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4CEEA3727864ACEF2729940C5CCFF752; - remoteInfo = Bolts; + remoteGlobalIDString = 10C5885FCB0908EF785774EE52473DAB; + remoteInfo = FBSDKLoginKit; }; - BF524875CA35957698AA710535095404 /* PBXContainerItemProxy */ = { + 4559EE17AF0B45C78E822B24E32AA3CA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2EEE94220E4CB262F220514E2542D59D; - remoteInfo = DJLocalization; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; }; - BFF576445C54CF1D92597186B8D0DFDC /* PBXContainerItemProxy */ = { + 57593C600449495C358EC2D7CDDBC6A0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7CA27B1C39A0C1FE1AADBA1124CE8ABC; - remoteInfo = FBSDKPlacesKit; - }; - D513C9834AFCF66C6A58F2FD2E9FEFD4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5E2AFD944F382B79C9F4C06E9E6288A6; - remoteInfo = NSDataAES; - }; - E69E08429885F5DB9A050C2FE30160ED /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = E88B7B10A2AD4EC505F001E3BA3920B9; - remoteInfo = Specta; - }; - F583F19603A3BF8DDAAC9864EF84FFB5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F82F6D156A11A3A564623161D5DF0E1C; + remoteGlobalIDString = 28907903AF6DD0AD321D92CD660E7E23; remoteInfo = FBSDKCoreKit; }; - F7A124DE757CA9B33E5CE9E768392D24 /* PBXContainerItemProxy */ = { + 6422AB2438A4A145CE89B4024D0F5ACD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 155BA346539E11AD5BD9EA31727A1C9A; + remoteGlobalIDString = 56B00F23AD384D6704BC01F9AB3E16E1; + remoteInfo = NSDataAES; + }; + 6942DAF55669E3AD9ADA03B3B94F25D8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8522B11A0A4E6CCDBA184D2AAB3EA8C8; + remoteInfo = RZDataBinding; + }; + 6CA333B5E02A7EB4D5A3F9CA1214CB30 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + 6D5240898B57899072685CFE9BE0120F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 28907903AF6DD0AD321D92CD660E7E23; + remoteInfo = FBSDKCoreKit; + }; + 6F37E39F03221154C756DADF3691302F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DE5FCB73EB1047C4981D3DD81BF0461D; + remoteInfo = "CodFis-Helper"; + }; + 72730031B3F38B078EA10A3168A8F2EF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 10C5885FCB0908EF785774EE52473DAB; + remoteInfo = FBSDKLoginKit; + }; + 73ABA711103E0E74BB20F3CED742954B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 06F5CDD6235E25837519792853B145A1; + remoteInfo = PureLayout; + }; + 75055F7344CAC89AB6D4A96020398C4A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F409CE466ADE0E5329AED43401B10558; + remoteInfo = StrongestPasswordValidator; + }; + 78A27DBB6487B04E68DEF72D2E47CB5A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3322D37BC14153310E7E1F2AC89F5892; + remoteInfo = DJLocalization; + }; + 7A191158D6E96F95AE7CBBB93B8A4122 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 28907903AF6DD0AD321D92CD660E7E23; + remoteInfo = FBSDKCoreKit; + }; + 7B072667CE70A8A2BE01E8051CB6FB88 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 28907903AF6DD0AD321D92CD660E7E23; + remoteInfo = FBSDKCoreKit; + }; + 88DBCD64F166E6838C2D71A5A9C91201 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DE5FCB73EB1047C4981D3DD81BF0461D; + remoteInfo = "CodFis-Helper"; + }; + 8AE3481136721A5459A05ED85FE07D03 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8522B11A0A4E6CCDBA184D2AAB3EA8C8; + remoteInfo = RZDataBinding; + }; + 8D57617A06EAFB004BC9CA59793CC384 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F8676010755CF1530FC02DA9A0D8822B; + remoteInfo = Specta; + }; + A63C7A6D3163159DD90D040B999050F7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 28907903AF6DD0AD321D92CD660E7E23; + remoteInfo = FBSDKCoreKit; + }; + AB27992D62B4866403567EE2D601564B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 29DC1159737BBEB922AFEDEF074D020A; + remoteInfo = "NSString-Helper"; + }; + AC7797BF98A7763C9A1B5151D723EA68 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A242E16C161DBB78B4F3424CE47A70CE; remoteInfo = "nv-ios-http-status"; }; + AF4A43F5913052EC6B7445898E088AE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3322D37BC14153310E7E1F2AC89F5892; + remoteInfo = DJLocalization; + }; + B2E4747A55EDB28A5E49EF41528B082D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D521CA2BCBBF4FB818112DC99A74AB91; + remoteInfo = FBSDKPlacesKit; + }; + BC029EB7B00701209B46D914BE254BB2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8910BC215C7AF905CE272EE9581E871A; + remoteInfo = "UIDevice-Utils"; + }; + D1750815DE3C0E9B3889D8B6719021BA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8910BC215C7AF905CE272EE9581E871A; + remoteInfo = "UIDevice-Utils"; + }; + D46D5160FAE3F4851209073C9CCCC644 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F409CE466ADE0E5329AED43401B10558; + remoteInfo = StrongestPasswordValidator; + }; + DC5559882660366FEE9FFFCD9F1170D2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 56F4191D8CB8B4E6B4E5E4FA1A9F0F46; + remoteInfo = FBSDKShareKit; + }; + EF55D9B303E584F8C80711B761C27B5E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3322D37BC14153310E7E1F2AC89F5892; + remoteInfo = DJLocalization; + }; + F066012F6E9AE58D9E17BE013EC6D079 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D521CA2BCBBF4FB818112DC99A74AB91; + remoteInfo = FBSDKPlacesKit; + }; + F325CBD8C5F4A65738CB55FCBF0D83C6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 29DC1159737BBEB922AFEDEF074D020A; + remoteInfo = "NSString-Helper"; + }; + F515CD2372734095379CD47E631ED3AD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A242E16C161DBB78B4F3424CE47A70CE; + remoteInfo = "nv-ios-http-status"; + }; + F8F64D502635CCFBE7D0F15A9AEF8732 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DC371B7477C88184274EC6710690F97C; + remoteInfo = Expecta; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00790927A0389B09506C892EFBCB8276 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - 0141F45C056C12BE42836B932C742FEB /* FBSDKURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURL_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKURL_Internal.h; sourceTree = ""; }; - 01AF86DAC152D8BE492546EFBBECD676 /* EXPMatchers+beginWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beginWith.m"; path = "Expecta/Matchers/EXPMatchers+beginWith.m"; sourceTree = ""; }; - 01D09DB0E935D388A430A6170C8C64FD /* FBSDKAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLink.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m; sourceTree = ""; }; - 0221477A84DB7AE745BA7E5137425706 /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; - 02F645A0F8E3E9FB2C954ED5E77D22CB /* FBSDKEventBindingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKEventBindingManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.h; sourceTree = ""; }; - 030C92F2459CEF4CBBB7B4897D9D2380 /* DDDKeychainWrapper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DDDKeychainWrapper-dummy.m"; sourceTree = ""; }; - 03FF433EF175C201E7EC50611214A946 /* SPTCompiledExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCompiledExample.m; path = Specta/Specta/SPTCompiledExample.m; sourceTree = ""; }; - 047DA8C4883EE38B4EBCE1E6E1013905 /* PNObject-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PNObject-prefix.pch"; sourceTree = ""; }; - 04A827A2BA23752A42665F07AA763ED5 /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; - 04EDDC006508D124F74E5B0CC961BD18 /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; - 0504B1A342444AE7F47B822A4497A15F /* AFOAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = AFOAuthCredential.m; sourceTree = ""; }; - 05203B6E52E606A94BE5C6D83DE66E2D /* PEARFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PEARFileManager.m; path = "PEAR-FileManager-iOS/PEARFileManager.m"; sourceTree = ""; }; - 07B60DF9FAF514E71418E410001F5B95 /* FBSDKSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSwizzler.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m; sourceTree = ""; }; - 0862998C4EB72A4814898F075366EA06 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; - 0889F20870E67FED05EB70D9C012C158 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; - 08D5371E49C72C6051B759DE8FD0A3AE /* DJLocalizableString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalizableString.h; path = DJLocalization/DJLocalizableString.h; sourceTree = ""; }; - 08D9341033C71F59BD76AF80DAB3C66F /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; - 095C5D2657B6C18E9BADD9BD60987D5F /* PNObject+Protected.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+Protected.m"; path = "PNObject/Classes/PNObject+Protected.m"; sourceTree = ""; }; - 09CC72C94998E3F08716C55214E8DBEF /* SPTExampleGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExampleGroup.m; path = Specta/Specta/SPTExampleGroup.m; sourceTree = ""; }; - 09DD98B79912EB2484843E3D95FE4F75 /* EXPMatchers+haveCountOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+haveCountOf.h"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.h"; sourceTree = ""; }; - 0A06DBD55AC48C20563EDB6ABFC904C5 /* SPTSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSpec.h; path = Specta/Specta/SPTSpec.h; sourceTree = ""; }; - 0A61AFC807F6C8014E337C23ACE1304F /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; - 0B3680969EAA8B942230DFB1AA765553 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; - 0B4493384AD7A2DCE8136BE1E319516D /* ALView+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ALView+PureLayout.m"; path = "PureLayout/PureLayout/ALView+PureLayout.m"; sourceTree = ""; }; - 0B4725411032D487B7C207E9F2B84E0F /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; - 0B926C2C5A4A1AC59AB31BFDBC8E07A7 /* PNObject+PNObjectPOSTConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectPOSTConnection.h"; path = "PNObject/Classes/PNObject+PNObjectPOSTConnection.h"; sourceTree = ""; }; - 0BC6D7BF53C698B7C45AF9D9581E70B3 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; - 0C95079CAEF32DDC64E1C89A7F39EDA8 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; - 0D3732D2047E04F8B6E125CFECB4CDA8 /* VatNumber+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "VatNumber+Helper.m"; path = "CodFis-Helper/VatNumber+Helper.m"; sourceTree = ""; }; - 0D97CFF2F987725B6B78D935EFA9B76F /* EXPMatchers+respondTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+respondTo.m"; path = "Expecta/Matchers/EXPMatchers+respondTo.m"; sourceTree = ""; }; - 0E6A0C46FA248391EC2345394188BDF1 /* FBSDKShareCameraEffectContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareCameraEffectContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h; sourceTree = ""; }; - 0E71E04C89033BABA0BA2AE1FBFB36C9 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; - 0E8C398362337962B597901EEBA499A6 /* XCTestCase+Specta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestCase+Specta.m"; path = "Specta/Specta/XCTestCase+Specta.m"; sourceTree = ""; }; - 0F2DE3F1BE6C875B3EC6C6D3BCBBE51A /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; - 0F83F49018CE20D565DA7F1CB683A83F /* FBSDKCameraEffectTextures.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCameraEffectTextures.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m; sourceTree = ""; }; - 0FE4032350E85F10B125E9CF5BDE9060 /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; - 0FEA8B7E84F01F3C9999DC0CACEDA96E /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; - 1022E78850B9799A390121FA4E72649E /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; - 102CF1BFC6BD44D8F2ED514A3FEB9C52 /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; - 1030628E5473343492BCAE6BCA61C31C /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; - 1071A64D0AA1AC68898E6DD2AF9757F9 /* CodFis+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CodFis+Helper.h"; path = "CodFis-Helper/CodFis+Helper.h"; sourceTree = ""; }; - 10EF7A11DA317BA06D1719FC71BD080F /* libDDDKeychainWrapper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDDDKeychainWrapper.a; path = libDDDKeychainWrapper.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 11BDA3A15607E417EA80DDE9DE585029 /* NSDataAESCipher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NSDataAESCipher.m; path = NSDataAES/Classes/NSDataAESCipher.m; sourceTree = ""; }; - 11CED45F1E15BD9F3E84E7149502983D /* CodFisResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CodFisResponse.m; path = "CodFis-Helper/CodFisResponse.m"; sourceTree = ""; }; - 11D89E48B7975320184D6D79E3CCE715 /* FBSDKHybridAppEventsScriptMessageHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKHybridAppEventsScriptMessageHandler.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m; sourceTree = ""; }; - 1287BDC30BBDE83DF240B0C744F57674 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; - 12B1D426C6C9FF6CCDD64703D6E5DB47 /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; - 12FCAC125C461790BE3DD5F1BA62F2AF /* EXPMatchers+postNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+postNotification.h"; path = "Expecta/Matchers/EXPMatchers+postNotification.h"; sourceTree = ""; }; - 1334C677ADF397C0DDB7298DB2903C43 /* RZDataBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDataBinding.h; path = RZDataBinding/RZDataBinding.h; sourceTree = ""; }; - 13428BB285271A36CCEED4F3ECFB667D /* PNUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNUser.h; sourceTree = ""; }; - 1494E5A5D9A558C6227FFF8DC84DCE68 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; - 14E45E0644E288274AFEECE47A2C0794 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = ""; }; - 15945FC869A967AA2CE0A303D4CF9FF5 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - 15F9A8A62DACFD81B83DB82829BBA2B7 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; - 16390584C10137F0595960B2FFEEE130 /* EXPMatchers+equal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+equal.m"; path = "Expecta/Matchers/EXPMatchers+equal.m"; sourceTree = ""; }; - 165E3EA43C3711455B28381BB81B8695 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - 1719F88393B42FE2CE9453D442D4C897 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; - 173CC0E93B9ECD7E72EB5EB4181C1703 /* SpectaUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaUtility.h; path = Specta/Specta/SpectaUtility.h; sourceTree = ""; }; - 1755DD410FCEDF8A2C8E08D839A2CEC5 /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; - 17F1E6CE494509C9A030CBE8BA8DC373 /* FBSDKHybridAppEventsScriptMessageHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKHybridAppEventsScriptMessageHandler.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.h; sourceTree = ""; }; - 17F91B456ADCD5FBADA773A357BEB3AA /* StrongestPasswordValidator-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "StrongestPasswordValidator-dummy.m"; sourceTree = ""; }; - 19490BAD0244A4E12B248DC26B839BA0 /* FBSDKCameraEffectTextures+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCameraEffectTextures+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectTextures+Internal.h"; sourceTree = ""; }; - 19FE382DC78491713543561BBBF1ACB4 /* FBSDKWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebViewAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m; sourceTree = ""; }; - 1A1E3FFC89E664CB08207E423CDF1CB6 /* Pods-PNObject_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PNObject_Example-dummy.m"; sourceTree = ""; }; - 1A471C34221A873F410B41D4CB836683 /* FBSDKDeviceLoginCodeInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginCodeInfo.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m; sourceTree = ""; }; - 1A8725EEB96D3254318C1B72332D7008 /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; - 1A890DC51AD91BA9FFA1613FA801318E /* AFOAuth2Manager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = AFOAuth2Manager.m; sourceTree = ""; }; - 1AB9394910259FF62951218A126BE2FC /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; - 1AD4CD699988FDB293695E9B7B21C432 /* SPTCallSite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCallSite.m; path = Specta/Specta/SPTCallSite.m; sourceTree = ""; }; - 1B3E40CD864FC71A372F7F9A38931946 /* FBSDKShareMessengerMediaTemplateContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerMediaTemplateContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m; sourceTree = ""; }; - 1BCE7F7A87D04C5891CCC6BF68872E00 /* DJLocalization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalization.h; path = DJLocalization/DJLocalization.h; sourceTree = ""; }; - 1C467E3B1B45720906379D75092FAD95 /* FBSDKCodelessPathComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessPathComponent.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.h; sourceTree = ""; }; - 1C7778B2EAD7BBE9F8A0E77CB9269BB8 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; - 1CCC2C7B7ECA4908B30783AE4C009544 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; - 1E05958B26EC4042BF5AD4CFF089FAC3 /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; - 1E2783A0CEF7B60E8F6A82CF077D963D /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; - 1E39F5220794779C50D89AE4C271A6D4 /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; - 1E62588F7356C7F221B843C41C203EDA /* FacebookSDKStrings.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; path = FacebookSDKStrings.bundle; sourceTree = ""; }; - 1EAC68E37B0CC26B916B2C972ED26B29 /* FBSDKPlacesKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPlacesKit.h; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit.h; sourceTree = ""; }; - 1F10622A859F51223BFB3719B712B0DC /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = ""; }; - 1FCDB26FCDD6C563AAA95B866AB3B749 /* FBSDKCodelessPathComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessPathComponent.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.m; sourceTree = ""; }; - 1FD4ECA15BFD23F6048602A09043402B /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; - 1FF0042AB89E1A1C29ED9963E8D58B26 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; - 2010F5178F912157AFAA4E3E81CAA192 /* NSObject+RZDataBinding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+RZDataBinding.m"; path = "RZDataBinding/NSObject+RZDataBinding.m"; sourceTree = ""; }; - 205526DE5340AA0EB851E8D34BC83227 /* Expecta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Expecta-dummy.m"; sourceTree = ""; }; - 20FEABFE1CEDC4D9F325D07DB76ADF46 /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; }; - 21307D8E64F587BFE50B6D8F35471A1D /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; - 2140789A5983168DFAF7DEE92DBF6852 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; - 2199B0D3020321AECE2FCAB35519F2D8 /* FBSDKMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMeasurementEvent.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h; sourceTree = ""; }; - 221F1BE6199278BCFEF09116D734B09D /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; - 226B2BC5EAF4EB8468B2C989D5CD0806 /* EXPMatchers+endWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+endWith.h"; path = "Expecta/Matchers/EXPMatchers+endWith.h"; sourceTree = ""; }; - 229E4B42AEB7173DF9150585C9BD3BD3 /* Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expecta.h; path = Expecta/Expecta.h; sourceTree = ""; }; - 22D3FB3D32CFFB5A4A7F571CDF9BDD23 /* FBSDKCameraEffectTextures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCameraEffectTextures.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h; sourceTree = ""; }; - 230D8E3526A219F87ECB71194308E744 /* Expecta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Expecta.xcconfig; sourceTree = ""; }; - 23768DAF0342C9701207F4FC0DF777BA /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; - 23DD6EC6D7063AA5D086642C0CFBA167 /* FBSDKShareMessengerGenericTemplateContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerGenericTemplateContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h; sourceTree = ""; }; - 241114E6ED48E89A7730832FCCDEF2DB /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; - 2416AFA5E5D17796B7F4B7DD8EB11D7A /* FBSDKAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkReturnToRefererController.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.m; sourceTree = ""; }; - 24BA06B392DB8D437D93EA2D46E6E6E6 /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; - 24F33CC4C21214AAEF13CD898EEDDA59 /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; - 25355D4E8E6A5D4E46CD41D0D89CEE87 /* Expecta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Expecta-prefix.pch"; sourceTree = ""; }; - 2689D69C583916AE1D6BAFE0D4FAD0DE /* FBSDKDeviceLoginManagerResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginManagerResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.m; sourceTree = ""; }; - 27309D7B494D4D0C91D90ECB6DE93BCA /* Pods-PNObject_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNObject_Example-resources.sh"; sourceTree = ""; }; - 274548FF8D402009D18E89A75B703E08 /* AFOAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AFOAuthCredential.h; sourceTree = ""; }; - 27AF4F86F743BDEFCCD6F45E4E8806D4 /* EXPDoubleTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDoubleTuple.h; path = Expecta/EXPDoubleTuple.h; sourceTree = ""; }; - 27DD44A926F61A51075B512EBE47392E /* EXPBlockDefinedMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPBlockDefinedMatcher.h; path = Expecta/EXPBlockDefinedMatcher.h; sourceTree = ""; }; - 282ABE16C6FF308F3CEC6206019493BE /* PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PureLayout.h; path = PureLayout/PureLayout/PureLayout.h; sourceTree = ""; }; - 2879F575FF8553684935318188B30284 /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; }; - 28D39904B2DFABE6683F8674EC6099E6 /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; - 29D766A1203304C908352A70FFA9A08C /* PNObject+PNObjectConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectConnection.m"; path = "PNObject/Classes/PNObject+PNObjectConnection.m"; sourceTree = ""; }; - 2A33DA3C920305BBC61E8D81434CA15E /* UIStoryboard+DJLocalization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIStoryboard+DJLocalization.h"; path = "DJLocalization/UIStoryboard+DJLocalization.h"; sourceTree = ""; }; - 2A63C66BED0B466E36F0F993C7BE4315 /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; }; - 2AD7726578AEDB853810856C4C23EDA0 /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; }; - 2B08B36BD24CEAD1D95BA1FA4802D108 /* SPTExcludeGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExcludeGlobalBeforeAfterEach.h; path = Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h; sourceTree = ""; }; - 2B98C09EEA0F0C0EC0F64F559DB33544 /* FBSDKSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSwizzler.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.h; sourceTree = ""; }; - 2BEDB38D6E278A58C8A59B1A7DD33DC2 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; - 2CD4FEDA02383F2282ECAB7B869631CA /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; - 2CF577695B20B43B340A19B7A913A702 /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; }; - 2D74020142BF85D96F99132CAA2CB50F /* libUIDevice-Utils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libUIDevice-Utils.a"; path = "libUIDevice-Utils.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D8615B58E1B612FA1DBF2A386AFA870 /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; - 2D8E0B555B6519C73FDC9A8567EEA7F7 /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; - 2E08E9634486D671EED88EECBDEC18E0 /* StrongestPasswordValidator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = StrongestPasswordValidator.m; path = Pod/Classes/StrongestPasswordValidator.m; sourceTree = ""; }; - 2E5B97B6101A57C96FE481CB9E613CCD /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; - 2EDE351C77B8E516588EE281F458DD05 /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; - 2F9B201CDC5290A6C73E25462BBCD4F1 /* UIDevice-Utils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "UIDevice-Utils.xcconfig"; sourceTree = ""; }; - 2FACC2892857FDA98FD4BDF9CE744287 /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; - 3048AD4F8EDA8275428C4C7811A80A4C /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; - 3050DE354CD6B3906D8E195C2B426717 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; - 30F7AF67CB30B392C29AE6D0EEC80CDF /* Pods-PNObject_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PNObject_Tests-dummy.m"; sourceTree = ""; }; - 3150ABF5C9C0D2822665AFE650D52922 /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; }; - 3158077E76A8DF4FD04C623F11FFBC28 /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; }; - 31679FC9974982AA582E5C4B21F49015 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; - 316F52AA93E18FEB28CC7AF2689318DE /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; - 3177A3C9B3C8BFF821785E3B07D0F1A4 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - 31AB445EB5B9A76AF0A31B0358630D97 /* PNObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectUtilities.m; path = PNObject/Classes/PNObjectUtilities.m; sourceTree = ""; }; - 31E6F40974F44283228E9FF7921B56FA /* PureLayout.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PureLayout.xcconfig; sourceTree = ""; }; - 323EA10A630576B4449366F0EAE52579 /* FBSDKPlacesKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKPlacesKit-dummy.m"; sourceTree = ""; }; - 32433AF8FA28B0D0E2F36128EE536F98 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; - 327F45E58558B5326C9A46FFB8400296 /* FBSDKShareCameraEffectContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareCameraEffectContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m; sourceTree = ""; }; - 3292D60C81D863C85DB658AE02DBD614 /* EXPMatchers+beGreaterThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThan.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.h"; sourceTree = ""; }; - 33444B08145A331D85B322E2FFD5B509 /* DJLocalization-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DJLocalization-dummy.m"; sourceTree = ""; }; - 3402E6F10B522B2C59BFFD3D0E53B5D4 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; - 348915D5410F79D9A4C2A5BA76CA8B3A /* FBSDKVideoUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKVideoUploader.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h; sourceTree = ""; }; - 350832271DA41A0CDA90C2D109C288A7 /* SPTCallSite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCallSite.h; path = Specta/Specta/SPTCallSite.h; sourceTree = ""; }; - 35264EAAEDA442D61366C2579D737096 /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; - 353419D5AE11FB9175B1D26E5AE288F0 /* PNObjcPassword.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNObjcPassword.h; sourceTree = ""; }; - 355434E20D14554D05BE233DB2BEEA77 /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libAFNetworking.a; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 3594FE530B0FFED1DE600BDF625A0FD4 /* libCodFis-Helper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCodFis-Helper.a"; path = "libCodFis-Helper.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 35F80D89CE379089B4C6871717BB4E80 /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; - 36263CA62B1CDCF318BC1664ECE07634 /* FBSDKAccessTokenExpirer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenExpirer.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.h; sourceTree = ""; }; - 36990228D26480FC0CD775CFAB1D6C05 /* PNUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNUser.m; sourceTree = ""; }; - 36B84180D825D51CD538A3C8DD90DB0E /* FBSDKMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMeasurementEvent_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMeasurementEvent_Internal.h; sourceTree = ""; }; - 36C6768518C9BC0A70782352B58F4404 /* libNSDataAES.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libNSDataAES.a; path = libNSDataAES.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 36D218DC7AE122AFC8B53E9A609D15D3 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; - 36DEEB1D20C9CEE6C8967EC6612AE4D2 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; - 36EAC42123EF9F27EDFC19D47B4E4240 /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; - 3711275873E6DBA973EBB050248D3277 /* SPTSharedExampleGroups.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSharedExampleGroups.m; path = Specta/Specta/SPTSharedExampleGroups.m; sourceTree = ""; }; - 37287A6C0CA17545202D7C45248C7F06 /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; - 3791911718EC7488D00D5409925A6AD6 /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; - 37EB26347BB4DFC8DA1383518BAE555C /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; - 3888A0F4A81ABDD4F044E36198568B3B /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; - 38C5A066DE24895BC6222FE36AD043F7 /* StrongestPasswordValidator-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StrongestPasswordValidator-prefix.pch"; sourceTree = ""; }; - 38CACA500A3224F71AEE282AD652FB4B /* libNSDate_Utils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libNSDate_Utils.a; path = libNSDate_Utils.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 38D833AB2284A684F816E4664C009E70 /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; - 3900B179B07BC1E2E443BE149B8A4D36 /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; - 3914AF5468160CCCABE4E00BBE8D0C3F /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; - 3A05C4E0D355A8375AC32F33F3798FED /* EXPMatchers+beIdenticalTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beIdenticalTo.m"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.m"; sourceTree = ""; }; - 3A641E713664C2AAC8E6A7686EF49A89 /* PureLayout-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PureLayout-prefix.pch"; sourceTree = ""; }; - 3A774FE4B93A9712D216B5CC65BE17CB /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; - 3A7DA519B01F6AD1E471CC4756F6A793 /* UIDevice-Utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIDevice-Utils-prefix.pch"; sourceTree = ""; }; - 3D119B74AEEE53B239E3BF8A882A4E1D /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; - 3D83C014061E0574D9D69E704DE50470 /* EXPMatchers+conformTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+conformTo.m"; path = "Expecta/Matchers/EXPMatchers+conformTo.m"; sourceTree = ""; }; - 3DC39B114E45C2E927673D70C67596A8 /* SPTSharedExampleGroups.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSharedExampleGroups.h; path = Specta/Specta/SPTSharedExampleGroups.h; sourceTree = ""; }; - 3DCF10C254F77068C96E2CDFC78408AC /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; - 3E05B1A66A9C6944FB5E89AB95965C5C /* FBSDKDeviceLoginManagerResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKDeviceLoginManagerResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginManagerResult+Internal.h"; sourceTree = ""; }; - 3ECDC77A52766A87EA95232978B0F06E /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - 3EE345E7C72682CBA86096BE1C173A6D /* PNObject+PNObjectGETConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectGETConnection.h"; path = "PNObject/Classes/PNObject+PNObjectGETConnection.h"; sourceTree = ""; }; - 3F1B10111FE3A6954232AD285EF2B061 /* nv_ios_http_status.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = nv_ios_http_status.h; path = "nv-ios-http-status/nv_ios_http_status.h"; sourceTree = ""; }; - 3F60B0E02293AC8E709CD993C57467DC /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; - 3FA95DDB4EE259D0108EEA5D9E02B4AD /* NSDate+NSDate_Util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDate+NSDate_Util.h"; path = "Pod/Classes/NSDate+NSDate_Util.h"; sourceTree = ""; }; - 4074D9857D6E6F58769A514119FB7676 /* DJLocalizationSystem+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DJLocalizationSystem+Private.h"; path = "DJLocalization/DJLocalizationSystem+Private.h"; sourceTree = ""; }; - 418E169913134AAC85D7BD3CB9C4D4E7 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; - 41BE2B3CE06A539EE51DC17FD2C87F35 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; - 41BFFDBE6F1146FBAB6C96FF0DCD087B /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = ""; }; - 41F94E6B5A268FBAD5F4EDEDD7779603 /* FBSDKShareMessengerGenericTemplateElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerGenericTemplateElement.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h; sourceTree = ""; }; - 425BCC180D0345E8C4B0ADC8B1701889 /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; - 428E8FAEC05A290CCC356492D7D5E678 /* libStrongestPasswordValidator.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libStrongestPasswordValidator.a; path = libStrongestPasswordValidator.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 42990E7EDC81CEF4009E53A783446E0C /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; - 42E8055272E870E86104349D6DA9B416 /* FBSDKCameraEffectArguments+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCameraEffectArguments+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h"; sourceTree = ""; }; - 430A02A93F5FECAAE90FBDF4933C688C /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; - 4338430881B368C3FD1BE9A2FC71B3D2 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; - 4356A5464CA359F3AAF442305B61C0E6 /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; - 438004F3EA56A0997D8DC72AB1E872F1 /* FBSDKCodelessParameterComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessParameterComponent.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.m; sourceTree = ""; }; - 442A70A7AF5B4BD3ABC94F1AF9551DE7 /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; - 4451BB26B646DD6B5974BD3BFA3FE0EC /* EXPExpect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPExpect.h; path = Expecta/EXPExpect.h; sourceTree = ""; }; - 44FB8FBE06B0DE294D5E3CE220091D81 /* NSDate_Utils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSDate_Utils.xcconfig; sourceTree = ""; }; - 450D8F2ED6F012DFB6572D0CB2D90566 /* UIWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWebView+AFNetworking.m"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.m"; sourceTree = ""; }; - 460EDB379472C44703E3A25B51ABCB69 /* EXPMatchers+beLessThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThan.h"; path = "Expecta/Matchers/EXPMatchers+beLessThan.h"; sourceTree = ""; }; - 46335ECEC631F753490EF43F7DE7F5B2 /* FBSDKShareMediaContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMediaContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m; sourceTree = ""; }; - 46D0C74A87C8AB16098620D5F19CEEB9 /* nv-ios-http-status-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nv-ios-http-status-prefix.pch"; sourceTree = ""; }; - 46E4806CAB95C8B48475BEBC0E874E3C /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; - 47299D3D86205AFECEB38FCFE7E291C9 /* SpectaTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaTypes.h; path = Specta/Specta/SpectaTypes.h; sourceTree = ""; }; - 473A6E85D1BFC301D7A586D8FC067FBE /* XCTest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTest+Private.h"; path = "Specta/Specta/XCTest+Private.h"; sourceTree = ""; }; - 47B0EEF66C09BC69BEE0F1E6EA4E4E5C /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; - 48780EAE32D0050BA1DA3EA09E613B6C /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; - 48C57F0B0F44B45B793C87D46EF597EC /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; - 4905BBEB19AAE0AB35F26F8F0A891C9B /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; - 492AD5E601B229EC94FCC401C595A8A5 /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; - 49326D405F247F73110BCF8B55BE3036 /* EXPMatchers+beNil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beNil.m"; path = "Expecta/Matchers/EXPMatchers+beNil.m"; sourceTree = ""; }; - 49BD041C7E0E4CC5D7F744C8E72E13DF /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; }; - 49D729484FFEBE88C7D8876222FA0F4C /* NSDate+NSDate_Util.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDate+NSDate_Util.m"; path = "Pod/Classes/NSDate+NSDate_Util.m"; sourceTree = ""; }; - 49F85DFE8E5A6AC34239ABF8277E1C53 /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; - 4A3B2AF6253FF385B19D746BC3421E1A /* PNObjcPassword.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNObjcPassword.m; sourceTree = ""; }; - 4A8CE31FF3AAD59EF217D52466217801 /* PNObjectFormData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectFormData.h; path = PNObject/Classes/PNObjectFormData.h; sourceTree = ""; }; - 4BBF21A0DE8D9464944CEA946888E203 /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; - 4C194550C79BFF4F3BD784E2F397905E /* FBSDKShareMessengerURLActionButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerURLActionButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h; sourceTree = ""; }; - 4C2C251F2AB2A17DD75A544D61B7CEEA /* Pods-PNObject_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PNObject_Example-acknowledgements.plist"; sourceTree = ""; }; - 4C5310533EB4F9ABFC5B143636A802B4 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/Internal/BFAppLink_Internal.h; sourceTree = ""; }; - 4C762EA4AA67E9FDAB588DA182CE79AC /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; - 4CEE28ACBCB76E48C6CECF1B56BD72BF /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; - 4D186D3F2E558797188A95F3D609ABB4 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; - 4D4D238950FCEDACE20DA84B233D3F2D /* FBSDKAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLink.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.h; sourceTree = ""; }; - 4DDBFC1D5BDF4AED51727E70BC07E182 /* libPEAR-FileManager-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPEAR-FileManager-iOS.a"; path = "libPEAR-FileManager-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4DFD1785AB2CB6CC7B8E6BA2EA7451CA /* FBSDKCodelessParameterComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessParameterComponent.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.h; sourceTree = ""; }; - 4E0B3CA33E133107D98130512D5ABCA4 /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; - 4E51439F5BC49A0852132AD199CA0DC5 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; - 4EA883A48286B9FA836AAD116A5F843B /* PNObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObject.m; path = PNObject/Classes/PNObject.m; sourceTree = ""; }; - 4ED48EC5F3BB981EE45BBFCFD85B5019 /* FBSDKShareMediaContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMediaContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h; sourceTree = ""; }; - 4F5EF72C72FCB505E53954C97066D9CB /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; - 4F6CDCF57E54FF1CFF72622445A698CC /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; - 4F6D6AE35FDDF06FFD471F85A2822BA0 /* libNSString-Helper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libNSString-Helper.a"; path = "libNSString-Helper.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4F73CA776F3A066330DE862E1DA100CE /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; - 4F96D729DE3542FD79C39F64559159C9 /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; - 4FB9BF4E318472196FE02A15F9E2FEBE /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; - 4FD0258FA67F6312F538FCFA66ECF893 /* DJLocalizationSystem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DJLocalizationSystem.m; path = DJLocalization/DJLocalizationSystem.m; sourceTree = ""; }; - 4FE96DE348BD51445BFBAB67B70E47CD /* Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Specta.h; path = Specta/Specta/Specta.h; sourceTree = ""; }; - 4FEB1FA457053F713CF353AD6F0409CC /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; - 501348201A745DB29FA49340A0F04CF4 /* SPTGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTGlobalBeforeAfterEach.h; path = Specta/Specta/SPTGlobalBeforeAfterEach.h; sourceTree = ""; }; - 5042B7D31D77B6F95E351BD17B643F8A /* SPTSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSpec.m; path = Specta/Specta/SPTSpec.m; sourceTree = ""; }; - 50846CBCA2B8D71AFC25775782EA1F78 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; - 50EDCC7C13811E7B32FDF02A0A6FAF92 /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; }; - 5142FF672B17019276C209CC0276D25D /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; - 51E1170EA7FE107E90826D0BF6FA9CC2 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; - 52417322792DA7847140539AD1E36B84 /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; - 52E8F08DC670EA8205CA05FE35171BAA /* PNObject+PNObjectDELETEConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectDELETEConnection.m"; path = "PNObject/Classes/PNObject+PNObjectDELETEConnection.m"; sourceTree = ""; }; - 535C9E3A23A0CC026A7CAA5D7A5BCAA4 /* AFOAuth2Manager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AFOAuth2Manager.h; sourceTree = ""; }; - 549A9F71AE9170B962A91B44D91ED2AC /* VatNumber+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "VatNumber+Helper.h"; path = "CodFis-Helper/VatNumber+Helper.h"; sourceTree = ""; }; - 550DF2E78B55F72CFDA12C2C72E41082 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; - 552959FE670D63C938C2E841A05FE5EE /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; - 557AA9E59CB8292BE87DEA7EF0D5D65A /* PNObjectFormData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectFormData.m; path = PNObject/Classes/PNObjectFormData.m; sourceTree = ""; }; - 557C5C3EF93AA53A21DEF5D79BD826AA /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; - 56A6EA8EAE6DEF723DCDD633912B55A2 /* FBSDKShareMessengerURLActionButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerURLActionButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m; sourceTree = ""; }; - 5710DEE324135045C5E85E1EDBBFEE49 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; - 571D00EBFC740915CC8BF1BF0CF042DB /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; - 573A51D5E127CF2886394160D7BD2F03 /* FBSDKAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkNavigation.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h; sourceTree = ""; }; - 58010336F943048ECFA0A1AAC735B4FD /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; - 58D5028E4C8BCED2E915CA3B6EFD6441 /* FBSDKShareMessengerGenericTemplateElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerGenericTemplateElement.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m; sourceTree = ""; }; - 591DAF3CD399270B45B09427B91CEB50 /* AFJSONResponseSerializerWithData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = AFJSONResponseSerializerWithData.m; sourceTree = ""; }; - 597048BB4B8C11A8571132F090140004 /* DJLocalizationSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalizationSystem.h; path = DJLocalization/DJLocalizationSystem.h; sourceTree = ""; }; - 597450F63277CB0C0E57D5DBB6812CB2 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; - 5A28474AC50C565106BE610B08E1078B /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; - 5A71DEAFC5D1009BF6562C06AC1F291C /* EXPMatchers+beTruthy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beTruthy.h"; path = "Expecta/Matchers/EXPMatchers+beTruthy.h"; sourceTree = ""; }; - 5AD30B20662249C3967C75F41F99FECD /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; - 5B1BBC53A00585C1BDD65A27CB02EBD1 /* SPTTestSuite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTTestSuite.m; path = Specta/Specta/SPTTestSuite.m; sourceTree = ""; }; - 5B782BC239707388476B0CA2E1DE9758 /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; }; - 5B8F900387E73048FD26190B5511D047 /* Pods-PNObject_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PNObject_Example-acknowledgements.markdown"; sourceTree = ""; }; - 5C006FBBC73377EC9A4431A356710F5A /* RZDataBinding-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RZDataBinding-dummy.m"; sourceTree = ""; }; - 5C389F8C57479C85C7090D73FB7FA9E0 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; - 5CCBAEB24473A809E46448F10ECEDA78 /* libDJLocalization.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDJLocalization.a; path = libDJLocalization.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 5D72D062B7C25C77BDF7FE2899F37579 /* FBSDKURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURL.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.h; sourceTree = ""; }; - 5D8332C529CCACC68CC9FF89FDF0A5A1 /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = ""; }; - 5D9E42CE4EEC9EEF2088501CDA95AE68 /* PureLayout-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PureLayout-dummy.m"; sourceTree = ""; }; - 5DA221D791E87BBA9576770858C23B30 /* FBSDKDeviceRequestsHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceRequestsHelper.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.h; sourceTree = ""; }; - 5E3F7880B2158C8011C87CF6C9743E27 /* FBSDKPlacesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPlacesManager.h; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.h; sourceTree = ""; }; - 5ECE22AA714C9BB53DCDC4FBD072C712 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; - 5F3C82CA9BCD1A5B0FCEF6FF7F9B5DFF /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; }; - 5F851E4CA569BD52B5BB72EA54B863FD /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; - 5FDF542EF058BB0A95BAE3B0CF1AEE20 /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; - 6007FF7DBED0A6E14792E0848FB6407D /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; - 606A20728ABEA2C55C5E70041F584CB0 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - 60DDB47BCC36A082BDADDA61FF885C9A /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; - 62DEC9E410DDF1DC24C23EC0AED57DBB /* DJLocalization.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DJLocalization.xcconfig; sourceTree = ""; }; - 63173E5B639070BA427CD0A1443671DF /* UIDevice-Hardware.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIDevice-Hardware.h"; path = "Pod/Classes/UIDevice-Hardware.h"; sourceTree = ""; }; - 634A6D0CE66AD43D2448801BB07FB84F /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; - 634EF06960C2EA2CB352B3822D6E9983 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = ""; }; - 637542F760DC2652DDD04CCA71B39141 /* FBSDKGateKeeperManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGateKeeperManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h; sourceTree = ""; }; - 637F614A142E33D8FF0BD49303E7FB85 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; - 63C0BC977F90EFFB1EDE6089E231EFA0 /* AFHTTPRequestSerializer+OAuth2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFHTTPRequestSerializer+OAuth2.h"; sourceTree = ""; }; - 64E33BD2479294C9D42CCAE10E99D628 /* EXPBlockDefinedMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPBlockDefinedMatcher.m; path = Expecta/EXPBlockDefinedMatcher.m; sourceTree = ""; }; - 652BD6F2DA0097002F0CCD90BDA73DF6 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 66C2E247EB99AC60927C83B23AFF5B0E /* NSData+AESValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AESValue.m"; path = "NSDataAES/Classes/NSData+AESValue.m"; sourceTree = ""; }; - 68119EB2898F2D1707ADCAC372FB92B9 /* FBSDKShareMessengerContentUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerContentUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h; sourceTree = ""; }; - 6880F2907AC6DDAFBACA76A47CF74DBF /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; - 68E50591AC0CCC87D3E270FB013DC1AB /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; - 694ED0A520C178548F0E7A0208477BBD /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; - 69EF28D6F008F53D7ABC77D9E8AF8B9C /* NSDate_Utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDate_Utils-dummy.m"; sourceTree = ""; }; - 6A0F2D27F7A09E8498AACAE42D7A1780 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; - 6A1F0C57AB361A0B5448BB5A8C0652B3 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; - 6A4E9C04DF5129E4596C6BFA06F4857B /* FBSDKPlacesKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKPlacesKit.xcconfig; sourceTree = ""; }; - 6A78DD48E0F6C0AF870FBEBCD678F0CF /* libPods-PNObject_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-PNObject_Tests.a"; path = "libPods-PNObject_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 6AF06C969B2C2C97DA627F0C3C4FE1EE /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; - 6BA89D73886C8179F2DD51EECA66C779 /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; - 6BBE94DF76EC0F55859A3A516D3BE7D8 /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; - 6BC8EDA93EEF3C522920BF96CCF7B48A /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; - 6BFED846F96B9BD8DFB182FFDAAC3305 /* SPTExampleGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExampleGroup.h; path = Specta/Specta/SPTExampleGroup.h; sourceTree = ""; }; - 6CE006B6D683D6F48FDAFFA2B0CDE738 /* FBSDKShareExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareExtension.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareExtension.m; sourceTree = ""; }; - 6D356FBA9BA750D10CD0A64F98C6E0FC /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal_NoARC/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; - 6D632F0777EB3EC788F19472C6E6A80F /* FBSDKDeviceLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m; sourceTree = ""; }; - 6E41A3FB8FF46EA229ABE19782E1520E /* EXPMatchers+beIdenticalTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beIdenticalTo.h"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.h"; sourceTree = ""; }; - 6E7108190DE51C1390A0281C88FD33C4 /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; - 6E949BF07B3F978082F8A7982FD247F0 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; - 6EA832132E2F55847B7F7427B4434385 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; - 6FC337BEBCC2F3E574AF4FBFAFEEE2A9 /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; - 6FF0409608986977B99F59A93A1CA8D6 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerOpenGraphMusicTemplateContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h; sourceTree = ""; }; - 70007DF54ED17951A47EC0CAA5625152 /* FBSDKHashtag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKHashtag.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m; sourceTree = ""; }; - 703420D6AEDF7263176E2A6B5FF420B3 /* FBSDKUserDataStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUserDataStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h; sourceTree = ""; }; - 7038F673E9E3DFFA8B59D3F6B8F21FC0 /* FBSDKVideoUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKVideoUploader.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m; sourceTree = ""; }; - 70456E77233811453A50481D21DD9281 /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; - 70569B31499C7F90A6477AFDBE1BA69B /* FBSDKDeviceLoginCodeInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginCodeInfo.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h; sourceTree = ""; }; - 707B3A1063FE330DDF1BDDC42C35B478 /* NSData+AESKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AESKey.m"; path = "NSDataAES/Classes/NSData+AESKey.m"; sourceTree = ""; }; - 71310AF7EA7E6C52FA807CAA53194991 /* FBSDKEventBindingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKEventBindingManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m; sourceTree = ""; }; - 7160E1AC1908B0792C46512FA08C810C /* libRZDataBinding.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRZDataBinding.a; path = libRZDataBinding.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 71D1D5E712D5FE0416A65DC9B5034FEA /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; - 7256815F8C1E6E1B8D491EE1F2FAA575 /* FBSDKDeviceRequestsHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceRequestsHelper.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m; sourceTree = ""; }; - 726D8B7EE69194657847796A7870362D /* NSData+AES.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AES.m"; path = "NSDataAES/Classes/NSData+AES.m"; sourceTree = ""; }; - 727606916A3164048FD93AB35F980937 /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; - 728CCDBCE8BCE04530872D25A40EC26B /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; - 72A35EB40312EF278B4D7F556322D40A /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; - 72AE50F1F02EF4E9A375EF76D14FCB49 /* FBSDKPlacesBluetoothScanner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPlacesBluetoothScanner.h; path = FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.h; sourceTree = ""; }; - 72EFF8E7F7BAA04608D76AC14CCF31A2 /* EXPMatchers+conformTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+conformTo.h"; path = "Expecta/Matchers/EXPMatchers+conformTo.h"; sourceTree = ""; }; - 735F4821B0A89E9D75A8FD4C82D2182A /* RZDataBinding-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RZDataBinding-prefix.pch"; sourceTree = ""; }; - 7367038DADDD1891DC469540DB3387E4 /* NSData+SHA.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+SHA.m"; path = "NSDataAES/Classes/NSData+SHA.m"; sourceTree = ""; }; - 7384B5AEB63E0040B3EF5101BCCA576F /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; - 73C4EE95261A817643E40926A0821908 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; - 74183EA0C98FDD0C21C76BB3EF08A551 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; - 74725CF7D6F8C6598117247945C2B247 /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; - 74B5E30019C0CAD227B9BFDD862435DA /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = ""; }; - 74DEDEDFF18AA47B62133705F28F80B8 /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; - 74E0F3CE5BE31E0656A2F19BF3F03490 /* FBSDKHashtag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKHashtag.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h; sourceTree = ""; }; - 7513CFDFAA4E1AC9F3E0758174E9B83B /* UIWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWebView+AFNetworking.h"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.h"; sourceTree = ""; }; - 753B43030C94B5D482765D5AEE8AD428 /* FBSDKImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKImageDownloader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.h; sourceTree = ""; }; - 756F693A95219BC9E7CD9179F08C664B /* CodFis-Helper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CodFis-Helper-dummy.m"; sourceTree = ""; }; - 7579A421D264AD066DACAF48D5B02B7D /* NSDataAESCipher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NSDataAESCipher.h; path = NSDataAES/Classes/NSDataAESCipher.h; sourceTree = ""; }; - 75F264043AE55106986AD913E0F017C2 /* libSpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSpecta.a; path = libSpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 75FEB5265D3E6A8EA37CE79FF28CC305 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; - 7619B1BF2E2D702CCAAFA00584962DF7 /* EXPMatchers+beInstanceOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInstanceOf.h"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.h"; sourceTree = ""; }; - 76A70F698BFE983DBF82C8227AB92226 /* FBSDKDeviceLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h; sourceTree = ""; }; - 76F263BA13CB6D200FFCFB703248D796 /* FBSDKShareMessengerContentUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerContentUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m; sourceTree = ""; }; - 77974FF94F96E1308ACF8A44CD26A33B /* NSString+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Helper.h"; path = "NSString-Helper/NSString+Helper.h"; sourceTree = ""; }; - 77E1C856F9E6CBC3DAFC3F560FEB269B /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; - 780EB870D682B26487EA7ED3CD6483BF /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; - 7819150A98C3CA61F570BE130949DB6A /* StrongestPasswordValidator.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = StrongestPasswordValidator.xcconfig; sourceTree = ""; }; - 7918A7BE17EAA3CEF419426BD6E3D39D /* PureLayoutDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PureLayoutDefines.h; path = PureLayout/PureLayout/PureLayoutDefines.h; sourceTree = ""; }; - 79B189EBE40BC1ECF4D06618B33E43CF /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; }; - 79D6C0D493E1CB052FD78ABBAD93F9F3 /* FBSDKAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkTarget.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.m; sourceTree = ""; }; - 7BCC911BBF329B8E7AECD00D25AD2B17 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; - 7C8D8ED83FB04860566696F2F50BCB92 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; - 7CCFEFB3F60B7C03C9E254956B2654CA /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; - 7E3637212D99E5D9D594B142A123B12D /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; - 7E64A481A444C01DA2688182A6EA8EF2 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; - 7E6686024411EB6377B578E3E0F41A35 /* PEAR-FileManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PEAR-FileManager-iOS-prefix.pch"; sourceTree = ""; }; - 7EB779AE5CD8F55FA700C0EBA7148870 /* FBSDKSharingValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingValidation.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h; sourceTree = ""; }; - 7F014F85FF0564123AE92E06EE1AE8F4 /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; - 7F42EDD249E020DA7B4651744A7C3181 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; - 7F5FA93A8843A8A24C1DD22FA4790374 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; - 7F77C49002C9EC92243873ABA535AD8B /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; - 7F9B2EDD33FE26C8C0919BAC14A84B4A /* libnv-ios-http-status.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libnv-ios-http-status.a"; path = "libnv-ios-http-status.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7FBA496BAEED97BBB12AEAD557185E8A /* libPureLayout.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPureLayout.a; path = libPureLayout.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 80242BBD0563FE70C2FEEBCCD6A018A6 /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; - 8100D69BD5CF4CCFADDD69B9B33F2472 /* DDDKeychainWrapper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DDDKeychainWrapper.xcconfig; sourceTree = ""; }; - 8372F447CB58D6A7AEE4F77E6E1AA18A /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; - 83EE9D0B8A3BA39B486D7C39861C7CB8 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; - 842584E2EA582B6EB1EB7C5CA8F6F80A /* libPods-PNObject_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-PNObject_Example.a"; path = "libPods-PNObject_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 84775819BE28E43353420F0E6F1B8FCC /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; - 84FE562C45F8ED5DB5C65AFF6293562F /* PNObject+PNObjectConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectConnection.h"; path = "PNObject/Classes/PNObject+PNObjectConnection.h"; sourceTree = ""; }; - 8508795C53C9A6012CA83D7EE10ACFF5 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; - 85560B5A0586BF41D1760868ADEA3900 /* FBSDKPlacesKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKPlacesKit-prefix.pch"; sourceTree = ""; }; - 856C7F85343BF8C08D2A9C78C15EFFED /* PNObject-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PNObject-dummy.m"; sourceTree = ""; }; - 85D1C691880860955FF8B13B8109A98D /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; - 85FF72C395AA6D3D18BFED154970FCE3 /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = ""; }; - 8668A46046AD973E8CFBC1CE133B6786 /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = ""; }; - 86E6DCB5CC9057A882CF430FD43FCA28 /* FBSDKPlacesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPlacesManager.m; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.m; sourceTree = ""; }; - 8728096184D423AA616318E7342FC705 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; - 872AFF912B872C834616F86910AE7D58 /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; - 8788FD6421B5D48810917D414E32EB40 /* NSDate_Utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDate_Utils-prefix.pch"; sourceTree = ""; }; - 87A1C683F9BBBCE5E83E55B5C7944670 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; - 880BBE3B833545E556508AED24391025 /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; - 8871173B41249C1FC241B882B9866E4A /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; - 88C1AB3D247B276DA891FB403754FDD8 /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; - 893EED4B142C7712269D7508B429DC66 /* RZDBCoalesce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBCoalesce.h; path = RZDataBinding/RZDBCoalesce.h; sourceTree = ""; }; - 896596E22E5952435B390ECB02A540EE /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; - 89741F7CC818B4B06019F65E6832BD0F /* NSMutableData+AES.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableData+AES.m"; path = "NSDataAES/Classes/NSMutableData+AES.m"; sourceTree = ""; }; - 8979C061E911DB86EABEEA679BB0824E /* PNObjectConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectConfig.h; path = PNObject/Classes/PNObjectConfig.h; sourceTree = ""; }; - 89C12DCC14242D50F00DB197FB432DD2 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; - 89C30A5ECEA9C68DE0DAE413425CF012 /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; - 8B6430A4D020AF934C8EB61D5A8C4093 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - 8B6D228AE815C06E133EF64C174C72E8 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; - 8B710FBF14B5F01B7DACDD8307EE0241 /* FBSDKPlacesBluetoothScanner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPlacesBluetoothScanner.m; path = FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.m; sourceTree = ""; }; - 8BB1E36689F5554BAC591B87077238BE /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; - 8BDB69F27DB5EB0E81E9C070DD9433B7 /* EXPDoubleTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPDoubleTuple.m; path = Expecta/EXPDoubleTuple.m; sourceTree = ""; }; - 8C85018DCA4E8E1BBF28EF811D48B21B /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; - 8CB02102AAE2843CFC8BE65E6DF92B68 /* FBSDKEventBinding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKEventBinding.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m; sourceTree = ""; }; - 8CF04024AA57BCD9CF217BFD80DFCF0A /* FBSDKAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h; sourceTree = ""; }; - 8D02FDE3DC28C5271AA85D1C05D5EC1C /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; - 8D0A99B2023C12BABCF67DA0F8B278E3 /* BFGeneric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFGeneric.h; path = Bolts/Common/BFGeneric.h; sourceTree = ""; }; - 8D2EE10241E3819E49B5C2F29028E57C /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; - 8D3010A0367831EE82017D8EB41781DA /* NSData+AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AES.h"; path = "NSDataAES/Classes/NSData+AES.h"; sourceTree = ""; }; - 8E443B6E05DEC63F79E03144A6BCCD06 /* libFBSDKPlacesKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKPlacesKit.a; path = libFBSDKPlacesKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 8E6F5A48940CEB8FB0F3405324B6C350 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - 8E95CB506B2439A75B5B95A981BF41DC /* EXPMatchers+beLessThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m"; sourceTree = ""; }; - 8F20D0DD94419EF67235F760733EBDF5 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = ""; }; - 8F81808A22C2B64B21EBAC60C04E9D8D /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; - 9011A772C24067C794791AEC930D8E9D /* FBSDKGateKeeperManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGateKeeperManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m; sourceTree = ""; }; - 90588E8B37E34AA3C22F91A841EAA7C3 /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; - 90EC50FD3AFF315F5139B2A96D7A889C /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; - 910CB851BE5295852DB67915E3780799 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; - 9287095BE84FE3329CB5E8222A1E260F /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; }; - 931602784F81FC5F0637EF3E7B4DCB89 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; - 93176C2E368BA455CC3DA70528CF96FB /* DDDKeychainWrapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDDKeychainWrapper.m; path = Pod/Classes/DDDKeychainWrapper.m; sourceTree = ""; }; - 93560A3DEE1CECCDC107CFAB3BB499F6 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; - 93B638C25B25775A690E5D64EE127A86 /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; - 944CFEEBBC319A1B242E21DEDF6DA177 /* PNObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectUtilities.h; path = PNObject/Classes/PNObjectUtilities.h; sourceTree = ""; }; - 94A18D545C1EE623676C8F1CE1CDFC68 /* PureLayout+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PureLayout+Internal.h"; path = "PureLayout/PureLayout/PureLayout+Internal.h"; sourceTree = ""; }; - 95166DEFF81A3E56BA87EFD60B898F38 /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; - 9521C06B9845141BD23CA3B646A34D8A /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; - 953E51768F131AAF8387BCC13496F136 /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; - 9563DEDCA2EA8A2E4D08BBC2437E75C6 /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - 95ACDC86CD9D2A9C67568F9E6340034D /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/Internal/BFURL_Internal.h; sourceTree = ""; }; - 95EC7412550E7D4F1BE8A2F9C300660B /* NSString-Helper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSString-Helper-prefix.pch"; sourceTree = ""; }; - 95EEFB5ADA1B95FB3EEF52E2148EA679 /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; - 9637DE2BCB0C07ED47A9CE4C279B25DB /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; - 964B53AAE68DDABD727A9EA8BC348AAD /* ExpectaObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaObject.h; path = Expecta/ExpectaObject.h; sourceTree = ""; }; - 96ED99C8C8CCC63543C5E357CACA0E1D /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKCoreKit.a; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 98260EDA28424DEDF24F0757EE90ED2C /* FBSDKUserDataStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUserDataStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m; sourceTree = ""; }; - 98985DB3C6A3CA6E3251B8690025641C /* SpectaDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaDSL.m; path = Specta/Specta/SpectaDSL.m; sourceTree = ""; }; - 98DE9A917E74C29FF0C04D3F34577E34 /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; - 99766581F3ED9EE101848320FE097C3C /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; - 9A2448A7336544D2B9F6BAAAFAA14673 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; - 9AE80A55083472B8056AC6B1257A9F39 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; - 9CBAF0A86086D8A851FB9678AE4484F4 /* Pods-PNObject_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PNObject_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 9CD930FB246DD35558DF0A705CE410B4 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; - 9D13DA27869E09F92FC87BAAEE03E24E /* FBSDKAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkNavigation.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m; sourceTree = ""; }; - 9D3D9CE8344FE9BA48FA805E55B25E44 /* NSDataAES.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSDataAES.xcconfig; sourceTree = ""; }; - 9D6E8FD3B0E3FFDCE14B06B88AF029D4 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; + 00020ADE721B0B7BA5B6366521C3B8A8 /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; + 0070B094EF00720DBBC6A900DAB293DE /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; + 00F67A252F852FA5D43DA99DC2BA9A27 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + 01044D987AB424AEEBD2DB04A7CABEB6 /* SPTSharedExampleGroups.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSharedExampleGroups.m; path = Specta/Specta/SPTSharedExampleGroups.m; sourceTree = ""; }; + 01A52256CE7C8FFF4CF5E430DCAC06E9 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = ""; }; + 01A6983CD7A00530A291B10286D5A4F2 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; + 01D218EAE243861488C477C51C4D6D55 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; + 01EFCE9AAA60D82E564BD53C447C5C3D /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; + 020E249224444E8478B78D3625DE24C1 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; + 0238CC0291309C0FE2C236CE20E10A93 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + 03B65791AB86DD5C751334C1EE0EBEB6 /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; + 0470F435D4BB833B1C1AEB7FE464DB10 /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; }; + 04DEFF5ABB743AF7640F7976419E8506 /* AFOAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AFOAuthCredential.h; sourceTree = ""; }; + 054D06556574CF560E02B1BE3004FFE6 /* PNObjectFormData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectFormData.m; path = PNObject/Classes/PNObjectFormData.m; sourceTree = ""; }; + 05630D6B386EC092BB895660631D156A /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; + 05753AB3D2104B4761ED33675F674395 /* PNObject+PNObjectDELETEConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectDELETEConnection.m"; path = "PNObject/Classes/PNObject+PNObjectDELETEConnection.m"; sourceTree = ""; }; + 0585396D8960F9DDEC28F0A1522F4A22 /* PNObject+PNObjectPOSTConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectPOSTConnection.m"; path = "PNObject/Classes/PNObject+PNObjectPOSTConnection.m"; sourceTree = ""; }; + 0585A4D7B8316CF8C4B838FE63E34690 /* AFHTTPRequestSerializer+OAuth2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFHTTPRequestSerializer+OAuth2.h"; sourceTree = ""; }; + 05C215E17A0D28284936F71B51050A8A /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; + 0685E6F3FBB7EF2D7D57DD9C09E9AA28 /* FBSDKMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/Internal/FBSDKMeasurementEventListener.h; sourceTree = ""; }; + 068A90B382A5BDAB956F85B721091B00 /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; + 06DC986B5883580D356547C4754730D4 /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; + 07844CF254823F4B1EBDDA1D926D92B2 /* FBSDKImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKImageDownloader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.h; sourceTree = ""; }; + 07F242465FA619AD3802DB09F94589A2 /* FBSDKShareExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareExtension.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareExtension.m; sourceTree = ""; }; + 082E03B027940675085E020F5A7FED86 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; + 085A78AFBBBF59E43F95293CDE7FD699 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 08721431B6068620A2DE09F7F52D06C6 /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; + 08F791F902E95C73B96C18E65B24EB8B /* FBSDKViewHierarchy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewHierarchy.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKViewHierarchy.h; sourceTree = ""; }; + 08F7F0770B4878B9883B87DCD8569CB4 /* libExpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libExpecta.a; path = libExpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 092828F37B6F6040EC3A135EF34B1DEA /* NSDate_Utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDate_Utils-dummy.m"; sourceTree = ""; }; + 09969D98BBE6206293463FEBF5024F3D /* FBSDKBridgeAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPI.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.h; sourceTree = ""; }; + 09FCD4D4C6FAE00C2867A08941862049 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; + 0A919E143683C281925BA940567DF3A0 /* FacebookSDKStrings.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; path = FacebookSDKStrings.bundle; sourceTree = ""; }; + 0AD4791D9F4FCABA1938A671283DC1EF /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; }; + 0B4671A98D9A3888F282292A1681AB95 /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; + 0B8918FA74A9DCEB87C7DF313F936651 /* EXPMatchers+contain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+contain.h"; path = "Expecta/Matchers/EXPMatchers+contain.h"; sourceTree = ""; }; + 0BA081D038CAB2EEB584B958DC491908 /* SPTExcludeGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExcludeGlobalBeforeAfterEach.h; path = Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h; sourceTree = ""; }; + 0BA8C4F75BE2E0BAFF5F16B984021BE0 /* DJLocalizableString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalizableString.h; path = DJLocalization/DJLocalizableString.h; sourceTree = ""; }; + 0BC0962C85EBD262178848F2222A5DED /* StrongestPasswordValidator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StrongestPasswordValidator.h; path = Pod/Classes/StrongestPasswordValidator.h; sourceTree = ""; }; + 0BC7862E8F1078A956A32DD0E453F6BF /* NSString+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Helper.m"; path = "NSString-Helper/NSString+Helper.m"; sourceTree = ""; }; + 0C22AE1671F6617E31D2229B42E91C91 /* UIDevice-Hardware.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIDevice-Hardware.m"; path = "Pod/Classes/UIDevice-Hardware.m"; sourceTree = ""; }; + 0C707AD8126EC521EB1118418568C7E9 /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; }; + 0C71567207924ECBD75EBEBCB1C92D50 /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; + 0CA6F7990B8777F44D1723868E9E700F /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; + 0CD6374C7D61B357C54B4026EF0D3A96 /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; + 0E9DC66BA4CF88F7C64A5541363FBED1 /* nv-ios-http-status-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nv-ios-http-status-dummy.m"; sourceTree = ""; }; + 0ED8C5E07BFBCB9CC1B4B97DBE01B406 /* FBSDKAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkReturnToRefererView.m; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.m; sourceTree = ""; }; + 0EFC8188AF5438832A8A51DF0A1BCD8C /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; + 0F4D1295CA8B2F222CB1B4605BE9C976 /* FBSDKBridgeAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPI.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPI.m; sourceTree = ""; }; + 0F940742E623C3AE826DAD0EC1D84A45 /* DJLocalizableString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DJLocalizableString.m; path = DJLocalization/DJLocalizableString.m; sourceTree = ""; }; + 0FAF785EE645AD8E945106F8CDD47126 /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; }; + 0FCD28AD7A9829C2574D2F53127070F6 /* FBSDKDeviceLoginManagerResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKDeviceLoginManagerResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginManagerResult+Internal.h"; sourceTree = ""; }; + 0FD25B32D581767390D2D3B6B50A2C03 /* FBSDKHashtag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKHashtag.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h; sourceTree = ""; }; + 0FE03FCA42D6499B5007B72FAAF0C5CC /* FBSDKAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkTarget.m; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkTarget.m; sourceTree = ""; }; + 116161BAF7ED24A13EF3B45FAD9356CE /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; + 116F9D84B0EF0D8D362E45B93BC3C327 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + 11B40AD33B009F8CE971455A1FA2D593 /* EXPExpect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPExpect.h; path = Expecta/EXPExpect.h; sourceTree = ""; }; + 1243093EA95001FDFE0D1F31BEAE71AA /* DDDKeychainWrapper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DDDKeychainWrapper-dummy.m"; sourceTree = ""; }; + 12E79F4E565D05B31370FFCB7C2C6929 /* FBSDKCodelessParameterComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessParameterComponent.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessParameterComponent.h; sourceTree = ""; }; + 1334E2E526A24825BFBCF5F5E67FBFE9 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; + 147232795DA583F933A389EF7CA2AA81 /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; + 149FA64F5D3E9157CCCD2F5D4040AD0E /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; + 14AC90D3D006C6B19A7F2C252814BA9A /* libPEAR-FileManager-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPEAR-FileManager-iOS.a"; path = "libPEAR-FileManager-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 14E9309B893DB28F15087129BB5A5444 /* XCTestCase+Specta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestCase+Specta.m"; path = "Specta/Specta/XCTestCase+Specta.m"; sourceTree = ""; }; + 14F5355E009FB6EB257F25507ABC22E2 /* Pods-PNObject_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PNObject_Example-acknowledgements.plist"; sourceTree = ""; }; + 15532673F269791E0F4FB78CBD009CAE /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + 1599B0A83F12955B16D69E671AB13931 /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; + 15AE0E0A3E6F3782692B22BAC05CF8B2 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; + 15B13B063AA97C48C9010C298AECBDDA /* libSpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSpecta.a; path = libSpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 15F48A9728BBA277C804247BF08A55FF /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; + 1647A3E77AE17C5F75573847BFF8053A /* EXPMatcherHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcherHelpers.h; path = Expecta/Matchers/EXPMatcherHelpers.h; sourceTree = ""; }; + 165209F924C9C7EAF3EBBB35DD106B3D /* libPNObject.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPNObject.a; path = libPNObject.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 16C1C8A70B59DC2609612796ABC5F78D /* FBSDKDeviceLoginManagerResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginManagerResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.m; sourceTree = ""; }; + 1770B20158EDADF28A69CF6036627525 /* NSString-Helper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "NSString-Helper.xcconfig"; sourceTree = ""; }; + 17964E8FD95FC261208056AA2B06347C /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; + 18A8135050CEE2F3D458A8B0D7FA6CD9 /* EXPMatchers+beginWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beginWith.m"; path = "Expecta/Matchers/EXPMatchers+beginWith.m"; sourceTree = ""; }; + 1910972025C0A3811CA6B891AC5E7445 /* AFOAuth2Manager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = AFOAuth2Manager.m; sourceTree = ""; }; + 191238D431153D9F6D1144EC7926DC6D /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; + 1940E37789851445FC73B7F51DBC3FAF /* UIWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWebView+AFNetworking.m"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.m"; sourceTree = ""; }; + 1973CC1259420A40AC5698C233F3C84F /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; + 19E18AA883A199B346FF991904823CA2 /* FBSDKCrashObserving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrashObserving.h; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashObserving.h; sourceTree = ""; }; + 19F77004B1D23F585E26D32EF720CB98 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + 1A29DCD66495B880BD286BF7D4674B0F /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; + 1A618958FDEFB746E717DCF8065B27CA /* PureLayout+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PureLayout+Internal.h"; path = "PureLayout/PureLayout/PureLayout+Internal.h"; sourceTree = ""; }; + 1B346B413AD002A0073BF6BE7F38BBD4 /* FBSDKShareMessengerGenericTemplateContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerGenericTemplateContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h; sourceTree = ""; }; + 1B39E35E4965B54F6A34E661EB8AAAB5 /* EXPMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcher.h; path = Expecta/EXPMatcher.h; sourceTree = ""; }; + 1C1FAD6615297E3D7F09BD4A1EDFBEB1 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; + 1C79641482E2BCB08313521623979177 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + 1C827DDF8E201EAA880AB1534DDDE2C8 /* FBSDKMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMeasurementEvent_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMeasurementEvent_Internal.h; sourceTree = ""; }; + 1CAD5A03A97C2DF86FCBA41D106AD1C7 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; + 1D01ABA1F3663926243C9C6C840A0C6B /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; + 1D5F0AB7CCB95D5660C1CB68383975CC /* EXPMatchers+beIdenticalTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beIdenticalTo.h"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.h"; sourceTree = ""; }; + 1D912DC91F7A820DF43989F8CA88C512 /* NSData+AESValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AESValue.m"; path = "NSDataAES/Classes/NSData+AESValue.m"; sourceTree = ""; }; + 1E0C52CDCBC2376BC932D9162D36B6CA /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; + 1E5200D160FB01896D7B466E6D82BAC9 /* FBSDKShareCameraEffectContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareCameraEffectContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h; sourceTree = ""; }; + 1E54734CCEA2CFA69B47CE059CE2F533 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; + 1E68F5A08A8ECE4BBFA26DD8956D8457 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; + 1F42210398D96D2542A18AB72A735CA3 /* EXPMatchers+beGreaterThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m"; sourceTree = ""; }; + 1F65782E2CB6FB7322EA695EB7C30BF5 /* EXPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDefines.h; path = Expecta/EXPDefines.h; sourceTree = ""; }; + 1FE96923F0CDBEA77D75D44455A943D8 /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; }; + 1FFD222B193C28AB5D745469C138B7A4 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; + 2044442BDAE0CA0037CA983768B041A8 /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; + 20DAF9898D1FB5AE1BA63DA82A735129 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; + 21705F2CDA390D5966CF85B65CD17838 /* FBSDKShareMessengerMediaTemplateContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerMediaTemplateContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h; sourceTree = ""; }; + 21D7A6991DA2BE39B334B014560B7582 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; + 2273FA87CA2EB2751A2839B0A5FD35A5 /* FBSDKPlacesKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKPlacesKit-prefix.pch"; sourceTree = ""; }; + 2305575DD63A7D23F99008BF5A760562 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; + 230613DA21063BA374344D2AF71E64F6 /* Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expecta.h; path = Expecta/Expecta.h; sourceTree = ""; }; + 2325EC8CC3E173B3C3D69138198D5FB4 /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; + 23AD5EAC97E0698DF562534D5DEE5C28 /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; }; + 23D55619D789DAD7C33C125AA9308EE3 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; + 261FF7B9E8B3B0E1E3A811BF7DACF445 /* DDDKeychainWrapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDDKeychainWrapper.m; path = Pod/Classes/DDDKeychainWrapper.m; sourceTree = ""; }; + 26344EC14781F553C8D5820612FCD0A1 /* FBSDKCrashHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrashHandler.h; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.h; sourceTree = ""; }; + 26885886696BBED4B1AA1728F7305710 /* FBSDKCodelessPathComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessPathComponent.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessPathComponent.h; sourceTree = ""; }; + 2694CAD098705CB36D133B33B21A64A9 /* AFOAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = AFOAuthCredential.m; sourceTree = ""; }; + 26C994B65A5252BA70C2E59D4F42E1D7 /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; + 26F1529DB3E65477AB369CEF7C16CFE8 /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; + 280140A1423C56F4338FF1AA8CFC1F2E /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; + 2819C17659A1EB1D2FC35741F314F1AF /* PEAR-FileManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PEAR-FileManager-iOS-dummy.m"; sourceTree = ""; }; + 2832EAD55A32C350FD70C2FB4DA66901 /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; + 28870C39752D0222B32D97A4F884E634 /* FBSDKPlacesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPlacesManager.h; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.h; sourceTree = ""; }; + 2976BB72E7664FCEAE9A408065D4A1C5 /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; + 2A05D2404EF3D8FDD1CFE4186752A8E5 /* EXPMatchers+beInTheRangeOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInTheRangeOf.m"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.m"; sourceTree = ""; }; + 2ABE5ABAB0FA7BDA703F9BB56FE8A6BA /* PNObjectModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectModel.m; path = PNObject/Classes/PNObjectModel.m; sourceTree = ""; }; + 2AF4AA6B9439CE9EB38237BEBD1DF9A5 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; + 2B0D2A3575862DAB8F0F29AF18451868 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; + 2B3F2022E39A8F990E4D6C680E5C3533 /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; + 2B40546F0E4BE18427675E5AC0FCC49F /* DDDKeychainWrapper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DDDKeychainWrapper-prefix.pch"; sourceTree = ""; }; + 2B43DCCAEF495D17FE3C0D28994E435A /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; + 2B454729F5EA166707A655DDA29E5C78 /* ExpectaObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaObject.h; path = Expecta/ExpectaObject.h; sourceTree = ""; }; + 2B7E08BB0F0CB9A81C1681534F500D40 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; + 2BBBC0494C6D8E302B4FFF2151F459EC /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = ""; }; + 2BE3F33C0F4BA4687A20B6FBBB745E85 /* FBSDKMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/Internal/FBSDKMeasurementEventListener.m; sourceTree = ""; }; + 2BFBC54525BFFAE88820E17DE2AB3D3B /* FBSDKMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMeasurementEvent.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h; sourceTree = ""; }; + 2C260EA54EE75A4DE5E86A1F5D484BA6 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.m; sourceTree = ""; }; + 2C5B7BA0C04E34412CA6AB9944D0C8FE /* FBSDKCameraEffectTextures.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCameraEffectTextures.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m; sourceTree = ""; }; + 2CAC747BE976C69C78E92A5C30034968 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; + 2CBA0FFC1082F68D3300E57FA3DBBF40 /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; + 2CC6852DAD5208810D3BBA0B9D4BAC5A /* EXPMatchers+beSubclassOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSubclassOf.h"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.h"; sourceTree = ""; }; + 2D05AD56E1E7895EAB52A8DDC00125CD /* RZDataBinding.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RZDataBinding.xcconfig; sourceTree = ""; }; + 2DBE520B4740BDDEA0416B0D821EFA03 /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; + 2E0D1B22AAC5A3CF541143E246D519B4 /* PNObject+PNObjectPOSTConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectPOSTConnection.h"; path = "PNObject/Classes/PNObject+PNObjectPOSTConnection.h"; sourceTree = ""; }; + 2E555AC810A2041B830D7329DA009658 /* HTTPStatusCodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPStatusCodes.h; path = "nv-ios-http-status/HTTPStatusCodes.h"; sourceTree = ""; }; + 2FC40E92EC8260C2541042FBF3AD0F39 /* FBSDKCodelessIndexer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessIndexer.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessIndexer.h; sourceTree = ""; }; + 30023AD00462C918D7A590E707D9E450 /* FBSDKURLSessionTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLSessionTask.h; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.h; sourceTree = ""; }; + 303D39A7D52B7C9EEDBE105E47A6D56D /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; + 30777BEA30E91B9AB92D6D7B41721548 /* FBSDKSharingScheme.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingScheme.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h; sourceTree = ""; }; + 30994CF2104FF9119BA225FE1F634BFE /* FBSDKSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSwizzler.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m; sourceTree = ""; }; + 31166C290739F2716E38353B55051FE3 /* FBSDKAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolving.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolving.h; sourceTree = ""; }; + 31338E395206508C5383E020D7AC0A74 /* Pods-PNObject_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PNObject_Example-dummy.m"; sourceTree = ""; }; + 316FD5892343E0F442A13B22742BCB44 /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; }; + 31FD90CCBD96A0D2FAE4FAD926EAEE65 /* CodFis+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CodFis+Helper.h"; path = "CodFis-Helper/CodFis+Helper.h"; sourceTree = ""; }; + 32233C13E1C85E7E70A5E7064C8C5EF6 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; + 322EA7A4C0A8C70C8E58B6F4BB9705DB /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; + 326A77BF4B7DCB08FE6B514825B0E0AA /* Pods-PNObject_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Tests.debug.xcconfig"; sourceTree = ""; }; + 3414D8CFD8EFD71830E819582908FA7B /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; + 34D3B3F7605EB46274E23F7222D55038 /* FBSDKShareMessengerMediaTemplateContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerMediaTemplateContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m; sourceTree = ""; }; + 35581B14530384F3A16EF07776851CCC /* UIDevice-Hardware.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIDevice-Hardware.h"; path = "Pod/Classes/UIDevice-Hardware.h"; sourceTree = ""; }; + 36230C912F3C925DCE71A683EACEF954 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; + 367F7DF3819B9D9930F56325615545F6 /* PNObject.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PNObject.xcconfig; sourceTree = ""; }; + 3724D1F1B00291D22EDF1043CE20B971 /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; }; + 3729E0EA5C863A17EB62904BD4F1A518 /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; }; + 375802A884DCBF305C9B4F79202E842C /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; + 3767F9AAD1DE4F2138E0165F5626D42B /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; + 38471D21CE0A432BFD4EBC9A89F2911B /* NSString-Helper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSString-Helper-prefix.pch"; sourceTree = ""; }; + 38A17A27D588C937F8DA18DCECC93205 /* EXPMatchers+beTruthy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beTruthy.m"; path = "Expecta/Matchers/EXPMatchers+beTruthy.m"; sourceTree = ""; }; + 392792D56AB5073333277DFACB736214 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; + 39E89FFEED46C9F77762B85DB40ACD10 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; + 39FFF15F6D13C4A523E97FE0C4450697 /* NSMutableData+AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableData+AES.h"; path = "NSDataAES/Classes/NSMutableData+AES.h"; sourceTree = ""; }; + 3A3AE58262FDAD96053342442127E68F /* FBSDKShareMessengerURLActionButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerURLActionButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m; sourceTree = ""; }; + 3A44AF883D30E26BD4F5139F7D6D8047 /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; }; + 3A6C81893EF2FF726156CEFE134F9C7C /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; + 3B1D76CCF7D39B681A5517380E9BC9F6 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; + 3B612F7111746B3D800CC013BDA56FB1 /* EXPMatchers+beginWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beginWith.h"; path = "Expecta/Matchers/EXPMatchers+beginWith.h"; sourceTree = ""; }; + 3C0A0A60EC21AC0133E91AE3A21AC1A7 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; + 3C30F20741A7E84FD7DB8C9AE5896798 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; + 3C732630D39AF9C837B3996E4A4D7977 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; + 3C84E36354FE89AFA78359E1319E358F /* SPTCompiledExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCompiledExample.h; path = Specta/Specta/SPTCompiledExample.h; sourceTree = ""; }; + 3CCA95C49E844F8E684D22E6A75757AA /* FBSDKGateKeeperManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGateKeeperManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h; sourceTree = ""; }; + 3D8E3BB5C5B32D155372E60B95AF2755 /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; }; + 3E0C40FD0298A1FF91D8C5C803BEADF6 /* libRZDataBinding.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRZDataBinding.a; path = libRZDataBinding.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E70409621EC61E3F5D5C113B99CCF08 /* EXPMatchers+beTruthy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beTruthy.h"; path = "Expecta/Matchers/EXPMatchers+beTruthy.h"; sourceTree = ""; }; + 3E738F593463D00EF1B37AAE88179048 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; + 3F0B4E7ED20CE9625CD2F2E9D74FD841 /* SPTExampleGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExampleGroup.m; path = Specta/Specta/SPTExampleGroup.m; sourceTree = ""; }; + 3F143CE20C361DA7E9B8F72CDB661712 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; + 3F7D00E21107A63C72DE494CF5182165 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; + 3F80B3A24ACA62A0E71909F94C5A0FFC /* PNObjectFormData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectFormData.h; path = PNObject/Classes/PNObjectFormData.h; sourceTree = ""; }; + 3FFF9CC8B4BBBE7E5EE675C16648685D /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; + 4096AE0BD63EE947F52B07F34F464249 /* FBSDKUserDataStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUserDataStore.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.h; sourceTree = ""; }; + 40DC2622CCEFAA111ED478B6E90C1927 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; + 40DE286B1D787AB5C09BD6CEE42CF607 /* PNObjcPassword.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNObjcPassword.m; sourceTree = ""; }; + 40EB7C011EE90C1626BAEB461A9DB92E /* FBSDKShareMessengerURLActionButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerURLActionButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h; sourceTree = ""; }; + 4112ACE7113D5A437A69DACE432DFDBD /* FBSDKShareMessengerContentUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerContentUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h; sourceTree = ""; }; + 411607A7BE0759E1E6D6A632175DF657 /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; + 4135111B617AF1AFF945B0FEE8620780 /* SpectaUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaUtility.h; path = Specta/Specta/SpectaUtility.h; sourceTree = ""; }; + 4149576FC2346BA4CFC52A4E799384C3 /* CodFisResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CodFisResponse.m; path = "CodFis-Helper/CodFisResponse.m"; sourceTree = ""; }; + 41FA8C2DB95796F6CF59F17F19CAAD64 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; + 41FD8EDC93A21FC67075630F3342A11B /* NSDate_Utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDate_Utils-prefix.pch"; sourceTree = ""; }; + 421E501380BC5F366098BA168E9DBC05 /* Specta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Specta.xcconfig; sourceTree = ""; }; + 42DA9858438CCBE80CA7613FF57AD932 /* FBSDKURLSessionTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLSessionTask.m; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSessionTask.m; sourceTree = ""; }; + 430DF6E91D2D7820ED73D1B75ECC6450 /* SPTGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTGlobalBeforeAfterEach.h; path = Specta/Specta/SPTGlobalBeforeAfterEach.h; sourceTree = ""; }; + 4311F7F04CE792BE32135B03B319D499 /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; + 43861F21D6F42EE64A99B330B3FADF21 /* FBSDKInstrumentManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInstrumentManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.m; sourceTree = ""; }; + 43DB2D37D43A11FC957C2A84F8962D67 /* FBSDKDeviceLoginCodeInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginCodeInfo.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h; sourceTree = ""; }; + 44DE8C3820B0FF557F061B087EAA901D /* FBSDKShareExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareExtension.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareExtension.h; sourceTree = ""; }; + 4527227EECBBCF381A6BECB09E513679 /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsUtility.h; sourceTree = ""; }; + 4569DCAA55DEB84EA228E5AB559EF457 /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; + 45A8F579929F3D699481AD14D5B5BB0B /* FBSDKVideoUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKVideoUploader.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h; sourceTree = ""; }; + 46C36B2D10AA9F8F6C8F327DAFBBF054 /* FBSDKFeatureManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKFeatureManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.m; sourceTree = ""; }; + 46E67BA60AE693C2F674A4186C8FC4A5 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + 46E7278CF50B1CF42F86A357ED26A424 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + 4768A9C6013B0D59F546A8E580314D07 /* EXPDoubleTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPDoubleTuple.m; path = Expecta/EXPDoubleTuple.m; sourceTree = ""; }; + 47FA866A06F3B382F4D8157612A3E285 /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; }; + 4819C9E03F803CF58331075A60F2AAE5 /* SPTExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExample.h; path = Specta/Specta/SPTExample.h; sourceTree = ""; }; + 48468FCCD7C9AAA18C34A90AE8C78A31 /* EXPMatchers+beCloseTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beCloseTo.m"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.m"; sourceTree = ""; }; + 48591606E58469749C184FD2DCCBBF63 /* FBSDKShareCameraEffectContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareCameraEffectContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m; sourceTree = ""; }; + 48A09337B25EC327A11E810AFED75E71 /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; + 4916F2A6813091348D601DD5F661895A /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; + 4995F1014F606C673716C0CE60010E47 /* EXPFloatTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPFloatTuple.m; path = Expecta/EXPFloatTuple.m; sourceTree = ""; }; + 49A329A23865766087180AEF35BC03E4 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + 4A23234F7910DD3182BC95D88893217B /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; + 4A5C0A251195644515FF578981B6BEC5 /* StrongestPasswordValidator-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "StrongestPasswordValidator-dummy.m"; sourceTree = ""; }; + 4A8A96DC56B6770C15B0496B9BFC8426 /* RZDBTransforms.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RZDBTransforms.m; path = RZDataBinding/RZDBTransforms.m; sourceTree = ""; }; + 4A9BB37CE3F8E4D764DBABEE64479E35 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + 4AE0AE80AAFE77A9F7BAB3DBCA09C8EA /* PNObject+PNObjectGETConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectGETConnection.m"; path = "PNObject/Classes/PNObject+PNObjectGETConnection.m"; sourceTree = ""; }; + 4B6A6BE27963BB397D2EC941D0FF2BBC /* StrongestPasswordValidator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = StrongestPasswordValidator.m; path = Pod/Classes/StrongestPasswordValidator.m; sourceTree = ""; }; + 4B881CA2353E43B6E26FAEA600D74E92 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; + 4BB0D3CEE222FC9108DF8C76EAB9B0F0 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; + 4C06566592049441679F11F9C792106C /* PNObject-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PNObject-dummy.m"; sourceTree = ""; }; + 4C10F5FEE351800D800D488147E5BD1D /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; + 4C23340C1222262A1BE81FE5B910E044 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; + 4CB27DED4610BBF2E5C7C16E48223CE9 /* PNObject+PNObjectGETConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectGETConnection.h"; path = "PNObject/Classes/PNObject+PNObjectGETConnection.h"; sourceTree = ""; }; + 4D058CBB37AC27CFE1BF1A7F24628D3E /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; + 4D5DCDE366C3CE2E2147DD595343C520 /* DJLocalizationSystem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DJLocalizationSystem.m; path = DJLocalization/DJLocalizationSystem.m; sourceTree = ""; }; + 4E86BF8910E5A9BA76B872A68D47CE77 /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; + 4E9B849534DDF94779E0029CCB05A1D7 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; + 4EE27B78FA2481DD4C41969817B6A276 /* DJLocalization-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DJLocalization-dummy.m"; sourceTree = ""; }; + 4F38D3767D3F85C949AFC458EE4541BE /* Pods-PNObject_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PNObject_Example-acknowledgements.markdown"; sourceTree = ""; }; + 4FEEB1FDC40BC7EB850FE55A82725FE9 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 50F97EA3D808A9F24B8811FD64CF36EB /* CodFis-Helper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CodFis-Helper.xcconfig"; sourceTree = ""; }; + 510F585C11307EFFA19A465A785D935A /* CodFis-Helper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CodFis-Helper-dummy.m"; sourceTree = ""; }; + 5151B14C82DF25D0779A942FA300BD77 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; + 518D90B042CAD631D7ECC4AE3D1C73B6 /* FBSDKCrashObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrashObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.m; sourceTree = ""; }; + 519F8BBCE03A24F08C071ACA2A32782F /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal_NoARC/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; + 521775EB399337CD348D3B112E93D803 /* NSObject+RZDataBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+RZDataBinding.h"; path = "RZDataBinding/NSObject+RZDataBinding.h"; sourceTree = ""; }; + 524B1AB1EA564E674BC11F5EC1DC5613 /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; + 52F36B4056B5E67790E3CDE1FCDCBDEA /* SpectaTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaTypes.h; path = Specta/Specta/SpectaTypes.h; sourceTree = ""; }; + 5354453D3F6BE5171EC3360413012962 /* FBSDKCameraEffectArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCameraEffectArguments.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h; sourceTree = ""; }; + 53841912EF195E68988ECF1B8296A94C /* EXPMatchers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatchers.h; path = Expecta/Matchers/EXPMatchers.h; sourceTree = ""; }; + 53A5ADB303EAC54924E438A296F00E36 /* XCTest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTest+Private.h"; path = "Specta/Specta/XCTest+Private.h"; sourceTree = ""; }; + 53ECC4CA77C8333DB19D21E647E6A122 /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; + 54B1689F9B83329018AC6C8F66F1D110 /* FBSDKAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLink.m; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLink.m; sourceTree = ""; }; + 54E8B6E57FD33BB7E1EF92F1DD97E7DD /* Pods-PNObject_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Tests.release.xcconfig"; sourceTree = ""; }; + 5534A90C631B2C9A6876ECEEE1AAB59D /* nv_ios_http_status.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = nv_ios_http_status.m; path = "nv-ios-http-status/nv_ios_http_status.m"; sourceTree = ""; }; + 5535547FE7767C12F23617F6FFD84609 /* Expecta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Expecta-prefix.pch"; sourceTree = ""; }; + 556BFF9FF8DEB2D7C3CD2ABB63202C70 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; + 5593729F7F5AF6A9F5D681EEEAFA7CF0 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; + 573642D4018A98522956A13E0847A476 /* FBSDKShareMessengerGenericTemplateElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerGenericTemplateElement.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h; sourceTree = ""; }; + 5757E806F82DC0D01FD261979E1F23E8 /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; + 57E10D43C2D0C2A13A85317EE5A4A226 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; + 588745FFE2819E59769E5EC37121C120 /* EXPMatchers+conformTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+conformTo.m"; path = "Expecta/Matchers/EXPMatchers+conformTo.m"; sourceTree = ""; }; + 588D820C376D20E8CD9260913BDF6AFC /* libnv-ios-http-status.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libnv-ios-http-status.a"; path = "libnv-ios-http-status.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 58E83BE268B916C7492AA798119A6302 /* FBSDKDeviceLoginCodeInfo+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKDeviceLoginCodeInfo+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginCodeInfo+Internal.h"; sourceTree = ""; }; + 59076AE8B0B37FC426B608BB9D05806A /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; + 593A978C64770DB6C35CF4DB5B1E8EDB /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsState.h; sourceTree = ""; }; + 59E99C4BE3197EC7614D33A918B2276B /* NSData+AESKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AESKey.m"; path = "NSDataAES/Classes/NSData+AESKey.m"; sourceTree = ""; }; + 5A78240FED00A790C106F16CD523120D /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; + 5A87481DF9D74397BD5090A3AD4D1D4C /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; + 5B31767BE817021B3A4BBED861534A34 /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; + 5B80396E6007EBA0A0AABE2A4C66B577 /* DJLocalization-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DJLocalization-prefix.pch"; sourceTree = ""; }; + 5B86D5CF72EADDEBD38F7252545B55DA /* EXPDoubleTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDoubleTuple.h; path = Expecta/EXPDoubleTuple.h; sourceTree = ""; }; + 5C55CCC47A268C115F97D56D219DD376 /* PNObject.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = PNObject.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 5CE44581508EAE6436379B373E097CF6 /* PNLocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNLocation.m; sourceTree = ""; }; + 5D1CBD3430BF0C366C3308AACB9C2758 /* NSObject+RZDataBinding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+RZDataBinding.m"; path = "RZDataBinding/NSObject+RZDataBinding.m"; sourceTree = ""; }; + 5DA10E3DB4798AC5863B7DA71517083A /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; + 5DCA818906066C7D4AF3D58F4B226424 /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; + 5DCBD61C4C21E19A1CB0764FA976223E /* libStrongestPasswordValidator.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libStrongestPasswordValidator.a; path = libStrongestPasswordValidator.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 5DE0FEFC3995E740EC1AE2611D0AEFB0 /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKLoginKit.a; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 5E66523DFCD4A69758D19F8FDE2C8B6D /* DJLocalizationSystem+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DJLocalizationSystem+Private.h"; path = "DJLocalization/DJLocalizationSystem+Private.h"; sourceTree = ""; }; + 5FD30BAE931271EA6C74D4B476940C1B /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; + 5FEFAEA5263FE8E3D6FB9A99F04B1FA8 /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; + 610F8746DECF126B1DBF4C5158552EB4 /* EXPMatchers+beIdenticalTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beIdenticalTo.m"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.m"; sourceTree = ""; }; + 611731CFC7178E30E450CCAF83607455 /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; + 61408B6AF822F067F9B34E42BCC34807 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; + 61EAEC22E0A83C8EB5D18C0C900E9EE7 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; + 622422F03D3CC3C8D6997AACE80866FD /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; + 630A3E96C8DD173D7A2DA8CF136578F6 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; + 63EABFD3FAEBACAB2FF4F0234E830C60 /* NSDataAES-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDataAES-prefix.pch"; sourceTree = ""; }; + 64B2F4E165CE2E764E205F13F320487B /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; + 65681CD9F13B5227C252F92592759BE5 /* FBSDKCameraEffectTextures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCameraEffectTextures.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h; sourceTree = ""; }; + 659E528421E332CA6024CC5F3808A845 /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; + 65BCBD7278F0E5DFDEB0998AF0FC7E09 /* Expecta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Expecta-dummy.m"; sourceTree = ""; }; + 6652F25E12104D6BAF1B968347A4BB7B /* FBSDKBasicUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBasicUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.m; sourceTree = ""; }; + 66F1B1CF3ADD75100BEFC6BA8C3C067E /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsStateManager.m; sourceTree = ""; }; + 672C713AC7988B36109550948C8F5DF9 /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; }; + 673B3CFAA2E0052F2A03EA4C7A923325 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; + 679E153A6099301D90429DBCCC92D8CF /* NSMutableData+AES.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableData+AES.m"; path = "NSDataAES/Classes/NSMutableData+AES.m"; sourceTree = ""; }; + 6803142BD4EF1A0ABFFAB74909305200 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; + 68C3081F7E615F74573B5B756025DE7C /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; }; + 69456DCF04406FF22F463AC92BF41880 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; + 698A8D327CDD33954411F4D87E536EF6 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; + 6A3A7E25BB3895B34344E6A1528B87BA /* EXPMatchers+raiseWithReason.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raiseWithReason.m"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.m"; sourceTree = ""; }; + 6AAB21F5E01ED53C63D93A401FF2C09F /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; + 6B123C23EFEA3CD8498334BF264118BD /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkUtility.h; sourceTree = ""; }; + 6BE02784A89255757744839A608AB1B3 /* Specta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Specta-prefix.pch"; sourceTree = ""; }; + 6C242F4E115A5C19B823F1EC4849F83F /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; + 6CAB0E80C58EF74906587549D87BFE2C /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; + 6CF37DE959D905214F8CD85474C82AF2 /* FBSDKHashtag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKHashtag.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m; sourceTree = ""; }; + 6D7159B1A9D4B285709620EF6DFB4B5B /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; + 6E3A9E5FD94D0AB8FB7C088EACCE8E36 /* FBSDKShareMediaContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMediaContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m; sourceTree = ""; }; + 6E61C2607807755DA4CDAC99A8E95F19 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; + 6E6A00B5646D94289C8F8B0FA0AF1DFD /* PNObject-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PNObject-prefix.pch"; sourceTree = ""; }; + 6E8D3DE24FB7A30370A4614D4A826DEF /* EXPMatchers+haveCountOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+haveCountOf.m"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.m"; sourceTree = ""; }; + 6EBCF19657BC2856CEDCFB486B1DDA66 /* ExpectaSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaSupport.m; path = Expecta/ExpectaSupport.m; sourceTree = ""; }; + 6ECD79783E5C1D0CD523F0B069E08BF0 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; + 6EE8675F77D1069CC1AEB30D63C6D49B /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; + 7058BFB61D3C842CDF3C069BED46FA74 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; + 7167230857A7EA27D9ECA97C8011D44A /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; + 71ACE61C49A838AB171E9761AD0CA030 /* FBSDKURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURL.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m; sourceTree = ""; }; + 7299A9BB9B87CEAB0A4A0932D8DE62AC /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; + 72AEC07F14948EC95ACFA1A77D02BB0F /* Pods-PNObject_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Example.debug.xcconfig"; sourceTree = ""; }; + 72CC98D51B662AAF1F8309EECDEFD5CF /* EXPMatchers+beInstanceOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInstanceOf.h"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.h"; sourceTree = ""; }; + 72D8654191BFD8AE73FA44549CF90463 /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; + 72E0C56AE7BE0541257FCCC4E1AA2CEE /* EXPMatchers+haveCountOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+haveCountOf.h"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.h"; sourceTree = ""; }; + 737491033C5995F397812BB31A49216C /* PEARFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PEARFileManager.h; path = "PEAR-FileManager-iOS/PEARFileManager.h"; sourceTree = ""; }; + 739F366C25646AF7A07E63ED3EEC5435 /* FBSDKAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkNavigation.m; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.m; sourceTree = ""; }; + 73A68A3BED2C8CD7AE035BACC0E815AF /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; + 75A789E504CF93C16DF08CE7BB92EF43 /* EXPMatchers+beNil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beNil.m"; path = "Expecta/Matchers/EXPMatchers+beNil.m"; sourceTree = ""; }; + 76E42277B6D53DFBC752958754B15C16 /* DDDKeychainWrapper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DDDKeychainWrapper.xcconfig; sourceTree = ""; }; + 7832DAC472266AF6637B8735A03F72B1 /* EXPMatchers+postNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+postNotification.h"; path = "Expecta/Matchers/EXPMatchers+postNotification.h"; sourceTree = ""; }; + 783A44E6F339078137532B39959709DA /* NSDataAESCipher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NSDataAESCipher.m; path = NSDataAES/Classes/NSDataAESCipher.m; sourceTree = ""; }; + 783F57714B50332B19C3657F77871C9D /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; + 788FEB3D256D99DD8D7A722471620824 /* FBSDKDeviceLoginCodeInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginCodeInfo.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m; sourceTree = ""; }; + 7938D545C7ECB8A31117F219C2AD44B9 /* PNAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNAddress.h; sourceTree = ""; }; + 79563E5CDB341577431723D647970A42 /* NSArray+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+PureLayout.h"; path = "PureLayout/PureLayout/NSArray+PureLayout.h"; sourceTree = ""; }; + 795DADA0B9B333CDB165507CB9204A32 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + 79677632BDAB1A6B971D056E251BA26D /* EXPBlockDefinedMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPBlockDefinedMatcher.m; path = Expecta/EXPBlockDefinedMatcher.m; sourceTree = ""; }; + 79B8173AF129A64DD2BB0A07215BA388 /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; + 79F4FFDC3C9C25E846E0965C26D5BF60 /* Specta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Specta-dummy.m"; sourceTree = ""; }; + 7A4D753B1B7EEFF3EED1BB67A1EF5296 /* FBSDKMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMeasurementEvent.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m; sourceTree = ""; }; + 7A9484FA4FD2C96B30336A4F70848912 /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKPaymentObserver.m; sourceTree = ""; }; + 7B353BD70DAE768DFDCA3BB4F7F074AF /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; + 7C050026AFEAE8FD7631245806A12A33 /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; + 7C4E2D8365F3F2E2C28F284F6B73D5B2 /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; + 7E78B80A06ADEF143D3B7C7FC7B9BE22 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; + 7F083C0EDB130FC352650DD469A74ECD /* FBSDKURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURL.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.h; sourceTree = ""; }; + 7F165E6B785D863D235B24394BEB9D9E /* FBSDKSharingValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingValidation.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h; sourceTree = ""; }; + 7F869DD0E59B2F6A6890DA89A6E2AA98 /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; + 7FA9677C3B2A905BE9B07145E6589A93 /* PEAR-FileManager-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "PEAR-FileManager-iOS.xcconfig"; sourceTree = ""; }; + 7FCFF08A29537D1442951D98A1998ADD /* Pods-PNObject_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PNObject_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 80FE97F3694EE6B6E4CB9155B58D0F33 /* FBSDKDeviceLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m; sourceTree = ""; }; + 82AAC4668D089236B6FFDE96DDCC2E44 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = ""; }; + 82B2ABB3ECFC314DAC6C05C5158EEB79 /* CodFisResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CodFisResponse.h; path = "CodFis-Helper/CodFisResponse.h"; sourceTree = ""; }; + 82BBB3C4E136144F1C24CCA37C518308 /* FBSDKURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLSession.m; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.m; sourceTree = ""; }; + 83EBCEF5C49E4721AE9226049493F2DE /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; }; + 83F6A9A4FE9928B45AB12BB991BD30F7 /* FBSDKDeviceRequestsHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceRequestsHelper.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.h; sourceTree = ""; }; + 8494E1D82DAB47206891A3EEE7846AAD /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; + 84A56B9A58AC73CA2C6AA15ACA5CC9EC /* Pods-PNObject_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PNObject_Tests-dummy.m"; sourceTree = ""; }; + 84C8E9ECCFFE9F07275DE7EE27EE9DC6 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; + 84EBD1E23F56EC2AD373B6810B8E1F9A /* PNObject+PNObjectConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectConnection.m"; path = "PNObject/Classes/PNObject+PNObjectConnection.m"; sourceTree = ""; }; + 850F4F6B1A6A790ABA8C379270F93B89 /* FBSDKCrashHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrashHandler.m; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKCrashHandler.m; sourceTree = ""; }; + 85128AF76199890A6DD56FE81089D883 /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKShareKit.a; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 85DCFFFE5A713386F9B2818E4EAC4FB1 /* PNObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectUtilities.h; path = PNObject/Classes/PNObjectUtilities.h; sourceTree = ""; }; + 877C92E2C50463D3AD052157A007D76B /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; + 87B5E8AEEAA01EE673F4B83048FDDDF8 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; + 88A50E4ABA1C58A7A1EA08CA71E37AD9 /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; + 88EBBAC652074BC6E4238476EA9A52C0 /* NSArray+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+PureLayout.m"; path = "PureLayout/PureLayout/NSArray+PureLayout.m"; sourceTree = ""; }; + 89A3D09C33C7AED2AF8040BD13026AB8 /* nv-ios-http-status.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "nv-ios-http-status.xcconfig"; sourceTree = ""; }; + 89D7AE658EB0D26CDDEED9E3D6EBECBB /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; + 8A3A1BEB7D92DEAF7C63D2F9E861F439 /* EXPMatchers+beLessThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThan.m"; path = "Expecta/Matchers/EXPMatchers+beLessThan.m"; sourceTree = ""; }; + 8A5BB4BB15846EC61C20595F1630B231 /* FBSDKImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKImageDownloader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.m; sourceTree = ""; }; + 8AC2BFA2C3D857613FD68721F9B59992 /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; + 8AFF4D5E6635B7D8CA8C1CE6570B2202 /* FBSDKAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererView_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; + 8B26CFEA32C0C3864F75B24684E93E86 /* FBSDKPlacesBluetoothScanner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPlacesBluetoothScanner.h; path = FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.h; sourceTree = ""; }; + 8B52636A3D94A5F1C5196822B73E9913 /* StrongestPasswordValidator-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StrongestPasswordValidator-prefix.pch"; sourceTree = ""; }; + 8BBE4D2C7BE7775552D9DF216E2B64DE /* FBSDKPlacesKitConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPlacesKitConstants.h; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.h; sourceTree = ""; }; + 8BF92E7C59C370D8E28903FD19C3BD37 /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; + 8C13E7FAFFB1C4224DBFAB748499034A /* Pods-PNObject_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNObject_Example-resources.sh"; sourceTree = ""; }; + 8D218B70DB72444681FDABA3687718AB /* FBSDKEventBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKEventBinding.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBinding.h; sourceTree = ""; }; + 8D2F9DA7AA2014E4797F0324FE8AE39E /* UIDevice-Utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIDevice-Utils-dummy.m"; sourceTree = ""; }; + 8D38597A20CD2A51D9A558B55DF648FB /* FBSDKWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebViewAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.h; sourceTree = ""; }; + 8D88B2B9429B2B0ABD4DAB8F20C57CEF /* NSData+AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AES.h"; path = "NSDataAES/Classes/NSData+AES.h"; sourceTree = ""; }; + 8E22F633219F8A012A3A54523797CB23 /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = ""; }; + 8EBA8BCF69E54AB7862F642D4112ABFC /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; + 8EC398B982FE89DC141E07985EC04F59 /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; + 8F90A263EA417FF6BB211C41A5A373B9 /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; + 8FA2E79DB7FC7C052E221BE4510AB923 /* FBSDKAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererController.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererController.h; sourceTree = ""; }; + 9088EF562963E72AF1C93B8E5BEC4E78 /* SPTCallSite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCallSite.m; path = Specta/Specta/SPTCallSite.m; sourceTree = ""; }; + 90ABC7B86067CC7A4DC6DEEDA52E20E0 /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKPaymentObserver.h; sourceTree = ""; }; + 90F08D533B1E2A9EFD5054531F39FE9D /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; + 914C303A3970633C95914B4C96D6378A /* Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Specta.h; path = Specta/Specta/Specta.h; sourceTree = ""; }; + 9197A92D99EF2622407DEDCDF386F1EE /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; + 922C489A72E620B06FD571F60C4B19C2 /* SPTTestSuite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTTestSuite.h; path = Specta/Specta/SPTTestSuite.h; sourceTree = ""; }; + 9282AF3EFCC357C5959675559F2884FD /* PNObjcPassword.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNObjcPassword.h; sourceTree = ""; }; + 92901B1B84165929BFBF3932DE2F1B25 /* SPTSharedExampleGroups.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSharedExampleGroups.h; path = Specta/Specta/SPTSharedExampleGroups.h; sourceTree = ""; }; + 92C0B0EE21BAFD10EEF5AE1BF4E0FAA8 /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; + 92F01ED63A0E2407F3ED4A04CD456543 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; + 92FD59F1DE5437839C6B6000ADC62686 /* AFJSONResponseSerializerWithData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = AFJSONResponseSerializerWithData.m; sourceTree = ""; }; + 931DBB5DF436CADD0AF0B212894199EF /* NSLayoutConstraint+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+PureLayout.m"; path = "PureLayout/PureLayout/NSLayoutConstraint+PureLayout.m"; sourceTree = ""; }; + 938AA1D23500E0430E124EEC643DBF48 /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; + 93C7E0526D406C88C9065ED2980240CA /* FBSDKViewHierarchy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewHierarchy.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKViewHierarchy.m; sourceTree = ""; }; + 94B52210332ED8A9A65CC8DC843C5FC2 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; + 94D34F4A0AD5F59B9D59B52D37E7AEF3 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; + 94F9C00B9755F7AAE306BDDFAFC097E0 /* FBSDKWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebViewAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKWebViewAppLinkResolver.m; sourceTree = ""; }; + 9588CC0CA3F3DDBBCC6A8C95B6D104DD /* PNObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObject.m; path = PNObject/Classes/PNObject.m; sourceTree = ""; }; + 95ABF045D43F3A4657BE496887C3FADE /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; + 9615C07E28B17A91E4308C7CFC07623A /* FBSDKAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkReturnToRefererController.m; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererController.m; sourceTree = ""; }; + 96A36A70395FE8D9715D9269F9768236 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; + 96F3F275F6896395A41279D61E69DB17 /* SPTTestSuite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTTestSuite.m; path = Specta/Specta/SPTTestSuite.m; sourceTree = ""; }; + 9770CC7D6AE8CC86B62BDC5746E6044B /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; }; + 97EB69F0CB7C2AB767DFE2440B644F9C /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; + 97ECC2D79326237AAFA4140AD0DA1EA7 /* FBSDKVideoUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKVideoUploader.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m; sourceTree = ""; }; + 97F53AE82F2774DB888015D933C1075D /* SpectaDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaDSL.m; path = Specta/Specta/SpectaDSL.m; sourceTree = ""; }; + 98857CB1030FB61A153843E317B27C29 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + 98D6A7ECEA775BE3727D8F8B9E06E0DB /* FBSDKLibAnalyzer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLibAnalyzer.m; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.m; sourceTree = ""; }; + 990C5AE5707D6408B4338C07C0D05021 /* NSDataAESCipher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NSDataAESCipher.h; path = NSDataAES/Classes/NSDataAESCipher.h; sourceTree = ""; }; + 990EB351C57C76AF70EEB3EFDE40DB7F /* PEAR-FileManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PEAR-FileManager-iOS-prefix.pch"; sourceTree = ""; }; + 992B9F95645A6A2E44CD26C7559EF820 /* UIStoryboard+DJLocalization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIStoryboard+DJLocalization.m"; path = "DJLocalization/UIStoryboard+DJLocalization.m"; sourceTree = ""; }; + 99459C38FD720FDADE24FBCEA85E5912 /* libDJLocalization.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDJLocalization.a; path = libDJLocalization.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 99B11789C43B5EDC49CD21BEF6B5887A /* FBSDKShareMessengerGenericTemplateContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerGenericTemplateContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m; sourceTree = ""; }; + 9A1D5E7FB99AB4119487B6405B2A2365 /* PNUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNUser.h; sourceTree = ""; }; + 9A960A67158114A27DAF3B16496FC3B5 /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; + 9B3985C8B76FCB8450D5C7343151A403 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; + 9C759395AAAFB5714F0A316BF81AE9FB /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; + 9C7E921815C3B02578A9DB2BBE641EF8 /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; + 9CA5BA42074600BC5858568D8D1C5F47 /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = ""; }; + 9CC06C1C1357A7B08713C7E439362F68 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; + 9CFB86C7F509E6095CE81A567505872D /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; + 9D21D6E5BB43920DE5D5DF9EF749CC71 /* PNObject+Protected.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+Protected.m"; path = "PNObject/Classes/PNObject+Protected.m"; sourceTree = ""; }; + 9D3986655DF78BE1627AD25669F7917F /* EXPMatchers+beGreaterThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThan.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.h"; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DEC7C6B47E639C82F7B3B5A8B3EF45E /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; - 9EC323AE5EC694C58AACA37EA56DD8E9 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; - 9EE33CDB6F4A474942660C4C90389AC2 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; - 9FCD223F9878F02F67107144335D6B1B /* NSLayoutConstraint+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+PureLayout.m"; path = "PureLayout/PureLayout/NSLayoutConstraint+PureLayout.m"; sourceTree = ""; }; - A053D1FBB84B51F2751692C804B1499C /* NSData+AESValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AESValue.h"; path = "NSDataAES/Classes/NSData+AESValue.h"; sourceTree = ""; }; - A09BCDD2BCA71DE80AC4A9533FD9D46A /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; - A12D650526A67F373774663DA15A225B /* DDDKeychainWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDDKeychainWrapper.h; path = Pod/Classes/DDDKeychainWrapper.h; sourceTree = ""; }; - A1539B870F9BF14B66F7A6970C48E40E /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; - A184A9239C81C7D3A176CFED80C1D523 /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; - A1A22D9D64368A6444DAADD596284647 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; - A24703334123300C7A5DC51D092F1AFE /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; - A24D3345D779CB0F2EED4746C0D36DAA /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerOpenGraphMusicTemplateContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m; sourceTree = ""; }; - A272C53D2709EFE1A8745B50DAC95A0A /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; }; - A298A8B4FA902909A38E1FF9DC786725 /* FBSDKURLSessionTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLSessionTask.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m; sourceTree = ""; }; - A2DA433F3522890248D9DAB1D97CB95E /* FBSDKShareMessengerGenericTemplateContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerGenericTemplateContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m; sourceTree = ""; }; - A37D3A7B2CDCECECC766D2C81855DDA3 /* FBSDKAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererController.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h; sourceTree = ""; }; - A3A5F12992B96E46DBF7C8E5654C2714 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - A3D264ED951D2178EDECFA6B4629A483 /* Pods-PNObject_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PNObject_Tests-acknowledgements.plist"; sourceTree = ""; }; - A410EBF4B429E2F42DFD00471B526EE9 /* FBSDKCameraEffectArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCameraEffectArguments.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h; sourceTree = ""; }; - A4419967EB400220B04C43140AB234A3 /* PNLocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNLocation.h; sourceTree = ""; }; - A576F08EE335C908C31799B2A12030B9 /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; - A5A00FC655B7C980C7419EC45F43B13F /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = ""; }; - A5B880FEB7120D903D08D5A4134FD8DF /* libExpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libExpecta.a; path = libExpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A5BEBF002E637D9105337027ED351A51 /* FBSDKSharingScheme.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingScheme.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h; sourceTree = ""; }; - A6FF1CA21BC7672D566D7A7BAB40B0B0 /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; - A7077EE27E4C3ACA0EFB1D30EC17EE5A /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; - A7436B149F7AA7DED9A0DDAB8606B22E /* FBSDKMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMeasurementEvent.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m; sourceTree = ""; }; - A767ACB26E90B6BF3F068BD8A7D7D248 /* PEAR-FileManager-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "PEAR-FileManager-iOS.xcconfig"; sourceTree = ""; }; - A7851BDC39CD46B37607CBE96FF362DE /* EXPMatchers+beSubclassOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSubclassOf.h"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.h"; sourceTree = ""; }; - A8055EB4C162D7C55AC079B761F72B90 /* SPTExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExample.h; path = Specta/Specta/SPTExample.h; sourceTree = ""; }; - A80F4CA4A07D4C646662DBBF273551CF /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; - A817FF01F498861F82275F33792A36D7 /* FBSDKDeviceLoginCodeInfo+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKDeviceLoginCodeInfo+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginCodeInfo+Internal.h"; sourceTree = ""; }; - A8991BDCA4688910D587A6E1C7B8F5B4 /* CodFisResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CodFisResponse.h; path = "CodFis-Helper/CodFisResponse.h"; sourceTree = ""; }; - A96A81448CFB04966D204959D007DCAF /* ExpectaSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaSupport.h; path = Expecta/ExpectaSupport.h; sourceTree = ""; }; - A9F29554C2768B6E8C2F71AC5CF284F8 /* FBSDKEventBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKEventBinding.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.h; sourceTree = ""; }; - AB921BAA0B87876CB598B74CC15965DF /* NSData+SHA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+SHA.h"; path = "NSDataAES/Classes/NSData+SHA.h"; sourceTree = ""; }; - ABCFC6DC888341D4E7EBA03DCA6B8994 /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; - AC56E678BF71344FCE4D2F0C449A4C6A /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; - AC6435A432236BB94BD1265AE00CA84D /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; - AC78466C6503F2605491E70FBA411AD0 /* EXPMatchers+beInTheRangeOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInTheRangeOf.h"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.h"; sourceTree = ""; }; - ACEE1C7FF14C3816B1FBAAA85CA1C308 /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; }; - AD056A75C0FACFFBEBD7CBD808EF17D1 /* DDDKeychainWrapper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DDDKeychainWrapper-prefix.pch"; sourceTree = ""; }; - AD2A3BEF3CD518D6BD82EC679DC60DCD /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; }; - AD3C80F5ABD635FCEEAF5AECDE2E7B76 /* SPTTestSuite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTTestSuite.h; path = Specta/Specta/SPTTestSuite.h; sourceTree = ""; }; - AF42BD4BDCEC3CEED17676D81C4F1A74 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; - AF49B9332E839F16E347B598440301F3 /* FBSDKShareMessengerActionButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerActionButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h; sourceTree = ""; }; - B01A82939912B5AC60C4A4B5BA9B42CE /* FBSDKURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURL.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m; sourceTree = ""; }; - B080D071620CA9EB75BE1155F0AA0BB1 /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; - B117169BAC759590BB98AE1623DAF7D9 /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; - B12593357CB41BECEABB9248D6FF3783 /* nv-ios-http-status.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "nv-ios-http-status.xcconfig"; sourceTree = ""; }; - B149B61A2E8A5CAF7ED3D8AF703D6A62 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; - B161B66C41A404C41870786CE63774C0 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = ""; }; - B199A3F2DA53DD054ACD84E1EFD468C6 /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = ""; }; - B1E53843C7E6B238722F8F0BBC442689 /* FBSDKAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolving.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolving.h; sourceTree = ""; }; - B2537B31361C13151CB98CE129F33891 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - B3019F0E31A4BEE27714C2F10B1F5FD0 /* NSArray+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+PureLayout.m"; path = "PureLayout/PureLayout/NSArray+PureLayout.m"; sourceTree = ""; }; - B367B8D6C41F0896DA749F72427B5705 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; - B37CD7F5B03C088CAE63670A3B0F4409 /* EXPMatchers+beNil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beNil.h"; path = "Expecta/Matchers/EXPMatchers+beNil.h"; sourceTree = ""; }; - B3C7B5EA07500465834C80ED7A2889B0 /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; - B3CB76C1DA8AACA2180A1159A901850A /* NSObject+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Expecta.h"; path = "Expecta/NSObject+Expecta.h"; sourceTree = ""; }; - B3F2045E1B5721C1ABEC5D62D592C4C2 /* PNInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNInstallation.h; sourceTree = ""; }; - B40C2594CD425E72DD20993A7B76A99C /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; }; - B7B7AF3EA14D9351A999E7AA062F3D5D /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = ""; }; - B7E06A4FD0148EDDBC7F0A342EEB7F2C /* NSString-Helper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSString-Helper-dummy.m"; sourceTree = ""; }; - B806E99B38970FADA34F5BA7380E4081 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; - B8BD0FA937E87F8F17C87B2A35B0A012 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; - B970FAC57B92374DEEBD5FBED0713E0D /* FBSDKShareMessengerMediaTemplateContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerMediaTemplateContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h; sourceTree = ""; }; - B974808D7E1DCE12500E0CCE413D3FE7 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; - B974DF4CA8DA1E3F909D94001247BFEF /* Specta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Specta.xcconfig; sourceTree = ""; }; - B98D238832E1EBB4A426476C4DB4D052 /* EXPMatcherHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcherHelpers.h; path = Expecta/Matchers/EXPMatcherHelpers.h; sourceTree = ""; }; - B9BB38B31600C2898B43E4370DC1DEBC /* HTTPStatusCodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPStatusCodes.h; path = "nv-ios-http-status/HTTPStatusCodes.h"; sourceTree = ""; }; - BA43540311CC563BB250930A6EA182E4 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; - BA60CE8853503D22C319CB0C52BA8139 /* UIDevice-Hardware.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIDevice-Hardware.m"; path = "Pod/Classes/UIDevice-Hardware.m"; sourceTree = ""; }; - BAFD4DC2FDE6045F22F8CBC783903256 /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; - BB09A21246937F41D7479DD7D904734E /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = ""; }; - BB0FF5C809A421C2EF24D4165E41AD19 /* PNObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObject.h; path = PNObject/Classes/PNObject.h; sourceTree = ""; }; - BB72CAC232E284BB20997A0E504D4C81 /* EXPMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcher.h; path = Expecta/EXPMatcher.h; sourceTree = ""; }; - BBCA6B341ACD2A12FE0C81B01DBDF79A /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = ""; }; - BC10EA8FFDF08A2DB1D765F329EECAD7 /* NSData+AESKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AESKey.h"; path = "NSDataAES/Classes/NSData+AESKey.h"; sourceTree = ""; }; - BC471364835E49717263F070CDE2FE65 /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; - BC80862D881A63BCA79DE6DDC918B107 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - BD361E1A52D3B43FC0C15423FFE233E6 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; - BDD7FC61CF4EFCF8C1A4126BCA4F58EB /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; - BDFBAB4D2E42A0039BA1993C7797D48D /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; - BF557EE92E2C1880BDEE22CE07CE5430 /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; - BFB183FB9A8C21E8A1B2C2BE3514728A /* EXPMatchers+beCloseTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beCloseTo.h"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.h"; sourceTree = ""; }; - BFCB440772958796BDAC1EE3004D4871 /* FBSDKPlacesKitConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPlacesKitConstants.m; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.m; sourceTree = ""; }; - C06A8ED05937C9777C59B5352AB4BF5D /* AFHTTPRequestSerializer+OAuth2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFHTTPRequestSerializer+OAuth2.m"; sourceTree = ""; }; - C0AAD202D7069DC71C7B9404A20324B5 /* PNObject+PNObjectPOSTConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectPOSTConnection.m"; path = "PNObject/Classes/PNObject+PNObjectPOSTConnection.m"; sourceTree = ""; }; - C0B91BF7F5022663D654DC2E26B78A76 /* nv_ios_http_status.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = nv_ios_http_status.m; path = "nv-ios-http-status/nv_ios_http_status.m"; sourceTree = ""; }; - C0F2D5FAF356B29232D4981538F0FC2E /* EXPMatchers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatchers.h; path = Expecta/Matchers/EXPMatchers.h; sourceTree = ""; }; - C11A5474BDDD996985739D792062ECF7 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; - C17F6454E13C9663C48BEB635BE2105B /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - C2EC2E0E8FA24217C1F6578088D45AAB /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = ""; }; - C3275DA10A054A3F7921D8193E25E8AA /* AFJSONResponseSerializerWithData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AFJSONResponseSerializerWithData.h; sourceTree = ""; }; - C38E84A00A266EE60FD62DAE91CFEA16 /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = ""; }; - C40C9C5CF2D2F44EE522F692722FB7C1 /* UIStoryboard+DJLocalization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIStoryboard+DJLocalization.m"; path = "DJLocalization/UIStoryboard+DJLocalization.m"; sourceTree = ""; }; - C40F1DE62C95574FE8D8AF679382D0E4 /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; - C450FB8101F80213A8D64A70189DF04F /* DJLocalization-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DJLocalization-prefix.pch"; sourceTree = ""; }; - C45B50F5A6843CCD4B173EE8F9995171 /* CodFis-Helper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CodFis-Helper-prefix.pch"; sourceTree = ""; }; - C58561CD2B4083F279873492FE620845 /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; }; - C5BFAB2A8ABAE3F37496DF1732892309 /* EXPMatchers+raiseWithReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raiseWithReason.h"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.h"; sourceTree = ""; }; - C61B837CB3195F2C9943B1AED1F9F19F /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; - C6B90089F681632D8939C7088B7F7DA1 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; - C7260A05BAD8E247C27CF35AED4D6DAD /* EXPMatchers+contain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+contain.h"; path = "Expecta/Matchers/EXPMatchers+contain.h"; sourceTree = ""; }; - C76AE4D97024E30E41427574560B724C /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; - C78134E0CA15EF551455C4494784DAE3 /* StrongestPasswordValidator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StrongestPasswordValidator.h; path = Pod/Classes/StrongestPasswordValidator.h; sourceTree = ""; }; - C798E2F6F90FD31015E48545E9348A6F /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKShareKit.a; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - C80CE7F8202FAE0212600334F73C626E /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; - C945FD29E5F4FF45963B8ED5BD5E7419 /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; - C9E743A8CAC5904C22B2693CB537CDAB /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; - C9FDBF97257B999F0518CC9DAAE4D1ED /* NSValue+Expecta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Expecta.m"; path = "Expecta/NSValue+Expecta.m"; sourceTree = ""; }; - CA2B01A6741A994FF113A8A4BFE17B6A /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; - CA5B655BF6FF4897556A74A8A3A66AD2 /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; - CAAD426738CEEC7606CD1FE2F5D2AB46 /* PNObject+PNObjectGETConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectGETConnection.m"; path = "PNObject/Classes/PNObject+PNObjectGETConnection.m"; sourceTree = ""; }; - CB1585C12AF2712FC8A4E7B8B8D863E9 /* PNObjectConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectConfig.m; path = PNObject/Classes/PNObjectConfig.m; sourceTree = ""; }; - CB203005E7E1F9F462978DC12B1A7C62 /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; }; - CB220B5F21AADEB4889864CE03657F06 /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = ""; }; - CB33176DEE595631B0B0425686DEE194 /* CodFis-Helper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CodFis-Helper.xcconfig"; sourceTree = ""; }; - CC1167BE518A66E03A59202D74A9B567 /* FBSDKCodelessIndexer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessIndexer.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.m; sourceTree = ""; }; - CC878F74315147F19195A5415CB303A3 /* Specta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Specta-dummy.m"; sourceTree = ""; }; - CD7C42343EA4E9375F9C8787A29D207C /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; - CDA9BAB3196387E0314C46866E835E46 /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; - CDB23D4DE44B47E81839DCFC38357489 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; - CDF23647D254D7A667873235587D1E57 /* FBSDKShareExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareExtension.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareExtension.h; sourceTree = ""; }; - CE1F0C213F4FF21C08A1F9C246A7E24E /* EXPMatchers+beGreaterThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m"; sourceTree = ""; }; - CE2C28DFD1E5A9412217647B521F0162 /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; - CEEFEE4D2B5FAD5B19D3D6A483A064CA /* RZDBCoalesce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RZDBCoalesce.m; path = RZDataBinding/RZDBCoalesce.m; sourceTree = ""; }; - CF160737F9DEDAD37F5CA70D9780F04D /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; - CF22A7A862461ADDBF6314E4C63C3553 /* FBSDKURLSessionTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLSessionTask.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h; sourceTree = ""; }; - CF6278548ACA09ED08E53E362AC2D377 /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; - CFF3D875D80D2EE1229786CFF989100C /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; - D017C92EC445A44A8CB4710C103CFCE4 /* RZDataBinding.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RZDataBinding.xcconfig; sourceTree = ""; }; - D05D92A891D88478B23ACA10C24B87F1 /* PNObject+PNObjectDELETEConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectDELETEConnection.h"; path = "PNObject/Classes/PNObject+PNObjectDELETEConnection.h"; sourceTree = ""; }; - D06DA231BBDC01C157B1B7B728A9541B /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; - D0AE81C354021542B04BEE0FB2A3E61D /* SpectaDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaDSL.h; path = Specta/Specta/SpectaDSL.h; sourceTree = ""; }; - D0CE9FB255D704C4696E2CE178E9359E /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; - D147AE625F780B9CAA047297593B0642 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; - D21B76D37523D3AF4207427341438F84 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; - D2A21159AA1DCA73B83A40AB029D6D60 /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/Internal/BFMeasurementEvent_Internal.h; sourceTree = ""; }; - D2D354169C2DEF1A66D64D0F5CBA7504 /* CodFis+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CodFis+Helper.m"; path = "CodFis-Helper/CodFis+Helper.m"; sourceTree = ""; }; - D391B61CBB04FE8ABA143F2DB2A9DEE2 /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; - D455F52AB6A4518B496C8B5D131DC935 /* NSDataAES-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDataAES-prefix.pch"; sourceTree = ""; }; - D4A3F38EC44363F5BC4284848207155F /* FBSDKPlacesKitConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPlacesKitConstants.h; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.h; sourceTree = ""; }; - D4BB00D2BD5D097C64D11D9F9E5C72A2 /* EXPMatchers+postNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+postNotification.m"; path = "Expecta/Matchers/EXPMatchers+postNotification.m"; sourceTree = ""; }; - D4F81C19AE74129BA00955CCAD756210 /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; }; - D521EF5B9E56E155A5DA9D5595F7C881 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - D5382BA900C7270128420C06132D3F9A /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; - D5ED7C1FBE256501937B39E681452F3A /* PNObject.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PNObject.xcconfig; sourceTree = ""; }; - D607292FA0EDC05A47EE34EFD7F7DB8A /* ExpectaSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaSupport.m; path = Expecta/ExpectaSupport.m; sourceTree = ""; }; - D60A5DE7BC8975EC909F89F396E34B02 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; - D697A55184BFCA58EA3426B82026F57D /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - D6C11975903993C33B758858CD139334 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; - D6C1CBE929F193DA29B496D6B47D7C9F /* RZDBMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBMacros.h; path = RZDataBinding/RZDBMacros.h; sourceTree = ""; }; - D6FF72EAB049F36694ED80195CEFB913 /* PNInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNInstallation.m; sourceTree = ""; }; - D746073D457DD21C98FFE96414952A89 /* PNObjectModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectModel.h; path = PNObject/Classes/PNObjectModel.h; sourceTree = ""; }; - D79DDCD261B4B3043A499A1F3C17682E /* Pods-PNObject_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Example.debug.xcconfig"; sourceTree = ""; }; - D7E298E48D1C63DF1B44F7E6764B9A7B /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; - D901E6042A710EE92A50F390A2385645 /* NSValue+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+Expecta.h"; path = "Expecta/NSValue+Expecta.h"; sourceTree = ""; }; - D96068655E217940EC090E765BB43E4A /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; - DA24B1B4D51C15879627A5F0E9DF3FE1 /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; - DA33A6F563BC549ABBF2614E294A7A88 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; - DA77070E05A05346F4AE2A2DC5D66D34 /* FBSDKWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebViewAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h; sourceTree = ""; }; - DA932ECCF24384784CD1237378076B34 /* EXPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDefines.h; path = Expecta/EXPDefines.h; sourceTree = ""; }; - DB2EF850EBCE09CACDAC3FC08C5A6316 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; - DB55FF18FF578DF41A247ABD8C167992 /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; - DBA00107A9AD6F2C91F50776BE1E0A98 /* NSLayoutConstraint+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+PureLayout.h"; path = "PureLayout/PureLayout/NSLayoutConstraint+PureLayout.h"; sourceTree = ""; }; - DBA8BBCF0CA2AC1812646FB22835B12E /* DJLocalizableString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DJLocalizableString.m; path = DJLocalization/DJLocalizableString.m; sourceTree = ""; }; - DC02728687D2F81F35A254E52F69A7D7 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libBolts.a; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; - DC190C2584B64F33B43E412E2B921F48 /* ALView+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ALView+PureLayout.h"; path = "PureLayout/PureLayout/ALView+PureLayout.h"; sourceTree = ""; }; - DC6D511D07823A0A99B3C177D48AEDFD /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; - DCF1A2B764698D3914EDBF3F326115A9 /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; - DD44F8C72BB19AAF2BDFBA1D2DBAFEDD /* EXPFloatTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPFloatTuple.m; path = Expecta/EXPFloatTuple.m; sourceTree = ""; }; - DE12B7C44CCA2977928D828FA0F06149 /* UIImage+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+AFNetworking.h"; path = "UIKit+AFNetworking/UIImage+AFNetworking.h"; sourceTree = ""; }; - DEE4A5FC5FA4E4D6868D5FD9D957F62C /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; - DF255B58A329E38BC3725F6C1718D34A /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - DFB20B84C2F6319B37C11B510F2A75E4 /* FBSDKAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLink_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLink_Internal.h; sourceTree = ""; }; - DFE96E0182677627BF9004910D997204 /* EXPMatchers+beKindOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beKindOf.h"; path = "Expecta/Matchers/EXPMatchers+beKindOf.h"; sourceTree = ""; }; - E075F16267D1B23E02CE22AA226F390A /* NSMutableData+AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableData+AES.h"; path = "NSDataAES/Classes/NSMutableData+AES.h"; sourceTree = ""; }; - E08596D6F1F254C28C3372465E1EE717 /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; - E0882FA044EA8CB080A8FAB44BA9A906 /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; - E09816165A3429E6898C6570A4C62778 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; - E12197EC5BF60887660A76FD829E8A0E /* EXPMatchers+raiseWithReason.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raiseWithReason.m"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.m"; sourceTree = ""; }; - E163C0A847A3C5C16669D7DE4A88B426 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; - E1DB759BDF514710BD51B507072523B1 /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; - E26534A32946BB6D27643A091DB4DB9A /* Pods-PNObject_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Tests.release.xcconfig"; sourceTree = ""; }; - E281A6482328DF905399F975E90A072F /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; - E2C18F1DE394BBAA158B7DF75CCD1F50 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; - E32B065D58A2B4AFE2422A48B8F7A541 /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; - E32E2DD7DF8121A3D4E45ECDC0D14A16 /* FBSDKAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkTarget.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.h; sourceTree = ""; }; - E33B851B183ADE1FA936A2A9C738CB43 /* XCTestCase+Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTestCase+Specta.h"; path = "Specta/Specta/XCTestCase+Specta.h"; sourceTree = ""; }; - E3E2E0E25740B4D5F7A040F5AFCB77F5 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; - E4A2FE75AF2CA28250A88813CAC29FA8 /* NSArray+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+PureLayout.h"; path = "PureLayout/PureLayout/NSArray+PureLayout.h"; sourceTree = ""; }; - E4CC676077B9CDC8DD32E5EAA44E7D9D /* PEAR-FileManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PEAR-FileManager-iOS-dummy.m"; sourceTree = ""; }; - E4D4892E09F91736B6CA8BF5AA1373BD /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - E56BF6A2B12AD3BCA56AF7D85E9789EC /* FBSDKCodelessMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h; sourceTree = ""; }; - E5D8891444EE9ACC6E67DA9AB862D8A8 /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; - E657144EF74FD9C48F4980B330EFBA36 /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKLoginKit.a; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E7290D84AFA95237D882664949AF43FD /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; }; - E7323524C148345091271F799EE35D9B /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; - E808DBA591E14616D3B577B365B17005 /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = ""; }; - E881A81652A1D0BAE466BDF1E38A7A9E /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; - E8F0AEC6BE33E5FD1E96549A225F2770 /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; - E96FEB04D1490C013EC27F7E6CE71C84 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - E9DBFA6CE29F0364CCDAD26D5C469E45 /* EXPMatchers+haveCountOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+haveCountOf.m"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.m"; sourceTree = ""; }; - E9F6093BA73FBC577856D2EDF5933F42 /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; - EA66EA7AE41598503A94F8B8CEA9B07A /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; - EA7F85994C03848985B7F6D6989CC8D0 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; - EA8278B5A64341179AC2522EC1D10CF0 /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = ""; }; - EB16386971F06C4720EB7A01324F0A75 /* PNObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectConstants.h; path = PNObject/Classes/PNObjectConstants.h; sourceTree = ""; }; - EB1CD55C50641A9849B06F1F765F5006 /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = ""; }; - EBDAF77420FDB4828B6BF33817FF1FF3 /* PNObject+Protected.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+Protected.h"; path = "PNObject/Classes/PNObject+Protected.h"; sourceTree = ""; }; - EC8DA29AE18A76F41A348FF6AB8B379C /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; - EC9E958B12B7011BF73EFEEBD1E109EA /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; - ECCA59DF3BE08873773EB45AFCF309C2 /* FBSDKImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKImageDownloader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.m; sourceTree = ""; }; - EEAA97C42918442A9D343A8584C06BA3 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; - EEB4228586192CAD4EB36147216A3AFE /* EXPMatchers+beLessThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThan.m"; path = "Expecta/Matchers/EXPMatchers+beLessThan.m"; sourceTree = ""; }; - EED5B2423D952EC9DFCB17159FA6466E /* SPTCompiledExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCompiledExample.h; path = Specta/Specta/SPTCompiledExample.h; sourceTree = ""; }; - EF288E956A08FF3866590042EBB85D37 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; - EFAEDF1263682F6600319D221F5B319D /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; - F01B1A800F49F2274FC123B2C8BC8A5A /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; - F0385C6D2F93A7C8AFB0CFA0DD973B28 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; - F0B3D551C9DBDF26AFDD994EE7DCBD4C /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; - F1696D2F0700A48B91BA9A4ABAD47EFF /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = ""; }; - F1A06D1F7E18B0171C5B4A4E8DFCBADA /* PNAddress.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNAddress.m; sourceTree = ""; }; - F1E3D7C19D043CE985CD26AEBA1634B9 /* UIDevice-Utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIDevice-Utils-dummy.m"; sourceTree = ""; }; - F22817755999F07C72B9926B2951E5E5 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; - F23E6A7CCC11A73F926A17E7BFE16A23 /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; - F27AD68924104919A000C0F1AF24933A /* NSString+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Helper.m"; path = "NSString-Helper/NSString+Helper.m"; sourceTree = ""; }; - F2AEBCE4368B77C3D1009CE796BC42FF /* FBSDKCodelessIndexer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessIndexer.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h; sourceTree = ""; }; - F2BB3A37FE79EFDC3B9E6F1C8D1BF15C /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = ""; }; - F35F29B146D842F82150642B51EB152F /* FBSDKCameraEffectArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCameraEffectArguments.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m; sourceTree = ""; }; - F3D0DCE4A54E49B927ADFE291C35DB38 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; - F468B98197451903A0E37C764D850E6E /* PNObjectModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectModel.m; path = PNObject/Classes/PNObjectModel.m; sourceTree = ""; }; - F4729C3F5071C54DEFEB4216B8B2323A /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; - F47A51EBDF2942C2BF0F2E89844ED688 /* RZDBTransforms.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RZDBTransforms.m; path = RZDataBinding/RZDBTransforms.m; sourceTree = ""; }; - F4F14083CD0AE5C686561B2C6BE053C1 /* NSDataAES-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDataAES-dummy.m"; sourceTree = ""; }; - F50EB83BD39BE11D2533696E6F5124E0 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; - F5129552D4EDABC83ACAA3F97E631ED0 /* RZDBTransforms.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBTransforms.h; path = RZDataBinding/RZDBTransforms.h; sourceTree = ""; }; - F52ECE2FEB93B33312F1221D70F4F012 /* libPNObject.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPNObject.a; path = libPNObject.a; sourceTree = BUILT_PRODUCTS_DIR; }; - F5917B42BB69D38F16B5DA236BD1F801 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; - F5BD20344220E2BA0C293EBDEEC72B0B /* PNObject.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = PNObject.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - F5EB804C14B0975944019BF7E7B3FBCD /* SPTExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExample.m; path = Specta/Specta/SPTExample.m; sourceTree = ""; }; - F5F68821DF01DEDDBFADBA129FE921C1 /* Specta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Specta-prefix.pch"; sourceTree = ""; }; - F60DB3479D89EE24B07B63FC5BAA6556 /* FBSDKAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererView_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; - F743CDE85BB80D3D263C45B889C27EE2 /* FBSDKViewHierarchy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewHierarchy.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h; sourceTree = ""; }; - F7C5E6D8755BCF17AFD627A8D4C4CA67 /* ResponseConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ResponseConstants.h; path = "CodFis-Helper/ResponseConstants.h"; sourceTree = ""; }; - F82B8B52280513D450B72898E138C793 /* nv-ios-http-status-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nv-ios-http-status-dummy.m"; sourceTree = ""; }; - F888697534D7DD7964A73F8BB7FD9CE7 /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; - F88E96559DC569AFF4344537FB9D25C5 /* NSObject+RZDataBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+RZDataBinding.h"; path = "RZDataBinding/NSObject+RZDataBinding.h"; sourceTree = ""; }; - F8AFC580CDE696A0C6A0219AAC766B78 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; - F9068CD92F1AE7C3DD8B51A8D42A35FA /* EXPMatchers+beTruthy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beTruthy.m"; path = "Expecta/Matchers/EXPMatchers+beTruthy.m"; sourceTree = ""; }; - F91BF8019854B2B40EE1F12EEDB6FCF1 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; - F923853AC5FA5E6F9FC0F5013D8AB985 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; - F955FB53B26A9C088F7041127BEAE077 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; - F961523E35F56B47186A1BEB60D9F938 /* ExpectaObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaObject.m; path = Expecta/ExpectaObject.m; sourceTree = ""; }; - F98533D8D30B29D9AD2A935E5AB2991B /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; - F98A877909D0481D378DB77DDCD1E0E3 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; - F9CDF1697BBB5E64C4ED478A91B0A61E /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; - F9E40DA91ACB8A442FC9A18D88852045 /* EXPMatchers+beginWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beginWith.h"; path = "Expecta/Matchers/EXPMatchers+beginWith.h"; sourceTree = ""; }; - F9FD130E49D5F3EDC423BC59ABCE061B /* Pods-PNObject_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Example.release.xcconfig"; sourceTree = ""; }; - FA5E118A013F6143F08306D223E22DB8 /* NSString-Helper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "NSString-Helper.xcconfig"; sourceTree = ""; }; - FAD5E72E0081CBB972F6F9223A9CD595 /* SpectaUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaUtility.m; path = Specta/Specta/SpectaUtility.m; sourceTree = ""; }; - FAD7F6532EF00AC46B5CBCFE444BD15B /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - FB00299734B1BA388AAA5E113E34F44F /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; - FB090B9C628CEEFBDDAC406092F8D085 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; - FB5F8762D5C07C9D2811801D81762DE6 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; - FB8CD6DAB348DAFD9E9DBCEEEA92ED15 /* FBSDKAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkReturnToRefererView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m; sourceTree = ""; }; - FBC58D5C116C30C2C9FA4E8FA969CC89 /* PEARFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PEARFileManager.h; path = "PEAR-FileManager-iOS/PEARFileManager.h"; sourceTree = ""; }; - FC63360F75920E73E70A8F8A94B37976 /* PNLocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNLocation.m; sourceTree = ""; }; - FCC4E649557ED5D3291F71B4D89FAB43 /* EXPMatchers+beCloseTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beCloseTo.m"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.m"; sourceTree = ""; }; - FCE4A8027CEC46F6E7577042A32DF2CF /* FBSDKDeviceLoginManagerResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginManagerResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h; sourceTree = ""; }; - FD54212F3F49662E7496C1424579F714 /* FBSDKAccessTokenExpirer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenExpirer.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m; sourceTree = ""; }; - FE44E0CB7E59F22EC909AA1CE0B0833A /* PNAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNAddress.h; sourceTree = ""; }; - FE722832EC472C5E16F1AC80C1BA9576 /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; - FEC557752B89810471682B9DA154733B /* FBSDKViewHierarchy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewHierarchy.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m; sourceTree = ""; }; - FF0061924D0DC116A613AE4C9DAE01F9 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; - FF312BFA0B2DE97E3C73A236E2338259 /* Pods-PNObject_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Tests.debug.xcconfig"; sourceTree = ""; }; - FF4CC77D3D95971AC00DCFC797DD324A /* EXPMatchers+beInTheRangeOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInTheRangeOf.m"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.m"; sourceTree = ""; }; - FFC1B831ADD9CD9C5B5F180E0C6F4D8A /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; - FFD15CE16D879EDCC9BB4CEE6E57E5A7 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; - FFE608C9A0239AD81100BCF0613F55A9 /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; + 9FBD9308718C58F1D27DC93982C5B21C /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; + A0A3B91BACAEA694F02F88A2DAFBF39C /* libPods-PNObject_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-PNObject_Tests.a"; path = "libPods-PNObject_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + A0B24FAFA4AB3C187C7B848EBE928E7D /* EXPMatchers+beKindOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beKindOf.h"; path = "Expecta/Matchers/EXPMatchers+beKindOf.h"; sourceTree = ""; }; + A0E0873AD9B4907C5E21DA0088EA20BD /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; + A19F676E97C0A8A0AE86981F942EAD53 /* FBSDKMetadataIndexer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMetadataIndexer.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.h; sourceTree = ""; }; + A219D28BE411B73330C49B119CCDF7BE /* PNObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObject.h; path = PNObject/Classes/PNObject.h; sourceTree = ""; }; + A34168060E8DDF8DC417EFF6F78A5150 /* PNObjectModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectModel.h; path = PNObject/Classes/PNObjectModel.h; sourceTree = ""; }; + A35C8DE88425A94086651E757D7787D1 /* FBSDKFeatureManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKFeatureManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKFeatureManager.h; sourceTree = ""; }; + A3E867E287FBBD998314D306E8C87A79 /* NSData+AES.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AES.m"; path = "NSDataAES/Classes/NSData+AES.m"; sourceTree = ""; }; + A4FA15D44DF6BAC7550EDEED10862AA3 /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libAFNetworking.a; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; + A52D64A2E670AE0588E8FFD016F58249 /* FBSDKRestrictiveDataFilterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKRestrictiveDataFilterManager.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.h; sourceTree = ""; }; + A71DD561B20BE8BB3DED6AAA17262AAE /* EXPMatchers+raiseWithReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raiseWithReason.h"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.h"; sourceTree = ""; }; + A8A1C1F52064517FDD0E2386A7EE14C1 /* VatNumber+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "VatNumber+Helper.h"; path = "CodFis-Helper/VatNumber+Helper.h"; sourceTree = ""; }; + A984BA92A8B42652828B6B3C7C434041 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsStateManager.h; sourceTree = ""; }; + A99D173CEE3D2C4617FEA128C402C683 /* FBSDKCodelessPathComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessPathComponent.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessPathComponent.m; sourceTree = ""; }; + A9C28818762C79A21B967D446FC1D225 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; + AAE84A1116CF2ECC29DC49C5E14F04AB /* DDDKeychainWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDDKeychainWrapper.h; path = Pod/Classes/DDDKeychainWrapper.h; sourceTree = ""; }; + AAF26D14FB30C4B340ADCFD906A44D7D /* FBSDKAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkTarget.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkTarget.h; sourceTree = ""; }; + ABD73E7380E8484CE384D185D857A403 /* EXPMatchers+beInTheRangeOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInTheRangeOf.h"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.h"; sourceTree = ""; }; + ABE0DE406F96E79B4E03E81BCA8EEDE9 /* libCodFis-Helper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCodFis-Helper.a"; path = "libCodFis-Helper.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + AC54AD6C42A54F6E1D99283F08DB5DA1 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; + AC750148FC0A844C66EC2128DE0BDD06 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; + AD286DD1475A568027EA5B8E9FEF15B3 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; + AEA471E330EF95488648136F59371857 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; + AEB4BF5F49550019E6EF58DFC56F5C96 /* NSString-Helper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSString-Helper-dummy.m"; sourceTree = ""; }; + AECD1C016D32B4D781530DBF50320BBF /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; + AEFBF6DDB67E4CBE8A585D1D375D6C52 /* SPTSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSpec.m; path = Specta/Specta/SPTSpec.m; sourceTree = ""; }; + AF143A03FBEFC09F8F85C478431DD1D0 /* UIDevice-Utils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "UIDevice-Utils.xcconfig"; sourceTree = ""; }; + AF6F462E18F5FFA0C83FBA0907BFF831 /* NSData+SHA.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+SHA.m"; path = "NSDataAES/Classes/NSData+SHA.m"; sourceTree = ""; }; + AF9DFEC95804545E472480D96442635C /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; + B02666B8373DF794BE71849357488408 /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; + B07DC2326FABF8847AA40B7EA1432684 /* NSString+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Helper.h"; path = "NSString-Helper/NSString+Helper.h"; sourceTree = ""; }; + B0B24426C939A6FD4545BD5BE650AF6F /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; + B16457B72C61791C11563E11D2F64610 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; + B19BC3A3AF61B2C472A4FD2301955D73 /* FBSDKHybridAppEventsScriptMessageHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKHybridAppEventsScriptMessageHandler.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKHybridAppEventsScriptMessageHandler.h; sourceTree = ""; }; + B1F12BFB830AAC4D9D8361F02670E091 /* SpectaUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaUtility.m; path = Specta/Specta/SpectaUtility.m; sourceTree = ""; }; + B2603749B74A4AD3CDEEFBBD7C24711F /* nv-ios-http-status-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nv-ios-http-status-prefix.pch"; sourceTree = ""; }; + B2FEA39F4A656674D3E7265B5E46BE64 /* SPTCallSite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCallSite.h; path = Specta/Specta/SPTCallSite.h; sourceTree = ""; }; + B384B8BE04E34F219B406C3966C64FCD /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; + B408B7DD1DD084A2865E1DC1F960C502 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; + B419F3EDE88DB7099BE821352CFBB7E1 /* libFBSDKPlacesKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKPlacesKit.a; path = libFBSDKPlacesKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B498833DF65EF5F6A923FBC2A4A80B7C /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; }; + B52D6C5D93A51A9052E511E5028E7E1B /* FBSDKAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLink.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLink.h; sourceTree = ""; }; + B5601C81D2457CB87AEE9A69EC63DADE /* FBSDKErrorReport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorReport.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.m; sourceTree = ""; }; + B59E36152C586B9F2C6B47CB2B3B2BFC /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; }; + B63474C8B0EF942C24E792B6EF995B9C /* ResponseConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ResponseConstants.h; path = "CodFis-Helper/ResponseConstants.h"; sourceTree = ""; }; + B696B371B113A88AE6CD91AE08725B69 /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; + B6E44E09D6054D05E608F289A1B98BBA /* FBSDKShareMessengerActionButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerActionButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h; sourceTree = ""; }; + B6F29A81363A213ECAD0155BD1A8E7FC /* FBSDKCodelessIndexer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessIndexer.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessIndexer.m; sourceTree = ""; }; + B7EC042BCFC92EBCE5D22A947F8F3D13 /* EXPMatchers+conformTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+conformTo.h"; path = "Expecta/Matchers/EXPMatchers+conformTo.h"; sourceTree = ""; }; + B88451A97815730A93036C9735C0AB4E /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + B8A1C2D8D7C58D7AAC91E706B636EBEA /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; + B8DB5620089FEC987D9A9BAE45377650 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; + B98AB195D3D41840EE0E7ED7C01D8370 /* PureLayoutDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PureLayoutDefines.h; path = PureLayout/PureLayout/PureLayoutDefines.h; sourceTree = ""; }; + B9ACA258E3F31D44676A7385ED9D8985 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerOpenGraphMusicTemplateContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h; sourceTree = ""; }; + BA407A678EACC9F2DEB0185DE6D7F95E /* RZDataBinding-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RZDataBinding-dummy.m"; sourceTree = ""; }; + BA5341FAD301A6CACF31C220E5AED03D /* RZDBTransforms.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBTransforms.h; path = RZDataBinding/RZDBTransforms.h; sourceTree = ""; }; + BA9E2A967B93E2CF530B3E6A5EFEF0C5 /* CodFis-Helper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CodFis-Helper-prefix.pch"; sourceTree = ""; }; + BB56BD89D3AFA2D1A28AC669368564EE /* FBSDKCameraEffectArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCameraEffectArguments.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m; sourceTree = ""; }; + BC545C24C5A8D54810D153FA6D509D52 /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; + BCFD9CE791BADA4DBD7DB07060E711D3 /* NSDataAES.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSDataAES.xcconfig; sourceTree = ""; }; + BDF67E2919C554C3664A7B5FF105C57A /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKTimeSpentData.m; sourceTree = ""; }; + BE49B64709567E7A145F4C5326F9BB47 /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; + BE70CAC82850A6F70D65E76BCC1822B7 /* ALView+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ALView+PureLayout.h"; path = "PureLayout/PureLayout/ALView+PureLayout.h"; sourceTree = ""; }; + BEA32004712657B1467A4BD9BD8C9944 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsUtility.m; sourceTree = ""; }; + BEBAC0F707637128603A8648EB840712 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; + BF1EBF6182F351F432E71FD681007AB1 /* AFJSONResponseSerializerWithData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AFJSONResponseSerializerWithData.h; sourceTree = ""; }; + BF2E8502436D721C84299D3DA65CBD3E /* PNObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectUtilities.m; path = PNObject/Classes/PNObjectUtilities.m; sourceTree = ""; }; + BF355F6F84D556D41A199F377ECB47D9 /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; + BF44357D6412C9D88F62297B300AFEAA /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; + BFA0C3CF436A169D6B0EA24BF4AADABA /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + BFB13024A6578B59BFB2F016AEF4712C /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + C00245051B13644BEDB1902167791B5E /* NSDate_Utils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSDate_Utils.xcconfig; sourceTree = ""; }; + C05ABB4A36B18442EE918526657C6E1A /* PNLocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNLocation.h; sourceTree = ""; }; + C0807EEBEF311B1D53BABD9DF7C3F616 /* FBSDKMetadataIndexer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMetadataIndexer.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/AAM/FBSDKMetadataIndexer.m; sourceTree = ""; }; + C0E99999F93D99D0647675E3BE69CD54 /* SPTExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExample.m; path = Specta/Specta/SPTExample.m; sourceTree = ""; }; + C130B5215215D471AB0FA75C997001AC /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + C1413646C389F5AA2C4F62D892DFEFC4 /* StrongestPasswordValidator.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = StrongestPasswordValidator.xcconfig; sourceTree = ""; }; + C1DA6DC1AB07EF86698151725442D7C8 /* FBSDKEventBindingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKEventBindingManager.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBindingManager.m; sourceTree = ""; }; + C1FF9C182D30A3BC145CB4142C44AF44 /* FBSDKPlacesKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPlacesKit.h; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKit.h; sourceTree = ""; }; + C268799ABC759821B1BA9064BD537007 /* ExpectaSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaSupport.h; path = Expecta/ExpectaSupport.h; sourceTree = ""; }; + C29689896ED9C4CCA3235D84BDA47F95 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; + C2C2769758032EC587B2C434555DECA1 /* FBSDKPlacesBluetoothScanner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPlacesBluetoothScanner.m; path = FBSDKPlacesKit/FBSDKPlacesKit/Internal/FBSDKPlacesBluetoothScanner.m; sourceTree = ""; }; + C2E7D662849D07D99A5F6C898BA6B22F /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; + C2F5717736D436FD49E9302152F390C5 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; + C3149BF51580996CF29A646305A654D2 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKAppEventsState.m; sourceTree = ""; }; + C333064FF91CC3B29E8DA3FAED4852E1 /* ExpectaObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaObject.m; path = Expecta/ExpectaObject.m; sourceTree = ""; }; + C35CCF08DC506C074C1F556A97CA790B /* FBSDKGateKeeperManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGateKeeperManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m; sourceTree = ""; }; + C366D77560E2D813D88859B6DE207190 /* NSData+AESValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AESValue.h"; path = "NSDataAES/Classes/NSData+AESValue.h"; sourceTree = ""; }; + C3B88DAB639D3270262B8AEE1E71F01A /* NSValue+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+Expecta.h"; path = "Expecta/NSValue+Expecta.h"; sourceTree = ""; }; + C3E5CEEBBA28A3EB21CB0A2B12400254 /* RZDBMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBMacros.h; path = RZDataBinding/RZDBMacros.h; sourceTree = ""; }; + C3FBBAC2044DD8001FBB00EC203559BE /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; + C4052D665527DE0B6F8881B7B4D9419C /* FBSDKRestrictiveDataFilterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKRestrictiveDataFilterManager.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/RestrictiveDataFilter/FBSDKRestrictiveDataFilterManager.m; sourceTree = ""; }; + C45930CC650995447A46944DFFB8A64A /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; + C4F7C27E444E35D2BD1E9B2FBE5CEB6F /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; + C4F9236AE41E46BD402F54FEAAC041B5 /* PNObject+PNObjectDELETEConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectDELETEConnection.h"; path = "PNObject/Classes/PNObject+PNObjectDELETEConnection.h"; sourceTree = ""; }; + C51EA81FEC773302CAECCE6E0EB8BE2E /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; + C5502B4C026B51AF0003FC85554C4E42 /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; + C5569A9C536755F132B7DBE3B3BFCFB6 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.h; sourceTree = ""; }; + C610CC39FE25670ACC72D0F738694762 /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; + C6212CC4ED2994C808C36D839EAFD6D0 /* EXPMatchers+equal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+equal.m"; path = "Expecta/Matchers/EXPMatchers+equal.m"; sourceTree = ""; }; + C66B7016E44CE5370FDA15D25BFC6D53 /* FBSDKLibAnalyzer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLibAnalyzer.h; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Instrument/FBSDKLibAnalyzer.h; sourceTree = ""; }; + C683BDEECC7BAFC3EA7D52560756D135 /* PNInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNInstallation.h; sourceTree = ""; }; + C689C9A0453789D01E90675C058F8F3A /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; }; + C6ECF01B450541081B0C19CE2175E80E /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; + C7567BFFFC22DE8DF7536E547D076500 /* NSLayoutConstraint+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+PureLayout.h"; path = "PureLayout/PureLayout/NSLayoutConstraint+PureLayout.h"; sourceTree = ""; }; + C7FCB8EDEE6D48048A6B7A334B0691A3 /* FBSDKDeviceRequestsHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceRequestsHelper.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m; sourceTree = ""; }; + C8166BB3BD7A8B94692E66D7DFC0AC10 /* libUIDevice-Utils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libUIDevice-Utils.a"; path = "libUIDevice-Utils.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + C85E59E3F90743871D0D27C59B20F7CD /* UIImage+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+AFNetworking.h"; path = "UIKit+AFNetworking/UIImage+AFNetworking.h"; sourceTree = ""; }; + C9215416FC27002A06E684803F6AAA1E /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; + C940CDBC5BC214FC36A39C2B8FA82467 /* Expecta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Expecta.xcconfig; sourceTree = ""; }; + C9CC5FBA43E2F14284E595AFFCCCC00F /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; + CA6F6CEB9A6C6B77A0B136867E3B5578 /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; }; + CA7CAD525621833F2B52EBEC7F7F6A45 /* EXPMatchers+beLessThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThan.h"; path = "Expecta/Matchers/EXPMatchers+beLessThan.h"; sourceTree = ""; }; + CB283A120163B72644903E7B0333269D /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; + CB6696088E5A6C9B0FD73CB2B38EAF83 /* EXPMatchers+beCloseTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beCloseTo.h"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.h"; sourceTree = ""; }; + CBB563C9AB0D99B6C125D6DB67E46943 /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; + CD49C581FEBBF6F04C32E690962D53AA /* RZDataBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDataBinding.h; path = RZDataBinding/RZDataBinding.h; sourceTree = ""; }; + CDBB708831E5671B330744AF3BEA58E9 /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; + CF66AF169927C3FD23A480AEDB51FE06 /* DJLocalization.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DJLocalization.xcconfig; sourceTree = ""; }; + CFDE73962E698ED06ACCF47522AC99BB /* SPTExampleGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExampleGroup.h; path = Specta/Specta/SPTExampleGroup.h; sourceTree = ""; }; + D10AA455463C5CF36E6CDB4E2DA29C9A /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; + D12A9668459564BBFD480566188A3BDA /* FBSDKApplicationObserving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationObserving.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationObserving.h; sourceTree = ""; }; + D36B49FD5ABAD2816CB691096190A382 /* libDDDKeychainWrapper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDDDKeychainWrapper.a; path = libDDDKeychainWrapper.a; sourceTree = BUILT_PRODUCTS_DIR; }; + D3A4504204DEBA8BBC83BA876038713C /* NSData+SHA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+SHA.h"; path = "NSDataAES/Classes/NSData+SHA.h"; sourceTree = ""; }; + D426A09DA2FF562ED75548AC40175759 /* FBSDKPlacesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPlacesManager.m; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesManager.m; sourceTree = ""; }; + D49411A7110F577BCDA9854417A548F8 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; + D49862A22DB9572E568E7BC31E9EE0B5 /* FBSDKHybridAppEventsScriptMessageHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKHybridAppEventsScriptMessageHandler.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKHybridAppEventsScriptMessageHandler.m; sourceTree = ""; }; + D4C45BBFDF147786D2B427D5021DD817 /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; + D542F91E9B9DBEEE243EED8DEF6867D7 /* FBSDKAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererView.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkReturnToRefererView.h; sourceTree = ""; }; + D58F812E0E902D22282AC7569C19D03D /* FBSDKEventBinding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKEventBinding.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBinding.m; sourceTree = ""; }; + D5BDF30AE482AD4AD331C89174B649B8 /* SPTSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSpec.h; path = Specta/Specta/SPTSpec.h; sourceTree = ""; }; + D5CC3D5CDC3953EE68C798402065CA81 /* FBSDKEventBindingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKEventBindingManager.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKEventBindingManager.h; sourceTree = ""; }; + D5E26C45A93F51B6EEE1D980BCDFDA29 /* UIStoryboard+DJLocalization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIStoryboard+DJLocalization.h"; path = "DJLocalization/UIStoryboard+DJLocalization.h"; sourceTree = ""; }; + D6813DB633AAAC3F45EA69720EE117E5 /* VatNumber+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "VatNumber+Helper.m"; path = "CodFis-Helper/VatNumber+Helper.m"; sourceTree = ""; }; + D716E738A0815AD234AE9961EE3C7330 /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; + D74927E0A9EA9D91EECA68353E797395 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.h; sourceTree = ""; }; + D770FA89FA490372BDD42164B4003345 /* libNSString-Helper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libNSString-Helper.a"; path = "libNSString-Helper.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + D8A836C8CD31662B3178DEC599FFFE5B /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; + D8CE7A67905F955311866040C960DC67 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; + D8E2FECC4AED326CB988EDEED6FE2C1E /* FBSDKDeviceLoginManagerResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginManagerResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h; sourceTree = ""; }; + D8E3F5B68879DBEF72DD039EC6BDD89D /* PNObject+Protected.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+Protected.h"; path = "PNObject/Classes/PNObject+Protected.h"; sourceTree = ""; }; + D983CF804D5EDDC7B43BB588FD5CC312 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; + D9B74A7E8C0184A8E57DDAC6E59799ED /* FBSDKShareMessengerGenericTemplateElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerGenericTemplateElement.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m; sourceTree = ""; }; + D9D75CBB018E83085F339DBA74274DCE /* NSValue+Expecta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Expecta.m"; path = "Expecta/NSValue+Expecta.m"; sourceTree = ""; }; + DA9FA285D8D5DF8C9C71A2EAC0BDE803 /* RZDBCoalesce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBCoalesce.h; path = RZDataBinding/RZDBCoalesce.h; sourceTree = ""; }; + DAAC2395F0B2B3A2483D7D44C4F4E793 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; + DB97C961AD46E3B9D94105329C4D9B03 /* libPods-PNObject_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-PNObject_Example.a"; path = "libPods-PNObject_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + DC23077F9CA226D72E1B9815422F8D2B /* CodFis+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CodFis+Helper.m"; path = "CodFis-Helper/CodFis+Helper.m"; sourceTree = ""; }; + DC5794CA698723054481D94D0FD3813B /* SpectaDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaDSL.h; path = Specta/Specta/SpectaDSL.h; sourceTree = ""; }; + DC68738AF329696AA58B007307B0542F /* FBSDKAccessTokenExpirer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenExpirer.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m; sourceTree = ""; }; + DCED347C1E22F10908A1057764ABF8D4 /* PNObject+PNObjectConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectConnection.h"; path = "PNObject/Classes/PNObject+PNObjectConnection.h"; sourceTree = ""; }; + DCFEC270F299E79461760A3D89B223B8 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + DD0E5A35F49338AD11CD89875F129842 /* NSObject+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Expecta.h"; path = "Expecta/NSObject+Expecta.h"; sourceTree = ""; }; + DD71969B8971C83B9B913445362538D7 /* PureLayout.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PureLayout.xcconfig; sourceTree = ""; }; + DDC4437067875EB83C5C6949245167D3 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; + DDC642C99C587AE595714EB643296D52 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; + DDEDEE1FD437ED5BB2C80CD481EA89CB /* UIWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWebView+AFNetworking.h"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.h"; sourceTree = ""; }; + DE2D5C43D1B651A52F608D4F61B8DB2B /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; + DEAF5A8E11A841550FAF9FCDCFB49B04 /* FBSDKPlacesKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKPlacesKit.xcconfig; sourceTree = ""; }; + DF5B66930BCD9E1B123DCC9CDD2EF0D2 /* EXPMatchers+endWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+endWith.h"; path = "Expecta/Matchers/EXPMatchers+endWith.h"; sourceTree = ""; }; + DF5DCBC122F8EC78B6D2BBBC294B4EF3 /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; + DF66E8B16B0901DF8B3149C78781447E /* Pods-PNObject_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PNObject_Tests-acknowledgements.plist"; sourceTree = ""; }; + DF71932C80B3083358F995D4EF5EC6A8 /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; + DF9FBD78DA4F4E3FC6A1E23A59FDC097 /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; + E02781430F177771D2E8655D9A95BC00 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; + E048E7F7632A10B967AB52D241858CFF /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; + E08C92312D8EE063E663D79C076B5B0B /* FBSDKCameraEffectTextures+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCameraEffectTextures+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectTextures+Internal.h"; sourceTree = ""; }; + E090BA8397F464E495907426EE323517 /* SPTCompiledExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCompiledExample.m; path = Specta/Specta/SPTCompiledExample.m; sourceTree = ""; }; + E0B09873792C5BE04014F43BFDD6BA76 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; + E0BD5FAE5D434555DB4594601FBDE6B0 /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + E0D6474DCE1AF34AA6DE32F3AE5A8BE2 /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = ""; }; + E10E31949DD34DAA6813E72A2F7B8497 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents.m; sourceTree = ""; }; + E12729DB8DDEA6A6BF4A1B4B0C2E4F17 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; + E168ED7FBC6679698B8AA7CE74CD125B /* PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PureLayout.h; path = PureLayout/PureLayout/PureLayout.h; sourceTree = ""; }; + E1AD2CE238B724D7DB3A874E57DD5144 /* DJLocalization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalization.h; path = DJLocalization/DJLocalization.h; sourceTree = ""; }; + E1CCB02CC1D502C4FAA71F6D8CD6994B /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; + E1EFD370D8CABADC2ECC250027A0293A /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; + E39BC50961FC3818A27ABEFCD4C871A1 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; + E4560ADAB93959DAA87F55CEEA2EA0B3 /* PNObjectConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectConfig.m; path = PNObject/Classes/PNObjectConfig.m; sourceTree = ""; }; + E4A05B6A32AB0DE46405048793A4239B /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; + E4B65387584141E4B73D9E8C9135FCC3 /* NSDate+NSDate_Util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDate+NSDate_Util.h"; path = "Pod/Classes/NSDate+NSDate_Util.h"; sourceTree = ""; }; + E4E7B3DD46ABB0DBBB56BD5AE90E4911 /* libPureLayout.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPureLayout.a; path = libPureLayout.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E6270260633D63019977D528D2A4AB89 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; + E75944AFC65460CE9BDE73442A1B20F9 /* PNInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNInstallation.m; sourceTree = ""; }; + E780F73CDCC0DA3422751FA8F095BCFD /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; + E8941AD9D7EA5003CE7CDC855337856F /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + E90F18911A2D806F2E6F49F5360E4131 /* EXPMatchers+postNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+postNotification.m"; path = "Expecta/Matchers/EXPMatchers+postNotification.m"; sourceTree = ""; }; + E9C322606300A7FE3DE117B824BF8D30 /* libNSDataAES.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libNSDataAES.a; path = libNSDataAES.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E9E60D273FC77D061562B01AA241275B /* EXPMatchers+beNil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beNil.h"; path = "Expecta/Matchers/EXPMatchers+beNil.h"; sourceTree = ""; }; + EA167AC0457A533C13C42BEC83CAEFA1 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; + EA87AC4E9A5B15656386CF5A2AE7E030 /* FBSDKBasicUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBasicUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKBasicUtility.h; sourceTree = ""; }; + EAC556858D6A32FBD3794E052A18111C /* FBSDKCodelessParameterComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessParameterComponent.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessParameterComponent.m; sourceTree = ""; }; + EACEBEDDAB549C4EDC443FDEB38A3D2B /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; + EAE518F62DC2DB07C8A4C65DC4E6440E /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; + EB1E0F3DED9D97EEB76BED76FEF83E6C /* Pods-PNObject_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Example.release.xcconfig"; sourceTree = ""; }; + EB45F0AB152CB4892D84C798FE710145 /* RZDBCoalesce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RZDBCoalesce.m; path = RZDataBinding/RZDBCoalesce.m; sourceTree = ""; }; + EB79B4174867693BB380C3D6BC40D0A5 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKTimeSpentData.h; sourceTree = ""; }; + EBB92AE34EA2B11598B7A78DA48EADDD /* FBSDKShareMediaContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMediaContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h; sourceTree = ""; }; + EC8F4D0BE3B0C192EBA4A93F8887D89F /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKCoreKit.a; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + ED9B3F046EBB1071AA8E5D2CCC54638D /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; + EDD527E4A6E47D3A2E41AC5DF33567C9 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; + EE64BE00752BFBE1AAA68701AC365E7B /* FBSDKCodelessMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/Codeless/FBSDKCodelessMacros.h; sourceTree = ""; }; + EF4D1C1E110CDB46EAD80A76F7641B85 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerOpenGraphMusicTemplateContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m; sourceTree = ""; }; + EF5ACFD065B5DDB4D5EB938B5A248DA2 /* FBSDKPlacesKitConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPlacesKitConstants.m; path = FBSDKPlacesKit/FBSDKPlacesKit/FBSDKPlacesKitConstants.m; sourceTree = ""; }; + EF9D3C5BCD850B98C235156F3237E0A3 /* FBSDKURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURL_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKURL_Internal.h; sourceTree = ""; }; + EFA2382012B03DC660D5DCD01DE6A613 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; + EFB4BE0278DD6AD031A26A4ABA150E99 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkResolver.m; sourceTree = ""; }; + EFE2784CAA418724A76D2587E0F2DECD /* FBSDKAccessTokenExpirer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenExpirer.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.h; sourceTree = ""; }; + F061933CE5061B1ED24F6F671F836479 /* EXPBlockDefinedMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPBlockDefinedMatcher.h; path = Expecta/EXPBlockDefinedMatcher.h; sourceTree = ""; }; + F125EC2D5C81E1A620636DC66E53E173 /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; + F13955BC26ADB3F027F97DED8A31397B /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; }; + F16BAAF49CEBC19FEACD38152053DB72 /* libNSDate_Utils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libNSDate_Utils.a; path = libNSDate_Utils.a; sourceTree = BUILT_PRODUCTS_DIR; }; + F16D58276EF58E713A42A1332CEDFD79 /* FBSDKURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLSession.h; path = FBSDKCoreKit/FBSDKCoreKit/Basics/Internal/FBSDKURLSession.h; sourceTree = ""; }; + F1AD7F8935DC52E0657D5911ADC670A5 /* FBSDKAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLink_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLink_Internal.h; sourceTree = ""; }; + F1C1E6199E71FFC5A2072E50100B4C13 /* DJLocalizationSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalizationSystem.h; path = DJLocalization/DJLocalizationSystem.h; sourceTree = ""; }; + F23C8CE73B9EF9A3F40B54582DB3594D /* FBSDKCrashObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrashObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/CrashReport/FBSDKCrashObserver.h; sourceTree = ""; }; + F27962468383B83224B0D9285E1F4EBF /* nv_ios_http_status.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = nv_ios_http_status.h; path = "nv-ios-http-status/nv_ios_http_status.h"; sourceTree = ""; }; + F29856E04BD45F93207E457B6317D43B /* XCTestCase+Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTestCase+Specta.h"; path = "Specta/Specta/XCTestCase+Specta.h"; sourceTree = ""; }; + F39B1EC1AAD4B5594FE86B5ADC35ADD1 /* FBSDKCameraEffectArguments+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCameraEffectArguments+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h"; sourceTree = ""; }; + F3C9482910901214BD10BD8E636F733A /* FBSDKInstrumentManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInstrumentManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/FBSDKInstrumentManager.h; sourceTree = ""; }; + F420A9F64AAA45338FAEB04AEE098449 /* FBSDKAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkNavigation.h; path = FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKAppLinkNavigation.h; sourceTree = ""; }; + F4623E1ABFA7F250EE4B523CCD780C68 /* RZDataBinding-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RZDataBinding-prefix.pch"; sourceTree = ""; }; + F4933595BDE477A93E7D21927E0E76D5 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + F4CD0649E2166455008350FF470C8CB6 /* ALView+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ALView+PureLayout.m"; path = "PureLayout/PureLayout/ALView+PureLayout.m"; sourceTree = ""; }; + F4E998FB363C76769F64E038AB63711C /* PNObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectConstants.h; path = PNObject/Classes/PNObjectConstants.h; sourceTree = ""; }; + F57FFF38D26F413601D856556EC10660 /* PNObjectConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectConfig.h; path = PNObject/Classes/PNObjectConfig.h; sourceTree = ""; }; + F58166002875B7C79F42C9D089DD39EF /* PEARFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PEARFileManager.m; path = "PEAR-FileManager-iOS/PEARFileManager.m"; sourceTree = ""; }; + F5E4CF2FFD60B7DEABD3BC9EFB5292AC /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; + F6256E5B7A2F0EEAA35AD974F3ED908E /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; + F6EBD1DF9D97AEFB7791B74AB0489C22 /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; + F733CAC3E83253D9972F5D1E6EC32CEF /* PureLayout-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PureLayout-dummy.m"; sourceTree = ""; }; + F734E1202F5FDEC9D40C0F98906CA4A1 /* PureLayout-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PureLayout-prefix.pch"; sourceTree = ""; }; + F7BDD62FF3F5C3CC6A274EE7026C8ECE /* NSDataAES-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDataAES-dummy.m"; sourceTree = ""; }; + F7EDF49E14E6E707D6934656A5378941 /* AFHTTPRequestSerializer+OAuth2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFHTTPRequestSerializer+OAuth2.m"; sourceTree = ""; }; + F875FA1BB5843FE4FAFF63DA739ACFCF /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; + F89E7E3B86ED150A201E9DEFC41C0072 /* FBSDKDeviceLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h; sourceTree = ""; }; + F8AD45F79A02C4B4B73D4F8EA4B0C097 /* UIDevice-Utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIDevice-Utils-prefix.pch"; sourceTree = ""; }; + F8E665952F54F60A5633CAB1E206D970 /* FBSDKPlacesKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKPlacesKit-dummy.m"; sourceTree = ""; }; + F970E963E493BAB6B3EE3C06C448F66B /* EXPMatchers+respondTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+respondTo.m"; path = "Expecta/Matchers/EXPMatchers+respondTo.m"; sourceTree = ""; }; + F98E70D66DE0111A380E283FE4E1967A /* EXPMatchers+beLessThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m"; sourceTree = ""; }; + F99A02DCAF18AEDF13AF8AB831A51437 /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; + F9ECFAB33114DB544F46EA164E06C27B /* FBSDKSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSwizzler.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.h; sourceTree = ""; }; + FADAA3FF0222B5B84754FD3CA6737C89 /* PNAddress.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNAddress.m; sourceTree = ""; }; + FAEB954356BA94A927B8A6CDFB091B96 /* FBSDKShareMessengerContentUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerContentUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m; sourceTree = ""; }; + FB210269B792D12FBF0B9F66012C955D /* PNUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNUser.m; sourceTree = ""; }; + FB9E90DF2EF107A165E0EE72E911C0D3 /* FBSDKUserDataStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUserDataStore.m; path = FBSDKCoreKit/FBSDKCoreKit/AppEvents/Internal/FBSDKUserDataStore.m; sourceTree = ""; }; + FBEF15B5B675FEAFC1DFB885307EFC13 /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; + FC791EBC8F47DF84687F5296635D6A93 /* NSDate+NSDate_Util.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDate+NSDate_Util.m"; path = "Pod/Classes/NSDate+NSDate_Util.m"; sourceTree = ""; }; + FC9F7202337E591A5F9CDF166BA9B633 /* FBSDKErrorReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorReport.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Instrument/ErrorReport/FBSDKErrorReport.h; sourceTree = ""; }; + FE63419E7D132E5CADBDBD4224D984CF /* NSData+AESKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AESKey.h"; path = "NSDataAES/Classes/NSData+AESKey.h"; sourceTree = ""; }; + FEB9AB46A59F3099748319822466FE57 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + FEF5D29249061AD2B5574942E0789298 /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = ""; }; + FF26A81D3DD4C37A3232FFAB6A6722A1 /* AFOAuth2Manager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AFOAuth2Manager.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 15719665842B070CCDCD7F73C3368732 /* Frameworks */ = { + 091DB67733CA11F12E9F355900B69F82 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 21808E6DCC7C0C36EA760388C04009C6 /* Frameworks */ = { + 17C8E049F95498FEF532668F4D3B451B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 256CC6F845282DDD4784F1B4B7014C51 /* Frameworks */ = { + 28091EE74436A104CCAE78050F4617CB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 43BCB5E8776C541207858944DC1F38B5 /* Frameworks */ = { + 2FDFE72D4B70A5B9147E79E376898F9A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 4DD8B95189FA200C0C96678F3E4989F5 /* Frameworks */ = { + 419D3D6DB18BC8D6CFBF84D2D739C49F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 54977F5B5EEC8CDE16727199A2081F93 /* Frameworks */ = { + 4C5B76829F1C102DF96AFD5F100A8D34 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 55CEE22CB8B5223AF5456C20454981E7 /* Frameworks */ = { + 5409B281A122B7E16D577A2F77A7D076 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 5C226A25EBD98AE3388C3B6EE346E43D /* Frameworks */ = { + 65C5DF9F386625D1E72C4CCE956ED13B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 614CEE26CE49AEEC66D66268B8FF0C90 /* Frameworks */ = { + 74CA1619F24B79CC712A86A70DED135F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 6BA43BBF05D0D5B766E21895DD4F1AA1 /* Frameworks */ = { + 798FA432AB78673E4475C2044E95F52A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 735188206603AA6D6323F5016DE01241 /* Frameworks */ = { + 9A0E2899EABDEC038775C52BD67C30C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 87F4769AB5C2EBCDCAD2E5692359503C /* Frameworks */ = { + B987A72ED665BF83324D0FB16735A58C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 90719131C04DD701ABE53E461D67E39D /* Frameworks */ = { + BB83E7B1B12D4325E558F0D5395E148C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 95DFA1417A3A8EFF838A957044887362 /* Frameworks */ = { + BDCB801378E9589F4760A59F62359223 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 978DEBBF914F68139841CF7F5C8230A2 /* Frameworks */ = { + C86B80E45382A8C608B9C502724CAB09 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A55DA4FFC7FEC603BE07A408D0753CAB /* Frameworks */ = { + C966F79C4262300F36CF75EB47C91210 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A74963BFD8B340007F523332B3E1F090 /* Frameworks */ = { + D89D7597185B3B0D743B1B99D3CB00B2 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A9AE3432046578EAC082DF088DED6A61 /* Frameworks */ = { + E4A03B270C88FAD0E4823F8EF8372EA5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - AF7E09D5D59C4B746962B87E0BC0F9C1 /* Frameworks */ = { + E7B7352C4E9AEFDF4E312BF8F1115E9E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B097187320903CF62E673D3207B8998F /* Frameworks */ = { + EAB5937895A179681B803CAD4989EF23 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - CE1F37B44FADCF2300E3088BDFAB11EA /* Frameworks */ = { + EEDD844A79958B10A1BA8AAA32E6814E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - E287AC9406878B241DA3DCAEA288EBFE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FCB4F7E0756BC6669E928B71504E2245 /* Frameworks */ = { + F6983F776586A6E765DB3500DA940C37 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1861,1092 +1757,1090 @@ 029249E8C2404317E822389AC1B2A59E /* Targets Support Files */ = { isa = PBXGroup; children = ( - AF4D4F8C42CE3C9C29B4B8BD3FCD1DA8 /* Pods-PNObject_Example */, - 91D7411AEDDB3CCBF19B7471D1CD7003 /* Pods-PNObject_Tests */, + 82C6529E0053ED3DBEB30A7B5BC75EEF /* Pods-PNObject_Example */, + 283A1859B10BC210351D0601F9D1C291 /* Pods-PNObject_Tests */, ); name = "Targets Support Files"; sourceTree = ""; }; - 0369835667FCDAB9C11C1BC90378833A /* Specta */ = { + 0832E0518E549928AC75C47D89D1A31D /* UIDevice-Utils */ = { isa = PBXGroup; children = ( - 4FE96DE348BD51445BFBAB67B70E47CD /* Specta.h */, - D0AE81C354021542B04BEE0FB2A3E61D /* SpectaDSL.h */, - 98985DB3C6A3CA6E3251B8690025641C /* SpectaDSL.m */, - 47299D3D86205AFECEB38FCFE7E291C9 /* SpectaTypes.h */, - 173CC0E93B9ECD7E72EB5EB4181C1703 /* SpectaUtility.h */, - FAD5E72E0081CBB972F6F9223A9CD595 /* SpectaUtility.m */, - 350832271DA41A0CDA90C2D109C288A7 /* SPTCallSite.h */, - 1AD4CD699988FDB293695E9B7B21C432 /* SPTCallSite.m */, - EED5B2423D952EC9DFCB17159FA6466E /* SPTCompiledExample.h */, - 03FF433EF175C201E7EC50611214A946 /* SPTCompiledExample.m */, - A8055EB4C162D7C55AC079B761F72B90 /* SPTExample.h */, - F5EB804C14B0975944019BF7E7B3FBCD /* SPTExample.m */, - 6BFED846F96B9BD8DFB182FFDAAC3305 /* SPTExampleGroup.h */, - 09CC72C94998E3F08716C55214E8DBEF /* SPTExampleGroup.m */, - 2B08B36BD24CEAD1D95BA1FA4802D108 /* SPTExcludeGlobalBeforeAfterEach.h */, - 501348201A745DB29FA49340A0F04CF4 /* SPTGlobalBeforeAfterEach.h */, - 3DC39B114E45C2E927673D70C67596A8 /* SPTSharedExampleGroups.h */, - 3711275873E6DBA973EBB050248D3277 /* SPTSharedExampleGroups.m */, - 0A06DBD55AC48C20563EDB6ABFC904C5 /* SPTSpec.h */, - 5042B7D31D77B6F95E351BD17B643F8A /* SPTSpec.m */, - AD3C80F5ABD635FCEEAF5AECDE2E7B76 /* SPTTestSuite.h */, - 5B1BBC53A00585C1BDD65A27CB02EBD1 /* SPTTestSuite.m */, - 473A6E85D1BFC301D7A586D8FC067FBE /* XCTest+Private.h */, - E33B851B183ADE1FA936A2A9C738CB43 /* XCTestCase+Specta.h */, - 0E8C398362337962B597901EEBA499A6 /* XCTestCase+Specta.m */, - 778CE33306CB694AA0C6F05812FDEADA /* Support Files */, - ); - name = Specta; - path = Specta; - sourceTree = ""; - }; - 04BF4566B38B7EFF5534C2F1F9CDFC52 /* DJLocalization */ = { - isa = PBXGroup; - children = ( - E2D2CA8823C15D1353278805C5B7D7E4 /* Core */, - C514CAF3D056E818FFB9104772AA2E23 /* Support Files */, - ); - name = DJLocalization; - path = DJLocalization; - sourceTree = ""; - }; - 15BA4087F2FDDF93A763167B772BE332 /* Vendors */ = { - isa = PBXGroup; - children = ( - 51CB927B5795F119B35A940D8EA2AC74 /* AFJSONResponseSerializerWithData */, - 467ABC5AD4383E024588E5946F0A964D /* AFOAuth2Manager */, - ); - name = Vendors; - path = PNObject/Classes/Vendors; - sourceTree = ""; - }; - 19BE35BD3150A437C9A49F48E68409CB /* PNObject */ = { - isa = PBXGroup; - children = ( - BB0FF5C809A421C2EF24D4165E41AD19 /* PNObject.h */, - 4EA883A48286B9FA836AAD116A5F843B /* PNObject.m */, - 84FE562C45F8ED5DB5C65AFF6293562F /* PNObject+PNObjectConnection.h */, - 29D766A1203304C908352A70FFA9A08C /* PNObject+PNObjectConnection.m */, - D05D92A891D88478B23ACA10C24B87F1 /* PNObject+PNObjectDELETEConnection.h */, - 52E8F08DC670EA8205CA05FE35171BAA /* PNObject+PNObjectDELETEConnection.m */, - 3EE345E7C72682CBA86096BE1C173A6D /* PNObject+PNObjectGETConnection.h */, - CAAD426738CEEC7606CD1FE2F5D2AB46 /* PNObject+PNObjectGETConnection.m */, - 0B926C2C5A4A1AC59AB31BFDBC8E07A7 /* PNObject+PNObjectPOSTConnection.h */, - C0AAD202D7069DC71C7B9404A20324B5 /* PNObject+PNObjectPOSTConnection.m */, - EBDAF77420FDB4828B6BF33817FF1FF3 /* PNObject+Protected.h */, - 095C5D2657B6C18E9BADD9BD60987D5F /* PNObject+Protected.m */, - 8979C061E911DB86EABEEA679BB0824E /* PNObjectConfig.h */, - CB1585C12AF2712FC8A4E7B8B8D863E9 /* PNObjectConfig.m */, - EB16386971F06C4720EB7A01324F0A75 /* PNObjectConstants.h */, - 4A8CE31FF3AAD59EF217D52466217801 /* PNObjectFormData.h */, - 557AA9E59CB8292BE87DEA7EF0D5D65A /* PNObjectFormData.m */, - D746073D457DD21C98FFE96414952A89 /* PNObjectModel.h */, - F468B98197451903A0E37C764D850E6E /* PNObjectModel.m */, - 944CFEEBBC319A1B242E21DEDF6DA177 /* PNObjectUtilities.h */, - 31AB445EB5B9A76AF0A31B0358630D97 /* PNObjectUtilities.m */, - C02231A18B5681E103AC4C1E01CDD21C /* PNClasses */, - FAC869D6D0FB0739161FFF09C0A0C695 /* Pod */, - 1BB5DC09F38651C1B888E2523BC00870 /* Support Files */, - 15BA4087F2FDDF93A763167B772BE332 /* Vendors */, - ); - name = PNObject; - path = ../..; - sourceTree = ""; - }; - 1BB5DC09F38651C1B888E2523BC00870 /* Support Files */ = { - isa = PBXGroup; - children = ( - D5ED7C1FBE256501937B39E681452F3A /* PNObject.xcconfig */, - 856C7F85343BF8C08D2A9C78C15EFFED /* PNObject-dummy.m */, - 047DA8C4883EE38B4EBCE1E6E1013905 /* PNObject-prefix.pch */, - ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/PNObject"; - sourceTree = ""; - }; - 1DF86D7EF72DF7DFF4E1A21C926D7204 /* Support Files */ = { - isa = PBXGroup; - children = ( - 5D8332C529CCACC68CC9FF89FDF0A5A1 /* AFNetworking.xcconfig */, - 8E6F5A48940CEB8FB0F3405324B6C350 /* AFNetworking-dummy.m */, - 0889F20870E67FED05EB70D9C012C158 /* AFNetworking-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/AFNetworking"; - sourceTree = ""; - }; - 210B5D5DF13A8BD6BD14F8E6F79D6536 /* StrongestPasswordValidator */ = { - isa = PBXGroup; - children = ( - C78134E0CA15EF551455C4494784DAE3 /* StrongestPasswordValidator.h */, - 2E08E9634486D671EED88EECBDEC18E0 /* StrongestPasswordValidator.m */, - 668D63D7AA85EB8BAA256DE4116B2EC1 /* Support Files */, - ); - name = StrongestPasswordValidator; - path = StrongestPasswordValidator; - sourceTree = ""; - }; - 241CC48AC01FBBA113A38B1E82A0F331 /* Support Files */ = { - isa = PBXGroup; - children = ( - 2F9B201CDC5290A6C73E25462BBCD4F1 /* UIDevice-Utils.xcconfig */, - F1E3D7C19D043CE985CD26AEBA1634B9 /* UIDevice-Utils-dummy.m */, - 3A7DA519B01F6AD1E471CC4756F6A793 /* UIDevice-Utils-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/UIDevice-Utils"; - sourceTree = ""; - }; - 3C62312E93C1D3CAFC8C158B18D2605C /* NSDate_Utils */ = { - isa = PBXGroup; - children = ( - 3FA95DDB4EE259D0108EEA5D9E02B4AD /* NSDate+NSDate_Util.h */, - 49D729484FFEBE88C7D8876222FA0F4C /* NSDate+NSDate_Util.m */, - EFB4DA92893B78F4E7DD53E1322B26EA /* Support Files */, - ); - name = NSDate_Utils; - path = NSDate_Utils; - sourceTree = ""; - }; - 467ABC5AD4383E024588E5946F0A964D /* AFOAuth2Manager */ = { - isa = PBXGroup; - children = ( - 63C0BC977F90EFFB1EDE6089E231EFA0 /* AFHTTPRequestSerializer+OAuth2.h */, - C06A8ED05937C9777C59B5352AB4BF5D /* AFHTTPRequestSerializer+OAuth2.m */, - 535C9E3A23A0CC026A7CAA5D7A5BCAA4 /* AFOAuth2Manager.h */, - 1A890DC51AD91BA9FFA1613FA801318E /* AFOAuth2Manager.m */, - 274548FF8D402009D18E89A75B703E08 /* AFOAuthCredential.h */, - 0504B1A342444AE7F47B822A4497A15F /* AFOAuthCredential.m */, - ); - name = AFOAuth2Manager; - path = AFOAuth2Manager; - sourceTree = ""; - }; - 4BD7E679DD020DB080B45CB56F98222C /* UIKit */ = { - isa = PBXGroup; - children = ( - B8BD0FA937E87F8F17C87B2A35B0A012 /* AFAutoPurgingImageCache.h */, - 08D9341033C71F59BD76AF80DAB3C66F /* AFAutoPurgingImageCache.m */, - 9AE80A55083472B8056AC6B1257A9F39 /* AFImageDownloader.h */, - EA7F85994C03848985B7F6D6989CC8D0 /* AFImageDownloader.m */, - E7323524C148345091271F799EE35D9B /* AFNetworkActivityIndicatorManager.h */, - D697A55184BFCA58EA3426B82026F57D /* AFNetworkActivityIndicatorManager.m */, - 165E3EA43C3711455B28381BB81B8695 /* UIActivityIndicatorView+AFNetworking.h */, - D521EF5B9E56E155A5DA9D5595F7C881 /* UIActivityIndicatorView+AFNetworking.m */, - 9A2448A7336544D2B9F6BAAAFAA14673 /* UIButton+AFNetworking.h */, - 931602784F81FC5F0637EF3E7B4DCB89 /* UIButton+AFNetworking.m */, - DE12B7C44CCA2977928D828FA0F06149 /* UIImage+AFNetworking.h */, - 606A20728ABEA2C55C5E70041F584CB0 /* UIImageView+AFNetworking.h */, - BC80862D881A63BCA79DE6DDC918B107 /* UIImageView+AFNetworking.m */, - E4D4892E09F91736B6CA8BF5AA1373BD /* UIKit+AFNetworking.h */, - 0B3680969EAA8B942230DFB1AA765553 /* UIProgressView+AFNetworking.h */, - 9563DEDCA2EA8A2E4D08BBC2437E75C6 /* UIProgressView+AFNetworking.m */, - 3ECDC77A52766A87EA95232978B0F06E /* UIRefreshControl+AFNetworking.h */, - E96FEB04D1490C013EC27F7E6CE71C84 /* UIRefreshControl+AFNetworking.m */, - 7513CFDFAA4E1AC9F3E0758174E9B83B /* UIWebView+AFNetworking.h */, - 450D8F2ED6F012DFB6572D0CB2D90566 /* UIWebView+AFNetworking.m */, - ); - name = UIKit; - sourceTree = ""; - }; - 4CB48136ED5FD9630E47F84D3271CA6E /* Support Files */ = { - isa = PBXGroup; - children = ( - 230D8E3526A219F87ECB71194308E744 /* Expecta.xcconfig */, - 205526DE5340AA0EB851E8D34BC83227 /* Expecta-dummy.m */, - 25355D4E8E6A5D4E46CD41D0D89CEE87 /* Expecta-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/Expecta"; - sourceTree = ""; - }; - 51CB927B5795F119B35A940D8EA2AC74 /* AFJSONResponseSerializerWithData */ = { - isa = PBXGroup; - children = ( - C3275DA10A054A3F7921D8193E25E8AA /* AFJSONResponseSerializerWithData.h */, - 591DAF3CD399270B45B09427B91CEB50 /* AFJSONResponseSerializerWithData.m */, - ); - name = AFJSONResponseSerializerWithData; - path = AFJSONResponseSerializerWithData; - sourceTree = ""; - }; - 52373B3E7ACB754771F53A3A42BD0C11 /* NSURLSession */ = { - isa = PBXGroup; - children = ( - D21B76D37523D3AF4207427341438F84 /* AFCompatibilityMacros.h */, - 00790927A0389B09506C892EFBCB8276 /* AFHTTPSessionManager.h */, - B2537B31361C13151CB98CE129F33891 /* AFHTTPSessionManager.m */, - 73C4EE95261A817643E40926A0821908 /* AFURLSessionManager.h */, - DF255B58A329E38BC3725F6C1718D34A /* AFURLSessionManager.m */, - ); - name = NSURLSession; - sourceTree = ""; - }; - 52CE345C4B925D212F4F64545BA9EF92 /* Support Files */ = { - isa = PBXGroup; - children = ( - 6A4E9C04DF5129E4596C6BFA06F4857B /* FBSDKPlacesKit.xcconfig */, - 323EA10A630576B4449366F0EAE52579 /* FBSDKPlacesKit-dummy.m */, - 85560B5A0586BF41D1760868ADEA3900 /* FBSDKPlacesKit-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/FBSDKPlacesKit"; - sourceTree = ""; - }; - 540A250E0DC0077B90C47A7B4E79CA17 /* PEAR-FileManager-iOS */ = { - isa = PBXGroup; - children = ( - FBC58D5C116C30C2C9FA4E8FA969CC89 /* PEARFileManager.h */, - 05203B6E52E606A94BE5C6D83DE66E2D /* PEARFileManager.m */, - 85A46AD6EC0D7213289D5D49A5838239 /* Support Files */, - ); - name = "PEAR-FileManager-iOS"; - path = "PEAR-FileManager-iOS"; - sourceTree = ""; - }; - 5F8860499B7ECCD0AEB47D4289EDFE3B /* RZDataBinding */ = { - isa = PBXGroup; - children = ( - F88E96559DC569AFF4344537FB9D25C5 /* NSObject+RZDataBinding.h */, - 2010F5178F912157AFAA4E3E81CAA192 /* NSObject+RZDataBinding.m */, - 1334C677ADF397C0DDB7298DB2903C43 /* RZDataBinding.h */, - 893EED4B142C7712269D7508B429DC66 /* RZDBCoalesce.h */, - CEEFEE4D2B5FAD5B19D3D6A483A064CA /* RZDBCoalesce.m */, - D6C1CBE929F193DA29B496D6B47D7C9F /* RZDBMacros.h */, - F5129552D4EDABC83ACAA3F97E631ED0 /* RZDBTransforms.h */, - F47A51EBDF2942C2BF0F2E89844ED688 /* RZDBTransforms.m */, - BFF56D7D5A6BDABB76E62D9C488F785D /* Support Files */, - ); - name = RZDataBinding; - path = RZDataBinding; - sourceTree = ""; - }; - 61F09071D753E4278EFDB3BD5AC56378 /* CodFis-Helper */ = { - isa = PBXGroup; - children = ( - 1071A64D0AA1AC68898E6DD2AF9757F9 /* CodFis+Helper.h */, - D2D354169C2DEF1A66D64D0F5CBA7504 /* CodFis+Helper.m */, - A8991BDCA4688910D587A6E1C7B8F5B4 /* CodFisResponse.h */, - 11CED45F1E15BD9F3E84E7149502983D /* CodFisResponse.m */, - F7C5E6D8755BCF17AFD627A8D4C4CA67 /* ResponseConstants.h */, - 549A9F71AE9170B962A91B44D91ED2AC /* VatNumber+Helper.h */, - 0D3732D2047E04F8B6E125CFECB4CDA8 /* VatNumber+Helper.m */, - EB488F46438E970BE1558ABEADD10608 /* Support Files */, - ); - name = "CodFis-Helper"; - path = "CodFis-Helper"; - sourceTree = ""; - }; - 63DA474227B505E4352903F6A0038AE5 /* UIDevice-Utils */ = { - isa = PBXGroup; - children = ( - 63173E5B639070BA427CD0A1443671DF /* UIDevice-Hardware.h */, - BA60CE8853503D22C319CB0C52BA8139 /* UIDevice-Hardware.m */, - 241CC48AC01FBBA113A38B1E82A0F331 /* Support Files */, + 35581B14530384F3A16EF07776851CCC /* UIDevice-Hardware.h */, + 0C22AE1671F6617E31D2229B42E91C91 /* UIDevice-Hardware.m */, + A64AC0EF0A6F74C931702A38422DA3F7 /* Support Files */, ); name = "UIDevice-Utils"; path = "UIDevice-Utils"; sourceTree = ""; }; - 668D63D7AA85EB8BAA256DE4116B2EC1 /* Support Files */ = { + 091D7419CBA2F95CD1EB2F822B74F96A /* Share */ = { isa = PBXGroup; children = ( - 7819150A98C3CA61F570BE130949DB6A /* StrongestPasswordValidator.xcconfig */, - 17F91B456ADCD5FBADA773A357BEB3AA /* StrongestPasswordValidator-dummy.m */, - 38C5A066DE24895BC6222FE36AD043F7 /* StrongestPasswordValidator-prefix.pch */, + AC54AD6C42A54F6E1D99283F08DB5DA1 /* FBSDKAppGroupContent.h */, + 8EBA8BCF69E54AB7862F642D4112ABFC /* FBSDKAppGroupContent.m */, + C29689896ED9C4CCA3235D84BDA47F95 /* FBSDKAppInviteContent.h */, + B8A1C2D8D7C58D7AAC91E706B636EBEA /* FBSDKAppInviteContent.m */, + 5354453D3F6BE5171EC3360413012962 /* FBSDKCameraEffectArguments.h */, + BB56BD89D3AFA2D1A28AC669368564EE /* FBSDKCameraEffectArguments.m */, + F39B1EC1AAD4B5594FE86B5ADC35ADD1 /* FBSDKCameraEffectArguments+Internal.h */, + 65681CD9F13B5227C252F92592759BE5 /* FBSDKCameraEffectTextures.h */, + 2C5B7BA0C04E34412CA6AB9944D0C8FE /* FBSDKCameraEffectTextures.m */, + E08C92312D8EE063E663D79C076B5B0B /* FBSDKCameraEffectTextures+Internal.h */, + 26C994B65A5252BA70C2E59D4F42E1D7 /* FBSDKCheckmarkIcon.h */, + BE49B64709567E7A145F4C5326F9BB47 /* FBSDKCheckmarkIcon.m */, + F5E4CF2FFD60B7DEABD3BC9EFB5292AC /* FBSDKGameRequestContent.h */, + 92C0B0EE21BAFD10EEF5AE1BF4E0FAA8 /* FBSDKGameRequestContent.m */, + 9B3985C8B76FCB8450D5C7343151A403 /* FBSDKGameRequestDialog.h */, + 4569DCAA55DEB84EA228E5AB559EF457 /* FBSDKGameRequestDialog.m */, + 03B65791AB86DD5C751334C1EE0EBEB6 /* FBSDKGameRequestFrictionlessRecipientCache.h */, + 673B3CFAA2E0052F2A03EA4C7A923325 /* FBSDKGameRequestFrictionlessRecipientCache.m */, + 0FD25B32D581767390D2D3B6B50A2C03 /* FBSDKHashtag.h */, + 6CF37DE959D905214F8CD85474C82AF2 /* FBSDKHashtag.m */, + 9CC06C1C1357A7B08713C7E439362F68 /* FBSDKLikeActionController.h */, + 2976BB72E7664FCEAE9A408065D4A1C5 /* FBSDKLikeActionController.m */, + 2044442BDAE0CA0037CA983768B041A8 /* FBSDKLikeActionControllerCache.h */, + 4C10F5FEE351800D800D488147E5BD1D /* FBSDKLikeActionControllerCache.m */, + 375802A884DCBF305C9B4F79202E842C /* FBSDKLikeBoxBorderView.h */, + 1A29DCD66495B880BD286BF7D4674B0F /* FBSDKLikeBoxBorderView.m */, + 6AAB21F5E01ED53C63D93A401FF2C09F /* FBSDKLikeBoxView.h */, + 0B4671A98D9A3888F282292A1681AB95 /* FBSDKLikeBoxView.m */, + 322EA7A4C0A8C70C8E58B6F4BB9705DB /* FBSDKLikeButton+Internal.h */, + 6ECD79783E5C1D0CD523F0B069E08BF0 /* FBSDKLikeDialog.h */, + BEBAC0F707637128603A8648EB840712 /* FBSDKLikeDialog.m */, + EAE518F62DC2DB07C8A4C65DC4E6440E /* FBSDKLikeObjectType.h */, + 0CD6374C7D61B357C54B4026EF0D3A96 /* FBSDKLikeObjectType.m */, + 5DA10E3DB4798AC5863B7DA71517083A /* FBSDKLiking.h */, + 05C215E17A0D28284936F71B51050A8A /* FBSDKMessageDialog.h */, + BC545C24C5A8D54810D153FA6D509D52 /* FBSDKMessageDialog.m */, + 3414D8CFD8EFD71830E819582908FA7B /* FBSDKMessengerIcon.h */, + 7F869DD0E59B2F6A6890DA89A6E2AA98 /* FBSDKMessengerIcon.m */, + F6EBD1DF9D97AEFB7791B74AB0489C22 /* FBSDKSendButton.h */, + 08721431B6068620A2DE09F7F52D06C6 /* FBSDKSendButton.m */, + 280140A1423C56F4338FF1AA8CFC1F2E /* FBSDKShareAPI.h */, + 40DC2622CCEFAA111ED478B6E90C1927 /* FBSDKShareAPI.m */, + 2CBA0FFC1082F68D3300E57FA3DBBF40 /* FBSDKShareButton.h */, + 4B881CA2353E43B6E26FAEA600D74E92 /* FBSDKShareButton.m */, + 1E5200D160FB01896D7B466E6D82BAC9 /* FBSDKShareCameraEffectContent.h */, + 48591606E58469749C184FD2DCCBBF63 /* FBSDKShareCameraEffectContent.m */, + E1CCB02CC1D502C4FAA71F6D8CD6994B /* FBSDKShareConstants.h */, + 020E249224444E8478B78D3625DE24C1 /* FBSDKShareConstants.m */, + 1D01ABA1F3663926243C9C6C840A0C6B /* FBSDKShareDefines.h */, + ED9B3F046EBB1071AA8E5D2CCC54638D /* FBSDKShareDialog.h */, + 659E528421E332CA6024CC5F3808A845 /* FBSDKShareDialog.m */, + 7C4E2D8365F3F2E2C28F284F6B73D5B2 /* FBSDKShareDialogMode.h */, + F6256E5B7A2F0EEAA35AD974F3ED908E /* FBSDKShareDialogMode.m */, + 44DE8C3820B0FF557F061B087EAA901D /* FBSDKShareExtension.h */, + 07F242465FA619AD3802DB09F94589A2 /* FBSDKShareExtension.m */, + 7167230857A7EA27D9ECA97C8011D44A /* FBSDKShareKit.h */, + 64B2F4E165CE2E764E205F13F320487B /* FBSDKShareKit+Internal.h */, + 90F08D533B1E2A9EFD5054531F39FE9D /* FBSDKShareLinkContent.h */, + 2B7E08BB0F0CB9A81C1681534F500D40 /* FBSDKShareLinkContent.m */, + EBB92AE34EA2B11598B7A78DA48EADDD /* FBSDKShareMediaContent.h */, + 6E3A9E5FD94D0AB8FB7C088EACCE8E36 /* FBSDKShareMediaContent.m */, + B6E44E09D6054D05E608F289A1B98BBA /* FBSDKShareMessengerActionButton.h */, + 4112ACE7113D5A437A69DACE432DFDBD /* FBSDKShareMessengerContentUtility.h */, + FAEB954356BA94A927B8A6CDFB091B96 /* FBSDKShareMessengerContentUtility.m */, + 1B346B413AD002A0073BF6BE7F38BBD4 /* FBSDKShareMessengerGenericTemplateContent.h */, + 99B11789C43B5EDC49CD21BEF6B5887A /* FBSDKShareMessengerGenericTemplateContent.m */, + 573642D4018A98522956A13E0847A476 /* FBSDKShareMessengerGenericTemplateElement.h */, + D9B74A7E8C0184A8E57DDAC6E59799ED /* FBSDKShareMessengerGenericTemplateElement.m */, + 21705F2CDA390D5966CF85B65CD17838 /* FBSDKShareMessengerMediaTemplateContent.h */, + 34D3B3F7605EB46274E23F7222D55038 /* FBSDKShareMessengerMediaTemplateContent.m */, + B9ACA258E3F31D44676A7385ED9D8985 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h */, + EF4D1C1E110CDB46EAD80A76F7641B85 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m */, + 40EB7C011EE90C1626BAEB461A9DB92E /* FBSDKShareMessengerURLActionButton.h */, + 3A3AE58262FDAD96053342442127E68F /* FBSDKShareMessengerURLActionButton.m */, + C45930CC650995447A46944DFFB8A64A /* FBSDKShareOpenGraphAction.h */, + C3FBBAC2044DD8001FBB00EC203559BE /* FBSDKShareOpenGraphAction.m */, + 147232795DA583F933A389EF7CA2AA81 /* FBSDKShareOpenGraphContent.h */, + 69456DCF04406FF22F463AC92BF41880 /* FBSDKShareOpenGraphContent.m */, + 6E61C2607807755DA4CDAC99A8E95F19 /* FBSDKShareOpenGraphObject.h */, + 61EAEC22E0A83C8EB5D18C0C900E9EE7 /* FBSDKShareOpenGraphObject.m */, + 698A8D327CDD33954411F4D87E536EF6 /* FBSDKShareOpenGraphValueContainer.h */, + 9A960A67158114A27DAF3B16496FC3B5 /* FBSDKShareOpenGraphValueContainer.m */, + 3C0A0A60EC21AC0133E91AE3A21AC1A7 /* FBSDKShareOpenGraphValueContainer+Internal.h */, + E780F73CDCC0DA3422751FA8F095BCFD /* FBSDKSharePhoto.h */, + 01D218EAE243861488C477C51C4D6D55 /* FBSDKSharePhoto.m */, + EDD527E4A6E47D3A2E41AC5DF33567C9 /* FBSDKSharePhotoContent.h */, + 94B52210332ED8A9A65CC8DC843C5FC2 /* FBSDKSharePhotoContent.m */, + 9197A92D99EF2622407DEDCDF386F1EE /* FBSDKShareUtility.h */, + 1E0C52CDCBC2376BC932D9162D36B6CA /* FBSDKShareUtility.m */, + AC750148FC0A844C66EC2128DE0BDD06 /* FBSDKShareVideo.h */, + 524B1AB1EA564E674BC11F5EC1DC5613 /* FBSDKShareVideo.m */, + BF44357D6412C9D88F62297B300AFEAA /* FBSDKShareVideoContent.h */, + 611731CFC7178E30E450CCAF83607455 /* FBSDKShareVideoContent.m */, + 8494E1D82DAB47206891A3EEE7846AAD /* FBSDKSharing.h */, + 2325EC8CC3E173B3C3D69138198D5FB4 /* FBSDKSharingButton.h */, + D10AA455463C5CF36E6CDB4E2DA29C9A /* FBSDKSharingContent.h */, + 30777BEA30E91B9AB92D6D7B41721548 /* FBSDKSharingScheme.h */, + 7F165E6B785D863D235B24394BEB9D9E /* FBSDKSharingValidation.h */, + 45A8F579929F3D699481AD14D5B5BB0B /* FBSDKVideoUploader.h */, + 97ECC2D79326237AAFA4140AD0DA1EA7 /* FBSDKVideoUploader.m */, + ); + name = Share; + sourceTree = ""; + }; + 0AC4AF3845EADE658C440F4660A55BE1 /* DJLocalization */ = { + isa = PBXGroup; + children = ( + 8576D1AAA88B0873BEED45C71F3D49A2 /* Core */, + 96E8EC9332BBDB61EA7EA9BCD30CD48C /* Support Files */, + ); + name = DJLocalization; + path = DJLocalization; + sourceTree = ""; + }; + 0DD299894FED7CC0AD31C4B8203071D5 /* NSURLSession */ = { + isa = PBXGroup; + children = ( + 87B5E8AEEAA01EE673F4B83048FDDDF8 /* AFCompatibilityMacros.h */, + FEB9AB46A59F3099748319822466FE57 /* AFHTTPSessionManager.h */, + DCFEC270F299E79461760A3D89B223B8 /* AFHTTPSessionManager.m */, + 4A9BB37CE3F8E4D764DBABEE64479E35 /* AFURLSessionManager.h */, + EFA2382012B03DC660D5DCD01DE6A613 /* AFURLSessionManager.m */, + ); + name = NSURLSession; + sourceTree = ""; + }; + 13FF9A735F25D6B601CF579B6FBC67E3 /* PNObject */ = { + isa = PBXGroup; + children = ( + A219D28BE411B73330C49B119CCDF7BE /* PNObject.h */, + 9588CC0CA3F3DDBBCC6A8C95B6D104DD /* PNObject.m */, + DCED347C1E22F10908A1057764ABF8D4 /* PNObject+PNObjectConnection.h */, + 84EBD1E23F56EC2AD373B6810B8E1F9A /* PNObject+PNObjectConnection.m */, + C4F9236AE41E46BD402F54FEAAC041B5 /* PNObject+PNObjectDELETEConnection.h */, + 05753AB3D2104B4761ED33675F674395 /* PNObject+PNObjectDELETEConnection.m */, + 4CB27DED4610BBF2E5C7C16E48223CE9 /* PNObject+PNObjectGETConnection.h */, + 4AE0AE80AAFE77A9F7BAB3DBCA09C8EA /* PNObject+PNObjectGETConnection.m */, + 2E0D1B22AAC5A3CF541143E246D519B4 /* PNObject+PNObjectPOSTConnection.h */, + 0585396D8960F9DDEC28F0A1522F4A22 /* PNObject+PNObjectPOSTConnection.m */, + D8E3F5B68879DBEF72DD039EC6BDD89D /* PNObject+Protected.h */, + 9D21D6E5BB43920DE5D5DF9EF749CC71 /* PNObject+Protected.m */, + F57FFF38D26F413601D856556EC10660 /* PNObjectConfig.h */, + E4560ADAB93959DAA87F55CEEA2EA0B3 /* PNObjectConfig.m */, + F4E998FB363C76769F64E038AB63711C /* PNObjectConstants.h */, + 3F80B3A24ACA62A0E71909F94C5A0FFC /* PNObjectFormData.h */, + 054D06556574CF560E02B1BE3004FFE6 /* PNObjectFormData.m */, + A34168060E8DDF8DC417EFF6F78A5150 /* PNObjectModel.h */, + 2ABE5ABAB0FA7BDA703F9BB56FE8A6BA /* PNObjectModel.m */, + 85DCFFFE5A713386F9B2818E4EAC4FB1 /* PNObjectUtilities.h */, + BF2E8502436D721C84299D3DA65CBD3E /* PNObjectUtilities.m */, + EAE60BEC304D9CA57F52CD8DABC52F9F /* PNClasses */, + A4BDAF207186FB56F1D7E31AF6E9EDE2 /* Pod */, + A00DB09A7A1D3C14823DDCCF358BC4ED /* Support Files */, + 7267ED94726D11CF4785EAE1A8922270 /* Vendors */, + ); + name = PNObject; + path = ../..; + sourceTree = ""; + }; + 177835B1AAEAF68E0B2275D2E61479D5 /* FBSDKCoreKit */ = { + isa = PBXGroup; + children = ( + C6E3CA63691729E114AB7E7D20F47F70 /* Basics */, + B5320674EC314F922A75D1C704C642E7 /* Core */, + 65A29386796C8F9465CB74480922DA1A /* Support Files */, + ); + name = FBSDKCoreKit; + path = FBSDKCoreKit; + sourceTree = ""; + }; + 17C4D1B100C1DD4A037FBE78277C5EC6 /* NSDate_Utils */ = { + isa = PBXGroup; + children = ( + E4B65387584141E4B73D9E8C9135FCC3 /* NSDate+NSDate_Util.h */, + FC791EBC8F47DF84687F5296635D6A93 /* NSDate+NSDate_Util.m */, + A6FA2E1F7C39F9AC1D5A38DC52EB2DCE /* Support Files */, + ); + name = NSDate_Utils; + path = NSDate_Utils; + sourceTree = ""; + }; + 1950071845A2AA1B3847D04378579B1F /* StrongestPasswordValidator */ = { + isa = PBXGroup; + children = ( + 0BC0962C85EBD262178848F2222A5DED /* StrongestPasswordValidator.h */, + 4B6A6BE27963BB397D2EC941D0FF2BBC /* StrongestPasswordValidator.m */, + 665D34DB2ED8AE42506636A6B7D691E9 /* Support Files */, + ); + name = StrongestPasswordValidator; + path = StrongestPasswordValidator; + sourceTree = ""; + }; + 196354172FEBD1B7DEF09198CCF4789E /* AFJSONResponseSerializerWithData */ = { + isa = PBXGroup; + children = ( + BF1EBF6182F351F432E71FD681007AB1 /* AFJSONResponseSerializerWithData.h */, + 92FD59F1DE5437839C6B6000ADC62686 /* AFJSONResponseSerializerWithData.m */, + ); + name = AFJSONResponseSerializerWithData; + path = AFJSONResponseSerializerWithData; + sourceTree = ""; + }; + 1C85A9F62F012141BD1B23AB475B7CBE /* PEAR-FileManager-iOS */ = { + isa = PBXGroup; + children = ( + 737491033C5995F397812BB31A49216C /* PEARFileManager.h */, + F58166002875B7C79F42C9D089DD39EF /* PEARFileManager.m */, + 76B82BA83063E64D0BB86E8AFA4C2873 /* Support Files */, + ); + name = "PEAR-FileManager-iOS"; + path = "PEAR-FileManager-iOS"; + sourceTree = ""; + }; + 2170901C7C280F868438240B304D584A /* Support Files */ = { + isa = PBXGroup; + children = ( + 50F97EA3D808A9F24B8811FD64CF36EB /* CodFis-Helper.xcconfig */, + 510F585C11307EFFA19A465A785D935A /* CodFis-Helper-dummy.m */, + BA9E2A967B93E2CF530B3E6A5EFEF0C5 /* CodFis-Helper-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/StrongestPasswordValidator"; + path = "../Target Support Files/CodFis-Helper"; sourceTree = ""; }; - 778CE33306CB694AA0C6F05812FDEADA /* Support Files */ = { + 283A1859B10BC210351D0601F9D1C291 /* Pods-PNObject_Tests */ = { isa = PBXGroup; children = ( - B974DF4CA8DA1E3F909D94001247BFEF /* Specta.xcconfig */, - CC878F74315147F19195A5415CB303A3 /* Specta-dummy.m */, - F5F68821DF01DEDDBFADBA129FE921C1 /* Specta-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/Specta"; - sourceTree = ""; - }; - 7F421B1170AF2AF88DB304A16CA8EEB1 /* Resources */ = { - isa = PBXGroup; - children = ( - 1E62588F7356C7F221B843C41C203EDA /* FacebookSDKStrings.bundle */, - ); - name = Resources; - sourceTree = ""; - }; - 7F73DFE0F6C3BB80D4C9FA186FEEA13B /* Support Files */ = { - isa = PBXGroup; - children = ( - E808DBA591E14616D3B577B365B17005 /* FBSDKLoginKit.xcconfig */, - E32B065D58A2B4AFE2422A48B8F7A541 /* FBSDKLoginKit-dummy.m */, - 41BFFDBE6F1146FBAB6C96FF0DCD087B /* FBSDKLoginKit-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/FBSDKLoginKit"; - sourceTree = ""; - }; - 85A46AD6EC0D7213289D5D49A5838239 /* Support Files */ = { - isa = PBXGroup; - children = ( - A767ACB26E90B6BF3F068BD8A7D7D248 /* PEAR-FileManager-iOS.xcconfig */, - E4CC676077B9CDC8DD32E5EAA44E7D9D /* PEAR-FileManager-iOS-dummy.m */, - 7E6686024411EB6377B578E3E0F41A35 /* PEAR-FileManager-iOS-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/PEAR-FileManager-iOS"; - sourceTree = ""; - }; - 87C7523B9E79810E7824825D45D0BC9D /* Security */ = { - isa = PBXGroup; - children = ( - 2140789A5983168DFAF7DEE92DBF6852 /* AFSecurityPolicy.h */, - C17F6454E13C9663C48BEB635BE2105B /* AFSecurityPolicy.m */, - ); - name = Security; - sourceTree = ""; - }; - 8D0F69862052300DF2AE3AB882AAE0B3 /* Support Files */ = { - isa = PBXGroup; - children = ( - 31E6F40974F44283228E9FF7921B56FA /* PureLayout.xcconfig */, - 5D9E42CE4EEC9EEF2088501CDA95AE68 /* PureLayout-dummy.m */, - 3A641E713664C2AAC8E6A7686EF49A89 /* PureLayout-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/PureLayout"; - sourceTree = ""; - }; - 8F545676AE5C3DCEEDD8E9EA53A0541C /* Support Files */ = { - isa = PBXGroup; - children = ( - 8100D69BD5CF4CCFADDD69B9B33F2472 /* DDDKeychainWrapper.xcconfig */, - 030C92F2459CEF4CBBB7B4897D9D2380 /* DDDKeychainWrapper-dummy.m */, - AD056A75C0FACFFBEBD7CBD808EF17D1 /* DDDKeychainWrapper-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/DDDKeychainWrapper"; - sourceTree = ""; - }; - 91D7411AEDDB3CCBF19B7471D1CD7003 /* Pods-PNObject_Tests */ = { - isa = PBXGroup; - children = ( - 9CBAF0A86086D8A851FB9678AE4484F4 /* Pods-PNObject_Tests-acknowledgements.markdown */, - A3D264ED951D2178EDECFA6B4629A483 /* Pods-PNObject_Tests-acknowledgements.plist */, - 30F7AF67CB30B392C29AE6D0EEC80CDF /* Pods-PNObject_Tests-dummy.m */, - FF312BFA0B2DE97E3C73A236E2338259 /* Pods-PNObject_Tests.debug.xcconfig */, - E26534A32946BB6D27643A091DB4DB9A /* Pods-PNObject_Tests.release.xcconfig */, + 7FCFF08A29537D1442951D98A1998ADD /* Pods-PNObject_Tests-acknowledgements.markdown */, + DF66E8B16B0901DF8B3149C78781447E /* Pods-PNObject_Tests-acknowledgements.plist */, + 84A56B9A58AC73CA2C6AA15ACA5CC9EC /* Pods-PNObject_Tests-dummy.m */, + 326A77BF4B7DCB08FE6B514825B0E0AA /* Pods-PNObject_Tests.debug.xcconfig */, + 54E8B6E57FD33BB7E1EF92F1DD97E7DD /* Pods-PNObject_Tests.release.xcconfig */, ); name = "Pods-PNObject_Tests"; path = "Target Support Files/Pods-PNObject_Tests"; sourceTree = ""; }; - 9684CF5FDF19EE91B73E75B4F0DEE794 /* FBSDKShareKit */ = { + 29C6EEF346AB3DD5E8A148A4C105F6E6 /* Support Files */ = { isa = PBXGroup; children = ( - 85FF72C395AA6D3D18BFED154970FCE3 /* FBSDKAppGroupAddDialog.h */, - B7B7AF3EA14D9351A999E7AA062F3D5D /* FBSDKAppGroupAddDialog.m */, - 4F5EF72C72FCB505E53954C97066D9CB /* FBSDKAppGroupContent.h */, - 5F851E4CA569BD52B5BB72EA54B863FD /* FBSDKAppGroupContent.m */, - 1F10622A859F51223BFB3719B712B0DC /* FBSDKAppGroupJoinDialog.h */, - EA8278B5A64341179AC2522EC1D10CF0 /* FBSDKAppGroupJoinDialog.m */, - 4FB9BF4E318472196FE02A15F9E2FEBE /* FBSDKAppInviteContent.h */, - 31679FC9974982AA582E5C4B21F49015 /* FBSDKAppInviteContent.m */, - C2EC2E0E8FA24217C1F6578088D45AAB /* FBSDKAppInviteDialog.h */, - F1696D2F0700A48B91BA9A4ABAD47EFF /* FBSDKAppInviteDialog.m */, - A410EBF4B429E2F42DFD00471B526EE9 /* FBSDKCameraEffectArguments.h */, - F35F29B146D842F82150642B51EB152F /* FBSDKCameraEffectArguments.m */, - 42E8055272E870E86104349D6DA9B416 /* FBSDKCameraEffectArguments+Internal.h */, - 22D3FB3D32CFFB5A4A7F571CDF9BDD23 /* FBSDKCameraEffectTextures.h */, - 0F83F49018CE20D565DA7F1CB683A83F /* FBSDKCameraEffectTextures.m */, - 19490BAD0244A4E12B248DC26B839BA0 /* FBSDKCameraEffectTextures+Internal.h */, - 2E5B97B6101A57C96FE481CB9E613CCD /* FBSDKCheckmarkIcon.h */, - 38D833AB2284A684F816E4664C009E70 /* FBSDKCheckmarkIcon.m */, - 24BA06B392DB8D437D93EA2D46E6E6E6 /* FBSDKGameRequestContent.h */, - 241114E6ED48E89A7730832FCCDEF2DB /* FBSDKGameRequestContent.m */, - 0862998C4EB72A4814898F075366EA06 /* FBSDKGameRequestDialog.h */, - 3F60B0E02293AC8E709CD993C57467DC /* FBSDKGameRequestDialog.m */, - 72A35EB40312EF278B4D7F556322D40A /* FBSDKGameRequestFrictionlessRecipientCache.h */, - 550DF2E78B55F72CFDA12C2C72E41082 /* FBSDKGameRequestFrictionlessRecipientCache.m */, - 74E0F3CE5BE31E0656A2F19BF3F03490 /* FBSDKHashtag.h */, - 70007DF54ED17951A47EC0CAA5625152 /* FBSDKHashtag.m */, - 8508795C53C9A6012CA83D7EE10ACFF5 /* FBSDKLikeActionController.h */, - 70456E77233811453A50481D21DD9281 /* FBSDKLikeActionController.m */, - 93B638C25B25775A690E5D64EE127A86 /* FBSDKLikeActionControllerCache.h */, - 4F96D729DE3542FD79C39F64559159C9 /* FBSDKLikeActionControllerCache.m */, - 0FEA8B7E84F01F3C9999DC0CACEDA96E /* FBSDKLikeBoxBorderView.h */, - FFD15CE16D879EDCC9BB4CEE6E57E5A7 /* FBSDKLikeBoxBorderView.m */, - 51E1170EA7FE107E90826D0BF6FA9CC2 /* FBSDKLikeBoxView.h */, - 74DEDEDFF18AA47B62133705F28F80B8 /* FBSDKLikeBoxView.m */, - 8668A46046AD973E8CFBC1CE133B6786 /* FBSDKLikeButton.h */, - 14E45E0644E288274AFEECE47A2C0794 /* FBSDKLikeButton.m */, - 35F80D89CE379089B4C6871717BB4E80 /* FBSDKLikeButton+Internal.h */, - C38E84A00A266EE60FD62DAE91CFEA16 /* FBSDKLikeButtonPopWAV.h */, - CB220B5F21AADEB4889864CE03657F06 /* FBSDKLikeButtonPopWAV.m */, - A5A00FC655B7C980C7419EC45F43B13F /* FBSDKLikeControl.h */, - B199A3F2DA53DD054ACD84E1EFD468C6 /* FBSDKLikeControl.m */, - BBCA6B341ACD2A12FE0C81B01DBDF79A /* FBSDKLikeControl+Internal.h */, - 6EA832132E2F55847B7F7427B4434385 /* FBSDKLikeDialog.h */, - 36D218DC7AE122AFC8B53E9A609D15D3 /* FBSDKLikeDialog.m */, - F888697534D7DD7964A73F8BB7FD9CE7 /* FBSDKLikeObjectType.h */, - 0221477A84DB7AE745BA7E5137425706 /* FBSDKLikeObjectType.m */, - 727606916A3164048FD93AB35F980937 /* FBSDKLiking.h */, - F3D0DCE4A54E49B927ADFE291C35DB38 /* FBSDKMessageDialog.h */, - 5142FF672B17019276C209CC0276D25D /* FBSDKMessageDialog.m */, - EC8DA29AE18A76F41A348FF6AB8B379C /* FBSDKMessengerIcon.h */, - DA24B1B4D51C15879627A5F0E9DF3FE1 /* FBSDKMessengerIcon.m */, - 8C85018DCA4E8E1BBF28EF811D48B21B /* FBSDKSendButton.h */, - 2CD4FEDA02383F2282ECAB7B869631CA /* FBSDKSendButton.m */, - 442A70A7AF5B4BD3ABC94F1AF9551DE7 /* FBSDKShareAPI.h */, - 6E949BF07B3F978082F8A7982FD247F0 /* FBSDKShareAPI.m */, - FE722832EC472C5E16F1AC80C1BA9576 /* FBSDKShareButton.h */, - A1A22D9D64368A6444DAADD596284647 /* FBSDKShareButton.m */, - 0E6A0C46FA248391EC2345394188BDF1 /* FBSDKShareCameraEffectContent.h */, - 327F45E58558B5326C9A46FFB8400296 /* FBSDKShareCameraEffectContent.m */, - FFE608C9A0239AD81100BCF0613F55A9 /* FBSDKShareConstants.h */, - 1719F88393B42FE2CE9453D442D4C897 /* FBSDKShareConstants.m */, - 2EDE351C77B8E516588EE281F458DD05 /* FBSDKShareDefines.h */, - 0B4725411032D487B7C207E9F2B84E0F /* FBSDKShareDialog.h */, - 89C30A5ECEA9C68DE0DAE413425CF012 /* FBSDKShareDialog.m */, - 6BA89D73886C8179F2DD51EECA66C779 /* FBSDKShareDialogMode.h */, - 04A827A2BA23752A42665F07AA763ED5 /* FBSDKShareDialogMode.m */, - CDF23647D254D7A667873235587D1E57 /* FBSDKShareExtension.h */, - 6CE006B6D683D6F48FDAFFA2B0CDE738 /* FBSDKShareExtension.m */, - 102CF1BFC6BD44D8F2ED514A3FEB9C52 /* FBSDKShareKit.h */, - BF557EE92E2C1880BDEE22CE07CE5430 /* FBSDKShareKit+Internal.h */, - 9DEC7C6B47E639C82F7B3B5A8B3EF45E /* FBSDKShareLinkContent.h */, - C6B90089F681632D8939C7088B7F7DA1 /* FBSDKShareLinkContent.m */, - F2BB3A37FE79EFDC3B9E6F1C8D1BF15C /* FBSDKShareLinkContent+Internal.h */, - 4ED48EC5F3BB981EE45BBFCFD85B5019 /* FBSDKShareMediaContent.h */, - 46335ECEC631F753490EF43F7DE7F5B2 /* FBSDKShareMediaContent.m */, - AF49B9332E839F16E347B598440301F3 /* FBSDKShareMessengerActionButton.h */, - 68119EB2898F2D1707ADCAC372FB92B9 /* FBSDKShareMessengerContentUtility.h */, - 76F263BA13CB6D200FFCFB703248D796 /* FBSDKShareMessengerContentUtility.m */, - 23DD6EC6D7063AA5D086642C0CFBA167 /* FBSDKShareMessengerGenericTemplateContent.h */, - A2DA433F3522890248D9DAB1D97CB95E /* FBSDKShareMessengerGenericTemplateContent.m */, - 41F94E6B5A268FBAD5F4EDEDD7779603 /* FBSDKShareMessengerGenericTemplateElement.h */, - 58D5028E4C8BCED2E915CA3B6EFD6441 /* FBSDKShareMessengerGenericTemplateElement.m */, - B970FAC57B92374DEEBD5FBED0713E0D /* FBSDKShareMessengerMediaTemplateContent.h */, - 1B3E40CD864FC71A372F7F9A38931946 /* FBSDKShareMessengerMediaTemplateContent.m */, - 6FF0409608986977B99F59A93A1CA8D6 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h */, - A24D3345D779CB0F2EED4746C0D36DAA /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m */, - 4C194550C79BFF4F3BD784E2F397905E /* FBSDKShareMessengerURLActionButton.h */, - 56A6EA8EAE6DEF723DCDD633912B55A2 /* FBSDKShareMessengerURLActionButton.m */, - 1287BDC30BBDE83DF240B0C744F57674 /* FBSDKShareOpenGraphAction.h */, - 7384B5AEB63E0040B3EF5101BCCA576F /* FBSDKShareOpenGraphAction.m */, - F01B1A800F49F2274FC123B2C8BC8A5A /* FBSDKShareOpenGraphContent.h */, - 4FEB1FA457053F713CF353AD6F0409CC /* FBSDKShareOpenGraphContent.m */, - 83EE9D0B8A3BA39B486D7C39861C7CB8 /* FBSDKShareOpenGraphObject.h */, - 8728096184D423AA616318E7342FC705 /* FBSDKShareOpenGraphObject.m */, - 1022E78850B9799A390121FA4E72649E /* FBSDKShareOpenGraphValueContainer.h */, - BAFD4DC2FDE6045F22F8CBC783903256 /* FBSDKShareOpenGraphValueContainer.m */, - FB090B9C628CEEFBDDAC406092F8D085 /* FBSDKShareOpenGraphValueContainer+Internal.h */, - 5AD30B20662249C3967C75F41F99FECD /* FBSDKSharePhoto.h */, - CDB23D4DE44B47E81839DCFC38357489 /* FBSDKSharePhoto.m */, - 0BC6D7BF53C698B7C45AF9D9581E70B3 /* FBSDKSharePhotoContent.h */, - DA33A6F563BC549ABBF2614E294A7A88 /* FBSDKSharePhotoContent.m */, - 557C5C3EF93AA53A21DEF5D79BD826AA /* FBSDKShareUtility.h */, - E0882FA044EA8CB080A8FAB44BA9A906 /* FBSDKShareUtility.m */, - 9521C06B9845141BD23CA3B646A34D8A /* FBSDKShareVideo.h */, - 1FD4ECA15BFD23F6048602A09043402B /* FBSDKShareVideo.m */, - 21307D8E64F587BFE50B6D8F35471A1D /* FBSDKShareVideoContent.h */, - A80F4CA4A07D4C646662DBBF273551CF /* FBSDKShareVideoContent.m */, - 4338430881B368C3FD1BE9A2FC71B3D2 /* FBSDKSharing.h */, - 28D39904B2DFABE6683F8674EC6099E6 /* FBSDKSharingButton.h */, - 2D8615B58E1B612FA1DBF2A386AFA870 /* FBSDKSharingContent.h */, - A5BEBF002E637D9105337027ED351A51 /* FBSDKSharingScheme.h */, - 7EB779AE5CD8F55FA700C0EBA7148870 /* FBSDKSharingValidation.h */, - 348915D5410F79D9A4C2A5BA76CA8B3A /* FBSDKVideoUploader.h */, - 7038F673E9E3DFFA8B59D3F6B8F21FC0 /* FBSDKVideoUploader.m */, - DBA157B639AB6EFFA32D6F34858872C9 /* Support Files */, - ); - name = FBSDKShareKit; - path = FBSDKShareKit; - sourceTree = ""; - }; - 99B4FFD31BE14E0CD72A04BA8E764B77 /* nv-ios-http-status */ = { - isa = PBXGroup; - children = ( - B9BB38B31600C2898B43E4370DC1DEBC /* HTTPStatusCodes.h */, - 3F1B10111FE3A6954232AD285EF2B061 /* nv_ios_http_status.h */, - C0B91BF7F5022663D654DC2E26B78A76 /* nv_ios_http_status.m */, - FD01EED2C5FB40A17E8334B2B77B1886 /* Support Files */, - ); - name = "nv-ios-http-status"; - path = "nv-ios-http-status"; - sourceTree = ""; - }; - 9B1E11BE9CD437F34A300803B0BCC327 /* Support Files */ = { - isa = PBXGroup; - children = ( - 8F20D0DD94419EF67235F760733EBDF5 /* Bolts.xcconfig */, - 418E169913134AAC85D7BD3CB9C4D4E7 /* Bolts-dummy.m */, - 634EF06960C2EA2CB352B3822D6E9983 /* Bolts-prefix.pch */, + E0D6474DCE1AF34AA6DE32F3AE5A8BE2 /* AFNetworking.xcconfig */, + E8941AD9D7EA5003CE7CDC855337856F /* AFNetworking-dummy.m */, + B88451A97815730A93036C9735C0AB4E /* AFNetworking-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/Bolts"; + path = "../Target Support Files/AFNetworking"; sourceTree = ""; }; - 9C14AC65C0ECDB396BF8B2A35563E367 /* Support Files */ = { + 2CD4455BDE9C08897CEC0637CB6EDAED /* Support Files */ = { isa = PBXGroup; children = ( - 9D3D9CE8344FE9BA48FA805E55B25E44 /* NSDataAES.xcconfig */, - F4F14083CD0AE5C686561B2C6BE053C1 /* NSDataAES-dummy.m */, - D455F52AB6A4518B496C8B5D131DC935 /* NSDataAES-prefix.pch */, + 421E501380BC5F366098BA168E9DBC05 /* Specta.xcconfig */, + 79F4FFDC3C9C25E846E0965C26D5BF60 /* Specta-dummy.m */, + 6BE02784A89255757744839A608AB1B3 /* Specta-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/NSDataAES"; + path = "../Target Support Files/Specta"; sourceTree = ""; }; - AED3A1FA84DF9C2862BEE6DD0F4E7CB2 /* NSDataAES */ = { + 325F2740088AAFDC62CA3BD6EC43CB71 /* PureLayout */ = { isa = PBXGroup; children = ( - 8D3010A0367831EE82017D8EB41781DA /* NSData+AES.h */, - 726D8B7EE69194657847796A7870362D /* NSData+AES.m */, - BC10EA8FFDF08A2DB1D765F329EECAD7 /* NSData+AESKey.h */, - 707B3A1063FE330DDF1BDDC42C35B478 /* NSData+AESKey.m */, - A053D1FBB84B51F2751692C804B1499C /* NSData+AESValue.h */, - 66C2E247EB99AC60927C83B23AFF5B0E /* NSData+AESValue.m */, - AB921BAA0B87876CB598B74CC15965DF /* NSData+SHA.h */, - 7367038DADDD1891DC469540DB3387E4 /* NSData+SHA.m */, - 7579A421D264AD066DACAF48D5B02B7D /* NSDataAESCipher.h */, - 11BDA3A15607E417EA80DDE9DE585029 /* NSDataAESCipher.m */, - E075F16267D1B23E02CE22AA226F390A /* NSMutableData+AES.h */, - 89741F7CC818B4B06019F65E6832BD0F /* NSMutableData+AES.m */, - 9C14AC65C0ECDB396BF8B2A35563E367 /* Support Files */, - ); - name = NSDataAES; - path = NSDataAES; - sourceTree = ""; - }; - AF4D4F8C42CE3C9C29B4B8BD3FCD1DA8 /* Pods-PNObject_Example */ = { - isa = PBXGroup; - children = ( - 5B8F900387E73048FD26190B5511D047 /* Pods-PNObject_Example-acknowledgements.markdown */, - 4C2C251F2AB2A17DD75A544D61B7CEEA /* Pods-PNObject_Example-acknowledgements.plist */, - 1A1E3FFC89E664CB08207E423CDF1CB6 /* Pods-PNObject_Example-dummy.m */, - 27309D7B494D4D0C91D90ECB6DE93BCA /* Pods-PNObject_Example-resources.sh */, - D79DDCD261B4B3043A499A1F3C17682E /* Pods-PNObject_Example.debug.xcconfig */, - F9FD130E49D5F3EDC423BC59ABCE061B /* Pods-PNObject_Example.release.xcconfig */, - ); - name = "Pods-PNObject_Example"; - path = "Target Support Files/Pods-PNObject_Example"; - sourceTree = ""; - }; - B247099FC0A31A785D168A060D3CB955 /* FBSDKPlacesKit */ = { - isa = PBXGroup; - children = ( - 72AE50F1F02EF4E9A375EF76D14FCB49 /* FBSDKPlacesBluetoothScanner.h */, - 8B710FBF14B5F01B7DACDD8307EE0241 /* FBSDKPlacesBluetoothScanner.m */, - 1EAC68E37B0CC26B916B2C972ED26B29 /* FBSDKPlacesKit.h */, - D4A3F38EC44363F5BC4284848207155F /* FBSDKPlacesKitConstants.h */, - BFCB440772958796BDAC1EE3004D4871 /* FBSDKPlacesKitConstants.m */, - 5E3F7880B2158C8011C87CF6C9743E27 /* FBSDKPlacesManager.h */, - 86E6DCB5CC9057A882CF430FD43FCA28 /* FBSDKPlacesManager.m */, - 52CE345C4B925D212F4F64545BA9EF92 /* Support Files */, - ); - name = FBSDKPlacesKit; - path = FBSDKPlacesKit; - sourceTree = ""; - }; - BA77D310356A324C9476043870971805 /* DDDKeychainWrapper */ = { - isa = PBXGroup; - children = ( - A12D650526A67F373774663DA15A225B /* DDDKeychainWrapper.h */, - 93176C2E368BA455CC3DA70528CF96FB /* DDDKeychainWrapper.m */, - 8F545676AE5C3DCEEDD8E9EA53A0541C /* Support Files */, - ); - name = DDDKeychainWrapper; - path = DDDKeychainWrapper; - sourceTree = ""; - }; - BFF56D7D5A6BDABB76E62D9C488F785D /* Support Files */ = { - isa = PBXGroup; - children = ( - D017C92EC445A44A8CB4710C103CFCE4 /* RZDataBinding.xcconfig */, - 5C006FBBC73377EC9A4431A356710F5A /* RZDataBinding-dummy.m */, - 735F4821B0A89E9D75A8FD4C82D2182A /* RZDataBinding-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/RZDataBinding"; - sourceTree = ""; - }; - C02231A18B5681E103AC4C1E01CDD21C /* PNClasses */ = { - isa = PBXGroup; - children = ( - FE44E0CB7E59F22EC909AA1CE0B0833A /* PNAddress.h */, - F1A06D1F7E18B0171C5B4A4E8DFCBADA /* PNAddress.m */, - B3F2045E1B5721C1ABEC5D62D592C4C2 /* PNInstallation.h */, - D6FF72EAB049F36694ED80195CEFB913 /* PNInstallation.m */, - A4419967EB400220B04C43140AB234A3 /* PNLocation.h */, - FC63360F75920E73E70A8F8A94B37976 /* PNLocation.m */, - 353419D5AE11FB9175B1D26E5AE288F0 /* PNObjcPassword.h */, - 4A3B2AF6253FF385B19D746BC3421E1A /* PNObjcPassword.m */, - 13428BB285271A36CCEED4F3ECFB667D /* PNUser.h */, - 36990228D26480FC0CD775CFAB1D6C05 /* PNUser.m */, - ); - name = PNClasses; - path = PNObject/Classes/PNClasses; - sourceTree = ""; - }; - C037EA72F84C3E18E76D20FB67B16F2C /* Expecta */ = { - isa = PBXGroup; - children = ( - 27DD44A926F61A51075B512EBE47392E /* EXPBlockDefinedMatcher.h */, - 64E33BD2479294C9D42CCAE10E99D628 /* EXPBlockDefinedMatcher.m */, - DA932ECCF24384784CD1237378076B34 /* EXPDefines.h */, - 27AF4F86F743BDEFCCD6F45E4E8806D4 /* EXPDoubleTuple.h */, - 8BDB69F27DB5EB0E81E9C070DD9433B7 /* EXPDoubleTuple.m */, - 229E4B42AEB7173DF9150585C9BD3BD3 /* Expecta.h */, - 964B53AAE68DDABD727A9EA8BC348AAD /* ExpectaObject.h */, - F961523E35F56B47186A1BEB60D9F938 /* ExpectaObject.m */, - A96A81448CFB04966D204959D007DCAF /* ExpectaSupport.h */, - D607292FA0EDC05A47EE34EFD7F7DB8A /* ExpectaSupport.m */, - 4451BB26B646DD6B5974BD3BFA3FE0EC /* EXPExpect.h */, - 20FEABFE1CEDC4D9F325D07DB76ADF46 /* EXPExpect.m */, - B40C2594CD425E72DD20993A7B76A99C /* EXPFloatTuple.h */, - DD44F8C72BB19AAF2BDFBA1D2DBAFEDD /* EXPFloatTuple.m */, - BB72CAC232E284BB20997A0E504D4C81 /* EXPMatcher.h */, - B98D238832E1EBB4A426476C4DB4D052 /* EXPMatcherHelpers.h */, - 2A63C66BED0B466E36F0F993C7BE4315 /* EXPMatcherHelpers.m */, - C0F2D5FAF356B29232D4981538F0FC2E /* EXPMatchers.h */, - BFB183FB9A8C21E8A1B2C2BE3514728A /* EXPMatchers+beCloseTo.h */, - FCC4E649557ED5D3291F71B4D89FAB43 /* EXPMatchers+beCloseTo.m */, - AD2A3BEF3CD518D6BD82EC679DC60DCD /* EXPMatchers+beFalsy.h */, - C58561CD2B4083F279873492FE620845 /* EXPMatchers+beFalsy.m */, - F9E40DA91ACB8A442FC9A18D88852045 /* EXPMatchers+beginWith.h */, - 01AF86DAC152D8BE492546EFBBECD676 /* EXPMatchers+beginWith.m */, - 3292D60C81D863C85DB658AE02DBD614 /* EXPMatchers+beGreaterThan.h */, - A272C53D2709EFE1A8745B50DAC95A0A /* EXPMatchers+beGreaterThan.m */, - 5F3C82CA9BCD1A5B0FCEF6FF7F9B5DFF /* EXPMatchers+beGreaterThanOrEqualTo.h */, - CE1F0C213F4FF21C08A1F9C246A7E24E /* EXPMatchers+beGreaterThanOrEqualTo.m */, - 6E41A3FB8FF46EA229ABE19782E1520E /* EXPMatchers+beIdenticalTo.h */, - 3A05C4E0D355A8375AC32F33F3798FED /* EXPMatchers+beIdenticalTo.m */, - 7619B1BF2E2D702CCAAFA00584962DF7 /* EXPMatchers+beInstanceOf.h */, - 3158077E76A8DF4FD04C623F11FFBC28 /* EXPMatchers+beInstanceOf.m */, - AC78466C6503F2605491E70FBA411AD0 /* EXPMatchers+beInTheRangeOf.h */, - FF4CC77D3D95971AC00DCFC797DD324A /* EXPMatchers+beInTheRangeOf.m */, - DFE96E0182677627BF9004910D997204 /* EXPMatchers+beKindOf.h */, - BB09A21246937F41D7479DD7D904734E /* EXPMatchers+beKindOf.m */, - 460EDB379472C44703E3A25B51ABCB69 /* EXPMatchers+beLessThan.h */, - EEB4228586192CAD4EB36147216A3AFE /* EXPMatchers+beLessThan.m */, - 49BD041C7E0E4CC5D7F744C8E72E13DF /* EXPMatchers+beLessThanOrEqualTo.h */, - 8E95CB506B2439A75B5B95A981BF41DC /* EXPMatchers+beLessThanOrEqualTo.m */, - B37CD7F5B03C088CAE63670A3B0F4409 /* EXPMatchers+beNil.h */, - 49326D405F247F73110BCF8B55BE3036 /* EXPMatchers+beNil.m */, - A7851BDC39CD46B37607CBE96FF362DE /* EXPMatchers+beSubclassOf.h */, - 3150ABF5C9C0D2822665AFE650D52922 /* EXPMatchers+beSubclassOf.m */, - ACEE1C7FF14C3816B1FBAAA85CA1C308 /* EXPMatchers+beSupersetOf.h */, - EB1CD55C50641A9849B06F1F765F5006 /* EXPMatchers+beSupersetOf.m */, - 5A71DEAFC5D1009BF6562C06AC1F291C /* EXPMatchers+beTruthy.h */, - F9068CD92F1AE7C3DD8B51A8D42A35FA /* EXPMatchers+beTruthy.m */, - 72EFF8E7F7BAA04608D76AC14CCF31A2 /* EXPMatchers+conformTo.h */, - 3D83C014061E0574D9D69E704DE50470 /* EXPMatchers+conformTo.m */, - C7260A05BAD8E247C27CF35AED4D6DAD /* EXPMatchers+contain.h */, - 9287095BE84FE3329CB5E8222A1E260F /* EXPMatchers+contain.m */, - 226B2BC5EAF4EB8468B2C989D5CD0806 /* EXPMatchers+endWith.h */, - 2CF577695B20B43B340A19B7A913A702 /* EXPMatchers+endWith.m */, - CB203005E7E1F9F462978DC12B1A7C62 /* EXPMatchers+equal.h */, - 16390584C10137F0595960B2FFEEE130 /* EXPMatchers+equal.m */, - 09DD98B79912EB2484843E3D95FE4F75 /* EXPMatchers+haveCountOf.h */, - E9DBFA6CE29F0364CCDAD26D5C469E45 /* EXPMatchers+haveCountOf.m */, - 2879F575FF8553684935318188B30284 /* EXPMatchers+match.h */, - 2AD7726578AEDB853810856C4C23EDA0 /* EXPMatchers+match.m */, - 12FCAC125C461790BE3DD5F1BA62F2AF /* EXPMatchers+postNotification.h */, - D4BB00D2BD5D097C64D11D9F9E5C72A2 /* EXPMatchers+postNotification.m */, - D4F81C19AE74129BA00955CCAD756210 /* EXPMatchers+raise.h */, - 5B782BC239707388476B0CA2E1DE9758 /* EXPMatchers+raise.m */, - C5BFAB2A8ABAE3F37496DF1732892309 /* EXPMatchers+raiseWithReason.h */, - E12197EC5BF60887660A76FD829E8A0E /* EXPMatchers+raiseWithReason.m */, - 79B189EBE40BC1ECF4D06618B33E43CF /* EXPMatchers+respondTo.h */, - 0D97CFF2F987725B6B78D935EFA9B76F /* EXPMatchers+respondTo.m */, - 50EDCC7C13811E7B32FDF02A0A6FAF92 /* EXPUnsupportedObject.h */, - E7290D84AFA95237D882664949AF43FD /* EXPUnsupportedObject.m */, - B3CB76C1DA8AACA2180A1159A901850A /* NSObject+Expecta.h */, - D901E6042A710EE92A50F390A2385645 /* NSValue+Expecta.h */, - C9FDBF97257B999F0518CC9DAAE4D1ED /* NSValue+Expecta.m */, - 4CB48136ED5FD9630E47F84D3271CA6E /* Support Files */, - ); - name = Expecta; - path = Expecta; - sourceTree = ""; - }; - C22981D6CE8CB2DAFD2A972391948212 /* Serialization */ = { - isa = PBXGroup; - children = ( - 4F73CA776F3A066330DE862E1DA100CE /* AFURLRequestSerialization.h */, - FAD7F6532EF00AC46B5CBCFE444BD15B /* AFURLRequestSerialization.m */, - 8B6430A4D020AF934C8EB61D5A8C4093 /* AFURLResponseSerialization.h */, - 6A0F2D27F7A09E8498AACAE42D7A1780 /* AFURLResponseSerialization.m */, - ); - name = Serialization; - sourceTree = ""; - }; - C514CAF3D056E818FFB9104772AA2E23 /* Support Files */ = { - isa = PBXGroup; - children = ( - 62DEC9E410DDF1DC24C23EC0AED57DBB /* DJLocalization.xcconfig */, - 33444B08145A331D85B322E2FFD5B509 /* DJLocalization-dummy.m */, - C450FB8101F80213A8D64A70189DF04F /* DJLocalization-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/DJLocalization"; - sourceTree = ""; - }; - C60F2E8B2A78381129824BB0DE6EAC01 /* AppLinks */ = { - isa = PBXGroup; - children = ( - 47B0EEF66C09BC69BEE0F1E6EA4E4E5C /* BFAppLink.h */, - E08596D6F1F254C28C3372465E1EE717 /* BFAppLink.m */, - 4C5310533EB4F9ABFC5B143636A802B4 /* BFAppLink_Internal.h */, - E1DB759BDF514710BD51B507072523B1 /* BFAppLinkNavigation.h */, - 880BBE3B833545E556508AED24391025 /* BFAppLinkNavigation.m */, - 3D119B74AEEE53B239E3BF8A882A4E1D /* BFAppLinkResolving.h */, - 80242BBD0563FE70C2FEEBCCD6A018A6 /* BFAppLinkReturnToRefererController.h */, - 4905BBEB19AAE0AB35F26F8F0A891C9B /* BFAppLinkReturnToRefererController.m */, - BD361E1A52D3B43FC0C15423FFE233E6 /* BFAppLinkReturnToRefererView.h */, - A576F08EE335C908C31799B2A12030B9 /* BFAppLinkReturnToRefererView.m */, - 5710DEE324135045C5E85E1EDBBFEE49 /* BFAppLinkReturnToRefererView_Internal.h */, - 4C762EA4AA67E9FDAB588DA182CE79AC /* BFAppLinkTarget.h */, - 1C7778B2EAD7BBE9F8A0E77CB9269BB8 /* BFAppLinkTarget.m */, - 0E71E04C89033BABA0BA2AE1FBFB36C9 /* BFMeasurementEvent.h */, - A09BCDD2BCA71DE80AC4A9533FD9D46A /* BFMeasurementEvent.m */, - D2A21159AA1DCA73B83A40AB029D6D60 /* BFMeasurementEvent_Internal.h */, - E5D8891444EE9ACC6E67DA9AB862D8A8 /* BFURL.h */, - B080D071620CA9EB75BE1155F0AA0BB1 /* BFURL.m */, - 95ACDC86CD9D2A9C67568F9E6340034D /* BFURL_Internal.h */, - 316F52AA93E18FEB28CC7AF2689318DE /* BFWebViewAppLinkResolver.h */, - CA5B655BF6FF4897556A74A8A3A66AD2 /* BFWebViewAppLinkResolver.m */, - ); - name = AppLinks; - sourceTree = ""; - }; - C653B99C7F6E27C3D0A933E2B08EDB42 /* NSString-Helper */ = { - isa = PBXGroup; - children = ( - 77974FF94F96E1308ACF8A44CD26A33B /* NSString+Helper.h */, - F27AD68924104919A000C0F1AF24933A /* NSString+Helper.m */, - EFA97131BD23ACC22BEC06AE14D43652 /* Support Files */, - ); - name = "NSString-Helper"; - path = "NSString-Helper"; - sourceTree = ""; - }; - C9FFBEDE7648A107F25A6A0EDA624047 /* PureLayout */ = { - isa = PBXGroup; - children = ( - DC190C2584B64F33B43E412E2B921F48 /* ALView+PureLayout.h */, - 0B4493384AD7A2DCE8136BE1E319516D /* ALView+PureLayout.m */, - E4A2FE75AF2CA28250A88813CAC29FA8 /* NSArray+PureLayout.h */, - B3019F0E31A4BEE27714C2F10B1F5FD0 /* NSArray+PureLayout.m */, - DBA00107A9AD6F2C91F50776BE1E0A98 /* NSLayoutConstraint+PureLayout.h */, - 9FCD223F9878F02F67107144335D6B1B /* NSLayoutConstraint+PureLayout.m */, - 282ABE16C6FF308F3CEC6206019493BE /* PureLayout.h */, - 94A18D545C1EE623676C8F1CE1CDFC68 /* PureLayout+Internal.h */, - 7918A7BE17EAA3CEF419426BD6E3D39D /* PureLayoutDefines.h */, - 8D0F69862052300DF2AE3AB882AAE0B3 /* Support Files */, + BE70CAC82850A6F70D65E76BCC1822B7 /* ALView+PureLayout.h */, + F4CD0649E2166455008350FF470C8CB6 /* ALView+PureLayout.m */, + 79563E5CDB341577431723D647970A42 /* NSArray+PureLayout.h */, + 88EBBAC652074BC6E4238476EA9A52C0 /* NSArray+PureLayout.m */, + C7567BFFFC22DE8DF7536E547D076500 /* NSLayoutConstraint+PureLayout.h */, + 931DBB5DF436CADD0AF0B212894199EF /* NSLayoutConstraint+PureLayout.m */, + E168ED7FBC6679698B8AA7CE74CD125B /* PureLayout.h */, + 1A618958FDEFB746E717DCF8065B27CA /* PureLayout+Internal.h */, + B98AB195D3D41840EE0E7ED7C01D8370 /* PureLayoutDefines.h */, + 9F69FEBCF5374A03C0138DAA7CA5D9B2 /* Support Files */, ); name = PureLayout; path = PureLayout; sourceTree = ""; }; - CDAB06A7C7053F47214C6E41985D3F9C /* AFNetworking */ = { + 39BF901945D69681EB463970902070B2 /* Support Files */ = { isa = PBXGroup; children = ( - 15945FC869A967AA2CE0A303D4CF9FF5 /* AFNetworking.h */, - 52373B3E7ACB754771F53A3A42BD0C11 /* NSURLSession */, - FC86C4BB19FE88FE0374158B0E3D8400 /* Reachability */, - 87C7523B9E79810E7824825D45D0BC9D /* Security */, - C22981D6CE8CB2DAFD2A972391948212 /* Serialization */, - 1DF86D7EF72DF7DFF4E1A21C926D7204 /* Support Files */, - 4BD7E679DD020DB080B45CB56F98222C /* UIKit */, + 01A52256CE7C8FFF4CF5E430DCAC06E9 /* FBSDKShareKit.xcconfig */, + 6D7159B1A9D4B285709620EF6DFB4B5B /* FBSDKShareKit-dummy.m */, + 2BBBC0494C6D8E302B4FFF2151F459EC /* FBSDKShareKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKShareKit"; + sourceTree = ""; + }; + 39C0B51F53E87EF29D3042FB6653634B /* AFOAuth2Manager */ = { + isa = PBXGroup; + children = ( + 0585A4D7B8316CF8C4B838FE63E34690 /* AFHTTPRequestSerializer+OAuth2.h */, + F7EDF49E14E6E707D6934656A5378941 /* AFHTTPRequestSerializer+OAuth2.m */, + FF26A81D3DD4C37A3232FFAB6A6722A1 /* AFOAuth2Manager.h */, + 1910972025C0A3811CA6B891AC5E7445 /* AFOAuth2Manager.m */, + 04DEFF5ABB743AF7640F7976419E8506 /* AFOAuthCredential.h */, + 2694CAD098705CB36D133B33B21A64A9 /* AFOAuthCredential.m */, + ); + name = AFOAuth2Manager; + path = AFOAuth2Manager; + sourceTree = ""; + }; + 3AB06D86A872FCF452805BE294FC1146 /* Support Files */ = { + isa = PBXGroup; + children = ( + BCFD9CE791BADA4DBD7DB07060E711D3 /* NSDataAES.xcconfig */, + F7BDD62FF3F5C3CC6A274EE7026C8ECE /* NSDataAES-dummy.m */, + 63EABFD3FAEBACAB2FF4F0234E830C60 /* NSDataAES-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/NSDataAES"; + sourceTree = ""; + }; + 3D037B8D3E1C072665489EAD7D6A478F /* Support Files */ = { + isa = PBXGroup; + children = ( + 2D05AD56E1E7895EAB52A8DDC00125CD /* RZDataBinding.xcconfig */, + BA407A678EACC9F2DEB0185DE6D7F95E /* RZDataBinding-dummy.m */, + F4623E1ABFA7F250EE4B523CCD780C68 /* RZDataBinding-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/RZDataBinding"; + sourceTree = ""; + }; + 49C4B1EB7C27065F0393B3CD2DC6C62F /* Expecta */ = { + isa = PBXGroup; + children = ( + F061933CE5061B1ED24F6F671F836479 /* EXPBlockDefinedMatcher.h */, + 79677632BDAB1A6B971D056E251BA26D /* EXPBlockDefinedMatcher.m */, + 1F65782E2CB6FB7322EA695EB7C30BF5 /* EXPDefines.h */, + 5B86D5CF72EADDEBD38F7252545B55DA /* EXPDoubleTuple.h */, + 4768A9C6013B0D59F546A8E580314D07 /* EXPDoubleTuple.m */, + 230613DA21063BA374344D2AF71E64F6 /* Expecta.h */, + 2B454729F5EA166707A655DDA29E5C78 /* ExpectaObject.h */, + C333064FF91CC3B29E8DA3FAED4852E1 /* ExpectaObject.m */, + C268799ABC759821B1BA9064BD537007 /* ExpectaSupport.h */, + 6EBCF19657BC2856CEDCFB486B1DDA66 /* ExpectaSupport.m */, + 11B40AD33B009F8CE971455A1FA2D593 /* EXPExpect.h */, + 3D8E3BB5C5B32D155372E60B95AF2755 /* EXPExpect.m */, + B498833DF65EF5F6A923FBC2A4A80B7C /* EXPFloatTuple.h */, + 4995F1014F606C673716C0CE60010E47 /* EXPFloatTuple.m */, + 1B39E35E4965B54F6A34E661EB8AAAB5 /* EXPMatcher.h */, + 1647A3E77AE17C5F75573847BFF8053A /* EXPMatcherHelpers.h */, + C689C9A0453789D01E90675C058F8F3A /* EXPMatcherHelpers.m */, + 53841912EF195E68988ECF1B8296A94C /* EXPMatchers.h */, + CB6696088E5A6C9B0FD73CB2B38EAF83 /* EXPMatchers+beCloseTo.h */, + 48468FCCD7C9AAA18C34A90AE8C78A31 /* EXPMatchers+beCloseTo.m */, + 1FE96923F0CDBEA77D75D44455A943D8 /* EXPMatchers+beFalsy.h */, + F13955BC26ADB3F027F97DED8A31397B /* EXPMatchers+beFalsy.m */, + 3B612F7111746B3D800CC013BDA56FB1 /* EXPMatchers+beginWith.h */, + 18A8135050CEE2F3D458A8B0D7FA6CD9 /* EXPMatchers+beginWith.m */, + 9D3986655DF78BE1627AD25669F7917F /* EXPMatchers+beGreaterThan.h */, + 9770CC7D6AE8CC86B62BDC5746E6044B /* EXPMatchers+beGreaterThan.m */, + 47FA866A06F3B382F4D8157612A3E285 /* EXPMatchers+beGreaterThanOrEqualTo.h */, + 1F42210398D96D2542A18AB72A735CA3 /* EXPMatchers+beGreaterThanOrEqualTo.m */, + 1D5F0AB7CCB95D5660C1CB68383975CC /* EXPMatchers+beIdenticalTo.h */, + 610F8746DECF126B1DBF4C5158552EB4 /* EXPMatchers+beIdenticalTo.m */, + 72CC98D51B662AAF1F8309EECDEFD5CF /* EXPMatchers+beInstanceOf.h */, + B59E36152C586B9F2C6B47CB2B3B2BFC /* EXPMatchers+beInstanceOf.m */, + ABD73E7380E8484CE384D185D857A403 /* EXPMatchers+beInTheRangeOf.h */, + 2A05D2404EF3D8FDD1CFE4186752A8E5 /* EXPMatchers+beInTheRangeOf.m */, + A0B24FAFA4AB3C187C7B848EBE928E7D /* EXPMatchers+beKindOf.h */, + 8E22F633219F8A012A3A54523797CB23 /* EXPMatchers+beKindOf.m */, + CA7CAD525621833F2B52EBEC7F7F6A45 /* EXPMatchers+beLessThan.h */, + 8A3A1BEB7D92DEAF7C63D2F9E861F439 /* EXPMatchers+beLessThan.m */, + 0AD4791D9F4FCABA1938A671283DC1EF /* EXPMatchers+beLessThanOrEqualTo.h */, + F98E70D66DE0111A380E283FE4E1967A /* EXPMatchers+beLessThanOrEqualTo.m */, + E9E60D273FC77D061562B01AA241275B /* EXPMatchers+beNil.h */, + 75A789E504CF93C16DF08CE7BB92EF43 /* EXPMatchers+beNil.m */, + 2CC6852DAD5208810D3BBA0B9D4BAC5A /* EXPMatchers+beSubclassOf.h */, + 0470F435D4BB833B1C1AEB7FE464DB10 /* EXPMatchers+beSubclassOf.m */, + 3724D1F1B00291D22EDF1043CE20B971 /* EXPMatchers+beSupersetOf.h */, + 9CA5BA42074600BC5858568D8D1C5F47 /* EXPMatchers+beSupersetOf.m */, + 3E70409621EC61E3F5D5C113B99CCF08 /* EXPMatchers+beTruthy.h */, + 38A17A27D588C937F8DA18DCECC93205 /* EXPMatchers+beTruthy.m */, + B7EC042BCFC92EBCE5D22A947F8F3D13 /* EXPMatchers+conformTo.h */, + 588745FFE2819E59769E5EC37121C120 /* EXPMatchers+conformTo.m */, + 0B8918FA74A9DCEB87C7DF313F936651 /* EXPMatchers+contain.h */, + 68C3081F7E615F74573B5B756025DE7C /* EXPMatchers+contain.m */, + DF5B66930BCD9E1B123DCC9CDD2EF0D2 /* EXPMatchers+endWith.h */, + 3A44AF883D30E26BD4F5139F7D6D8047 /* EXPMatchers+endWith.m */, + 0FAF785EE645AD8E945106F8CDD47126 /* EXPMatchers+equal.h */, + C6212CC4ED2994C808C36D839EAFD6D0 /* EXPMatchers+equal.m */, + 72E0C56AE7BE0541257FCCC4E1AA2CEE /* EXPMatchers+haveCountOf.h */, + 6E8D3DE24FB7A30370A4614D4A826DEF /* EXPMatchers+haveCountOf.m */, + 672C713AC7988B36109550948C8F5DF9 /* EXPMatchers+match.h */, + 3729E0EA5C863A17EB62904BD4F1A518 /* EXPMatchers+match.m */, + 7832DAC472266AF6637B8735A03F72B1 /* EXPMatchers+postNotification.h */, + E90F18911A2D806F2E6F49F5360E4131 /* EXPMatchers+postNotification.m */, + 316FD5892343E0F442A13B22742BCB44 /* EXPMatchers+raise.h */, + 23AD5EAC97E0698DF562534D5DEE5C28 /* EXPMatchers+raise.m */, + A71DD561B20BE8BB3DED6AAA17262AAE /* EXPMatchers+raiseWithReason.h */, + 6A3A7E25BB3895B34344E6A1528B87BA /* EXPMatchers+raiseWithReason.m */, + CA6F6CEB9A6C6B77A0B136867E3B5578 /* EXPMatchers+respondTo.h */, + F970E963E493BAB6B3EE3C06C448F66B /* EXPMatchers+respondTo.m */, + 83EBCEF5C49E4721AE9226049493F2DE /* EXPUnsupportedObject.h */, + 0C707AD8126EC521EB1118418568C7E9 /* EXPUnsupportedObject.m */, + DD0E5A35F49338AD11CD89875F129842 /* NSObject+Expecta.h */, + C3B88DAB639D3270262B8AEE1E71F01A /* NSValue+Expecta.h */, + D9D75CBB018E83085F339DBA74274DCE /* NSValue+Expecta.m */, + 891B70305C8A1FCB82C86BEE22EAB181 /* Support Files */, + ); + name = Expecta; + path = Expecta; + sourceTree = ""; + }; + 4A517E862C2D409FE760E40F95359836 /* FBSDKLoginKit */ = { + isa = PBXGroup; + children = ( + FB527327A99D5ECEFC83090FC10B2A0E /* Login */, + FDE97E5210D5585BC4CECE16EC208E58 /* Support Files */, + ); + name = FBSDKLoginKit; + path = FBSDKLoginKit; + sourceTree = ""; + }; + 58959BAD8C3B914C74F593B0CCA88A45 /* Specta */ = { + isa = PBXGroup; + children = ( + 914C303A3970633C95914B4C96D6378A /* Specta.h */, + DC5794CA698723054481D94D0FD3813B /* SpectaDSL.h */, + 97F53AE82F2774DB888015D933C1075D /* SpectaDSL.m */, + 52F36B4056B5E67790E3CDE1FCDCBDEA /* SpectaTypes.h */, + 4135111B617AF1AFF945B0FEE8620780 /* SpectaUtility.h */, + B1F12BFB830AAC4D9D8361F02670E091 /* SpectaUtility.m */, + B2FEA39F4A656674D3E7265B5E46BE64 /* SPTCallSite.h */, + 9088EF562963E72AF1C93B8E5BEC4E78 /* SPTCallSite.m */, + 3C84E36354FE89AFA78359E1319E358F /* SPTCompiledExample.h */, + E090BA8397F464E495907426EE323517 /* SPTCompiledExample.m */, + 4819C9E03F803CF58331075A60F2AAE5 /* SPTExample.h */, + C0E99999F93D99D0647675E3BE69CD54 /* SPTExample.m */, + CFDE73962E698ED06ACCF47522AC99BB /* SPTExampleGroup.h */, + 3F0B4E7ED20CE9625CD2F2E9D74FD841 /* SPTExampleGroup.m */, + 0BA081D038CAB2EEB584B958DC491908 /* SPTExcludeGlobalBeforeAfterEach.h */, + 430DF6E91D2D7820ED73D1B75ECC6450 /* SPTGlobalBeforeAfterEach.h */, + 92901B1B84165929BFBF3932DE2F1B25 /* SPTSharedExampleGroups.h */, + 01044D987AB424AEEBD2DB04A7CABEB6 /* SPTSharedExampleGroups.m */, + D5BDF30AE482AD4AD331C89174B649B8 /* SPTSpec.h */, + AEFBF6DDB67E4CBE8A585D1D375D6C52 /* SPTSpec.m */, + 922C489A72E620B06FD571F60C4B19C2 /* SPTTestSuite.h */, + 96F3F275F6896395A41279D61E69DB17 /* SPTTestSuite.m */, + 53A5ADB303EAC54924E438A296F00E36 /* XCTest+Private.h */, + F29856E04BD45F93207E457B6317D43B /* XCTestCase+Specta.h */, + 14E9309B893DB28F15087129BB5A5444 /* XCTestCase+Specta.m */, + 2CD4455BDE9C08897CEC0637CB6EDAED /* Support Files */, + ); + name = Specta; + path = Specta; + sourceTree = ""; + }; + 65A29386796C8F9465CB74480922DA1A /* Support Files */ = { + isa = PBXGroup; + children = ( + 5DCA818906066C7D4AF3D58F4B226424 /* FBSDKCoreKit.xcconfig */, + 3E738F593463D00EF1B37AAE88179048 /* FBSDKCoreKit-dummy.m */, + 4E86BF8910E5A9BA76B872A68D47CE77 /* FBSDKCoreKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKCoreKit"; + sourceTree = ""; + }; + 665D34DB2ED8AE42506636A6B7D691E9 /* Support Files */ = { + isa = PBXGroup; + children = ( + C1413646C389F5AA2C4F62D892DFEFC4 /* StrongestPasswordValidator.xcconfig */, + 4A5C0A251195644515FF578981B6BEC5 /* StrongestPasswordValidator-dummy.m */, + 8B52636A3D94A5F1C5196822B73E9913 /* StrongestPasswordValidator-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/StrongestPasswordValidator"; + sourceTree = ""; + }; + 67E44ED4048724AF8420014F6906EAF8 /* FBSDKShareKit */ = { + isa = PBXGroup; + children = ( + 091D7419CBA2F95CD1EB2F822B74F96A /* Share */, + 39BF901945D69681EB463970902070B2 /* Support Files */, + ); + name = FBSDKShareKit; + path = FBSDKShareKit; + sourceTree = ""; + }; + 68A89240F5CAC503187A38CCB3DB23D7 /* nv-ios-http-status */ = { + isa = PBXGroup; + children = ( + 2E555AC810A2041B830D7329DA009658 /* HTTPStatusCodes.h */, + F27962468383B83224B0D9285E1F4EBF /* nv_ios_http_status.h */, + 5534A90C631B2C9A6876ECEEE1AAB59D /* nv_ios_http_status.m */, + E2CCA1A4F10FD0B811899F9DB8B55C40 /* Support Files */, + ); + name = "nv-ios-http-status"; + path = "nv-ios-http-status"; + sourceTree = ""; + }; + 70DD0E7BE2EE73CAF0569558C241B06E /* RZDataBinding */ = { + isa = PBXGroup; + children = ( + 521775EB399337CD348D3B112E93D803 /* NSObject+RZDataBinding.h */, + 5D1CBD3430BF0C366C3308AACB9C2758 /* NSObject+RZDataBinding.m */, + CD49C581FEBBF6F04C32E690962D53AA /* RZDataBinding.h */, + DA9FA285D8D5DF8C9C71A2EAC0BDE803 /* RZDBCoalesce.h */, + EB45F0AB152CB4892D84C798FE710145 /* RZDBCoalesce.m */, + C3E5CEEBBA28A3EB21CB0A2B12400254 /* RZDBMacros.h */, + BA5341FAD301A6CACF31C220E5AED03D /* RZDBTransforms.h */, + 4A8A96DC56B6770C15B0496B9BFC8426 /* RZDBTransforms.m */, + 3D037B8D3E1C072665489EAD7D6A478F /* Support Files */, + ); + name = RZDataBinding; + path = RZDataBinding; + sourceTree = ""; + }; + 7267ED94726D11CF4785EAE1A8922270 /* Vendors */ = { + isa = PBXGroup; + children = ( + 196354172FEBD1B7DEF09198CCF4789E /* AFJSONResponseSerializerWithData */, + 39C0B51F53E87EF29D3042FB6653634B /* AFOAuth2Manager */, + ); + name = Vendors; + path = PNObject/Classes/Vendors; + sourceTree = ""; + }; + 74DBEE3365500BFFCD60F1C6C4170EE5 /* AFNetworking */ = { + isa = PBXGroup; + children = ( + 4FEEB1FDC40BC7EB850FE55A82725FE9 /* AFNetworking.h */, + 0DD299894FED7CC0AD31C4B8203071D5 /* NSURLSession */, + CA23F46CFD81810D7C6875515B59AA7D /* Reachability */, + FA8D1B0F4BB4475F895760ACE2BB3146 /* Security */, + 925041C218759D81464D128459575C0F /* Serialization */, + 29C6EEF346AB3DD5E8A148A4C105F6E6 /* Support Files */, + E1A89DFBACBB7722611D67E20263A1C4 /* UIKit */, ); name = AFNetworking; path = AFNetworking; sourceTree = ""; }; + 76B82BA83063E64D0BB86E8AFA4C2873 /* Support Files */ = { + isa = PBXGroup; + children = ( + 7FA9677C3B2A905BE9B07145E6589A93 /* PEAR-FileManager-iOS.xcconfig */, + 2819C17659A1EB1D2FC35741F314F1AF /* PEAR-FileManager-iOS-dummy.m */, + 990EB351C57C76AF70EEB3EFDE40DB7F /* PEAR-FileManager-iOS-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/PEAR-FileManager-iOS"; + sourceTree = ""; + }; + 802534FD5B77F01876C4FBA6CCC885CB /* NSString-Helper */ = { + isa = PBXGroup; + children = ( + B07DC2326FABF8847AA40B7EA1432684 /* NSString+Helper.h */, + 0BC7862E8F1078A956A32DD0E453F6BF /* NSString+Helper.m */, + B3AC5A87E3890E6437448E9DC46A9848 /* Support Files */, + ); + name = "NSString-Helper"; + path = "NSString-Helper"; + sourceTree = ""; + }; + 82C6529E0053ED3DBEB30A7B5BC75EEF /* Pods-PNObject_Example */ = { + isa = PBXGroup; + children = ( + 4F38D3767D3F85C949AFC458EE4541BE /* Pods-PNObject_Example-acknowledgements.markdown */, + 14F5355E009FB6EB257F25507ABC22E2 /* Pods-PNObject_Example-acknowledgements.plist */, + 31338E395206508C5383E020D7AC0A74 /* Pods-PNObject_Example-dummy.m */, + 8C13E7FAFFB1C4224DBFAB748499034A /* Pods-PNObject_Example-resources.sh */, + 72AEC07F14948EC95ACFA1A77D02BB0F /* Pods-PNObject_Example.debug.xcconfig */, + EB1E0F3DED9D97EEB76BED76FEF83E6C /* Pods-PNObject_Example.release.xcconfig */, + ); + name = "Pods-PNObject_Example"; + path = "Target Support Files/Pods-PNObject_Example"; + sourceTree = ""; + }; + 8576D1AAA88B0873BEED45C71F3D49A2 /* Core */ = { + isa = PBXGroup; + children = ( + 0BA8C4F75BE2E0BAFF5F16B984021BE0 /* DJLocalizableString.h */, + 0F940742E623C3AE826DAD0EC1D84A45 /* DJLocalizableString.m */, + E1AD2CE238B724D7DB3A874E57DD5144 /* DJLocalization.h */, + F1C1E6199E71FFC5A2072E50100B4C13 /* DJLocalizationSystem.h */, + 4D5DCDE366C3CE2E2147DD595343C520 /* DJLocalizationSystem.m */, + 5E66523DFCD4A69758D19F8FDE2C8B6D /* DJLocalizationSystem+Private.h */, + D5E26C45A93F51B6EEE1D980BCDFDA29 /* UIStoryboard+DJLocalization.h */, + 992B9F95645A6A2E44CD26C7559EF820 /* UIStoryboard+DJLocalization.m */, + ); + name = Core; + sourceTree = ""; + }; + 891B70305C8A1FCB82C86BEE22EAB181 /* Support Files */ = { + isa = PBXGroup; + children = ( + C940CDBC5BC214FC36A39C2B8FA82467 /* Expecta.xcconfig */, + 65BCBD7278F0E5DFDEB0998AF0FC7E09 /* Expecta-dummy.m */, + 5535547FE7767C12F23617F6FFD84609 /* Expecta-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/Expecta"; + sourceTree = ""; + }; + 91EB3877527830C0C5130DACE78C02FB /* Pods */ = { + isa = PBXGroup; + children = ( + 74DBEE3365500BFFCD60F1C6C4170EE5 /* AFNetworking */, + D3421982699443505862F6B20EB6C93E /* CodFis-Helper */, + B3161694CF83A8AE356447A34001E1D0 /* DDDKeychainWrapper */, + 0AC4AF3845EADE658C440F4660A55BE1 /* DJLocalization */, + 49C4B1EB7C27065F0393B3CD2DC6C62F /* Expecta */, + 177835B1AAEAF68E0B2275D2E61479D5 /* FBSDKCoreKit */, + 4A517E862C2D409FE760E40F95359836 /* FBSDKLoginKit */, + CA09B7E0890FD772686F0C64A66081E6 /* FBSDKPlacesKit */, + 67E44ED4048724AF8420014F6906EAF8 /* FBSDKShareKit */, + B6844D880E01ED022109BC72462E79AB /* NSDataAES */, + 17C4D1B100C1DD4A037FBE78277C5EC6 /* NSDate_Utils */, + 802534FD5B77F01876C4FBA6CCC885CB /* NSString-Helper */, + 68A89240F5CAC503187A38CCB3DB23D7 /* nv-ios-http-status */, + 1C85A9F62F012141BD1B23AB475B7CBE /* PEAR-FileManager-iOS */, + 325F2740088AAFDC62CA3BD6EC43CB71 /* PureLayout */, + 70DD0E7BE2EE73CAF0569558C241B06E /* RZDataBinding */, + 58959BAD8C3B914C74F593B0CCA88A45 /* Specta */, + 1950071845A2AA1B3847D04378579B1F /* StrongestPasswordValidator */, + 0832E0518E549928AC75C47D89D1A31D /* UIDevice-Utils */, + ); + name = Pods; + sourceTree = ""; + }; + 925041C218759D81464D128459575C0F /* Serialization */ = { + isa = PBXGroup; + children = ( + 1C79641482E2BCB08313521623979177 /* AFURLRequestSerialization.h */, + 5151B14C82DF25D0779A942FA300BD77 /* AFURLRequestSerialization.m */, + D49411A7110F577BCDA9854417A548F8 /* AFURLResponseSerialization.h */, + 1CAD5A03A97C2DF86FCBA41D106AD1C7 /* AFURLResponseSerialization.m */, + ); + name = Serialization; + sourceTree = ""; + }; + 96E8EC9332BBDB61EA7EA9BCD30CD48C /* Support Files */ = { + isa = PBXGroup; + children = ( + CF66AF169927C3FD23A480AEDB51FE06 /* DJLocalization.xcconfig */, + 4EE27B78FA2481DD4C41969817B6A276 /* DJLocalization-dummy.m */, + 5B80396E6007EBA0A0AABE2A4C66B577 /* DJLocalization-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/DJLocalization"; + sourceTree = ""; + }; + 9F69FEBCF5374A03C0138DAA7CA5D9B2 /* Support Files */ = { + isa = PBXGroup; + children = ( + DD71969B8971C83B9B913445362538D7 /* PureLayout.xcconfig */, + F733CAC3E83253D9972F5D1E6EC32CEF /* PureLayout-dummy.m */, + F734E1202F5FDEC9D40C0F98906CA4A1 /* PureLayout-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/PureLayout"; + sourceTree = ""; + }; + A00DB09A7A1D3C14823DDCCF358BC4ED /* Support Files */ = { + isa = PBXGroup; + children = ( + 367F7DF3819B9D9930F56325615545F6 /* PNObject.xcconfig */, + 4C06566592049441679F11F9C792106C /* PNObject-dummy.m */, + 6E6A00B5646D94289C8F8B0FA0AF1DFD /* PNObject-prefix.pch */, + ); + name = "Support Files"; + path = "Example/Pods/Target Support Files/PNObject"; + sourceTree = ""; + }; + A4BDAF207186FB56F1D7E31AF6E9EDE2 /* Pod */ = { + isa = PBXGroup; + children = ( + 085A78AFBBBF59E43F95293CDE7FD699 /* LICENSE */, + 5C55CCC47A268C115F97D56D219DD376 /* PNObject.podspec */, + BFB13024A6578B59BFB2F016AEF4712C /* README.md */, + ); + name = Pod; + sourceTree = ""; + }; + A600F83FB5C78D2A0968BD3BC195D67E /* Support Files */ = { + isa = PBXGroup; + children = ( + 76E42277B6D53DFBC752958754B15C16 /* DDDKeychainWrapper.xcconfig */, + 1243093EA95001FDFE0D1F31BEAE71AA /* DDDKeychainWrapper-dummy.m */, + 2B40546F0E4BE18427675E5AC0FCC49F /* DDDKeychainWrapper-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/DDDKeychainWrapper"; + sourceTree = ""; + }; + A64AC0EF0A6F74C931702A38422DA3F7 /* Support Files */ = { + isa = PBXGroup; + children = ( + AF143A03FBEFC09F8F85C478431DD1D0 /* UIDevice-Utils.xcconfig */, + 8D2F9DA7AA2014E4797F0324FE8AE39E /* UIDevice-Utils-dummy.m */, + F8AD45F79A02C4B4B73D4F8EA4B0C097 /* UIDevice-Utils-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/UIDevice-Utils"; + sourceTree = ""; + }; + A6FA2E1F7C39F9AC1D5A38DC52EB2DCE /* Support Files */ = { + isa = PBXGroup; + children = ( + C00245051B13644BEDB1902167791B5E /* NSDate_Utils.xcconfig */, + 092828F37B6F6040EC3A135EF34B1DEA /* NSDate_Utils-dummy.m */, + 41FD8EDC93A21FC67075630F3342A11B /* NSDate_Utils-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/NSDate_Utils"; + sourceTree = ""; + }; + B3161694CF83A8AE356447A34001E1D0 /* DDDKeychainWrapper */ = { + isa = PBXGroup; + children = ( + AAE84A1116CF2ECC29DC49C5E14F04AB /* DDDKeychainWrapper.h */, + 261FF7B9E8B3B0E1E3A811BF7DACF445 /* DDDKeychainWrapper.m */, + A600F83FB5C78D2A0968BD3BC195D67E /* Support Files */, + ); + name = DDDKeychainWrapper; + path = DDDKeychainWrapper; + sourceTree = ""; + }; + B3AC5A87E3890E6437448E9DC46A9848 /* Support Files */ = { + isa = PBXGroup; + children = ( + 1770B20158EDADF28A69CF6036627525 /* NSString-Helper.xcconfig */, + AEB4BF5F49550019E6EF58DFC56F5C96 /* NSString-Helper-dummy.m */, + 38471D21CE0A432BFD4EBC9A89F2911B /* NSString-Helper-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/NSString-Helper"; + sourceTree = ""; + }; + B5320674EC314F922A75D1C704C642E7 /* Core */ = { + isa = PBXGroup; + children = ( + 01EFCE9AAA60D82E564BD53C447C5C3D /* _FBSDKTemporaryErrorRecoveryAttempter.h */, + 92F01ED63A0E2407F3ED4A04CD456543 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, + 4916F2A6813091348D601DD5F661895A /* FBSDKAccessToken.h */, + 116161BAF7ED24A13EF3B45FAD9356CE /* FBSDKAccessToken.m */, + DE2D5C43D1B651A52F608D4F61B8DB2B /* FBSDKAccessTokenCache.h */, + 6CAB0E80C58EF74906587549D87BFE2C /* FBSDKAccessTokenCache.m */, + 0CA6F7990B8777F44D1723868E9E700F /* FBSDKAccessTokenCaching.h */, + EFE2784CAA418724A76D2587E0F2DECD /* FBSDKAccessTokenExpirer.h */, + DC68738AF329696AA58B007307B0542F /* FBSDKAccessTokenExpirer.m */, + D74927E0A9EA9D91EECA68353E797395 /* FBSDKAppEvents.h */, + E10E31949DD34DAA6813E72A2F7B8497 /* FBSDKAppEvents.m */, + 4C23340C1222262A1BE81FE5B910E044 /* FBSDKAppEvents+Internal.h */, + 3F7D00E21107A63C72DE494CF5182165 /* FBSDKAppEventsDeviceInfo.h */, + 149FA64F5D3E9157CCCD2F5D4040AD0E /* FBSDKAppEventsDeviceInfo.m */, + 593A978C64770DB6C35CF4DB5B1E8EDB /* FBSDKAppEventsState.h */, + C3149BF51580996CF29A646305A654D2 /* FBSDKAppEventsState.m */, + A984BA92A8B42652828B6B3C7C434041 /* FBSDKAppEventsStateManager.h */, + 66F1B1CF3ADD75100BEFC6BA8C3C067E /* FBSDKAppEventsStateManager.m */, + 4527227EECBBCF381A6BECB09E513679 /* FBSDKAppEventsUtility.h */, + BEA32004712657B1467A4BD9BD8C9944 /* FBSDKAppEventsUtility.m */, + F875FA1BB5843FE4FAFF63DA739ACFCF /* FBSDKApplicationDelegate.h */, + E6270260633D63019977D528D2A4AB89 /* FBSDKApplicationDelegate.m */, + EACEBEDDAB549C4EDC443FDEB38A3D2B /* FBSDKApplicationDelegate+Internal.h */, + D12A9668459564BBFD480566188A3BDA /* FBSDKApplicationObserving.h */, + B52D6C5D93A51A9052E511E5028E7E1B /* FBSDKAppLink.h */, + 54B1689F9B83329018AC6C8F66F1D110 /* FBSDKAppLink.m */, + F1AD7F8935DC52E0657D5911ADC670A5 /* FBSDKAppLink_Internal.h */, + F420A9F64AAA45338FAEB04AEE098449 /* FBSDKAppLinkNavigation.h */, + 739F366C25646AF7A07E63ED3EEC5435 /* FBSDKAppLinkNavigation.m */, + C5569A9C536755F132B7DBE3B3BFCFB6 /* FBSDKAppLinkResolver.h */, + EFB4BE0278DD6AD031A26A4ABA150E99 /* FBSDKAppLinkResolver.m */, + 31166C290739F2716E38353B55051FE3 /* FBSDKAppLinkResolving.h */, + 8FA2E79DB7FC7C052E221BE4510AB923 /* FBSDKAppLinkReturnToRefererController.h */, + 9615C07E28B17A91E4308C7CFC07623A /* FBSDKAppLinkReturnToRefererController.m */, + D542F91E9B9DBEEE243EED8DEF6867D7 /* FBSDKAppLinkReturnToRefererView.h */, + 0ED8C5E07BFBCB9CC1B4B97DBE01B406 /* FBSDKAppLinkReturnToRefererView.m */, + 8AFF4D5E6635B7D8CA8C1CE6570B2202 /* FBSDKAppLinkReturnToRefererView_Internal.h */, + AAF26D14FB30C4B340ADCFD906A44D7D /* FBSDKAppLinkTarget.h */, + 0FE03FCA42D6499B5007B72FAAF0C5CC /* FBSDKAppLinkTarget.m */, + 6B123C23EFEA3CD8498334BF264118BD /* FBSDKAppLinkUtility.h */, + 2C260EA54EE75A4DE5E86A1F5D484BA6 /* FBSDKAppLinkUtility.m */, + 0EFC8188AF5438832A8A51DF0A1BCD8C /* FBSDKAudioResourceLoader.h */, + 4BB0D3CEE222FC9108DF8C76EAB9B0F0 /* FBSDKAudioResourceLoader.m */, + D983CF804D5EDDC7B43BB588FD5CC312 /* FBSDKBase64.h */, + 3C732630D39AF9C837B3996E4A4D7977 /* FBSDKBase64.m */, + 09969D98BBE6206293463FEBF5024F3D /* FBSDKBridgeAPI.h */, + 0F4D1295CA8B2F222CB1B4605BE9C976 /* FBSDKBridgeAPI.m */, + CB283A120163B72644903E7B0333269D /* FBSDKBridgeAPIProtocol.h */, + 4A23234F7910DD3182BC95D88893217B /* FBSDKBridgeAPIProtocolNativeV1.h */, + 5A78240FED00A790C106F16CD523120D /* FBSDKBridgeAPIProtocolNativeV1.m */, + 79B8173AF129A64DD2BB0A07215BA388 /* FBSDKBridgeAPIProtocolType.h */, + 303D39A7D52B7C9EEDBE105E47A6D56D /* FBSDKBridgeAPIProtocolWebV1.h */, + C4F7C27E444E35D2BD1E9B2FBE5CEB6F /* FBSDKBridgeAPIProtocolWebV1.m */, + 068A90B382A5BDAB956F85B721091B00 /* FBSDKBridgeAPIProtocolWebV2.h */, + 8BF92E7C59C370D8E28903FD19C3BD37 /* FBSDKBridgeAPIProtocolWebV2.m */, + 73A68A3BED2C8CD7AE035BACC0E815AF /* FBSDKBridgeAPIRequest.h */, + 2305575DD63A7D23F99008BF5A760562 /* FBSDKBridgeAPIRequest.m */, + C2F5717736D436FD49E9302152F390C5 /* FBSDKBridgeAPIRequest+Private.h */, + 96A36A70395FE8D9715D9269F9768236 /* FBSDKBridgeAPIResponse.h */, + B16457B72C61791C11563E11D2F64610 /* FBSDKBridgeAPIResponse.m */, + 5FEFAEA5263FE8E3D6FB9A99F04B1FA8 /* FBSDKButton.h */, + 9CFB86C7F509E6095CE81A567505872D /* FBSDKButton.m */, + 48A09337B25EC327A11E810AFED75E71 /* FBSDKButton+Subclass.h */, + 877C92E2C50463D3AD052157A007D76B /* FBSDKCloseIcon.h */, + 1334E2E526A24825BFBCF5F5E67FBFE9 /* FBSDKCloseIcon.m */, + 2FC40E92EC8260C2541042FBF3AD0F39 /* FBSDKCodelessIndexer.h */, + B6F29A81363A213ECAD0155BD1A8E7FC /* FBSDKCodelessIndexer.m */, + EE64BE00752BFBE1AAA68701AC365E7B /* FBSDKCodelessMacros.h */, + 12E79F4E565D05B31370FFCB7C2C6929 /* FBSDKCodelessParameterComponent.h */, + EAC556858D6A32FBD3794E052A18111C /* FBSDKCodelessParameterComponent.m */, + 26885886696BBED4B1AA1728F7305710 /* FBSDKCodelessPathComponent.h */, + A99D173CEE3D2C4617FEA128C402C683 /* FBSDKCodelessPathComponent.m */, + 3C30F20741A7E84FD7DB8C9AE5896798 /* FBSDKColor.h */, + 9C759395AAAFB5714F0A316BF81AE9FB /* FBSDKColor.m */, + 05630D6B386EC092BB895660631D156A /* FBSDKConstants.h */, + 21D7A6991DA2BE39B334B014560B7582 /* FBSDKConstants.m */, + 00020ADE721B0B7BA5B6366521C3B8A8 /* FBSDKContainerViewController.h */, + E0B09873792C5BE04014F43BFDD6BA76 /* FBSDKContainerViewController.m */, + 15AE0E0A3E6F3782692B22BAC05CF8B2 /* FBSDKCopying.h */, + 0070B094EF00720DBBC6A900DAB293DE /* FBSDKCoreKit.h */, + 3B1D76CCF7D39B681A5517380E9BC9F6 /* FBSDKCoreKit+Internal.h */, + F23C8CE73B9EF9A3F40B54582DB3594D /* FBSDKCrashObserver.h */, + 518D90B042CAD631D7ECC4AE3D1C73B6 /* FBSDKCrashObserver.m */, + D8CE7A67905F955311866040C960DC67 /* FBSDKCrypto.h */, + E1EFD370D8CABADC2ECC250027A0293A /* FBSDKCrypto.m */, + 83F6A9A4FE9928B45AB12BB991BD30F7 /* FBSDKDeviceRequestsHelper.h */, + C7FCB8EDEE6D48048A6B7A334B0691A3 /* FBSDKDeviceRequestsHelper.m */, + 41FA8C2DB95796F6CF59F17F19CAAD64 /* FBSDKDialogConfiguration.h */, + 8AC2BFA2C3D857613FD68721F9B59992 /* FBSDKDialogConfiguration.m */, + E4A05B6A32AB0DE46405048793A4239B /* FBSDKDynamicFrameworkLoader.h */, + 519F8BBCE03A24F08C071ACA2A32782F /* FBSDKDynamicFrameworkLoader.m */, + 36230C912F3C925DCE71A683EACEF954 /* FBSDKError.h */, + 630A3E96C8DD173D7A2DA8CF136578F6 /* FBSDKError.m */, + 3767F9AAD1DE4F2138E0165F5626D42B /* FBSDKErrorConfiguration.h */, + 7058BFB61D3C842CDF3C069BED46FA74 /* FBSDKErrorConfiguration.m */, + 5A87481DF9D74397BD5090A3AD4D1D4C /* FBSDKErrorRecoveryAttempter.h */, + 082E03B027940675085E020F5A7FED86 /* FBSDKErrorRecoveryAttempter.m */, + 97EB69F0CB7C2AB767DFE2440B644F9C /* FBSDKErrorRecoveryConfiguration.h */, + 84C8E9ECCFFE9F07275DE7EE27EE9DC6 /* FBSDKErrorRecoveryConfiguration.m */, + FC9F7202337E591A5F9CDF166BA9B633 /* FBSDKErrorReport.h */, + B5601C81D2457CB87AEE9A69EC63DADE /* FBSDKErrorReport.m */, + 8D218B70DB72444681FDABA3687718AB /* FBSDKEventBinding.h */, + D58F812E0E902D22282AC7569C19D03D /* FBSDKEventBinding.m */, + D5CC3D5CDC3953EE68C798402065CA81 /* FBSDKEventBindingManager.h */, + C1DA6DC1AB07EF86698151725442D7C8 /* FBSDKEventBindingManager.m */, + A35C8DE88425A94086651E757D7787D1 /* FBSDKFeatureManager.h */, + 46C36B2D10AA9F8F6C8F327DAFBBF054 /* FBSDKFeatureManager.m */, + 3CCA95C49E844F8E684D22E6A75757AA /* FBSDKGateKeeperManager.h */, + C35CCF08DC506C074C1F556A97CA790B /* FBSDKGateKeeperManager.m */, + A9C28818762C79A21B967D446FC1D225 /* FBSDKGraphErrorRecoveryProcessor.h */, + D8A836C8CD31662B3178DEC599FFFE5B /* FBSDKGraphErrorRecoveryProcessor.m */, + 2832EAD55A32C350FD70C2FB4DA66901 /* FBSDKGraphRequest.h */, + AD286DD1475A568027EA5B8E9FEF15B3 /* FBSDKGraphRequest.m */, + 53ECC4CA77C8333DB19D21E647E6A122 /* FBSDKGraphRequest+Internal.h */, + 1E68F5A08A8ECE4BBFA26DD8956D8457 /* FBSDKGraphRequestBody.h */, + DF71932C80B3083358F995D4EF5EC6A8 /* FBSDKGraphRequestBody.m */, + DDC642C99C587AE595714EB643296D52 /* FBSDKGraphRequestConnection.h */, + 5593729F7F5AF6A9F5D681EEEAFA7CF0 /* FBSDKGraphRequestConnection.m */, + 8F90A263EA417FF6BB211C41A5A373B9 /* FBSDKGraphRequestConnection+Internal.h */, + 191238D431153D9F6D1144EC7926DC6D /* FBSDKGraphRequestDataAttachment.h */, + 26F1529DB3E65477AB369CEF7C16CFE8 /* FBSDKGraphRequestDataAttachment.m */, + 94D34F4A0AD5F59B9D59B52D37E7AEF3 /* FBSDKGraphRequestMetadata.h */, + 2B3F2022E39A8F990E4D6C680E5C3533 /* FBSDKGraphRequestMetadata.m */, + BF355F6F84D556D41A199F377ECB47D9 /* FBSDKGraphRequestPiggybackManager.h */, + 39E89FFEED46C9F77762B85DB40ACD10 /* FBSDKGraphRequestPiggybackManager.m */, + B19BC3A3AF61B2C472A4FD2301955D73 /* FBSDKHybridAppEventsScriptMessageHandler.h */, + D49862A22DB9572E568E7BC31E9EE0B5 /* FBSDKHybridAppEventsScriptMessageHandler.m */, + 6EE8675F77D1069CC1AEB30D63C6D49B /* FBSDKIcon.h */, + 1599B0A83F12955B16D69E671AB13931 /* FBSDKIcon.m */, + 07844CF254823F4B1EBDDA1D926D92B2 /* FBSDKImageDownloader.h */, + 8A5BB4BB15846EC61C20595F1630B231 /* FBSDKImageDownloader.m */, + F3C9482910901214BD10BD8E636F733A /* FBSDKInstrumentManager.h */, + 43861F21D6F42EE64A99B330B3FADF21 /* FBSDKInstrumentManager.m */, + 72D8654191BFD8AE73FA44549CF90463 /* FBSDKInternalUtility.h */, + E02781430F177771D2E8655D9A95BC00 /* FBSDKInternalUtility.m */, + B408B7DD1DD084A2865E1DC1F960C502 /* FBSDKKeychainStore.h */, + C6ECF01B450541081B0C19CE2175E80E /* FBSDKKeychainStore.m */, + C610CC39FE25670ACC72D0F738694762 /* FBSDKKeychainStoreViaBundleID.h */, + B02666B8373DF794BE71849357488408 /* FBSDKKeychainStoreViaBundleID.m */, + 556BFF9FF8DEB2D7C3CD2ABB63202C70 /* FBSDKLogger.h */, + C51EA81FEC773302CAECCE6E0EB8BE2E /* FBSDKLogger.m */, + F99A02DCAF18AEDF13AF8AB831A51437 /* FBSDKLogo.h */, + 17964E8FD95FC261208056AA2B06347C /* FBSDKLogo.m */, + 57E10D43C2D0C2A13A85317EE5A4A226 /* FBSDKMaleSilhouetteIcon.h */, + 2DBE520B4740BDDEA0416B0D821EFA03 /* FBSDKMaleSilhouetteIcon.m */, + 7C050026AFEAE8FD7631245806A12A33 /* FBSDKMath.h */, + D716E738A0815AD234AE9961EE3C7330 /* FBSDKMath.m */, + 2BFBC54525BFFAE88820E17DE2AB3D3B /* FBSDKMeasurementEvent.h */, + 7A4D753B1B7EEFF3EED1BB67A1EF5296 /* FBSDKMeasurementEvent.m */, + 1C827DDF8E201EAA880AB1534DDDE2C8 /* FBSDKMeasurementEvent_Internal.h */, + 0685E6F3FBB7EF2D7D57DD9C09E9AA28 /* FBSDKMeasurementEventListener.h */, + 2BE3F33C0F4BA4687A20B6FBBB745E85 /* FBSDKMeasurementEventListener.m */, + A19F676E97C0A8A0AE86981F942EAD53 /* FBSDKMetadataIndexer.h */, + C0807EEBEF311B1D53BABD9DF7C3F616 /* FBSDKMetadataIndexer.m */, + C9215416FC27002A06E684803F6AAA1E /* FBSDKMonotonicTime.h */, + 5B31767BE817021B3A4BBED861534A34 /* FBSDKMonotonicTime.m */, + 4E9B849534DDF94779E0029CCB05A1D7 /* FBSDKMutableCopying.h */, + 90ABC7B86067CC7A4DC6DEEDA52E20E0 /* FBSDKPaymentObserver.h */, + 7A9484FA4FD2C96B30336A4F70848912 /* FBSDKPaymentObserver.m */, + 938AA1D23500E0430E124EEC643DBF48 /* FBSDKProfile.h */, + 61408B6AF822F067F9B34E42BCC34807 /* FBSDKProfile.m */, + E39BC50961FC3818A27ABEFCD4C871A1 /* FBSDKProfile+Internal.h */, + AF9DFEC95804545E472480D96442635C /* FBSDKProfilePictureView.h */, + CBB563C9AB0D99B6C125D6DB67E46943 /* FBSDKProfilePictureView.m */, + A52D64A2E670AE0588E8FFD016F58249 /* FBSDKRestrictiveDataFilterManager.h */, + C4052D665527DE0B6F8881B7B4D9419C /* FBSDKRestrictiveDataFilterManager.m */, + 1C1FAD6615297E3D7F09BD4A1EDFBEB1 /* FBSDKServerConfiguration.h */, + 6803142BD4EF1A0ABFFAB74909305200 /* FBSDKServerConfiguration.m */, + E048E7F7632A10B967AB52D241858CFF /* FBSDKServerConfiguration+Internal.h */, + 01A6983CD7A00530A291B10286D5A4F2 /* FBSDKServerConfigurationManager.h */, + 411607A7BE0759E1E6D6A632175DF657 /* FBSDKServerConfigurationManager.m */, + AECD1C016D32B4D781530DBF50320BBF /* FBSDKServerConfigurationManager+Internal.h */, + 7B353BD70DAE768DFDCA3BB4F7F074AF /* FBSDKSettings.h */, + E12729DB8DDEA6A6BF4A1B4B0C2E4F17 /* FBSDKSettings.m */, + DDC4437067875EB83C5C6949245167D3 /* FBSDKSettings+Internal.h */, + F9ECFAB33114DB544F46EA164E06C27B /* FBSDKSwizzler.h */, + 30994CF2104FF9119BA225FE1F634BFE /* FBSDKSwizzler.m */, + 9FBD9308718C58F1D27DC93982C5B21C /* FBSDKTestUsersManager.h */, + C9CC5FBA43E2F14284E595AFFCCCC00F /* FBSDKTestUsersManager.m */, + EB79B4174867693BB380C3D6BC40D0A5 /* FBSDKTimeSpentData.h */, + BDF67E2919C554C3664A7B5FF105C57A /* FBSDKTimeSpentData.m */, + C2E7D662849D07D99A5F6C898BA6B22F /* FBSDKTriStateBOOL.h */, + 32233C13E1C85E7E70A5E7064C8C5EF6 /* FBSDKTriStateBOOL.m */, + 3A6C81893EF2FF726156CEFE134F9C7C /* FBSDKUIUtility.h */, + 7F083C0EDB130FC352650DD469A74ECD /* FBSDKURL.h */, + 71ACE61C49A838AB171E9761AD0CA030 /* FBSDKURL.m */, + EF9D3C5BCD850B98C235156F3237E0A3 /* FBSDKURL_Internal.h */, + 06DC986B5883580D356547C4754730D4 /* FBSDKURLOpening.h */, + 4096AE0BD63EE947F52B07F34F464249 /* FBSDKUserDataStore.h */, + FB9E90DF2EF107A165E0EE72E911C0D3 /* FBSDKUserDataStore.m */, + DF5DCBC122F8EC78B6D2BBBC294B4EF3 /* FBSDKUtility.h */, + 2B0D2A3575862DAB8F0F29AF18451868 /* FBSDKUtility.m */, + 08F791F902E95C73B96C18E65B24EB8B /* FBSDKViewHierarchy.h */, + 93C7E0526D406C88C9065ED2980240CA /* FBSDKViewHierarchy.m */, + 4311F7F04CE792BE32135B03B319D499 /* FBSDKViewImpressionTracker.h */, + AEA471E330EF95488648136F59371857 /* FBSDKViewImpressionTracker.m */, + B384B8BE04E34F219B406C3966C64FCD /* FBSDKWebDialog.h */, + C5502B4C026B51AF0003FC85554C4E42 /* FBSDKWebDialog.m */, + 392792D56AB5073333277DFACB736214 /* FBSDKWebDialogView.h */, + 1973CC1259420A40AC5698C233F3C84F /* FBSDKWebDialogView.m */, + 8D38597A20CD2A51D9A558B55DF648FB /* FBSDKWebViewAppLinkResolver.h */, + 94F9C00B9755F7AAE306BDDFAFC097E0 /* FBSDKWebViewAppLinkResolver.m */, + CB9144F999162DA7D2B21454763AEF54 /* Resources */, + ); + name = Core; + sourceTree = ""; + }; + B6844D880E01ED022109BC72462E79AB /* NSDataAES */ = { + isa = PBXGroup; + children = ( + 8D88B2B9429B2B0ABD4DAB8F20C57CEF /* NSData+AES.h */, + A3E867E287FBBD998314D306E8C87A79 /* NSData+AES.m */, + FE63419E7D132E5CADBDBD4224D984CF /* NSData+AESKey.h */, + 59E99C4BE3197EC7614D33A918B2276B /* NSData+AESKey.m */, + C366D77560E2D813D88859B6DE207190 /* NSData+AESValue.h */, + 1D912DC91F7A820DF43989F8CA88C512 /* NSData+AESValue.m */, + D3A4504204DEBA8BBC83BA876038713C /* NSData+SHA.h */, + AF6F462E18F5FFA0C83FBA0907BFF831 /* NSData+SHA.m */, + 990C5AE5707D6408B4338C07C0D05021 /* NSDataAESCipher.h */, + 783A44E6F339078137532B39959709DA /* NSDataAESCipher.m */, + 39FFF15F6D13C4A523E97FE0C4450697 /* NSMutableData+AES.h */, + 679E153A6099301D90429DBCCC92D8CF /* NSMutableData+AES.m */, + 3AB06D86A872FCF452805BE294FC1146 /* Support Files */, + ); + name = NSDataAES; + path = NSDataAES; + sourceTree = ""; + }; + C60B2785A94ACBE43FB2DEEE36328993 /* Support Files */ = { + isa = PBXGroup; + children = ( + DEAF5A8E11A841550FAF9FCDCFB49B04 /* FBSDKPlacesKit.xcconfig */, + F8E665952F54F60A5633CAB1E206D970 /* FBSDKPlacesKit-dummy.m */, + 2273FA87CA2EB2751A2839B0A5FD35A5 /* FBSDKPlacesKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKPlacesKit"; + sourceTree = ""; + }; + C6E3CA63691729E114AB7E7D20F47F70 /* Basics */ = { + isa = PBXGroup; + children = ( + EA87AC4E9A5B15656386CF5A2AE7E030 /* FBSDKBasicUtility.h */, + 6652F25E12104D6BAF1B968347A4BB7B /* FBSDKBasicUtility.m */, + 26344EC14781F553C8D5820612FCD0A1 /* FBSDKCrashHandler.h */, + 850F4F6B1A6A790ABA8C379270F93B89 /* FBSDKCrashHandler.m */, + 19E18AA883A199B346FF991904823CA2 /* FBSDKCrashObserving.h */, + C66B7016E44CE5370FDA15D25BFC6D53 /* FBSDKLibAnalyzer.h */, + 98D6A7ECEA775BE3727D8F8B9E06E0DB /* FBSDKLibAnalyzer.m */, + 2B43DCCAEF495D17FE3C0D28994E435A /* FBSDKTypeUtility.h */, + EA167AC0457A533C13C42BEC83CAEFA1 /* FBSDKTypeUtility.m */, + F16D58276EF58E713A42A1332CEDFD79 /* FBSDKURLSession.h */, + 82BBB3C4E136144F1C24CCA37C518308 /* FBSDKURLSession.m */, + 30023AD00462C918D7A590E707D9E450 /* FBSDKURLSessionTask.h */, + 42DA9858438CCBE80CA7613FF57AD932 /* FBSDKURLSessionTask.m */, + ); + name = Basics; + sourceTree = ""; + }; + CA09B7E0890FD772686F0C64A66081E6 /* FBSDKPlacesKit */ = { + isa = PBXGroup; + children = ( + 8B26CFEA32C0C3864F75B24684E93E86 /* FBSDKPlacesBluetoothScanner.h */, + C2C2769758032EC587B2C434555DECA1 /* FBSDKPlacesBluetoothScanner.m */, + C1FF9C182D30A3BC145CB4142C44AF44 /* FBSDKPlacesKit.h */, + 8BBE4D2C7BE7775552D9DF216E2B64DE /* FBSDKPlacesKitConstants.h */, + EF5ACFD065B5DDB4D5EB938B5A248DA2 /* FBSDKPlacesKitConstants.m */, + 28870C39752D0222B32D97A4F884E634 /* FBSDKPlacesManager.h */, + D426A09DA2FF562ED75548AC40175759 /* FBSDKPlacesManager.m */, + C60B2785A94ACBE43FB2DEEE36328993 /* Support Files */, + ); + name = FBSDKPlacesKit; + path = FBSDKPlacesKit; + sourceTree = ""; + }; + CA23F46CFD81810D7C6875515B59AA7D /* Reachability */ = { + isa = PBXGroup; + children = ( + C130B5215215D471AB0FA75C997001AC /* AFNetworkReachabilityManager.h */, + BFA0C3CF436A169D6B0EA24BF4AADABA /* AFNetworkReachabilityManager.m */, + ); + name = Reachability; + sourceTree = ""; + }; + CB9144F999162DA7D2B21454763AEF54 /* Resources */ = { + isa = PBXGroup; + children = ( + 0A919E143683C281925BA940567DF3A0 /* FacebookSDKStrings.bundle */, + ); + name = Resources; + sourceTree = ""; + }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, D342500999F90A4E3C757232AFBB9BB9 /* Development Pods */, D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, - E768A7C259FD613AC5835CC3426C8245 /* Pods */, - EDD9170F40AEED9F6D057F8B3764417F /* Products */, + 91EB3877527830C0C5130DACE78C02FB /* Pods */, + DA907DAC16F0F51AA7ECDCFE90E8669B /* Products */, 029249E8C2404317E822389AC1B2A59E /* Targets Support Files */, ); sourceTree = ""; }; + D3421982699443505862F6B20EB6C93E /* CodFis-Helper */ = { + isa = PBXGroup; + children = ( + 31FD90CCBD96A0D2FAE4FAD926EAEE65 /* CodFis+Helper.h */, + DC23077F9CA226D72E1B9815422F8D2B /* CodFis+Helper.m */, + 82B2ABB3ECFC314DAC6C05C5158EEB79 /* CodFisResponse.h */, + 4149576FC2346BA4CFC52A4E799384C3 /* CodFisResponse.m */, + B63474C8B0EF942C24E792B6EF995B9C /* ResponseConstants.h */, + A8A1C1F52064517FDD0E2386A7EE14C1 /* VatNumber+Helper.h */, + D6813DB633AAAC3F45EA69720EE117E5 /* VatNumber+Helper.m */, + 2170901C7C280F868438240B304D584A /* Support Files */, + ); + name = "CodFis-Helper"; + path = "CodFis-Helper"; + sourceTree = ""; + }; D342500999F90A4E3C757232AFBB9BB9 /* Development Pods */ = { isa = PBXGroup; children = ( - 19BE35BD3150A437C9A49F48E68409CB /* PNObject */, + 13FF9A735F25D6B601CF579B6FBC67E3 /* PNObject */, ); name = "Development Pods"; sourceTree = ""; }; - D5FEFD98881735C07412910A95B1005A /* FBSDKLoginKit */ = { - isa = PBXGroup; - children = ( - DC6D511D07823A0A99B3C177D48AEDFD /* _FBSDKLoginRecoveryAttempter.h */, - 6BBE94DF76EC0F55859A3A516D3BE7D8 /* _FBSDKLoginRecoveryAttempter.m */, - 70569B31499C7F90A6477AFDBE1BA69B /* FBSDKDeviceLoginCodeInfo.h */, - 1A471C34221A873F410B41D4CB836683 /* FBSDKDeviceLoginCodeInfo.m */, - A817FF01F498861F82275F33792A36D7 /* FBSDKDeviceLoginCodeInfo+Internal.h */, - 76A70F698BFE983DBF82C8227AB92226 /* FBSDKDeviceLoginManager.h */, - 6D632F0777EB3EC788F19472C6E6A80F /* FBSDKDeviceLoginManager.m */, - FCE4A8027CEC46F6E7577042A32DF2CF /* FBSDKDeviceLoginManagerResult.h */, - 2689D69C583916AE1D6BAFE0D4FAD0DE /* FBSDKDeviceLoginManagerResult.m */, - 3E05B1A66A9C6944FB5E89AB95965C5C /* FBSDKDeviceLoginManagerResult+Internal.h */, - F91BF8019854B2B40EE1F12EEDB6FCF1 /* FBSDKLoginButton.h */, - 89C12DCC14242D50F00DB197FB432DD2 /* FBSDKLoginButton.m */, - 42990E7EDC81CEF4009E53A783446E0C /* FBSDKLoginCompletion.h */, - 04EDDC006508D124F74E5B0CC961BD18 /* FBSDKLoginCompletion.m */, - F5917B42BB69D38F16B5DA236BD1F801 /* FBSDKLoginCompletion+Internal.h */, - DB55FF18FF578DF41A247ABD8C167992 /* FBSDKLoginConstants.h */, - 634A6D0CE66AD43D2448801BB07FB84F /* FBSDKLoginConstants.m */, - 780EB870D682B26487EA7ED3CD6483BF /* FBSDKLoginError.h */, - A6FF1CA21BC7672D566D7A7BAB40B0B0 /* FBSDKLoginError.m */, - 5A28474AC50C565106BE610B08E1078B /* FBSDKLoginKit.h */, - F0B3D551C9DBDF26AFDD994EE7DCBD4C /* FBSDKLoginKit+Internal.h */, - 9637DE2BCB0C07ED47A9CE4C279B25DB /* FBSDKLoginManager.h */, - ABCFC6DC888341D4E7EBA03DCA6B8994 /* FBSDKLoginManager.m */, - 7F42EDD249E020DA7B4651744A7C3181 /* FBSDKLoginManager+Internal.h */, - C40F1DE62C95574FE8D8AF679382D0E4 /* FBSDKLoginManagerLogger.h */, - 1E39F5220794779C50D89AE4C271A6D4 /* FBSDKLoginManagerLogger.m */, - 1A8725EEB96D3254318C1B72332D7008 /* FBSDKLoginManagerLoginResult.h */, - 99766581F3ED9EE101848320FE097C3C /* FBSDKLoginManagerLoginResult.m */, - 12B1D426C6C9FF6CCDD64703D6E5DB47 /* FBSDKLoginManagerLoginResult+Internal.h */, - 1E2783A0CEF7B60E8F6A82CF077D963D /* FBSDKLoginTooltipView.h */, - 48780EAE32D0050BA1DA3EA09E613B6C /* FBSDKLoginTooltipView.m */, - AC6435A432236BB94BD1265AE00CA84D /* FBSDKLoginUtility.h */, - 3791911718EC7488D00D5409925A6AD6 /* FBSDKLoginUtility.m */, - 8372F447CB58D6A7AEE4F77E6E1AA18A /* FBSDKTooltipView.h */, - EA66EA7AE41598503A94F8B8CEA9B07A /* FBSDKTooltipView.m */, - 7F73DFE0F6C3BB80D4C9FA186FEEA13B /* Support Files */, - ); - name = FBSDKLoginKit; - path = FBSDKLoginKit; - sourceTree = ""; - }; - D6AB20A50A411179406CFCC38BE250E8 /* FBSDKCoreKit */ = { - isa = PBXGroup; - children = ( - FF0061924D0DC116A613AE4C9DAE01F9 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, - 71D1D5E712D5FE0416A65DC9B5034FEA /* _FBSDKTemporaryErrorRecoveryAttempter.m */, - 4E0B3CA33E133107D98130512D5ABCA4 /* FBSDKAccessToken.h */, - 98DE9A917E74C29FF0C04D3F34577E34 /* FBSDKAccessToken.m */, - F22817755999F07C72B9926B2951E5E5 /* FBSDKAccessTokenCache.h */, - 8F81808A22C2B64B21EBAC60C04E9D8D /* FBSDKAccessTokenCache.m */, - C9E743A8CAC5904C22B2693CB537CDAB /* FBSDKAccessTokenCacheV3.h */, - 52417322792DA7847140539AD1E36B84 /* FBSDKAccessTokenCacheV3.m */, - 15F9A8A62DACFD81B83DB82829BBA2B7 /* FBSDKAccessTokenCacheV3_17.h */, - 58010336F943048ECFA0A1AAC735B4FD /* FBSDKAccessTokenCacheV3_17.m */, - D147AE625F780B9CAA047297593B0642 /* FBSDKAccessTokenCacheV3_21.h */, - B149B61A2E8A5CAF7ED3D8AF703D6A62 /* FBSDKAccessTokenCacheV3_21.m */, - FB5F8762D5C07C9D2811801D81762DE6 /* FBSDKAccessTokenCacheV4.h */, - A24703334123300C7A5DC51D092F1AFE /* FBSDKAccessTokenCacheV4.m */, - 88C1AB3D247B276DA891FB403754FDD8 /* FBSDKAccessTokenCaching.h */, - 36263CA62B1CDCF318BC1664ECE07634 /* FBSDKAccessTokenExpirer.h */, - FD54212F3F49662E7496C1424579F714 /* FBSDKAccessTokenExpirer.m */, - 637F614A142E33D8FF0BD49303E7FB85 /* FBSDKAppEvents.h */, - C61B837CB3195F2C9943B1AED1F9F19F /* FBSDKAppEvents.m */, - D96068655E217940EC090E765BB43E4A /* FBSDKAppEvents+Internal.h */, - C80CE7F8202FAE0212600334F73C626E /* FBSDKAppEventsDeviceInfo.h */, - 0C95079CAEF32DDC64E1C89A7F39EDA8 /* FBSDKAppEventsDeviceInfo.m */, - CF6278548ACA09ED08E53E362AC2D377 /* FBSDKAppEventsState.h */, - 5ECE22AA714C9BB53DCDC4FBD072C712 /* FBSDKAppEventsState.m */, - 7C8D8ED83FB04860566696F2F50BCB92 /* FBSDKAppEventsStateManager.h */, - F98A877909D0481D378DB77DDCD1E0E3 /* FBSDKAppEventsStateManager.m */, - CE2C28DFD1E5A9412217647B521F0162 /* FBSDKAppEventsUtility.h */, - C76AE4D97024E30E41427574560B724C /* FBSDKAppEventsUtility.m */, - 7E64A481A444C01DA2688182A6EA8EF2 /* FBSDKApplicationDelegate.h */, - 74183EA0C98FDD0C21C76BB3EF08A551 /* FBSDKApplicationDelegate.m */, - 36EAC42123EF9F27EDFC19D47B4E4240 /* FBSDKApplicationDelegate+Internal.h */, - 4D4D238950FCEDACE20DA84B233D3F2D /* FBSDKAppLink.h */, - 01D09DB0E935D388A430A6170C8C64FD /* FBSDKAppLink.m */, - DFB20B84C2F6319B37C11B510F2A75E4 /* FBSDKAppLink_Internal.h */, - 573A51D5E127CF2886394160D7BD2F03 /* FBSDKAppLinkNavigation.h */, - 9D13DA27869E09F92FC87BAAEE03E24E /* FBSDKAppLinkNavigation.m */, - B806E99B38970FADA34F5BA7380E4081 /* FBSDKAppLinkResolver.h */, - 90EC50FD3AFF315F5139B2A96D7A889C /* FBSDKAppLinkResolver.m */, - B1E53843C7E6B238722F8F0BBC442689 /* FBSDKAppLinkResolving.h */, - A37D3A7B2CDCECECC766D2C81855DDA3 /* FBSDKAppLinkReturnToRefererController.h */, - 2416AFA5E5D17796B7F4B7DD8EB11D7A /* FBSDKAppLinkReturnToRefererController.m */, - 8CF04024AA57BCD9CF217BFD80DFCF0A /* FBSDKAppLinkReturnToRefererView.h */, - FB8CD6DAB348DAFD9E9DBCEEEA92ED15 /* FBSDKAppLinkReturnToRefererView.m */, - F60DB3479D89EE24B07B63FC5BAA6556 /* FBSDKAppLinkReturnToRefererView_Internal.h */, - E32E2DD7DF8121A3D4E45ECDC0D14A16 /* FBSDKAppLinkTarget.h */, - 79D6C0D493E1CB052FD78ABBAD93F9F3 /* FBSDKAppLinkTarget.m */, - 2FACC2892857FDA98FD4BDF9CE744287 /* FBSDKAppLinkUtility.h */, - 3914AF5468160CCCABE4E00BBE8D0C3F /* FBSDKAppLinkUtility.m */, - 7CCFEFB3F60B7C03C9E254956B2654CA /* FBSDKAudioResourceLoader.h */, - 6A1F0C57AB361A0B5448BB5A8C0652B3 /* FBSDKAudioResourceLoader.m */, - 4E51439F5BC49A0852132AD199CA0DC5 /* FBSDKBase64.h */, - 9CD930FB246DD35558DF0A705CE410B4 /* FBSDKBase64.m */, - 0F2DE3F1BE6C875B3EC6C6D3BCBBE51A /* FBSDKBoltsMeasurementEventListener.h */, - 90588E8B37E34AA3C22F91A841EAA7C3 /* FBSDKBoltsMeasurementEventListener.m */, - 5FDF542EF058BB0A95BAE3B0CF1AEE20 /* FBSDKBridgeAPICrypto.h */, - 7BCC911BBF329B8E7AECD00D25AD2B17 /* FBSDKBridgeAPICrypto.m */, - 41BE2B3CE06A539EE51DC17FD2C87F35 /* FBSDKBridgeAPIProtocol.h */, - B117169BAC759590BB98AE1623DAF7D9 /* FBSDKBridgeAPIProtocolNativeV1.h */, - BDD7FC61CF4EFCF8C1A4126BCA4F58EB /* FBSDKBridgeAPIProtocolNativeV1.m */, - CF160737F9DEDAD37F5CA70D9780F04D /* FBSDKBridgeAPIProtocolType.h */, - E8F0AEC6BE33E5FD1E96549A225F2770 /* FBSDKBridgeAPIProtocolWebV1.h */, - 1E05958B26EC4042BF5AD4CFF089FAC3 /* FBSDKBridgeAPIProtocolWebV1.m */, - 425BCC180D0345E8C4B0ADC8B1701889 /* FBSDKBridgeAPIProtocolWebV2.h */, - 68E50591AC0CCC87D3E270FB013DC1AB /* FBSDKBridgeAPIProtocolWebV2.m */, - 2D8E0B555B6519C73FDC9A8567EEA7F7 /* FBSDKBridgeAPIRequest.h */, - D7E298E48D1C63DF1B44F7E6764B9A7B /* FBSDKBridgeAPIRequest.m */, - 3048AD4F8EDA8275428C4C7811A80A4C /* FBSDKBridgeAPIRequest+Private.h */, - A7077EE27E4C3ACA0EFB1D30EC17EE5A /* FBSDKBridgeAPIResponse.h */, - 84775819BE28E43353420F0E6F1B8FCC /* FBSDKBridgeAPIResponse.m */, - EFAEDF1263682F6600319D221F5B319D /* FBSDKButton.h */, - 2BEDB38D6E278A58C8A59B1A7DD33DC2 /* FBSDKButton.m */, - 896596E22E5952435B390ECB02A540EE /* FBSDKButton+Subclass.h */, - 93560A3DEE1CECCDC107CFAB3BB499F6 /* FBSDKCloseIcon.h */, - 9D6E8FD3B0E3FFDCE14B06B88AF029D4 /* FBSDKCloseIcon.m */, - F2AEBCE4368B77C3D1009CE796BC42FF /* FBSDKCodelessIndexer.h */, - CC1167BE518A66E03A59202D74A9B567 /* FBSDKCodelessIndexer.m */, - E56BF6A2B12AD3BCA56AF7D85E9789EC /* FBSDKCodelessMacros.h */, - 4DFD1785AB2CB6CC7B8E6BA2EA7451CA /* FBSDKCodelessParameterComponent.h */, - 438004F3EA56A0997D8DC72AB1E872F1 /* FBSDKCodelessParameterComponent.m */, - 1C467E3B1B45720906379D75092FAD95 /* FBSDKCodelessPathComponent.h */, - 1FCDB26FCDD6C563AAA95B866AB3B749 /* FBSDKCodelessPathComponent.m */, - 9EC323AE5EC694C58AACA37EA56DD8E9 /* FBSDKColor.h */, - F0385C6D2F93A7C8AFB0CFA0DD973B28 /* FBSDKColor.m */, - 6BC8EDA93EEF3C522920BF96CCF7B48A /* FBSDKConstants.h */, - 75FEB5265D3E6A8EA37CE79FF28CC305 /* FBSDKConstants.m */, - D06DA231BBDC01C157B1B7B728A9541B /* FBSDKContainerViewController.h */, - F923853AC5FA5E6F9FC0F5013D8AB985 /* FBSDKContainerViewController.m */, - E281A6482328DF905399F975E90A072F /* FBSDKCopying.h */, - D391B61CBB04FE8ABA143F2DB2A9DEE2 /* FBSDKCoreKit.h */, - 8871173B41249C1FC241B882B9866E4A /* FBSDKCoreKit+Internal.h */, - D6C11975903993C33B758858CD139334 /* FBSDKCrypto.h */, - FB00299734B1BA388AAA5E113E34F44F /* FBSDKCrypto.m */, - 5DA221D791E87BBA9576770858C23B30 /* FBSDKDeviceRequestsHelper.h */, - 7256815F8C1E6E1B8D491EE1F2FAA575 /* FBSDKDeviceRequestsHelper.m */, - D0CE9FB255D704C4696E2CE178E9359E /* FBSDKDialogConfiguration.h */, - 6FC337BEBCC2F3E574AF4FBFAFEEE2A9 /* FBSDKDialogConfiguration.m */, - BA43540311CC563BB250930A6EA182E4 /* FBSDKDynamicFrameworkLoader.h */, - 6D356FBA9BA750D10CD0A64F98C6E0FC /* FBSDKDynamicFrameworkLoader.m */, - E09816165A3429E6898C6570A4C62778 /* FBSDKError.h */, - 3402E6F10B522B2C59BFFD3D0E53B5D4 /* FBSDKError.m */, - 1494E5A5D9A558C6227FFF8DC84DCE68 /* FBSDKErrorConfiguration.h */, - F8AFC580CDE696A0C6A0219AAC766B78 /* FBSDKErrorConfiguration.m */, - 74725CF7D6F8C6598117247945C2B247 /* FBSDKErrorRecoveryAttempter.h */, - 36DEEB1D20C9CEE6C8967EC6612AE4D2 /* FBSDKErrorRecoveryAttempter.m */, - 85D1C691880860955FF8B13B8109A98D /* FBSDKErrorRecoveryConfiguration.h */, - 9EE33CDB6F4A474942660C4C90389AC2 /* FBSDKErrorRecoveryConfiguration.m */, - A9F29554C2768B6E8C2F71AC5CF284F8 /* FBSDKEventBinding.h */, - 8CB02102AAE2843CFC8BE65E6DF92B68 /* FBSDKEventBinding.m */, - 02F645A0F8E3E9FB2C954ED5E77D22CB /* FBSDKEventBindingManager.h */, - 71310AF7EA7E6C52FA807CAA53194991 /* FBSDKEventBindingManager.m */, - 637542F760DC2652DDD04CCA71B39141 /* FBSDKGateKeeperManager.h */, - 9011A772C24067C794791AEC930D8E9D /* FBSDKGateKeeperManager.m */, - 4D186D3F2E558797188A95F3D609ABB4 /* FBSDKGraphErrorRecoveryProcessor.h */, - 1AB9394910259FF62951218A126BE2FC /* FBSDKGraphErrorRecoveryProcessor.m */, - A184A9239C81C7D3A176CFED80C1D523 /* FBSDKGraphRequest.h */, - B974808D7E1DCE12500E0CCE413D3FE7 /* FBSDKGraphRequest.m */, - 571D00EBFC740915CC8BF1BF0CF042DB /* FBSDKGraphRequest+Internal.h */, - D60A5DE7BC8975EC909F89F396E34B02 /* FBSDKGraphRequestBody.h */, - 49F85DFE8E5A6AC34239ABF8277E1C53 /* FBSDKGraphRequestBody.m */, - 48C57F0B0F44B45B793C87D46EF597EC /* FBSDKGraphRequestConnection.h */, - 7F5FA93A8843A8A24C1DD22FA4790374 /* FBSDKGraphRequestConnection.m */, - 492AD5E601B229EC94FCC401C595A8A5 /* FBSDKGraphRequestConnection+Internal.h */, - 37287A6C0CA17545202D7C45248C7F06 /* FBSDKGraphRequestDataAttachment.h */, - E881A81652A1D0BAE466BDF1E38A7A9E /* FBSDKGraphRequestDataAttachment.m */, - D5382BA900C7270128420C06132D3F9A /* FBSDKGraphRequestMetadata.h */, - 4356A5464CA359F3AAF442305B61C0E6 /* FBSDKGraphRequestMetadata.m */, - F23E6A7CCC11A73F926A17E7BFE16A23 /* FBSDKGraphRequestPiggybackManager.h */, - E3E2E0E25740B4D5F7A040F5AFCB77F5 /* FBSDKGraphRequestPiggybackManager.m */, - 17F1E6CE494509C9A030CBE8BA8DC373 /* FBSDKHybridAppEventsScriptMessageHandler.h */, - 11D89E48B7975320184D6D79E3CCE715 /* FBSDKHybridAppEventsScriptMessageHandler.m */, - E9F6093BA73FBC577856D2EDF5933F42 /* FBSDKIcon.h */, - 77E1C856F9E6CBC3DAFC3F560FEB269B /* FBSDKIcon.m */, - 753B43030C94B5D482765D5AEE8AD428 /* FBSDKImageDownloader.h */, - ECCA59DF3BE08873773EB45AFCF309C2 /* FBSDKImageDownloader.m */, - 60DDB47BCC36A082BDADDA61FF885C9A /* FBSDKInternalUtility.h */, - 87A1C683F9BBBCE5E83E55B5C7944670 /* FBSDKInternalUtility.m */, - F50EB83BD39BE11D2533696E6F5124E0 /* FBSDKKeychainStore.h */, - 3900B179B07BC1E2E443BE149B8A4D36 /* FBSDKKeychainStore.m */, - 8D02FDE3DC28C5271AA85D1C05D5EC1C /* FBSDKKeychainStoreViaBundleID.h */, - DCF1A2B764698D3914EDBF3F326115A9 /* FBSDKKeychainStoreViaBundleID.m */, - 8B6D228AE815C06E133EF64C174C72E8 /* FBSDKLogger.h */, - EC9E958B12B7011BF73EFEEBD1E109EA /* FBSDKLogger.m */, - 430A02A93F5FECAAE90FBDF4933C688C /* FBSDKLogo.h */, - 0FE4032350E85F10B125E9CF5BDE9060 /* FBSDKLogo.m */, - 7E3637212D99E5D9D594B142A123B12D /* FBSDKMacros.h */, - 1FF0042AB89E1A1C29ED9963E8D58B26 /* FBSDKMaleSilhouetteIcon.h */, - 46E4806CAB95C8B48475BEBC0E874E3C /* FBSDKMaleSilhouetteIcon.m */, - 35264EAAEDA442D61366C2579D737096 /* FBSDKMath.h */, - 24F33CC4C21214AAEF13CD898EEDDA59 /* FBSDKMath.m */, - 2199B0D3020321AECE2FCAB35519F2D8 /* FBSDKMeasurementEvent.h */, - A7436B149F7AA7DED9A0DDAB8606B22E /* FBSDKMeasurementEvent.m */, - 36B84180D825D51CD538A3C8DD90DB0E /* FBSDKMeasurementEvent_Internal.h */, - 728CCDBCE8BCE04530872D25A40EC26B /* FBSDKMonotonicTime.h */, - 872AFF912B872C834616F86910AE7D58 /* FBSDKMonotonicTime.m */, - 3050DE354CD6B3906D8E195C2B426717 /* FBSDKMutableCopying.h */, - 4CEE28ACBCB76E48C6CECF1B56BD72BF /* FBSDKPaymentObserver.h */, - 6AF06C969B2C2C97DA627F0C3C4FE1EE /* FBSDKPaymentObserver.m */, - 694ED0A520C178548F0E7A0208477BBD /* FBSDKProfile.h */, - 50846CBCA2B8D71AFC25775782EA1F78 /* FBSDKProfile.m */, - AF42BD4BDCEC3CEED17676D81C4F1A74 /* FBSDKProfile+Internal.h */, - 3A774FE4B93A9712D216B5CC65BE17CB /* FBSDKProfilePictureView.h */, - CA2B01A6741A994FF113A8A4BFE17B6A /* FBSDKProfilePictureView.m */, - 910CB851BE5295852DB67915E3780799 /* FBSDKServerConfiguration.h */, - 8D2EE10241E3819E49B5C2F29028E57C /* FBSDKServerConfiguration.m */, - FFC1B831ADD9CD9C5B5F180E0C6F4D8A /* FBSDKServerConfiguration+Internal.h */, - B367B8D6C41F0896DA749F72427B5705 /* FBSDKServerConfigurationManager.h */, - A1539B870F9BF14B66F7A6970C48E40E /* FBSDKServerConfigurationManager.m */, - 95166DEFF81A3E56BA87EFD60B898F38 /* FBSDKServerConfigurationManager+Internal.h */, - BC471364835E49717263F070CDE2FE65 /* FBSDKSettings.h */, - F955FB53B26A9C088F7041127BEAE077 /* FBSDKSettings.m */, - F9CDF1697BBB5E64C4ED478A91B0A61E /* FBSDKSettings+Internal.h */, - 2B98C09EEA0F0C0EC0F64F559DB33544 /* FBSDKSwizzler.h */, - 07B60DF9FAF514E71418E410001F5B95 /* FBSDKSwizzler.m */, - DB2EF850EBCE09CACDAC3FC08C5A6316 /* FBSDKSystemAccountStoreAdapter.h */, - CDA9BAB3196387E0314C46866E835E46 /* FBSDKSystemAccountStoreAdapter.m */, - CFF3D875D80D2EE1229786CFF989100C /* FBSDKTestUsersManager.h */, - 4BBF21A0DE8D9464944CEA946888E203 /* FBSDKTestUsersManager.m */, - 221F1BE6199278BCFEF09116D734B09D /* FBSDKTimeSpentData.h */, - E163C0A847A3C5C16669D7DE4A88B426 /* FBSDKTimeSpentData.m */, - C945FD29E5F4FF45963B8ED5BD5E7419 /* FBSDKTriStateBOOL.h */, - DEE4A5FC5FA4E4D6868D5FD9D957F62C /* FBSDKTriStateBOOL.m */, - 1CCC2C7B7ECA4908B30783AE4C009544 /* FBSDKTypeUtility.h */, - C11A5474BDDD996985739D792062ECF7 /* FBSDKTypeUtility.m */, - AC56E678BF71344FCE4D2F0C449A4C6A /* FBSDKUIUtility.h */, - 5D72D062B7C25C77BDF7FE2899F37579 /* FBSDKURL.h */, - B01A82939912B5AC60C4A4B5BA9B42CE /* FBSDKURL.m */, - 0141F45C056C12BE42836B932C742FEB /* FBSDKURL_Internal.h */, - 1755DD410FCEDF8A2C8E08D839A2CEC5 /* FBSDKURLOpening.h */, - CF22A7A862461ADDBF6314E4C63C3553 /* FBSDKURLSessionTask.h */, - A298A8B4FA902909A38E1FF9DC786725 /* FBSDKURLSessionTask.m */, - 703420D6AEDF7263176E2A6B5FF420B3 /* FBSDKUserDataStore.h */, - 98260EDA28424DEDF24F0757EE90ED2C /* FBSDKUserDataStore.m */, - BDFBAB4D2E42A0039BA1993C7797D48D /* FBSDKUtility.h */, - 552959FE670D63C938C2E841A05FE5EE /* FBSDKUtility.m */, - F743CDE85BB80D3D263C45B889C27EE2 /* FBSDKViewHierarchy.h */, - FEC557752B89810471682B9DA154733B /* FBSDKViewHierarchy.m */, - 3888A0F4A81ABDD4F044E36198568B3B /* FBSDKViewImpressionTracker.h */, - 7F77C49002C9EC92243873ABA535AD8B /* FBSDKViewImpressionTracker.m */, - 6880F2907AC6DDAFBACA76A47CF74DBF /* FBSDKWebDialog.h */, - F98533D8D30B29D9AD2A935E5AB2991B /* FBSDKWebDialog.m */, - 37EB26347BB4DFC8DA1383518BAE555C /* FBSDKWebDialogView.h */, - 23768DAF0342C9701207F4FC0DF777BA /* FBSDKWebDialogView.m */, - DA77070E05A05346F4AE2A2DC5D66D34 /* FBSDKWebViewAppLinkResolver.h */, - 19FE382DC78491713543561BBBF1ACB4 /* FBSDKWebViewAppLinkResolver.m */, - 7F421B1170AF2AF88DB304A16CA8EEB1 /* Resources */, - DADB5B095A6DDAAEB66552638E2A3E58 /* Support Files */, - ); - name = FBSDKCoreKit; - path = FBSDKCoreKit; - sourceTree = ""; - }; D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -2954,931 +2848,650 @@ name = Frameworks; sourceTree = ""; }; - DADB5B095A6DDAAEB66552638E2A3E58 /* Support Files */ = { + DA907DAC16F0F51AA7ECDCFE90E8669B /* Products */ = { isa = PBXGroup; children = ( - 6E7108190DE51C1390A0281C88FD33C4 /* FBSDKCoreKit.xcconfig */, - 5C389F8C57479C85C7090D73FB7FA9E0 /* FBSDKCoreKit-dummy.m */, - B3C7B5EA07500465834C80ED7A2889B0 /* FBSDKCoreKit-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/FBSDKCoreKit"; - sourceTree = ""; - }; - DBA157B639AB6EFFA32D6F34858872C9 /* Support Files */ = { - isa = PBXGroup; - children = ( - B161B66C41A404C41870786CE63774C0 /* FBSDKShareKit.xcconfig */, - 8BB1E36689F5554BAC591B87077238BE /* FBSDKShareKit-dummy.m */, - 74B5E30019C0CAD227B9BFDD862435DA /* FBSDKShareKit-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/FBSDKShareKit"; - sourceTree = ""; - }; - E2D2CA8823C15D1353278805C5B7D7E4 /* Core */ = { - isa = PBXGroup; - children = ( - 08D5371E49C72C6051B759DE8FD0A3AE /* DJLocalizableString.h */, - DBA8BBCF0CA2AC1812646FB22835B12E /* DJLocalizableString.m */, - 1BCE7F7A87D04C5891CCC6BF68872E00 /* DJLocalization.h */, - 597048BB4B8C11A8571132F090140004 /* DJLocalizationSystem.h */, - 4FD0258FA67F6312F538FCFA66ECF893 /* DJLocalizationSystem.m */, - 4074D9857D6E6F58769A514119FB7676 /* DJLocalizationSystem+Private.h */, - 2A33DA3C920305BBC61E8D81434CA15E /* UIStoryboard+DJLocalization.h */, - C40C9C5CF2D2F44EE522F692722FB7C1 /* UIStoryboard+DJLocalization.m */, - ); - name = Core; - sourceTree = ""; - }; - E5DF5320A0927263A5A24B5083496DAF /* Bolts */ = { - isa = PBXGroup; - children = ( - C60F2E8B2A78381129824BB0DE6EAC01 /* AppLinks */, - 9B1E11BE9CD437F34A300803B0BCC327 /* Support Files */, - F675DAE50F387E118EC684DA72421734 /* Tasks */, - ); - name = Bolts; - path = Bolts; - sourceTree = ""; - }; - E768A7C259FD613AC5835CC3426C8245 /* Pods */ = { - isa = PBXGroup; - children = ( - CDAB06A7C7053F47214C6E41985D3F9C /* AFNetworking */, - E5DF5320A0927263A5A24B5083496DAF /* Bolts */, - 61F09071D753E4278EFDB3BD5AC56378 /* CodFis-Helper */, - BA77D310356A324C9476043870971805 /* DDDKeychainWrapper */, - 04BF4566B38B7EFF5534C2F1F9CDFC52 /* DJLocalization */, - C037EA72F84C3E18E76D20FB67B16F2C /* Expecta */, - D6AB20A50A411179406CFCC38BE250E8 /* FBSDKCoreKit */, - D5FEFD98881735C07412910A95B1005A /* FBSDKLoginKit */, - B247099FC0A31A785D168A060D3CB955 /* FBSDKPlacesKit */, - 9684CF5FDF19EE91B73E75B4F0DEE794 /* FBSDKShareKit */, - AED3A1FA84DF9C2862BEE6DD0F4E7CB2 /* NSDataAES */, - 3C62312E93C1D3CAFC8C158B18D2605C /* NSDate_Utils */, - C653B99C7F6E27C3D0A933E2B08EDB42 /* NSString-Helper */, - 99B4FFD31BE14E0CD72A04BA8E764B77 /* nv-ios-http-status */, - 540A250E0DC0077B90C47A7B4E79CA17 /* PEAR-FileManager-iOS */, - C9FFBEDE7648A107F25A6A0EDA624047 /* PureLayout */, - 5F8860499B7ECCD0AEB47D4289EDFE3B /* RZDataBinding */, - 0369835667FCDAB9C11C1BC90378833A /* Specta */, - 210B5D5DF13A8BD6BD14F8E6F79D6536 /* StrongestPasswordValidator */, - 63DA474227B505E4352903F6A0038AE5 /* UIDevice-Utils */, - ); - name = Pods; - sourceTree = ""; - }; - EB488F46438E970BE1558ABEADD10608 /* Support Files */ = { - isa = PBXGroup; - children = ( - CB33176DEE595631B0B0425686DEE194 /* CodFis-Helper.xcconfig */, - 756F693A95219BC9E7CD9179F08C664B /* CodFis-Helper-dummy.m */, - C45B50F5A6843CCD4B173EE8F9995171 /* CodFis-Helper-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/CodFis-Helper"; - sourceTree = ""; - }; - EDD9170F40AEED9F6D057F8B3764417F /* Products */ = { - isa = PBXGroup; - children = ( - 355434E20D14554D05BE233DB2BEEA77 /* libAFNetworking.a */, - DC02728687D2F81F35A254E52F69A7D7 /* libBolts.a */, - 3594FE530B0FFED1DE600BDF625A0FD4 /* libCodFis-Helper.a */, - 10EF7A11DA317BA06D1719FC71BD080F /* libDDDKeychainWrapper.a */, - 5CCBAEB24473A809E46448F10ECEDA78 /* libDJLocalization.a */, - A5B880FEB7120D903D08D5A4134FD8DF /* libExpecta.a */, - 96ED99C8C8CCC63543C5E357CACA0E1D /* libFBSDKCoreKit.a */, - E657144EF74FD9C48F4980B330EFBA36 /* libFBSDKLoginKit.a */, - 8E443B6E05DEC63F79E03144A6BCCD06 /* libFBSDKPlacesKit.a */, - C798E2F6F90FD31015E48545E9348A6F /* libFBSDKShareKit.a */, - 36C6768518C9BC0A70782352B58F4404 /* libNSDataAES.a */, - 38CACA500A3224F71AEE282AD652FB4B /* libNSDate_Utils.a */, - 4F6D6AE35FDDF06FFD471F85A2822BA0 /* libNSString-Helper.a */, - 7F9B2EDD33FE26C8C0919BAC14A84B4A /* libnv-ios-http-status.a */, - 4DDBFC1D5BDF4AED51727E70BC07E182 /* libPEAR-FileManager-iOS.a */, - F52ECE2FEB93B33312F1221D70F4F012 /* libPNObject.a */, - 842584E2EA582B6EB1EB7C5CA8F6F80A /* libPods-PNObject_Example.a */, - 6A78DD48E0F6C0AF870FBEBCD678F0CF /* libPods-PNObject_Tests.a */, - 7FBA496BAEED97BBB12AEAD557185E8A /* libPureLayout.a */, - 7160E1AC1908B0792C46512FA08C810C /* libRZDataBinding.a */, - 75F264043AE55106986AD913E0F017C2 /* libSpecta.a */, - 428E8FAEC05A290CCC356492D7D5E678 /* libStrongestPasswordValidator.a */, - 2D74020142BF85D96F99132CAA2CB50F /* libUIDevice-Utils.a */, + A4FA15D44DF6BAC7550EDEED10862AA3 /* libAFNetworking.a */, + ABE0DE406F96E79B4E03E81BCA8EEDE9 /* libCodFis-Helper.a */, + D36B49FD5ABAD2816CB691096190A382 /* libDDDKeychainWrapper.a */, + 99459C38FD720FDADE24FBCEA85E5912 /* libDJLocalization.a */, + 08F7F0770B4878B9883B87DCD8569CB4 /* libExpecta.a */, + EC8F4D0BE3B0C192EBA4A93F8887D89F /* libFBSDKCoreKit.a */, + 5DE0FEFC3995E740EC1AE2611D0AEFB0 /* libFBSDKLoginKit.a */, + B419F3EDE88DB7099BE821352CFBB7E1 /* libFBSDKPlacesKit.a */, + 85128AF76199890A6DD56FE81089D883 /* libFBSDKShareKit.a */, + E9C322606300A7FE3DE117B824BF8D30 /* libNSDataAES.a */, + F16BAAF49CEBC19FEACD38152053DB72 /* libNSDate_Utils.a */, + D770FA89FA490372BDD42164B4003345 /* libNSString-Helper.a */, + 588D820C376D20E8CD9260913BDF6AFC /* libnv-ios-http-status.a */, + 14AC90D3D006C6B19A7F2C252814BA9A /* libPEAR-FileManager-iOS.a */, + 165209F924C9C7EAF3EBBB35DD106B3D /* libPNObject.a */, + DB97C961AD46E3B9D94105329C4D9B03 /* libPods-PNObject_Example.a */, + A0A3B91BACAEA694F02F88A2DAFBF39C /* libPods-PNObject_Tests.a */, + E4E7B3DD46ABB0DBBB56BD5AE90E4911 /* libPureLayout.a */, + 3E0C40FD0298A1FF91D8C5C803BEADF6 /* libRZDataBinding.a */, + 15B13B063AA97C48C9010C298AECBDDA /* libSpecta.a */, + 5DCBD61C4C21E19A1CB0764FA976223E /* libStrongestPasswordValidator.a */, + C8166BB3BD7A8B94692E66D7DFC0AC10 /* libUIDevice-Utils.a */, ); name = Products; sourceTree = ""; }; - EFA97131BD23ACC22BEC06AE14D43652 /* Support Files */ = { + E1A89DFBACBB7722611D67E20263A1C4 /* UIKit */ = { isa = PBXGroup; children = ( - FA5E118A013F6143F08306D223E22DB8 /* NSString-Helper.xcconfig */, - B7E06A4FD0148EDDBC7F0A342EEB7F2C /* NSString-Helper-dummy.m */, - 95EC7412550E7D4F1BE8A2F9C300660B /* NSString-Helper-prefix.pch */, + B0B24426C939A6FD4545BD5BE650AF6F /* AFAutoPurgingImageCache.h */, + 2CAC747BE976C69C78E92A5C30034968 /* AFAutoPurgingImageCache.m */, + 89D7AE658EB0D26CDDEED9E3D6EBECBB /* AFImageDownloader.h */, + 3F143CE20C361DA7E9B8F72CDB661712 /* AFImageDownloader.m */, + 116F9D84B0EF0D8D362E45B93BC3C327 /* AFNetworkActivityIndicatorManager.h */, + 46E7278CF50B1CF42F86A357ED26A424 /* AFNetworkActivityIndicatorManager.m */, + 2AF4AA6B9439CE9EB38237BEBD1DF9A5 /* UIActivityIndicatorView+AFNetworking.h */, + 49A329A23865766087180AEF35BC03E4 /* UIActivityIndicatorView+AFNetworking.m */, + 98857CB1030FB61A153843E317B27C29 /* UIButton+AFNetworking.h */, + 15532673F269791E0F4FB78CBD009CAE /* UIButton+AFNetworking.m */, + C85E59E3F90743871D0D27C59B20F7CD /* UIImage+AFNetworking.h */, + F4933595BDE477A93E7D21927E0E76D5 /* UIImageView+AFNetworking.h */, + 46E67BA60AE693C2F674A4186C8FC4A5 /* UIImageView+AFNetworking.m */, + B8DB5620089FEC987D9A9BAE45377650 /* UIKit+AFNetworking.h */, + 00F67A252F852FA5D43DA99DC2BA9A27 /* UIProgressView+AFNetworking.h */, + E0BD5FAE5D434555DB4594601FBDE6B0 /* UIProgressView+AFNetworking.m */, + 0238CC0291309C0FE2C236CE20E10A93 /* UIRefreshControl+AFNetworking.h */, + 19F77004B1D23F585E26D32EF720CB98 /* UIRefreshControl+AFNetworking.m */, + DDEDEE1FD437ED5BB2C80CD481EA89CB /* UIWebView+AFNetworking.h */, + 1940E37789851445FC73B7F51DBC3FAF /* UIWebView+AFNetworking.m */, ); - name = "Support Files"; - path = "../Target Support Files/NSString-Helper"; + name = UIKit; sourceTree = ""; }; - EFB4DA92893B78F4E7DD53E1322B26EA /* Support Files */ = { + E2CCA1A4F10FD0B811899F9DB8B55C40 /* Support Files */ = { isa = PBXGroup; children = ( - 44FB8FBE06B0DE294D5E3CE220091D81 /* NSDate_Utils.xcconfig */, - 69EF28D6F008F53D7ABC77D9E8AF8B9C /* NSDate_Utils-dummy.m */, - 8788FD6421B5D48810917D414E32EB40 /* NSDate_Utils-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/NSDate_Utils"; - sourceTree = ""; - }; - F675DAE50F387E118EC684DA72421734 /* Tasks */ = { - isa = PBXGroup; - children = ( - F4729C3F5071C54DEFEB4216B8B2323A /* BFCancellationToken.h */, - E2C18F1DE394BBAA158B7DF75CCD1F50 /* BFCancellationToken.m */, - EEAA97C42918442A9D343A8584C06BA3 /* BFCancellationTokenRegistration.h */, - 0A61AFC807F6C8014E337C23ACE1304F /* BFCancellationTokenRegistration.m */, - 6007FF7DBED0A6E14792E0848FB6407D /* BFCancellationTokenSource.h */, - 32433AF8FA28B0D0E2F36128EE536F98 /* BFCancellationTokenSource.m */, - CD7C42343EA4E9375F9C8787A29D207C /* BFExecutor.h */, - 953E51768F131AAF8387BCC13496F136 /* BFExecutor.m */, - 8D0A99B2023C12BABCF67DA0F8B278E3 /* BFGeneric.h */, - 7F014F85FF0564123AE92E06EE1AE8F4 /* BFTask.h */, - 597450F63277CB0C0E57D5DBB6812CB2 /* BFTask.m */, - 4F6CDCF57E54FF1CFF72622445A698CC /* BFTaskCompletionSource.h */, - 3DCF10C254F77068C96E2CDFC78408AC /* BFTaskCompletionSource.m */, - 95EEFB5ADA1B95FB3EEF52E2148EA679 /* Bolts.h */, - EF288E956A08FF3866590042EBB85D37 /* Bolts.m */, - ); - name = Tasks; - sourceTree = ""; - }; - FAC869D6D0FB0739161FFF09C0A0C695 /* Pod */ = { - isa = PBXGroup; - children = ( - A3A5F12992B96E46DBF7C8E5654C2714 /* LICENSE */, - F5BD20344220E2BA0C293EBDEEC72B0B /* PNObject.podspec */, - 652BD6F2DA0097002F0CCD90BDA73DF6 /* README.md */, - ); - name = Pod; - sourceTree = ""; - }; - FC86C4BB19FE88FE0374158B0E3D8400 /* Reachability */ = { - isa = PBXGroup; - children = ( - 3177A3C9B3C8BFF821785E3B07D0F1A4 /* AFNetworkReachabilityManager.h */, - 1030628E5473343492BCAE6BCA61C31C /* AFNetworkReachabilityManager.m */, - ); - name = Reachability; - sourceTree = ""; - }; - FD01EED2C5FB40A17E8334B2B77B1886 /* Support Files */ = { - isa = PBXGroup; - children = ( - B12593357CB41BECEABB9248D6FF3783 /* nv-ios-http-status.xcconfig */, - F82B8B52280513D450B72898E138C793 /* nv-ios-http-status-dummy.m */, - 46D0C74A87C8AB16098620D5F19CEEB9 /* nv-ios-http-status-prefix.pch */, + 89A3D09C33C7AED2AF8040BD13026AB8 /* nv-ios-http-status.xcconfig */, + 0E9DC66BA4CF88F7C64A5541363FBED1 /* nv-ios-http-status-dummy.m */, + B2603749B74A4AD3CDEEFBBD7C24711F /* nv-ios-http-status-prefix.pch */, ); name = "Support Files"; path = "../Target Support Files/nv-ios-http-status"; sourceTree = ""; }; + EAE60BEC304D9CA57F52CD8DABC52F9F /* PNClasses */ = { + isa = PBXGroup; + children = ( + 7938D545C7ECB8A31117F219C2AD44B9 /* PNAddress.h */, + FADAA3FF0222B5B84754FD3CA6737C89 /* PNAddress.m */, + C683BDEECC7BAFC3EA7D52560756D135 /* PNInstallation.h */, + E75944AFC65460CE9BDE73442A1B20F9 /* PNInstallation.m */, + C05ABB4A36B18442EE918526657C6E1A /* PNLocation.h */, + 5CE44581508EAE6436379B373E097CF6 /* PNLocation.m */, + 9282AF3EFCC357C5959675559F2884FD /* PNObjcPassword.h */, + 40DE286B1D787AB5C09BD6CEE42CF607 /* PNObjcPassword.m */, + 9A1D5E7FB99AB4119487B6405B2A2365 /* PNUser.h */, + FB210269B792D12FBF0B9F66012C955D /* PNUser.m */, + ); + name = PNClasses; + path = PNObject/Classes/PNClasses; + sourceTree = ""; + }; + FA8D1B0F4BB4475F895760ACE2BB3146 /* Security */ = { + isa = PBXGroup; + children = ( + 7E78B80A06ADEF143D3B7C7FC7B9BE22 /* AFSecurityPolicy.h */, + 795DADA0B9B333CDB165507CB9204A32 /* AFSecurityPolicy.m */, + ); + name = Security; + sourceTree = ""; + }; + FB527327A99D5ECEFC83090FC10B2A0E /* Login */ = { + isa = PBXGroup; + children = ( + 59076AE8B0B37FC426B608BB9D05806A /* _FBSDKLoginRecoveryAttempter.h */, + 6C242F4E115A5C19B823F1EC4849F83F /* _FBSDKLoginRecoveryAttempter.m */, + 43DB2D37D43A11FC957C2A84F8962D67 /* FBSDKDeviceLoginCodeInfo.h */, + 788FEB3D256D99DD8D7A722471620824 /* FBSDKDeviceLoginCodeInfo.m */, + 58E83BE268B916C7492AA798119A6302 /* FBSDKDeviceLoginCodeInfo+Internal.h */, + F89E7E3B86ED150A201E9DEFC41C0072 /* FBSDKDeviceLoginManager.h */, + 80FE97F3694EE6B6E4CB9155B58D0F33 /* FBSDKDeviceLoginManager.m */, + D8E2FECC4AED326CB988EDEED6FE2C1E /* FBSDKDeviceLoginManagerResult.h */, + 16C1C8A70B59DC2609612796ABC5F78D /* FBSDKDeviceLoginManagerResult.m */, + 0FCD28AD7A9829C2574D2F53127070F6 /* FBSDKDeviceLoginManagerResult+Internal.h */, + 622422F03D3CC3C8D6997AACE80866FD /* FBSDKLoginButton.h */, + 1E54734CCEA2CFA69B47CE059CE2F533 /* FBSDKLoginButton.m */, + F125EC2D5C81E1A620636DC66E53E173 /* FBSDKLoginCompletion.h */, + FBEF15B5B675FEAFC1DFB885307EFC13 /* FBSDKLoginCompletion.m */, + 23D55619D789DAD7C33C125AA9308EE3 /* FBSDKLoginCompletion+Internal.h */, + 88A50E4ABA1C58A7A1EA08CA71E37AD9 /* FBSDKLoginConstants.h */, + D4C45BBFDF147786D2B427D5021DD817 /* FBSDKLoginConstants.m */, + 20DAF9898D1FB5AE1BA63DA82A735129 /* FBSDKLoginError.h */, + CDBB708831E5671B330744AF3BEA58E9 /* FBSDKLoginError.m */, + 95ABF045D43F3A4657BE496887C3FADE /* FBSDKLoginKit.h */, + B696B371B113A88AE6CD91AE08725B69 /* FBSDKLoginKit+Internal.h */, + 3FFF9CC8B4BBBE7E5EE675C16648685D /* FBSDKLoginManager.h */, + DF9FBD78DA4F4E3FC6A1E23A59FDC097 /* FBSDKLoginManager.m */, + 09FCD4D4C6FAE00C2867A08941862049 /* FBSDKLoginManager+Internal.h */, + 15F48A9728BBA277C804247BF08A55FF /* FBSDKLoginManagerLogger.h */, + 9C7E921815C3B02578A9DB2BBE641EF8 /* FBSDKLoginManagerLogger.m */, + 7299A9BB9B87CEAB0A4A0932D8DE62AC /* FBSDKLoginManagerLoginResult.h */, + DAAC2395F0B2B3A2483D7D44C4F4E793 /* FBSDKLoginManagerLoginResult.m */, + 0C71567207924ECBD75EBEBCB1C92D50 /* FBSDKLoginManagerLoginResult+Internal.h */, + 5757E806F82DC0D01FD261979E1F23E8 /* FBSDKLoginTooltipView.h */, + A0E0873AD9B4907C5E21DA0088EA20BD /* FBSDKLoginTooltipView.m */, + 5FD30BAE931271EA6C74D4B476940C1B /* FBSDKLoginUtility.h */, + 783F57714B50332B19C3657F77871C9D /* FBSDKLoginUtility.m */, + 4D058CBB37AC27CFE1BF1A7F24628D3E /* FBSDKTooltipView.h */, + 1FFD222B193C28AB5D745469C138B7A4 /* FBSDKTooltipView.m */, + ); + name = Login; + sourceTree = ""; + }; + FDE97E5210D5585BC4CECE16EC208E58 /* Support Files */ = { + isa = PBXGroup; + children = ( + FEF5D29249061AD2B5574942E0789298 /* FBSDKLoginKit.xcconfig */, + 8EC398B982FE89DC141E07985EC04F59 /* FBSDKLoginKit-dummy.m */, + 82AAC4668D089236B6FFDE96DDCC2E44 /* FBSDKLoginKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKLoginKit"; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 06940D1B31B86815B6EB58CBD63947DF /* Headers */ = { + 04636A396991778DB6263DC85229DDDE /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 2E56A479EE5632B3F07EF6A4EAE12F6E /* NSData+AES.h in Headers */, - 9E171C0F9990E5B1427C657C5EDC5F9D /* NSData+AESKey.h in Headers */, - 155702E102F845242B9DA9DF458264EE /* NSData+AESValue.h in Headers */, - 1ABA9189B4CF40B27C000C977FFFF3B3 /* NSData+SHA.h in Headers */, - 59474AB9E989D6A93A3FBCC7992F664A /* NSDataAESCipher.h in Headers */, - 4AF2E480F668CE59755717CF6F1E9057 /* NSMutableData+AES.h in Headers */, + 17E2936B89B3C181576B0B87BFF77455 /* ALView+PureLayout.h in Headers */, + 6C5BBEA4988BD371422CB2F26909617C /* NSArray+PureLayout.h in Headers */, + 6CC75EF927F9C0E860F82AB8821C9D00 /* NSLayoutConstraint+PureLayout.h in Headers */, + BA3AC23B598A58E0BE1F92F97FCC4E82 /* PureLayout+Internal.h in Headers */, + 4458BC0C4BC35FF62B62E2122A85696F /* PureLayout.h in Headers */, + 950B92435277B1CD5664F6641DA88B71 /* PureLayoutDefines.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 17EC5D9F1BD35264316CC9F838D3C194 /* Headers */ = { + 0DC7AD101324E84EA0ADC8643B0EC670 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DEBB0609855CA3B665A100A9FBEF1985 /* UIDevice-Hardware.h in Headers */, + D49DAAAF1F710727D4AACC703FB88FE4 /* UIDevice-Hardware.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1B2D297509011211D24596D324AE5891 /* Headers */ = { + 1719BD8C8C5FB63E8E3A195F3CF29331 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 75C312CEC1C737CAFC84563F54509DB5 /* HTTPStatusCodes.h in Headers */, - 7148ED4F09ADB5724647B175681F43AD /* nv_ios_http_status.h in Headers */, + C06F61A759022A62864BD9F8EE3660F3 /* AFAutoPurgingImageCache.h in Headers */, + 0343B86E9B9F5619970FCBD7370E033A /* AFCompatibilityMacros.h in Headers */, + D280A3B13923FF5FA778EF312BD965F7 /* AFHTTPSessionManager.h in Headers */, + 6B5B030904BA451F4FFE3AF2FD28D2DA /* AFImageDownloader.h in Headers */, + FEAA3C60F4BDDAC22BD1A6B047DBAAE9 /* AFNetworkActivityIndicatorManager.h in Headers */, + 5FF1B4EEDEE8BCA2E676E2548A412B02 /* AFNetworking.h in Headers */, + 1102564C9CDAC18DF8D6DB20F6523E72 /* AFNetworkReachabilityManager.h in Headers */, + B00EA522A62498626388BC649DFE2996 /* AFSecurityPolicy.h in Headers */, + D569D00367B456F6CDFE2700097562FC /* AFURLRequestSerialization.h in Headers */, + 9A7A3B80A68DB4A21A6833AA4683A7AD /* AFURLResponseSerialization.h in Headers */, + 05AB469F0F79C648F8E637F88CDB9E97 /* AFURLSessionManager.h in Headers */, + 418985D1EA0253EAA3C02FC1F31CA5E8 /* UIActivityIndicatorView+AFNetworking.h in Headers */, + 0C26E8CE5202114A92A9CFFBA1A9CE88 /* UIButton+AFNetworking.h in Headers */, + B27878E3B8F8ADB1FE01DBD6CB5812E7 /* UIImage+AFNetworking.h in Headers */, + F9AD2CFBEDD600706B921428D25DFA3A /* UIImageView+AFNetworking.h in Headers */, + C1EE07F0E0B54668574633B545FBCE48 /* UIKit+AFNetworking.h in Headers */, + D3DC240631E1FA883A5604B3E99BAE2B /* UIProgressView+AFNetworking.h in Headers */, + A845819E8332E3CA279E6B00EAA55366 /* UIRefreshControl+AFNetworking.h in Headers */, + 337C8A9592224E2629F71F4759AE0DF2 /* UIWebView+AFNetworking.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2E81AAF3D3C1F4A474CA20E18C212458 /* Headers */ = { + 20A7981755A2382DF22A9A75BCC9F8B3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - E18057422723A35A17E5406B92B18C22 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, - 4D45BCD71A67412E66CD5F5FBC09817A /* FBSDKAccessToken.h in Headers */, - C6EDB48E711DB3EF190C537E3F0DE2FC /* FBSDKAccessTokenCache.h in Headers */, - 4EF7C6AA4CF67637C088A692D97A3F3C /* FBSDKAccessTokenCacheV3.h in Headers */, - 9435F2185FB8F1F920F74F28D9FBE849 /* FBSDKAccessTokenCacheV3_17.h in Headers */, - 7D52500D3FDDABE7E762E2BA32A829A8 /* FBSDKAccessTokenCacheV3_21.h in Headers */, - 608D70BFC901F0E0850FE905E1B22ED5 /* FBSDKAccessTokenCacheV4.h in Headers */, - 6F113E5FC370DCCD136805E92AA6E286 /* FBSDKAccessTokenCaching.h in Headers */, - 20B7E433DFBD0DBED56893BFF3BF0BE2 /* FBSDKAccessTokenExpirer.h in Headers */, - 782D593E3ABC8D9ED33D07428C74A0E9 /* FBSDKAppEvents+Internal.h in Headers */, - F124E713787CDE2910453FB16BD3D4E1 /* FBSDKAppEvents.h in Headers */, - 37A14F41B74182E1F4352765133F4D3A /* FBSDKAppEventsDeviceInfo.h in Headers */, - C105A8EC420C24019F9CDC69EE1125FD /* FBSDKAppEventsState.h in Headers */, - 057F1FBCC48FE26BEAAFC841166A24F6 /* FBSDKAppEventsStateManager.h in Headers */, - 1516236708036531F5389345869FC723 /* FBSDKAppEventsUtility.h in Headers */, - 9E345583493920D776D6DBF4D5D9FCC6 /* FBSDKApplicationDelegate+Internal.h in Headers */, - EAF3850F8972DA21B78AEAF55B6D661D /* FBSDKApplicationDelegate.h in Headers */, - 06C0C60D56A7C0CCAF768E3A4E9AB6B9 /* FBSDKAppLink.h in Headers */, - FB18C6948AEE7EACCDC1FDF668CE4256 /* FBSDKAppLink_Internal.h in Headers */, - 62CD7EEF2ECEF4C717B34EAC31FF1616 /* FBSDKAppLinkNavigation.h in Headers */, - 8DC4443B35B3586B8AC917797647E366 /* FBSDKAppLinkResolver.h in Headers */, - F10B31BBFB40D7BBFC8DA991BFFC9CA9 /* FBSDKAppLinkResolving.h in Headers */, - 1EC667C28A883F71E73B11957A351A90 /* FBSDKAppLinkReturnToRefererController.h in Headers */, - D29747D066D10796D0C993F4A573A234 /* FBSDKAppLinkReturnToRefererView.h in Headers */, - B50D3CB4B413342105B295E3C97F0A86 /* FBSDKAppLinkReturnToRefererView_Internal.h in Headers */, - 97C34A7386E4EE92D33E9AAC35646083 /* FBSDKAppLinkTarget.h in Headers */, - 006BED8BFE932DD7340DA37AD07F02BE /* FBSDKAppLinkUtility.h in Headers */, - B82E6F93A321C222F1A65991CA162046 /* FBSDKAudioResourceLoader.h in Headers */, - D28A04764B5CDFA967FC656486D48951 /* FBSDKBase64.h in Headers */, - 6077978DFD6AEB722C14F5454152CB13 /* FBSDKBoltsMeasurementEventListener.h in Headers */, - 690368971F2E9CE324EAD3E5BCB09EC4 /* FBSDKBridgeAPICrypto.h in Headers */, - 1365944E062C822DAE50841B591092DE /* FBSDKBridgeAPIProtocol.h in Headers */, - B1BF1608B2900CEFD4F09E54237B3086 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, - 05C088DFC6B7B78CEBC3CC583F9EFD5D /* FBSDKBridgeAPIProtocolType.h in Headers */, - 6AA7F55001F7351BF7B7787DACF76112 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, - 1ECCF9FD4CAB281DC71836406297EEEA /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, - 843D825F85404AFDD19EBDEA51DCCA6B /* FBSDKBridgeAPIRequest+Private.h in Headers */, - 11A032D6F1C58ECE5032A9792F94A606 /* FBSDKBridgeAPIRequest.h in Headers */, - EC653215D3ADA72FD4BCAAB57C03F762 /* FBSDKBridgeAPIResponse.h in Headers */, - 0DFEE1E89932FCF077A79BC770959C6F /* FBSDKButton+Subclass.h in Headers */, - D637B0FB606F96DDB1090405AC68DA7F /* FBSDKButton.h in Headers */, - 6A3402625C37F719805DFA566F4D450B /* FBSDKCloseIcon.h in Headers */, - CE6FC656B71CE49D1929B03DAA4C01BD /* FBSDKCodelessIndexer.h in Headers */, - DA01FB67D979A8AAF96362514E177D99 /* FBSDKCodelessMacros.h in Headers */, - C6151BEEB23DDF196D6E95CF193B531F /* FBSDKCodelessParameterComponent.h in Headers */, - 663DF12A83821F8F6FAE312C5AD4025E /* FBSDKCodelessPathComponent.h in Headers */, - B7B751FAF2A2EFE61F4ABCA55379D2D9 /* FBSDKColor.h in Headers */, - 04F8C5939F5CEDA1001D6F83A2BF5456 /* FBSDKConstants.h in Headers */, - 262C8C58ABCB1A53ED85EFB444B5CE55 /* FBSDKContainerViewController.h in Headers */, - 9EBF6C7BB5AAFE1D481FC88ECF18EF34 /* FBSDKCopying.h in Headers */, - 2288D8F67198C774B8204CDB45AF4A16 /* FBSDKCoreKit+Internal.h in Headers */, - 60111251C8646FA2E47259CCCE8460B7 /* FBSDKCoreKit.h in Headers */, - D3F4CB7B7E59A376CBB90C7E9FD040F2 /* FBSDKCrypto.h in Headers */, - F92B3375B4C56B53AD510DBC775568E0 /* FBSDKDeviceRequestsHelper.h in Headers */, - DDBCE19574CF87AC15F9830C6615F1A2 /* FBSDKDialogConfiguration.h in Headers */, - BFD599BA403C7BD26002ED3F7742F301 /* FBSDKDynamicFrameworkLoader.h in Headers */, - 09BACA441264BCB9BA37CC51C72362FA /* FBSDKError.h in Headers */, - C52C26006BF633968AD16A807FAD1628 /* FBSDKErrorConfiguration.h in Headers */, - 0B7212916C37EFA267481E4FCC43E8C3 /* FBSDKErrorRecoveryAttempter.h in Headers */, - ABC263D1031969C1D71B3041C4DD4755 /* FBSDKErrorRecoveryConfiguration.h in Headers */, - 1B99B3B19F9FD7BF3A1B17EC6B68F8BA /* FBSDKEventBinding.h in Headers */, - 3394DDA959CE87540B4F85CE0C00F681 /* FBSDKEventBindingManager.h in Headers */, - D5267DBF729B6CC084014413DDF3E70E /* FBSDKGateKeeperManager.h in Headers */, - 04DA92C91D355F1BD1362E64BF9983DB /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, - AD605012F17A374A4E122900C378BFA3 /* FBSDKGraphRequest+Internal.h in Headers */, - 4CA1F64D6A78A6B04C0F7238C84D8610 /* FBSDKGraphRequest.h in Headers */, - D7A97CBB2FAB81157A076992090224B3 /* FBSDKGraphRequestBody.h in Headers */, - CD3D96D84B338C672AD633AB94417531 /* FBSDKGraphRequestConnection+Internal.h in Headers */, - E29D0F459D2434B32E483FDB1CD26C7B /* FBSDKGraphRequestConnection.h in Headers */, - 5AFB53D54EE2316DC4023811A7CCE6D3 /* FBSDKGraphRequestDataAttachment.h in Headers */, - BFD91A1C929C6C2877E5724CFA850D23 /* FBSDKGraphRequestMetadata.h in Headers */, - 5D2182FD08AE062F92FE88931DBFAD46 /* FBSDKGraphRequestPiggybackManager.h in Headers */, - B73C3F89E7E9FCFD987824DF0DD49935 /* FBSDKHybridAppEventsScriptMessageHandler.h in Headers */, - D75C08A935C6A3B505959E3CA7C8D557 /* FBSDKIcon.h in Headers */, - 955834F1FBBC2B2B57AD6CFC5C9D3ADB /* FBSDKImageDownloader.h in Headers */, - 63FC78E420303599334F77814AFD92EC /* FBSDKInternalUtility.h in Headers */, - 968591F9BE33B80DCD2923CB0E27946C /* FBSDKKeychainStore.h in Headers */, - B3C7FD6BF422D28D02E63DDDC0FF4620 /* FBSDKKeychainStoreViaBundleID.h in Headers */, - 820CB15C513F2BA704C19F14D8F5551B /* FBSDKLogger.h in Headers */, - CEA5812E90BAABDDD6423FF3CA847FF6 /* FBSDKLogo.h in Headers */, - 09571939EB55461BEC842C7FD4882D80 /* FBSDKMacros.h in Headers */, - 943D7A03B91F45530811A4B2CF1C1678 /* FBSDKMaleSilhouetteIcon.h in Headers */, - 8B131A472B68C36AEB6B1CFFCECE464A /* FBSDKMath.h in Headers */, - F6BE061A6B0677D514359B2C324578FB /* FBSDKMeasurementEvent.h in Headers */, - 2569731EC01713651BCCCEF26FBA4B2B /* FBSDKMeasurementEvent_Internal.h in Headers */, - 98E0CBE196EAB87956A159467606E5AC /* FBSDKMonotonicTime.h in Headers */, - 306ED9CA12E16C708E56BD16635A6C15 /* FBSDKMutableCopying.h in Headers */, - 33CC0F7B13AC73575172BA815BF10E0D /* FBSDKPaymentObserver.h in Headers */, - 3FDFF86F1C57C32D81DD974494E3F195 /* FBSDKProfile+Internal.h in Headers */, - 773BEA3FAAE0997715C221C487EB0F59 /* FBSDKProfile.h in Headers */, - 73C78C225B11ABF105BAD8AA9332B033 /* FBSDKProfilePictureView.h in Headers */, - F49537FCF3A337C569BEA6C5C7B60740 /* FBSDKServerConfiguration+Internal.h in Headers */, - 77D2DBD091ABBC8CB9F64F67CD2DE718 /* FBSDKServerConfiguration.h in Headers */, - 0AC90D35ED1DE0CA3040C345BC226480 /* FBSDKServerConfigurationManager+Internal.h in Headers */, - B187325EAC5A946E0D6B44FBE22149CC /* FBSDKServerConfigurationManager.h in Headers */, - 220762FD930FD827F1B57E8B44C1DFD9 /* FBSDKSettings+Internal.h in Headers */, - 558CBB2413898CE8A5E21E8D0BCEE17A /* FBSDKSettings.h in Headers */, - B2B2E34B0EA3A2D01698D21FA3BA0D4F /* FBSDKSwizzler.h in Headers */, - 9286B9627358DF5D7FBD4C66742ECF34 /* FBSDKSystemAccountStoreAdapter.h in Headers */, - 2661EE0A798F488AF6E173BED7FFD213 /* FBSDKTestUsersManager.h in Headers */, - AD47C71EA1346DB59FDBE1714C8E51EE /* FBSDKTimeSpentData.h in Headers */, - DA95AF32B46E0A5FD02890D1EECFA8D3 /* FBSDKTriStateBOOL.h in Headers */, - B00B1DBFD57BE261FC3C1F720A2416CA /* FBSDKTypeUtility.h in Headers */, - E21661116BD0FA3533E09989C2D09FB5 /* FBSDKUIUtility.h in Headers */, - 8380C55715AEEFB35B07C5A172AFB155 /* FBSDKURL.h in Headers */, - 2813FBF676A5A4363799BA4A20637923 /* FBSDKURL_Internal.h in Headers */, - 47368195F19C1C46383355E2F9192403 /* FBSDKURLOpening.h in Headers */, - 4CC29A85E310674DAFF5BACCC3BA935F /* FBSDKURLSessionTask.h in Headers */, - 5BA1F16E65D3271517D45CD86E3E29A3 /* FBSDKUserDataStore.h in Headers */, - 76080290D275B0929A7BA893204AA4BE /* FBSDKUtility.h in Headers */, - 2C0E8693F9FDA0D0630FFF392EDAD872 /* FBSDKViewHierarchy.h in Headers */, - 0DCF99229D6CEB4F9B047273EF6760F8 /* FBSDKViewImpressionTracker.h in Headers */, - EECF7AA8F87B3D42FF0549120636F4C9 /* FBSDKWebDialog.h in Headers */, - 660A7608EA012E8C1DC1662AE20083CE /* FBSDKWebDialogView.h in Headers */, - C31E39A53C341A1195CC5843D5D5166E /* FBSDKWebViewAppLinkResolver.h in Headers */, + F7572D21DF8AF5B54E84A07BE7269892 /* CodFis+Helper.h in Headers */, + 3440F7F8223B10CAD56EB004757BB31F /* CodFisResponse.h in Headers */, + E26BAA3BC52625A958D46CEDCE1D675E /* ResponseConstants.h in Headers */, + EDDC4397F84F8D4F9338AC7A071FC655 /* VatNumber+Helper.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 49EB204A00C21F08F34110493F52F70B /* Headers */ = { + 28424C3DF0912D274D17C6CDDF85B1BD /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D1EA65EEA148FC93AD5F0AEF580610E /* NSString+Helper.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2A5853E664DF3619EDFFBFCC4E74C152 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4942A54A0D322357D7127C05EC14DD0E /* PEARFileManager.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2CCDFF1CF3489BAE68B11AA39E4CC247 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + BD9F7C859FF34C1EDA79355328957E9B /* DJLocalizableString.h in Headers */, + 2C0878060882734C7EEBD8582F2B5B47 /* DJLocalization.h in Headers */, + 6C2E531C57C4F1953FAACA2CB90B44F9 /* DJLocalizationSystem+Private.h in Headers */, + 547AA9A7367677F93AB8E0A33AC5D4F0 /* DJLocalizationSystem.h in Headers */, + C54C91E1753EF3B7C9F1882E85D9F26B /* UIStoryboard+DJLocalization.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2F2019F5ADB5E28336AE1EB46495E07A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 994B3B1534C55CEE64D5B037DE69DD9E /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, + 6BC5464E4A0C2373D3E5FC8949D0830B /* FBSDKAccessToken.h in Headers */, + 0BCE59B499391666A94C6DFC1FF956DE /* FBSDKAccessTokenCache.h in Headers */, + 97B82F5D3F24BC7E39D132804F264406 /* FBSDKAccessTokenCaching.h in Headers */, + 76A2B77F22962B373B83D1CE8F22DEA4 /* FBSDKAccessTokenExpirer.h in Headers */, + 201D380515469CE43EE5B4A93C79E24F /* FBSDKAppEvents+Internal.h in Headers */, + 57C62D17B40BB4BF978DF60A8C39863F /* FBSDKAppEvents.h in Headers */, + DE84501032FA6F15D6ACC4A60A9D4F3B /* FBSDKAppEventsDeviceInfo.h in Headers */, + 175920BC859127C0435A40DCD5C6F42B /* FBSDKAppEventsState.h in Headers */, + 63DBC63AF26A06940250773BCC634092 /* FBSDKAppEventsStateManager.h in Headers */, + 326DDBC15726EB2B09FD91B2C449C94F /* FBSDKAppEventsUtility.h in Headers */, + EFDA626D4243F0F76A04BD540C796B8A /* FBSDKApplicationDelegate+Internal.h in Headers */, + 8BA1CFDE76C5611F900E4F1841FE03BB /* FBSDKApplicationDelegate.h in Headers */, + 8784B738E3DFADE24E98223F154F235E /* FBSDKApplicationObserving.h in Headers */, + E9914381C6A89C5CD9DB21569AAF45D9 /* FBSDKAppLink.h in Headers */, + 6CF2DBC0C134BD8E779F837704CA1005 /* FBSDKAppLink_Internal.h in Headers */, + 2161EEAF18690ADA5484FB01F0DF94F6 /* FBSDKAppLinkNavigation.h in Headers */, + A0581613DF78EB1E6383C9FC20CAC15C /* FBSDKAppLinkResolver.h in Headers */, + 2396AF52609298B1808D77429EB44B01 /* FBSDKAppLinkResolving.h in Headers */, + 1839C37F21FD26A6A1288A7FA1FCB59D /* FBSDKAppLinkReturnToRefererController.h in Headers */, + 71EB79CA9B68615A8C4E74B99558EF3D /* FBSDKAppLinkReturnToRefererView.h in Headers */, + 01BEC5CACA72D69AB8B9A3104AF68F57 /* FBSDKAppLinkReturnToRefererView_Internal.h in Headers */, + F955BCBA0CEF2CC243718D6C2AAE634D /* FBSDKAppLinkTarget.h in Headers */, + A347BAB4B140C11C098B3B2F8F7E9D4A /* FBSDKAppLinkUtility.h in Headers */, + 4202FE397B5127D6840408EFEA52B3F0 /* FBSDKAudioResourceLoader.h in Headers */, + 0C18E0C1B47D130BF6A0F4CE585D6AB4 /* FBSDKBase64.h in Headers */, + 1D58C6BA2F38E80634D5B3949C5E311D /* FBSDKBasicUtility.h in Headers */, + 4512317B3FFCFCFF2FD21C40DA117FC9 /* FBSDKBridgeAPI.h in Headers */, + DA94D79EFBDF8CF360A1CF857B4BD2CE /* FBSDKBridgeAPIProtocol.h in Headers */, + B4A5FB355527EDC56B58677399808AFC /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, + DD2D57180F5CF77AF85E337BDFE130B8 /* FBSDKBridgeAPIProtocolType.h in Headers */, + CA84492809BB960C929C0EA3A70CEA4B /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, + 9910149C8EA11B21E778DF0C0AF34875 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, + FAC5E7C6A5F20E5EC91B3A16E5F562FF /* FBSDKBridgeAPIRequest+Private.h in Headers */, + 40AB74DAEBC0BE7DC63052C42AFFB28F /* FBSDKBridgeAPIRequest.h in Headers */, + 42D8BB2726F0E8A390A969448A16E968 /* FBSDKBridgeAPIResponse.h in Headers */, + 6222B2B813E5259506BF12E63DBB2217 /* FBSDKButton+Subclass.h in Headers */, + 75CBB925680E20709B117272D49DE1DF /* FBSDKButton.h in Headers */, + 1FA2115E731999E6AF68FB0C34126B56 /* FBSDKCloseIcon.h in Headers */, + C545E27489D9E242EB8145E90E83160F /* FBSDKCodelessIndexer.h in Headers */, + A61BB1434D3AD7F5AB4A5DF28ABA0925 /* FBSDKCodelessMacros.h in Headers */, + CCE7F26350575AF1495E20BDF9E5B2DA /* FBSDKCodelessParameterComponent.h in Headers */, + FC7FDAC9FA73588BE2E8CBCB3BB56743 /* FBSDKCodelessPathComponent.h in Headers */, + 50A04036DE63DFC2414D7B4610169492 /* FBSDKColor.h in Headers */, + CF1964D35075F7B7FF6601ACE8F4255D /* FBSDKConstants.h in Headers */, + 66BA804D90462B9C17804FA8C42CECF4 /* FBSDKContainerViewController.h in Headers */, + FD92297260D8646C2CB33A4A0ECA52E3 /* FBSDKCopying.h in Headers */, + 4039162BA501526DC285B581CDE94C23 /* FBSDKCoreKit+Internal.h in Headers */, + 2EA5FEB880B02E4B1BBFA708B3284E31 /* FBSDKCoreKit.h in Headers */, + 07909550495F3C6B06EC03412AC7F69A /* FBSDKCrashHandler.h in Headers */, + D82507334C1F5A904534D905C8616D4D /* FBSDKCrashObserver.h in Headers */, + 37EC250D38DBF6FC46F542686176C106 /* FBSDKCrashObserving.h in Headers */, + 5E26BC3ABC91FC538D1FBAFE5B25012A /* FBSDKCrypto.h in Headers */, + 4458C28B8D890DE2C4CF875C145CC945 /* FBSDKDeviceRequestsHelper.h in Headers */, + 653A3F89668CEC49C1BC55D9397397F8 /* FBSDKDialogConfiguration.h in Headers */, + 01EDDA9F4924F37D6DDC01128542B79B /* FBSDKDynamicFrameworkLoader.h in Headers */, + E7D988B1D3A3B86F2C76C2DE4E84D3A1 /* FBSDKError.h in Headers */, + F17E924EBB994FF6A02A25FD91E6BD33 /* FBSDKErrorConfiguration.h in Headers */, + AE2A23026DCDD2EB1DE95DFF362C5808 /* FBSDKErrorRecoveryAttempter.h in Headers */, + 26E75E5DDADA7660EFAC393566C7EE84 /* FBSDKErrorRecoveryConfiguration.h in Headers */, + E15CC4B751A945042607E4E899A23AA8 /* FBSDKErrorReport.h in Headers */, + E4628AF103BCCB9056D2CB6FB701F222 /* FBSDKEventBinding.h in Headers */, + 4482F032DD037987815F6CF1AC1B91B9 /* FBSDKEventBindingManager.h in Headers */, + BC64B4C0A755F41545C97183B0F877A0 /* FBSDKFeatureManager.h in Headers */, + C674D8A046DB79CE7E522E082872BF52 /* FBSDKGateKeeperManager.h in Headers */, + FC6376F1FD6A24B80B2938AF12E0C8B7 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, + 41DCADEC9B5D1FB60CC9049E21F8B80F /* FBSDKGraphRequest+Internal.h in Headers */, + 2558253F9289D3DBA925D2CE92FC7124 /* FBSDKGraphRequest.h in Headers */, + 0C4322DF9D42238D5BCD3D6218BC6165 /* FBSDKGraphRequestBody.h in Headers */, + 859820E4DA51ECED0008EA01832E641C /* FBSDKGraphRequestConnection+Internal.h in Headers */, + 548BAA76DFC7920AEAA38ED0FB145A27 /* FBSDKGraphRequestConnection.h in Headers */, + 2B57D149DBB09E43C13FDE324674CC2B /* FBSDKGraphRequestDataAttachment.h in Headers */, + 7B44616502D46DA861621DC19F3B5418 /* FBSDKGraphRequestMetadata.h in Headers */, + 0AF50F644A85936FDFE4AAE26187D33D /* FBSDKGraphRequestPiggybackManager.h in Headers */, + FF20281019BE0FF38E71BA612756E5DF /* FBSDKHybridAppEventsScriptMessageHandler.h in Headers */, + 54C97629E8EC8B19CE98188A713D7A84 /* FBSDKIcon.h in Headers */, + 7F2DA9C9AD3E2C63869A7D0E9FA135F2 /* FBSDKImageDownloader.h in Headers */, + 39E882F1716C244F910D33A0573E6C36 /* FBSDKInstrumentManager.h in Headers */, + 3E640D86A20D7FFE4E15947EE77BFE86 /* FBSDKInternalUtility.h in Headers */, + 7BE5B5F1E86DD2C84CD89E6090096B64 /* FBSDKKeychainStore.h in Headers */, + BF83718577817915669635406238850D /* FBSDKKeychainStoreViaBundleID.h in Headers */, + DE8787C97AFC77688F792F9603BF1368 /* FBSDKLibAnalyzer.h in Headers */, + AC7B9D0B50473AD656DB7FB09CE86EDA /* FBSDKLogger.h in Headers */, + 160D6D36C3EE541D74D28561998E1B0F /* FBSDKLogo.h in Headers */, + 85C7FAA50BD579A20A9ED58B7D3BCAE9 /* FBSDKMaleSilhouetteIcon.h in Headers */, + F1DF5CBBB18A65D8289E1FC3E496CE95 /* FBSDKMath.h in Headers */, + 59B277A45CB5664D2C238CB2DDF0D560 /* FBSDKMeasurementEvent.h in Headers */, + 1925DD576E8D7CFA05D9F8754782D8B5 /* FBSDKMeasurementEvent_Internal.h in Headers */, + EA5CD83AE3E479DE893A0DFC881B9B23 /* FBSDKMeasurementEventListener.h in Headers */, + 9F7BC8845FED6EDA9E03A7E791989A60 /* FBSDKMetadataIndexer.h in Headers */, + 34DC4A810C58968D387D181FB6100A02 /* FBSDKMonotonicTime.h in Headers */, + E312794FDC7E4C0AADE3658947A2469C /* FBSDKMutableCopying.h in Headers */, + 0C08A22B8649CAB4ECD39A8FD5D3331E /* FBSDKPaymentObserver.h in Headers */, + 2975DE77D38E869D432FF7219F588236 /* FBSDKProfile+Internal.h in Headers */, + 1E97B67A63A524CED8A0F4BEF063F8D6 /* FBSDKProfile.h in Headers */, + 8946B5ED87F9788862A7832A710581CA /* FBSDKProfilePictureView.h in Headers */, + F25AE0C0B6AF60F283BDD7339633CCA3 /* FBSDKRestrictiveDataFilterManager.h in Headers */, + 4F1707CFD21586AC4838FEA05A5B3153 /* FBSDKServerConfiguration+Internal.h in Headers */, + 4748C387115ED762EC38BB1852F74949 /* FBSDKServerConfiguration.h in Headers */, + 1029701CE9DE4C4027F7F2A5FA2C777A /* FBSDKServerConfigurationManager+Internal.h in Headers */, + ADA3E569B52C8588483DA45D498B924C /* FBSDKServerConfigurationManager.h in Headers */, + C7ADAB1B13901C6BF54DE5F6FCA95070 /* FBSDKSettings+Internal.h in Headers */, + F7A59989178143222D025285EF295DC7 /* FBSDKSettings.h in Headers */, + 9BDDB82512D2E409922BB19C18CC929E /* FBSDKSwizzler.h in Headers */, + 70CA9888EDD426D323A9F4E59EB61C58 /* FBSDKTestUsersManager.h in Headers */, + FB7628CE1E86E58F9274880682BCDF94 /* FBSDKTimeSpentData.h in Headers */, + 0FF7506CDCAF7A6C1F6DAF768429FBFF /* FBSDKTriStateBOOL.h in Headers */, + EF4CB02B792D809A26B1023DAE613474 /* FBSDKTypeUtility.h in Headers */, + D594ABD90A12CA1831333F8A6614AA7A /* FBSDKUIUtility.h in Headers */, + 5088FB03E9800EDB5A79563B144CA9DA /* FBSDKURL.h in Headers */, + F1136A056DBA6A7D6B0079719C940A19 /* FBSDKURL_Internal.h in Headers */, + 7DF8928DD35D4B01B8B9369F3B34DE48 /* FBSDKURLOpening.h in Headers */, + CE9384609CBE1E079CCA2F5E1AC418E9 /* FBSDKURLSession.h in Headers */, + 2638AA1B1CE294903F58A60E049AA6C2 /* FBSDKURLSessionTask.h in Headers */, + 58759CE4B14E8B17D5D1C1E1F2B8B10F /* FBSDKUserDataStore.h in Headers */, + A8AE6BF42C273F40614A9B51971DBE81 /* FBSDKUtility.h in Headers */, + A973B156FFA9FC59FBEA74D7DA973CA2 /* FBSDKViewHierarchy.h in Headers */, + 82B408305A7887C4115119FC0D3CE61C /* FBSDKViewImpressionTracker.h in Headers */, + C4F94402E701E4A3BC820BDA61F9D541 /* FBSDKWebDialog.h in Headers */, + 7BF007AEAF21B3E55A442E727AA6565E /* FBSDKWebDialogView.h in Headers */, + 6C908BCC245C3A7D504A018185708328 /* FBSDKWebViewAppLinkResolver.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D0242173D3E8572B3905DF688BAA93A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 494347BD5D0D2058D276DB1A74D01FA7 /* _FBSDKLoginRecoveryAttempter.h in Headers */, + ABD2757EE1D974309CAD8D604017D44E /* FBSDKDeviceLoginCodeInfo+Internal.h in Headers */, + C16C9F6565B81E5F551862AE2CC8BD58 /* FBSDKDeviceLoginCodeInfo.h in Headers */, + 08561C60FDF903821F70BA23806480B8 /* FBSDKDeviceLoginManager.h in Headers */, + 0BA11B2B13120BA81CE8EF5E787AA054 /* FBSDKDeviceLoginManagerResult+Internal.h in Headers */, + D31E058C9C37CA17095FFFC43833ECF1 /* FBSDKDeviceLoginManagerResult.h in Headers */, + 31E39A710A9347F8B10CC6AA5EB14854 /* FBSDKLoginButton.h in Headers */, + FA4FD59114351BF749662266851488D8 /* FBSDKLoginCompletion+Internal.h in Headers */, + 6D98847110770E896A206A16EB44F038 /* FBSDKLoginCompletion.h in Headers */, + E143127EDE5277A53DB9581B113B5755 /* FBSDKLoginConstants.h in Headers */, + 47A20BB0CF4428AD7FE39F0154FD5089 /* FBSDKLoginError.h in Headers */, + 4569A753B1478B70933F1D64400CD41F /* FBSDKLoginKit+Internal.h in Headers */, + 90CDDAAA379201234232360E33017308 /* FBSDKLoginKit.h in Headers */, + C79DBCD3EA3469AF1A30A5A9DAFF9010 /* FBSDKLoginManager+Internal.h in Headers */, + FA57AF8147E5448E8970DE987ED9FCD3 /* FBSDKLoginManager.h in Headers */, + E0812A0D4F73A83E9DD6CAF4F539E8A5 /* FBSDKLoginManagerLogger.h in Headers */, + F19C7BCB319E7DE9F3AEAA926C7A1740 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, + 0EDD4A7611A8278F62892F28E2C69CFE /* FBSDKLoginManagerLoginResult.h in Headers */, + AF594713B675C2830CF7E5CE462E6568 /* FBSDKLoginTooltipView.h in Headers */, + E8EAC22FD87B671CA5F544520FABCD25 /* FBSDKLoginUtility.h in Headers */, + 76C12586B018B3565DA3814BF774067D /* FBSDKTooltipView.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 414F6D29D69DDF6B1EC0FE355D434C36 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7FFFFFAC636B155A3110E08C74D7C746 /* StrongestPasswordValidator.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 559DF3BD40FAE2478E30F355A3BE9218 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A51F7ECF32728036C3977EA073A559AD /* EXPBlockDefinedMatcher.h in Headers */, + F7B19B68FAB73CB0732744B6A096D791 /* EXPDefines.h in Headers */, + 85F1E88FEEBF9B0337821E05C048AC39 /* EXPDoubleTuple.h in Headers */, + 5E6233C210A6AF47C79AC729CE57536E /* Expecta.h in Headers */, + F3D79EE95A53DC322C2F93551780FCC4 /* ExpectaObject.h in Headers */, + EED4D51267517F2D304C74540B6B0489 /* ExpectaSupport.h in Headers */, + A7AFF805552754168FE472102902BEE8 /* EXPExpect.h in Headers */, + 6D311E7FBE67BFDE9E812885324764C3 /* EXPFloatTuple.h in Headers */, + 26E33CBCA823C72C51357582994E746C /* EXPMatcher.h in Headers */, + 527A1FD6FD79117C535D19213B9011D1 /* EXPMatcherHelpers.h in Headers */, + BF0E9FC2F301F77F02220AA076BE6443 /* EXPMatchers+beCloseTo.h in Headers */, + F7A9F53A68FF24600778D518BCD448F1 /* EXPMatchers+beFalsy.h in Headers */, + BED84F19DDD265A8DC03B3F4DFFEA254 /* EXPMatchers+beginWith.h in Headers */, + 4954A385199A818B177E146777CF37D6 /* EXPMatchers+beGreaterThan.h in Headers */, + BF9E3937CCFD78E7DBE3EF757C4B9093 /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */, + 7C1632A83B80B163FAC5297F8E9576D1 /* EXPMatchers+beIdenticalTo.h in Headers */, + 55E5FF4DC5EEEC6B400A0D87E3193890 /* EXPMatchers+beInstanceOf.h in Headers */, + B458BC2D677BFE2781CA179888E41364 /* EXPMatchers+beInTheRangeOf.h in Headers */, + 306CE82B21363D3A2BE5791B0441F22C /* EXPMatchers+beKindOf.h in Headers */, + 6696CBE4654AD391C63CD4E85ACF2C97 /* EXPMatchers+beLessThan.h in Headers */, + 07E5854E45B4F185DAE8FDC36C94EECE /* EXPMatchers+beLessThanOrEqualTo.h in Headers */, + 738B88E8018D3400546022C0A2641846 /* EXPMatchers+beNil.h in Headers */, + A12CFB59F38100C987161083B914187D /* EXPMatchers+beSubclassOf.h in Headers */, + B0010BBE7F27AA63239F8B31D4AB4366 /* EXPMatchers+beSupersetOf.h in Headers */, + A26ADE1931856B9F72370EB470D145D7 /* EXPMatchers+beTruthy.h in Headers */, + 0E66A0F36DD725E82041A51F593EA534 /* EXPMatchers+conformTo.h in Headers */, + 7021D3AF25EC280F69E49EC9FBE59484 /* EXPMatchers+contain.h in Headers */, + AD2CF66258C344DB8B748A7D7325059E /* EXPMatchers+endWith.h in Headers */, + 57BA46DFE2F32F04F308289610F73EDD /* EXPMatchers+equal.h in Headers */, + 2D5858A78F99A1196B5416C63B18F8AA /* EXPMatchers+haveCountOf.h in Headers */, + 3726CD36BF4080EE1145EC822AA6BF4C /* EXPMatchers+match.h in Headers */, + AF4EEDDC8B4D37D4105C7AC3A571A6B3 /* EXPMatchers+postNotification.h in Headers */, + EA7CCE29307048D044A60D1F8D63D87A /* EXPMatchers+raise.h in Headers */, + 21D97B29CD24881CDB275150FFACB46C /* EXPMatchers+raiseWithReason.h in Headers */, + A5D55782524E9DA98FB2CF6C28E84110 /* EXPMatchers+respondTo.h in Headers */, + 4DEC4FC7A759ED6E40C6706E5E500543 /* EXPMatchers.h in Headers */, + 04DDC981AAD7F73EFDFD96393C227827 /* EXPUnsupportedObject.h in Headers */, + 8F5B10D2E6BD453C535653D36FFFE4BB /* NSObject+Expecta.h in Headers */, + 94A899454728A627B3A09E219D11F90B /* NSValue+Expecta.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6B4F9FF8BC45B00BE9D104D51FF7DDE8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 77B38FE4923CE33A68280A4C4EDA79BD /* Specta.h in Headers */, + 235706D179481DF0FCA5E6A9CC0FA312 /* SpectaDSL.h in Headers */, + 6CBC773B81BFCDCEDBF341E9B9EF5F86 /* SpectaTypes.h in Headers */, + B1F1A229A8713BB25B90789227D7D85C /* SpectaUtility.h in Headers */, + D529AD614B9DD9CBA7E09119E334FE93 /* SPTCallSite.h in Headers */, + 2B2C648B72BDD621ED44468B9C5CF92B /* SPTCompiledExample.h in Headers */, + 5BDD3C06521B8700F3B12224BCFA3374 /* SPTExample.h in Headers */, + 34DF35A715C0D162D727E53A94B2E3B7 /* SPTExampleGroup.h in Headers */, + 2A73AD392736E738D3F2193DA7F0486D /* SPTExcludeGlobalBeforeAfterEach.h in Headers */, + C022574B7EA6C3CFFB670972FABF0FB7 /* SPTGlobalBeforeAfterEach.h in Headers */, + 02397C379F7A219CC002B067C1AF3D2F /* SPTSharedExampleGroups.h in Headers */, + 56DD7C0D4C18495F76F7BB029AB79E0C /* SPTSpec.h in Headers */, + D94DF9E529070E1CF9139F5B88282432 /* SPTTestSuite.h in Headers */, + A1BDC2F1844D08BE57A7A543E71C8E18 /* XCTest+Private.h in Headers */, + 40AC362AC89A0FF99DE0A33E34B9F365 /* XCTestCase+Specta.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7A6B556E8783B9593E27692B71C097AB /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7277D7C51F94735F754A3DE6CAA43535 /* DDDKeychainWrapper.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 827485331EB982CDA2B8194A7AE6EC0B /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 9E5ECABB948119FA2088578C3762F6F8 /* HTTPStatusCodes.h in Headers */, + C258C308A02DF537A8E1069272064EF1 /* nv_ios_http_status.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 90308F6600A1F26BEAF3E214327A073B /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F441987CA224DF041F49B20E6E406943 /* AFHTTPRequestSerializer+OAuth2.h in Headers */, + D755065298354C4E28B9F9394E825DB4 /* AFJSONResponseSerializerWithData.h in Headers */, + 044B01DD0158972D4219C82FB0EFBE3A /* AFOAuth2Manager.h in Headers */, + 8E06392A55FA4EEFBAD59A24B10E7C6F /* AFOAuthCredential.h in Headers */, + B74EC43FB63B138E9243419DFCC5EA30 /* PNAddress.h in Headers */, + A299C477C3440AFE1CB91EAC6FB94B25 /* PNInstallation.h in Headers */, + 2956B7412CDA9D609D9975A168D95523 /* PNLocation.h in Headers */, + F4C54CFD7E3E11931827BF5B9AF98DEE /* PNObjcPassword.h in Headers */, + 1BC1D119D08B50D32B33B557F86151C9 /* PNObject+PNObjectConnection.h in Headers */, + 35D39EE91E1C865AA806ACE519D5CEA6 /* PNObject+PNObjectDELETEConnection.h in Headers */, + A1583E29327E205E385C53156BD91207 /* PNObject+PNObjectGETConnection.h in Headers */, + 64EFECEA0F9146C8E38F4C0A2D18ECF8 /* PNObject+PNObjectPOSTConnection.h in Headers */, + DBB120291993D46ADE4D99D47A99D390 /* PNObject+Protected.h in Headers */, + 27C697694BBB44931325AD88AD25FB89 /* PNObject.h in Headers */, + 631357AF775A28B5B9A603B1036C03CD /* PNObjectConfig.h in Headers */, + 1158F1EFA8C8E23EF61441D5C52E4FB8 /* PNObjectConstants.h in Headers */, + BDB74714185C37A4B03130B7C708BFE7 /* PNObjectFormData.h in Headers */, + EE76BD08CB9AA615D7B08BD4D1B7903E /* PNObjectModel.h in Headers */, + 6EDA99560F8273FA4CA130BA4CC04162 /* PNObjectUtilities.h in Headers */, + 9D27CD79098C4864CE7610D206FD3368 /* PNUser.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 90D40677BD3B57E6E14C5903D027756F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7B85FE37D3808A77C05C1E2EAE5FBCB4 /* FBSDKPlacesBluetoothScanner.h in Headers */, + 6ABAAA493B7FFF9CB93AF9E7BE91D9EF /* FBSDKPlacesKit.h in Headers */, + 21311844BE2E85B1E7E9EF015EB75620 /* FBSDKPlacesKitConstants.h in Headers */, + FC9695A93B5CE0B0A167E4293584D493 /* FBSDKPlacesManager.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9546BC43CDD522345091958072E2E8B4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 5061B0F5C1C381CA816ED5ABC0055BE4 /* Headers */ = { + BAEAEBD14EBF3AABD53EF0E2E8A3F063 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0EB50B5404623747D104A9FC47B2CBCE /* ALView+PureLayout.h in Headers */, - 95FE7AD05F56358F323316ADB389D9F1 /* NSArray+PureLayout.h in Headers */, - FDC38DF5D59074B7F6934726A6BBEC79 /* NSLayoutConstraint+PureLayout.h in Headers */, - 14F21094B0CF6F465BEDEAA6615C8B96 /* PureLayout+Internal.h in Headers */, - E94363317A12653D288FCD15CCAC566C /* PureLayout.h in Headers */, - F2723299CEE9794AD6D3A4653812EA23 /* PureLayoutDefines.h in Headers */, + 36BC18AD13268193F98AB2B89DA0D47B /* NSData+AES.h in Headers */, + 49EE0DD81084D4907ADBB4A810ECF6D8 /* NSData+AESKey.h in Headers */, + C03EA2808357221626B0A716243761F3 /* NSData+AESValue.h in Headers */, + FF1DF68946FE34199D3904837849BE3A /* NSData+SHA.h in Headers */, + ED3555D058FCD393B40F1DFC55F52497 /* NSDataAESCipher.h in Headers */, + 6D47CEF27286E4CFCFB22C508C0F89AB /* NSMutableData+AES.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 50A978F517B5CFFB5E3EDA71E26372F4 /* Headers */ = { + CDAB0E7305FB2A3E14B85E23AE505777 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 55BA02495EB085FDB538A23E4BBE3766 /* _FBSDKLoginRecoveryAttempter.h in Headers */, - 3A295C732917B0BF242CD61CDB557477 /* FBSDKDeviceLoginCodeInfo+Internal.h in Headers */, - F74EA5AFD09EB190CAD4081E2CD20441 /* FBSDKDeviceLoginCodeInfo.h in Headers */, - AC9CFE383D39E16256D56882ADE4FCC1 /* FBSDKDeviceLoginManager.h in Headers */, - EE7D0E748F35874C0E87C02DF6AFF7A7 /* FBSDKDeviceLoginManagerResult+Internal.h in Headers */, - DF517BE4BA209F29252A51D9A0C19F2B /* FBSDKDeviceLoginManagerResult.h in Headers */, - 7C90690CE642CB2CE06FAD18D1865323 /* FBSDKLoginButton.h in Headers */, - 6BA8CE4B55263E270BA4AEBE3E70E761 /* FBSDKLoginCompletion+Internal.h in Headers */, - A451F5481F36852FD7046D3F628C11E2 /* FBSDKLoginCompletion.h in Headers */, - F35999453F79D2FCAD8FA05420EE462D /* FBSDKLoginConstants.h in Headers */, - 26341154ABEC6374052CB8B32F612B7B /* FBSDKLoginError.h in Headers */, - 86013E3F57948C6BF2FDBC281C41570A /* FBSDKLoginKit+Internal.h in Headers */, - CC4207349F072356E518D42133602EEB /* FBSDKLoginKit.h in Headers */, - 807A67F3000BB2E93CA78A9780EBF90E /* FBSDKLoginManager+Internal.h in Headers */, - E089BBB1A5A7A5E813B69B9BF4FB09C0 /* FBSDKLoginManager.h in Headers */, - 9E1AF6FEED6769F86D5343D386585EF6 /* FBSDKLoginManagerLogger.h in Headers */, - BE8295C4E3771FE39FA2CDC523623C1A /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, - 45491B67D31F288432C930D591FA1DFC /* FBSDKLoginManagerLoginResult.h in Headers */, - F7DD73A32118EFA275D9DFA9A179A39F /* FBSDKLoginTooltipView.h in Headers */, - C2A4A25A3E0BDBC5F8B0DF934159D591 /* FBSDKLoginUtility.h in Headers */, - 9F1A518724A89BDFC274B0D19EBC21E6 /* FBSDKTooltipView.h in Headers */, + 5D50EEA94797B128A59963EB19F9B2C1 /* NSDate+NSDate_Util.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 551F0E3339BF674E75DC0F834CEE923D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E44C14AD33CD2405A53E830846C71D5C /* Specta.h in Headers */, - 34D6E9DFB6DA988BF48FA9FA35B705FA /* SpectaDSL.h in Headers */, - 4D1B4825F1CC49FEE7951A0DE73D5402 /* SpectaTypes.h in Headers */, - 1F6EA5090831FF0A81191F7B3E86D2A4 /* SpectaUtility.h in Headers */, - 8EFCF0B87B5096003C7AFDEDD4A42323 /* SPTCallSite.h in Headers */, - E1F2F044D01F3094BD8EBABF28A441C7 /* SPTCompiledExample.h in Headers */, - 685FA7DE0DADF7840F125B5D17764A3A /* SPTExample.h in Headers */, - D98F802AC2D08618AF4989EA2ABA6A64 /* SPTExampleGroup.h in Headers */, - 197018DA7F50C8DCE3210895F0888274 /* SPTExcludeGlobalBeforeAfterEach.h in Headers */, - 23D4E2666316628C43DAAC4B225B0C36 /* SPTGlobalBeforeAfterEach.h in Headers */, - AFD138ADA91B4FCDC2F4A352964A3F96 /* SPTSharedExampleGroups.h in Headers */, - CAF38F968DC3D6CEA55FBC2CF1F60859 /* SPTSpec.h in Headers */, - 847CC4B90F07C5024194751E754D1CEF /* SPTTestSuite.h in Headers */, - 622EFC5D70F5D017140A44AE3BD6C525 /* XCTest+Private.h in Headers */, - 5DBF4B42B1928DBB6A347770A24B8C25 /* XCTestCase+Specta.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5979AD75C9564060164A8509569955F0 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 11554582DE4C60CEF2FAD10BA4C650F2 /* FBSDKAppGroupAddDialog.h in Headers */, - 14E8B9C24C72C97657A66404B188EEC4 /* FBSDKAppGroupContent.h in Headers */, - A223DB95BADE8CA6350C6D839E8006F8 /* FBSDKAppGroupJoinDialog.h in Headers */, - 6125083C466D040C555D34186F555A71 /* FBSDKAppInviteContent.h in Headers */, - 612ED10A63135D146B827CE33308890A /* FBSDKAppInviteDialog.h in Headers */, - D62C2EC17900D03C1A9EF95F52BBFB6B /* FBSDKCameraEffectArguments+Internal.h in Headers */, - 8B4A888A598553557FD5E554B1869E76 /* FBSDKCameraEffectArguments.h in Headers */, - ADD90DF6C7D31810F9ADF616567DA690 /* FBSDKCameraEffectTextures+Internal.h in Headers */, - 67B555ACBE5C6DC20FDF554CD01F9A1F /* FBSDKCameraEffectTextures.h in Headers */, - 19AB1FD73939BF22F37F33C3D65B1EF9 /* FBSDKCheckmarkIcon.h in Headers */, - 99BFBE99E1A22245B809C60AF559CAFC /* FBSDKGameRequestContent.h in Headers */, - 454DBC808AF53BD0EB30C5C3C1201BCA /* FBSDKGameRequestDialog.h in Headers */, - 8A5B72A126547D6C812B2FB44E876AF4 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, - 3232BB7516ABA0A4F425F1DA3D602560 /* FBSDKHashtag.h in Headers */, - EFF7774E8E652C465F47EA43F95D49C5 /* FBSDKLikeActionController.h in Headers */, - C58B6DDD7DD36CCD7769307172ECD448 /* FBSDKLikeActionControllerCache.h in Headers */, - C7F5581A893E93765ADAEE143A5DE180 /* FBSDKLikeBoxBorderView.h in Headers */, - 884BDEF749328B492C5602B3455C6C86 /* FBSDKLikeBoxView.h in Headers */, - 89CEC6535AFFB3BC339553C36AF707EC /* FBSDKLikeButton+Internal.h in Headers */, - 4FF263E71134A1B69876DB33F6CE2B90 /* FBSDKLikeButton.h in Headers */, - 8297FD21B64B012772B096D0505D372A /* FBSDKLikeButtonPopWAV.h in Headers */, - DE3C349E2871D795132F014FF8F61ECC /* FBSDKLikeControl+Internal.h in Headers */, - 0BECDCD35BA52877636F10A0267F1DA3 /* FBSDKLikeControl.h in Headers */, - 022A26B6602D92E968B5D7EF2025DC7C /* FBSDKLikeDialog.h in Headers */, - EEC44F41A7BBA3CBDF6C3BF7E2B542B1 /* FBSDKLikeObjectType.h in Headers */, - E7B74FAFCE246C2DEA0D85F4613277B1 /* FBSDKLiking.h in Headers */, - 044A08F91D03EC5DFD6A556057341CC5 /* FBSDKMessageDialog.h in Headers */, - E3193EBEFB3FD8D8CC1CE4DBD88D9E47 /* FBSDKMessengerIcon.h in Headers */, - D47F4E3AB146D6CB3CB2C56E9F4BFE36 /* FBSDKSendButton.h in Headers */, - 3F0A79B89682AFFA3570AA4B56976AE2 /* FBSDKShareAPI.h in Headers */, - DF850DB12562FEFDF1C72AC62D8DFF5F /* FBSDKShareButton.h in Headers */, - 01603B55BD9BA807AF0192B008D7B958 /* FBSDKShareCameraEffectContent.h in Headers */, - 698450776E546993476421851C8C9E59 /* FBSDKShareConstants.h in Headers */, - 2D60E84EAA85EBC431599D3BB63EA829 /* FBSDKShareDefines.h in Headers */, - AB3D8E75A0DAEC2949F98D48182FBD5B /* FBSDKShareDialog.h in Headers */, - B5457148EA7A5BEEAD13759AE3740702 /* FBSDKShareDialogMode.h in Headers */, - 2EDC5BAB1A8387E932D038B467503DBA /* FBSDKShareExtension.h in Headers */, - 8D11ACA6AF1DB292B1CFF4C0205C51F0 /* FBSDKShareKit+Internal.h in Headers */, - CBA77D599BDFF778B491C16C5ECB8D8E /* FBSDKShareKit.h in Headers */, - 51248D48597E9CA126CCD79F2CA731D8 /* FBSDKShareLinkContent+Internal.h in Headers */, - 139660A6542DB48C400EB295765ACF8D /* FBSDKShareLinkContent.h in Headers */, - DBA91801F16600DE9E2ACDD7577146B6 /* FBSDKShareMediaContent.h in Headers */, - 41C540E352DF635CCC085367ECDB6C88 /* FBSDKShareMessengerActionButton.h in Headers */, - 3751DD959CE2542A89E95639325A9308 /* FBSDKShareMessengerContentUtility.h in Headers */, - 57BCDE287B036DAAB6BA95EC8B8B8571 /* FBSDKShareMessengerGenericTemplateContent.h in Headers */, - FFEA251CF70E8C54B51A3A89841DFAE1 /* FBSDKShareMessengerGenericTemplateElement.h in Headers */, - 4F0BD87C7F25FDC953B6CD83BDA64CB3 /* FBSDKShareMessengerMediaTemplateContent.h in Headers */, - 4DC019EBC0437E505E4D0C2B1FDD7565 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h in Headers */, - 8A79FFB248E9955E448982F64B3DE140 /* FBSDKShareMessengerURLActionButton.h in Headers */, - 3CB72956B9180AC1BA25765975B54CAA /* FBSDKShareOpenGraphAction.h in Headers */, - 65E08733AD44AEF2C331C3AB7E202554 /* FBSDKShareOpenGraphContent.h in Headers */, - F69B64787ED8C19E43D778D06F3884CC /* FBSDKShareOpenGraphObject.h in Headers */, - 1915723952046FD1EB8EF6BFC64ECD43 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, - B64D85DEE857327E1A38EEB9AF83F359 /* FBSDKShareOpenGraphValueContainer.h in Headers */, - 189A69B2392D21B7D75C3AB9D194D750 /* FBSDKSharePhoto.h in Headers */, - 301D62CCE707EE59229E5F9AEA4E101F /* FBSDKSharePhotoContent.h in Headers */, - E7358E18422A9CCD13217A2A172AD265 /* FBSDKShareUtility.h in Headers */, - 7CB2BF3C7E4544249F9A173FC3527924 /* FBSDKShareVideo.h in Headers */, - ECC022ABC95BF854F43EA7B25AE68520 /* FBSDKShareVideoContent.h in Headers */, - 19226E62E6F9DEA5FFEA8BDC070769EC /* FBSDKSharing.h in Headers */, - F5FA918124E77A2011B20CFE7EA37C9F /* FBSDKSharingButton.h in Headers */, - F9A2496D0F25756B5A1162FD962D4BA4 /* FBSDKSharingContent.h in Headers */, - 15D9E4CAA3777CEAFEF8E2919E1E8695 /* FBSDKSharingScheme.h in Headers */, - 1C967D6533390811826C73FB07D17A10 /* FBSDKSharingValidation.h in Headers */, - 38FB3016F4A392DECF2DEF4F1CE9338F /* FBSDKVideoUploader.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 69ADF6A115BC18EF53860F18C7AA1CCC /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - EC780ACDA2648C960E0A2207848CDC09 /* DJLocalizableString.h in Headers */, - 8E128B01B2CB2BD03E91AE7FF25F3F11 /* DJLocalization.h in Headers */, - 3A08F93A52731850172B936A74FC8B63 /* DJLocalizationSystem+Private.h in Headers */, - 8A2C30B037DDE21189FC6D217576C619 /* DJLocalizationSystem.h in Headers */, - 5F7AA3B0AEC77D6DF21ADE213C80D711 /* UIStoryboard+DJLocalization.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 739499F415F7DB01D11BF2DDB594C936 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9DCF7992E8000C108DC900A22B3167F0 /* NSString+Helper.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 79808F0477F65F7B24E445D3447BF4A0 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 86E82FF06A948A071AB219D3C384BA7A /* NSObject+RZDataBinding.h in Headers */, - 8341BAC483AC0FA5AD7A859B2D7E363C /* RZDataBinding.h in Headers */, - FB605D946034EAD5A2D9420C96B207FA /* RZDBCoalesce.h in Headers */, - F6B5D5CF2BE8D7C645D0FBE4E2667EE2 /* RZDBMacros.h in Headers */, - BBC7464CD68B6860CEB96F7D162820CC /* RZDBTransforms.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9CC8BCD4053F3A09E9940D85C9D010D7 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 383428C3888B12581E14BFAD70B79C1F /* StrongestPasswordValidator.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A933E820A51D974B5B5FD4D0849D2632 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9791FBBE0A7A98C66984F2CC0DD31343 /* EXPBlockDefinedMatcher.h in Headers */, - 3CAD7C140B36E3D3E598054D5D09300D /* EXPDefines.h in Headers */, - DF5BA3CDA109C7FABC41D1E2B1963F80 /* EXPDoubleTuple.h in Headers */, - D9AC160C1D04F4E96F949762670749BB /* Expecta.h in Headers */, - 05B1643814E247E0ADF23AA912EECCE3 /* ExpectaObject.h in Headers */, - 7442B0F755193F24903A4E658847866A /* ExpectaSupport.h in Headers */, - 530D070E0E04E37792153D7ECEBCBB14 /* EXPExpect.h in Headers */, - 0C3788D7C3966CE01D70E2A9A5FCFDF9 /* EXPFloatTuple.h in Headers */, - 660148CE4CFAD377D84C5CBCB40D1691 /* EXPMatcher.h in Headers */, - EC6F4D4EB03B32982BD40AFA33E5162E /* EXPMatcherHelpers.h in Headers */, - BDE88D4CBA76A00F02B3C763C888C062 /* EXPMatchers+beCloseTo.h in Headers */, - 89F6AA6386BE29948AA66450EF70CD0A /* EXPMatchers+beFalsy.h in Headers */, - 6D5DEEE8EAEAD1ECFF1D9E6F4D9EB3E4 /* EXPMatchers+beginWith.h in Headers */, - 64382C59124DAB31C0FE1B8FBD58471F /* EXPMatchers+beGreaterThan.h in Headers */, - 5F978E50EE337C460D3EF59FACEA5F06 /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */, - D13823551BE04038F6444A00DFE4122F /* EXPMatchers+beIdenticalTo.h in Headers */, - 9B1EFE6DE4A457EDB03EF9B34E7BF617 /* EXPMatchers+beInstanceOf.h in Headers */, - 82160641E649C133D36DECDA65B12EB4 /* EXPMatchers+beInTheRangeOf.h in Headers */, - 504823050C9106E2EAE7F37A0008306F /* EXPMatchers+beKindOf.h in Headers */, - FE35C071F54DADA3BE7FA3CC2D3DEDE9 /* EXPMatchers+beLessThan.h in Headers */, - DF932A448D602A6EB68228586D90DB77 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */, - 0B7F510030167772AFD8D39C9BA22F11 /* EXPMatchers+beNil.h in Headers */, - B96A7F9A9B09709BFBC64E9A70AD5504 /* EXPMatchers+beSubclassOf.h in Headers */, - 8F28879286915373FB094878B3CD0214 /* EXPMatchers+beSupersetOf.h in Headers */, - 7715D828E563776C1BC279C6CAB91C40 /* EXPMatchers+beTruthy.h in Headers */, - 8D844A897C252A4BC5A990B088120C27 /* EXPMatchers+conformTo.h in Headers */, - 2C9C681DED4716979EDBE2C3128E5272 /* EXPMatchers+contain.h in Headers */, - 4916752367EF5E2CC0FF6B729E6847ED /* EXPMatchers+endWith.h in Headers */, - 406F6344A6E0E6FC7CFF8BD2149EA2DA /* EXPMatchers+equal.h in Headers */, - 1E1933CF48DE4C04F572656399BC5EAB /* EXPMatchers+haveCountOf.h in Headers */, - 3C99AF91E2501167B5461DCC24F5B2FD /* EXPMatchers+match.h in Headers */, - C1DC2A9EB7B4A41D33AE508114D482CD /* EXPMatchers+postNotification.h in Headers */, - 8121BA41DC0BC7F18CA5428839AA4040 /* EXPMatchers+raise.h in Headers */, - 18881AD82DBE7AECA3D0C5DC25441F0C /* EXPMatchers+raiseWithReason.h in Headers */, - E04648FC3DB7B73293FDC4B0FCF6C516 /* EXPMatchers+respondTo.h in Headers */, - 041F212A0C424EC0D3F57B8395DA4426 /* EXPMatchers.h in Headers */, - CA649B81C91FD77E38DA4B2175542160 /* EXPUnsupportedObject.h in Headers */, - 42D023EAB5F7F8E7564B6194F97215F5 /* NSObject+Expecta.h in Headers */, - A9B2B355214771031DE427BA9BAB8733 /* NSValue+Expecta.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B20770DAFDBC4AA28F47E9E45B8EB710 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0440A497F08A03E848834C920594FFB1 /* AFHTTPRequestSerializer+OAuth2.h in Headers */, - B0CDDA9474468A04C15A805F90CC63B5 /* AFJSONResponseSerializerWithData.h in Headers */, - FA3588472C453DF382F84C2C090FC4EF /* AFOAuth2Manager.h in Headers */, - 4BDBBB75791153E6EDE0F469582C3125 /* AFOAuthCredential.h in Headers */, - 747F329080B138F5A187DD770EB34287 /* PNAddress.h in Headers */, - B487E5F672B23BF88E0E92DF3568615F /* PNInstallation.h in Headers */, - 0BF47C6B9FF679AB3B62E4BF239FDEAC /* PNLocation.h in Headers */, - EF262E90BFF196D39BD0BB9FB60E266B /* PNObjcPassword.h in Headers */, - 4EFF12BFC4AC7C62227D75954539ED2D /* PNObject+PNObjectConnection.h in Headers */, - 83ACD50059EAA83201765D377E297C81 /* PNObject+PNObjectDELETEConnection.h in Headers */, - 15E68BA97C1324F72EFD112964AC1B9C /* PNObject+PNObjectGETConnection.h in Headers */, - 48315CA2F57C4A84F21B045208FB3064 /* PNObject+PNObjectPOSTConnection.h in Headers */, - 1B4A7350A020D3B11310E66714B3A66A /* PNObject+Protected.h in Headers */, - 1F6BF31D1D8E7E8F5E0B40C2F7C53A7A /* PNObject.h in Headers */, - BE592D8848201570E2C598E1E78F681A /* PNObjectConfig.h in Headers */, - 1DA92C112EC6520678B1C9426733431C /* PNObjectConstants.h in Headers */, - 462612245A0C6F4EF354C7521A3BA05F /* PNObjectFormData.h in Headers */, - C94E1F15CB6315709356671DE50B4F11 /* PNObjectModel.h in Headers */, - 40A4B68F5BF655D5A30456E8A32AA6F0 /* PNObjectUtilities.h in Headers */, - 6BE6BC99B6D907D0323D873560E50953 /* PNUser.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BE08D5C1142FDD73D935B0E04EA7FF3E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 36AAF9740A4C29C073321F5D19B3AEDD /* PEARFileManager.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C46D3FEA048FA39636D4C69996E199D0 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - D59FEC69B8B0E0993BDABC2848689212 /* CodFis+Helper.h in Headers */, - 9AB17B45667874F391B048A7A16AFA5F /* CodFisResponse.h in Headers */, - 61E398EBE7381BD52A0432F06D20F2DA /* ResponseConstants.h in Headers */, - 9D65BEC481A4AE632E38696C3CC2A1A0 /* VatNumber+Helper.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - CE921961660F9885B9FF79250DC70AE7 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - CE954D5AB7B9E31FF353B612ED4FEC3D /* AFAutoPurgingImageCache.h in Headers */, - CE145B8A8873360D79264DEFFAA43D1D /* AFCompatibilityMacros.h in Headers */, - FC2BEE5A649BD9ED667DC117524ED92E /* AFHTTPSessionManager.h in Headers */, - 022AA9C914C08FE164F6A72C4C3ECCE2 /* AFImageDownloader.h in Headers */, - 5CA4BF972E5149C07FF6797B2419DA69 /* AFNetworkActivityIndicatorManager.h in Headers */, - F70F41EF72F7A20E8477C34B0C72B0BB /* AFNetworking.h in Headers */, - 15295CEF88568A41209A9E95CAE4443D /* AFNetworkReachabilityManager.h in Headers */, - 073DCBF5208DF7716D4560CDE267AB63 /* AFSecurityPolicy.h in Headers */, - 3905F44A6CB8EC982796F25D562DD5DB /* AFURLRequestSerialization.h in Headers */, - 20E969B72751C31E0CCD1FA60E87624B /* AFURLResponseSerialization.h in Headers */, - C4F436981FBAF80D096DDC9F106D8496 /* AFURLSessionManager.h in Headers */, - 8B9B6F936EAD4802B58A3202994D1ECF /* UIActivityIndicatorView+AFNetworking.h in Headers */, - 66E4F66F6C7D19706C21F97C8121AFB4 /* UIButton+AFNetworking.h in Headers */, - 7C2EA3131444E4FC36EDAF006A8E08A4 /* UIImage+AFNetworking.h in Headers */, - 50FA7FB55AB0B6EE328F078F83953B88 /* UIImageView+AFNetworking.h in Headers */, - 1514DD47DD0EFE7D6ABFC27EE743D12C /* UIKit+AFNetworking.h in Headers */, - E7A29FD264197E966B2F75F2F7844D48 /* UIProgressView+AFNetworking.h in Headers */, - EC2E9780DD5B6574F32FB0E097459CFC /* UIRefreshControl+AFNetworking.h in Headers */, - 4ADE9BBFD6AC48AF95EB8446D4684F27 /* UIWebView+AFNetworking.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D3C1899A583D4A8931BE8F258A2452C7 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 791D1ACAB34690FE79503B9947F1FBA1 /* BFAppLink.h in Headers */, - 384FCFC0E19D105A55F1FE13D55FB325 /* BFAppLink_Internal.h in Headers */, - F46EAE5DAB069B1B7B786A8B2CA1D7C3 /* BFAppLinkNavigation.h in Headers */, - 7FE1F44B78F993DEA4B39C317F07D847 /* BFAppLinkResolving.h in Headers */, - B42014397B63BA7D730F730A29C75D60 /* BFAppLinkReturnToRefererController.h in Headers */, - EBB11D36A3171B0F9D90000F4B95136B /* BFAppLinkReturnToRefererView.h in Headers */, - B5EEA3FDB2A4EEA5468E0A6D2E81E71A /* BFAppLinkReturnToRefererView_Internal.h in Headers */, - C6266199C8C5D915151C09A4B981F4DD /* BFAppLinkTarget.h in Headers */, - 6E61EEFA86C08E2215BA43070C28D728 /* BFCancellationToken.h in Headers */, - 856B47D9261866D7518102A41DAA8FF7 /* BFCancellationTokenRegistration.h in Headers */, - 1C63D642F3E573214FE093DD28080E81 /* BFCancellationTokenSource.h in Headers */, - C2B290A18E64DAEE933E613FF738F2D8 /* BFExecutor.h in Headers */, - 6783D65D5490CF526EC449E5D769C4F3 /* BFGeneric.h in Headers */, - 8B2BEB38ECC367F3452CD67D353AA21E /* BFMeasurementEvent.h in Headers */, - 39ED2FEB2712AC2FCCE9C3343E43C0B6 /* BFMeasurementEvent_Internal.h in Headers */, - DC2B40B9217FF9B1E1CDEB86E0499364 /* BFTask.h in Headers */, - 5DD7516B5E3585855927D1146F75E389 /* BFTaskCompletionSource.h in Headers */, - 24BE4F5B9CF5D4788AE9305A92810983 /* BFURL.h in Headers */, - 1FD8D59C1DC1182D17C50FA8F39F1BAC /* BFURL_Internal.h in Headers */, - 138AF6F8EE18CF4DFC8376DD0546A24F /* BFWebViewAppLinkResolver.h in Headers */, - 17F70A5452F1555154103B1AE6976CF6 /* Bolts.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D4C0877F68AE54108524B1F61B420CC7 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 42E656540376D9D3B03B88DE84948EFF /* NSDate+NSDate_Util.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DC08805B8AD1073BBBFA82BF1DD809B0 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 35ED53AF759D4DEE65B4F5F03AB32863 /* FBSDKPlacesBluetoothScanner.h in Headers */, - 600D7885388C1092338A4568C4C59072 /* FBSDKPlacesKit.h in Headers */, - DF7383AD5EE0F40AB790F0EC5B0E9B09 /* FBSDKPlacesKitConstants.h in Headers */, - AD662AF33EF58AAA3B3EA8DA94527250 /* FBSDKPlacesManager.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E5B4A7FEE1297689DA6AE7A6BABB030F /* Headers */ = { + E53C7E9E664A1133AD522BF311C3061C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - F6CCBC0CEA33D7DDDBBC3D7789AC0A7C /* Headers */ = { + EB3B01645FF306E1D8467FA51F1E1DF6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 451652DE766742F806CAE717299121F1 /* DDDKeychainWrapper.h in Headers */, + 20C3B439E4CD31E49EB5ED540E737646 /* NSObject+RZDataBinding.h in Headers */, + 426503A51E858686B9027DCE8E3526E5 /* RZDataBinding.h in Headers */, + 23F8F08D194860BBA4E29411586E68D9 /* RZDBCoalesce.h in Headers */, + 80196A511F8FEC222212A55D8FF24052 /* RZDBMacros.h in Headers */, + E856E695B4FC6E65DC49FF1565F9F372 /* RZDBTransforms.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EF961DF85FB391B4880CDC041586D582 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E70CA6A65E35197595645FFFCD7106A0 /* FBSDKAppGroupContent.h in Headers */, + 7E5BBFD244069EB2C7835BF9BCFBFE0C /* FBSDKAppInviteContent.h in Headers */, + 1ED46BC57F049FE0FB33E3945113495D /* FBSDKCameraEffectArguments+Internal.h in Headers */, + 8177BFC285E3930D38496CB99BDA28A3 /* FBSDKCameraEffectArguments.h in Headers */, + 63F67C87FF7F058C066AF598F419EA11 /* FBSDKCameraEffectTextures+Internal.h in Headers */, + 54C6163CAF9B3B6389CBC5789EC11DB2 /* FBSDKCameraEffectTextures.h in Headers */, + 40153D6A9D54F8B271C863C9B7004563 /* FBSDKCheckmarkIcon.h in Headers */, + CB9E66E4C557EEE7D90244B2B6DC7FC3 /* FBSDKGameRequestContent.h in Headers */, + 0A615DC24D2F1C1AE5017B31B08A6D5E /* FBSDKGameRequestDialog.h in Headers */, + 2754C09135972E5963D1630DCD94EAD8 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, + E6ECCD246E9787D61B452C3238817F9D /* FBSDKHashtag.h in Headers */, + 2617FE2E594C70DDA2867296776C9BB6 /* FBSDKLikeActionController.h in Headers */, + F748060EBB5E0C0AA560ACE5EF524B5C /* FBSDKLikeActionControllerCache.h in Headers */, + 37EB8AC990291C121498DC06EEFABA14 /* FBSDKLikeBoxBorderView.h in Headers */, + E0F6F28FB0C741429D56912880C9EC6E /* FBSDKLikeBoxView.h in Headers */, + 97B260866FB542F3180CE0F150961036 /* FBSDKLikeButton+Internal.h in Headers */, + F4883DAE8A5121ED94AF2CCED7162EC6 /* FBSDKLikeDialog.h in Headers */, + D30CE37C7AA114E0163EEB27F8662D81 /* FBSDKLikeObjectType.h in Headers */, + 77322CBCEFED3975DDEB4996302369D8 /* FBSDKLiking.h in Headers */, + E0ECB8810EBDD19D47565F74F446654B /* FBSDKMessageDialog.h in Headers */, + A7D591CC1F33EDACCC0B17F858833578 /* FBSDKMessengerIcon.h in Headers */, + D941B1DB8FFAF4E1ACCBF00166602215 /* FBSDKSendButton.h in Headers */, + E110B9B426BCEB5134E8E6ECC9159D7B /* FBSDKShareAPI.h in Headers */, + E6B62AF97EC11069F34242721DA00232 /* FBSDKShareButton.h in Headers */, + 07FEFBE3A9138B18A923888DFFCE52C4 /* FBSDKShareCameraEffectContent.h in Headers */, + B3FB219DB2CF6B0C2102538B1464B2E2 /* FBSDKShareConstants.h in Headers */, + 82C4278DE3D4C0B53798ECA7CC5EE646 /* FBSDKShareDefines.h in Headers */, + FAB6262456B929BC2B850B7589F86BFE /* FBSDKShareDialog.h in Headers */, + 7596414895846763FA34D1708AF95F00 /* FBSDKShareDialogMode.h in Headers */, + A07CD5D168B09E2E91DEEC3FF3936A2F /* FBSDKShareExtension.h in Headers */, + B6DB2C7D731B52766EBB9C40A3BB1254 /* FBSDKShareKit+Internal.h in Headers */, + D2B48F72B35198023F47386D7D7F7994 /* FBSDKShareKit.h in Headers */, + BF1661B34401873A82AAF7FB32BCEB60 /* FBSDKShareLinkContent.h in Headers */, + 249397D154959DF820D067523F963A4C /* FBSDKShareMediaContent.h in Headers */, + 22C26991FD4181CF006E4E76E3751CC1 /* FBSDKShareMessengerActionButton.h in Headers */, + B917AC54965414C8E8C1177893F71EB5 /* FBSDKShareMessengerContentUtility.h in Headers */, + C1B08B66DE013F7EA440F2756086F25A /* FBSDKShareMessengerGenericTemplateContent.h in Headers */, + B1AD0A4FCBBBF8D07A269C6F259D9658 /* FBSDKShareMessengerGenericTemplateElement.h in Headers */, + 01553AD27014C8C896436C76DCC5D2C8 /* FBSDKShareMessengerMediaTemplateContent.h in Headers */, + 6A615B1F741DEB7CF8F85CA4194EAECF /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h in Headers */, + 695128B32F956C20F612201E823C532A /* FBSDKShareMessengerURLActionButton.h in Headers */, + 2A8C3B74B582AE2EC6B7574210E3BEC0 /* FBSDKShareOpenGraphAction.h in Headers */, + 421A8E7E4FF3EEF021292F1734534FAE /* FBSDKShareOpenGraphContent.h in Headers */, + 9EAA62A589793958369FDBF4F136375E /* FBSDKShareOpenGraphObject.h in Headers */, + 44EB293EADD274700837944AB0D6DE03 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, + FB6255ABC6BA0B68F13A2D6F0942A512 /* FBSDKShareOpenGraphValueContainer.h in Headers */, + B1B055EEECB06663BDACFB2375B6845B /* FBSDKSharePhoto.h in Headers */, + C6142A15B43050A1767DE262FEFD65DA /* FBSDKSharePhotoContent.h in Headers */, + 81D3E9271C2B6DD91DBAF95619118283 /* FBSDKShareUtility.h in Headers */, + 1146D0D7AD4DE05E687155439C32246A /* FBSDKShareVideo.h in Headers */, + D37717B6B3981504572E2664B35FFB08 /* FBSDKShareVideoContent.h in Headers */, + EC309C340C498027A2570504B6107BB5 /* FBSDKSharing.h in Headers */, + 66C07DFA234AEA73AE1B3CEFE2E81B20 /* FBSDKSharingButton.h in Headers */, + 0B2C5F285D5D826F1B210382F5F9AA57 /* FBSDKSharingContent.h in Headers */, + 1CE88FDF414290A8716A7854ED2D1EAE /* FBSDKSharingScheme.h in Headers */, + 5E650BBA668F8295AB82C6C547BCC4C4 /* FBSDKSharingValidation.h in Headers */, + 907697EEF9E9A1B26350BEAF0857158F /* FBSDKVideoUploader.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 0C0589E0AD53F8AC96600BDC8EFECBFA /* Pods-PNObject_Tests */ = { + 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */ = { isa = PBXNativeTarget; - buildConfigurationList = 9EE9A75C1FD5655C2534157CA8532260 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Tests" */; + buildConfigurationList = EE91476FFEA2C3B3AB024E94672BCFF2 /* Build configuration list for PBXNativeTarget "AFNetworking" */; buildPhases = ( - E5B4A7FEE1297689DA6AE7A6BABB030F /* Headers */, - A7C42CECC09A51BD923B43C3ECBD7194 /* Sources */, - 256CC6F845282DDD4784F1B4B7014C51 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 02D41B1AB7D15C21D89F5B0A16E2B5AC /* PBXTargetDependency */, - 4CE4447C7A0FA139FB69130CE4A12542 /* PBXTargetDependency */, - E98D46BE68BE08F14BBAC65E5202BE75 /* PBXTargetDependency */, - ); - name = "Pods-PNObject_Tests"; - productName = "Pods-PNObject_Tests"; - productReference = 6A78DD48E0F6C0AF870FBEBCD678F0CF /* libPods-PNObject_Tests.a */; - productType = "com.apple.product-type.library.static"; - }; - 155BA346539E11AD5BD9EA31727A1C9A /* nv-ios-http-status */ = { - isa = PBXNativeTarget; - buildConfigurationList = E20F1D0144C5E3832C7B7A120BF3927C /* Build configuration list for PBXNativeTarget "nv-ios-http-status" */; - buildPhases = ( - 1B2D297509011211D24596D324AE5891 /* Headers */, - 0AF2239E2CB89687F9E29F0F2907FBF6 /* Sources */, - CE1F37B44FADCF2300E3088BDFAB11EA /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "nv-ios-http-status"; - productName = "nv-ios-http-status"; - productReference = 7F9B2EDD33FE26C8C0919BAC14A84B4A /* libnv-ios-http-status.a */; - productType = "com.apple.product-type.library.static"; - }; - 176104A755EE5DE10141CB771E7807E1 /* CodFis-Helper */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4C7AC986495CB5A192AA0F6D473F0D4B /* Build configuration list for PBXNativeTarget "CodFis-Helper" */; - buildPhases = ( - C46D3FEA048FA39636D4C69996E199D0 /* Headers */, - 397F88339C36F090E059AFFED4823E56 /* Sources */, - 735188206603AA6D6323F5016DE01241 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "CodFis-Helper"; - productName = "CodFis-Helper"; - productReference = 3594FE530B0FFED1DE600BDF625A0FD4 /* libCodFis-Helper.a */; - productType = "com.apple.product-type.library.static"; - }; - 192DBF78C939C1FE9C6EF8DA34F5FB58 /* PNObject */ = { - isa = PBXNativeTarget; - buildConfigurationList = EEC950D5C3149CF69E7A46E6D03CF236 /* Build configuration list for PBXNativeTarget "PNObject" */; - buildPhases = ( - B20770DAFDBC4AA28F47E9E45B8EB710 /* Headers */, - 1BC094D260D00BB6D060D274556EF982 /* Sources */, - B097187320903CF62E673D3207B8998F /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 2E16FE0F46231E36A1EB26C5E5F14282 /* PBXTargetDependency */, - 3A8BF8DEB161A34335CCD98F8ACD9B72 /* PBXTargetDependency */, - 9ACBB3494B293B55BD95AB17A0C6FDF1 /* PBXTargetDependency */, - 841AC74F0A7279734575D9DD92E9F66B /* PBXTargetDependency */, - 04CEE38A8AA35AD6A397A96E523D9438 /* PBXTargetDependency */, - 74B5DC1FC2334174BF26F185E1E2B683 /* PBXTargetDependency */, - DD58683DB131179A8A7E80475A751534 /* PBXTargetDependency */, - FF1C47EAE772C63D45BB2FB29481979C /* PBXTargetDependency */, - 6F446983F9461096D0EAE56BCAFDEDB2 /* PBXTargetDependency */, - 95CD544773C626EF2F6D924844374936 /* PBXTargetDependency */, - B852433E1AFC4CE538CE69E837F5C285 /* PBXTargetDependency */, - DC1CA6BA5CBA49EA61872B2DD7E03EEE /* PBXTargetDependency */, - 2ED6F69109D51BC6544EAFF43D8D05E0 /* PBXTargetDependency */, - 56B7E1508395C80E7A4DD7DB44B62001 /* PBXTargetDependency */, - 426B217525E3CCB645F4E305FCE5C6B9 /* PBXTargetDependency */, - 9B02BFC35DBD1DDA53704C880121696E /* PBXTargetDependency */, - ); - name = PNObject; - productName = PNObject; - productReference = F52ECE2FEB93B33312F1221D70F4F012 /* libPNObject.a */; - productType = "com.apple.product-type.library.static"; - }; - 2EEE94220E4CB262F220514E2542D59D /* DJLocalization */ = { - isa = PBXNativeTarget; - buildConfigurationList = D2EE1DB000990BFF4F38CB748C05A6D6 /* Build configuration list for PBXNativeTarget "DJLocalization" */; - buildPhases = ( - 69ADF6A115BC18EF53860F18C7AA1CCC /* Headers */, - 2E9A1AC5EAE157293C5EB3C47C7F3A5E /* Sources */, - AF7E09D5D59C4B746962B87E0BC0F9C1 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = DJLocalization; - productName = DJLocalization; - productReference = 5CCBAEB24473A809E46448F10ECEDA78 /* libDJLocalization.a */; - productType = "com.apple.product-type.library.static"; - }; - 331B69A6E12311FA9485AF31E52534F6 /* DDDKeychainWrapper */ = { - isa = PBXNativeTarget; - buildConfigurationList = 49DC5E6784260A054458864007E2B6FB /* Build configuration list for PBXNativeTarget "DDDKeychainWrapper" */; - buildPhases = ( - F6CCBC0CEA33D7DDDBBC3D7789AC0A7C /* Headers */, - 512BB96D35E16513CEA1F8CCA87EC3C3 /* Sources */, - 55CEE22CB8B5223AF5456C20454981E7 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = DDDKeychainWrapper; - productName = DDDKeychainWrapper; - productReference = 10EF7A11DA317BA06D1719FC71BD080F /* libDDDKeychainWrapper.a */; - productType = "com.apple.product-type.library.static"; - }; - 41741B48B3525A9905AB215A91E2358B /* UIDevice-Utils */ = { - isa = PBXNativeTarget; - buildConfigurationList = 01A966802882B97B98554F31C7BEEA1A /* Build configuration list for PBXNativeTarget "UIDevice-Utils" */; - buildPhases = ( - 17EC5D9F1BD35264316CC9F838D3C194 /* Headers */, - DF02041A8F660AB14A369C2340B5D5AC /* Sources */, - E287AC9406878B241DA3DCAEA288EBFE /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "UIDevice-Utils"; - productName = "UIDevice-Utils"; - productReference = 2D74020142BF85D96F99132CAA2CB50F /* libUIDevice-Utils.a */; - productType = "com.apple.product-type.library.static"; - }; - 49F9DBC21D7AACEE57AC6E48007A1F6B /* FBSDKLoginKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6B7A147647AF6FE5B132CCDC7394BABB /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; - buildPhases = ( - 50A978F517B5CFFB5E3EDA71E26372F4 /* Headers */, - D41F51A20BC1BDF5FE70D4DE5EAFFD18 /* Sources */, - 95DFA1417A3A8EFF838A957044887362 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 9B884ABA8792393CFE70061846446B18 /* PBXTargetDependency */, - ); - name = FBSDKLoginKit; - productName = FBSDKLoginKit; - productReference = E657144EF74FD9C48F4980B330EFBA36 /* libFBSDKLoginKit.a */; - productType = "com.apple.product-type.library.static"; - }; - 4CEEA3727864ACEF2729940C5CCFF752 /* Bolts */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6861A79462F123BF43748FD9EACCABA6 /* Build configuration list for PBXNativeTarget "Bolts" */; - buildPhases = ( - D3C1899A583D4A8931BE8F258A2452C7 /* Headers */, - 3733BC959DAE496437C5180206EB8025 /* Sources */, - A74963BFD8B340007F523332B3E1F090 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Bolts; - productName = Bolts; - productReference = DC02728687D2F81F35A254E52F69A7D7 /* libBolts.a */; - productType = "com.apple.product-type.library.static"; - }; - 5B021706D5B7FCF7981EADD0D618968B /* NSDate_Utils */ = { - isa = PBXNativeTarget; - buildConfigurationList = A2CF67F3619405DFEF5E46C8B55A201B /* Build configuration list for PBXNativeTarget "NSDate_Utils" */; - buildPhases = ( - D4C0877F68AE54108524B1F61B420CC7 /* Headers */, - BE9E4C1D058C7E9CC8B9942294B9A342 /* Sources */, - 90719131C04DD701ABE53E461D67E39D /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - A69B23C8437113347DE106C38F6ECE1A /* PBXTargetDependency */, - ); - name = NSDate_Utils; - productName = NSDate_Utils; - productReference = 38CACA500A3224F71AEE282AD652FB4B /* libNSDate_Utils.a */; - productType = "com.apple.product-type.library.static"; - }; - 5E2AFD944F382B79C9F4C06E9E6288A6 /* NSDataAES */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4A30326247CC56F96A667067B90D9F6B /* Build configuration list for PBXNativeTarget "NSDataAES" */; - buildPhases = ( - 06940D1B31B86815B6EB58CBD63947DF /* Headers */, - A004A398CA3667229C966FBEE5638122 /* Sources */, - 21808E6DCC7C0C36EA760388C04009C6 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = NSDataAES; - productName = NSDataAES; - productReference = 36C6768518C9BC0A70782352B58F4404 /* libNSDataAES.a */; - productType = "com.apple.product-type.library.static"; - }; - 726B72F15C52C6D77C1B71FD3640970D /* AFNetworking */ = { - isa = PBXNativeTarget; - buildConfigurationList = 801CCC7366514FA159AED8C8FACC8ECD /* Build configuration list for PBXNativeTarget "AFNetworking" */; - buildPhases = ( - CE921961660F9885B9FF79250DC70AE7 /* Headers */, - C57D898C6FF9BB3DD470FF7905768BB1 /* Sources */, - 43BCB5E8776C541207858944DC1F38B5 /* Frameworks */, + 1719BD8C8C5FB63E8E3A195F3CF29331 /* Headers */, + 0013C2F4C1357617646EA156AF532732 /* Sources */, + 74CA1619F24B79CC712A86A70DED135F /* Frameworks */, ); buildRules = ( ); @@ -3886,104 +3499,16 @@ ); name = AFNetworking; productName = AFNetworking; - productReference = 355434E20D14554D05BE233DB2BEEA77 /* libAFNetworking.a */; + productReference = A4FA15D44DF6BAC7550EDEED10862AA3 /* libAFNetworking.a */; productType = "com.apple.product-type.library.static"; }; - 7CA27B1C39A0C1FE1AADBA1124CE8ABC /* FBSDKPlacesKit */ = { + 06F5CDD6235E25837519792853B145A1 /* PureLayout */ = { isa = PBXNativeTarget; - buildConfigurationList = 846B37D7E744F683EE22CC9B587CD47E /* Build configuration list for PBXNativeTarget "FBSDKPlacesKit" */; + buildConfigurationList = 6D491BCB55D907CBAA7FD46E94A44621 /* Build configuration list for PBXNativeTarget "PureLayout" */; buildPhases = ( - DC08805B8AD1073BBBFA82BF1DD809B0 /* Headers */, - 6E6000146941D806F9A488999DFE1706 /* Sources */, - A55DA4FFC7FEC603BE07A408D0753CAB /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 33E8CEB3D01B94727A5FEB7451320B17 /* PBXTargetDependency */, - ); - name = FBSDKPlacesKit; - productName = FBSDKPlacesKit; - productReference = 8E443B6E05DEC63F79E03144A6BCCD06 /* libFBSDKPlacesKit.a */; - productType = "com.apple.product-type.library.static"; - }; - 9A3E23EF4FFD3A9FD7136C452EA6ECCD /* Pods-PNObject_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = F9A2821F9D95EE3EF1471FB49769BD44 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Example" */; - buildPhases = ( - 49EB204A00C21F08F34110493F52F70B /* Headers */, - 36AA76DD8F0A89D1D87934501B44774E /* Sources */, - 614CEE26CE49AEEC66D66268B8FF0C90 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 20483C1D17C748309005D621B1E14755 /* PBXTargetDependency */, - 40217308C799B53415A95151D8889626 /* PBXTargetDependency */, - F1C84D1B6AE31A1BC12BF68CD9D7BB49 /* PBXTargetDependency */, - D2E83FC6D382B3F6A77B54784B7CDEA5 /* PBXTargetDependency */, - 2A6E9396297422B9D36A0110E2D30AEE /* PBXTargetDependency */, - AE5EE34F31298AD2736800F9520F7975 /* PBXTargetDependency */, - 8D6B83EE81065C64D2B73C2CD1BB3DAC /* PBXTargetDependency */, - BC4E605C444ED654357BBAF59A90C733 /* PBXTargetDependency */, - 2C3A5B2CC95F696567D67B419F9131F8 /* PBXTargetDependency */, - 7A18E9A61EA12A1E64FADF4EC27C0F71 /* PBXTargetDependency */, - EA9272A8BE8DA6ECE90137DA8C3F7F8C /* PBXTargetDependency */, - 2326FF0CB1B9A2798463429F85123025 /* PBXTargetDependency */, - 7463C4C7B07A069C73AE56D0D1CC6CC4 /* PBXTargetDependency */, - CD7EA14FC86092DD31C94A7223E6E68F /* PBXTargetDependency */, - 007CAA8218488C6837E3861CC6C88B4A /* PBXTargetDependency */, - FCAA9E86CC8F1A27F40F1E55602B65C7 /* PBXTargetDependency */, - 479B386610D003FB4BAF21D6CEEEB611 /* PBXTargetDependency */, - 7BC2535CAC75462D246B2F54DE44797C /* PBXTargetDependency */, - 1447031301377D1375D489E8F9DF9F9F /* PBXTargetDependency */, - ); - name = "Pods-PNObject_Example"; - productName = "Pods-PNObject_Example"; - productReference = 842584E2EA582B6EB1EB7C5CA8F6F80A /* libPods-PNObject_Example.a */; - productType = "com.apple.product-type.library.static"; - }; - 9C59561051F1403A293E0B943DB4E71F /* Expecta */ = { - isa = PBXNativeTarget; - buildConfigurationList = B6DA5203ABB442ED06B578569EDDF205 /* Build configuration list for PBXNativeTarget "Expecta" */; - buildPhases = ( - A933E820A51D974B5B5FD4D0849D2632 /* Headers */, - 5699B358B5374F41E6BA2BBC3342D54F /* Sources */, - 15719665842B070CCDCD7F73C3368732 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Expecta; - productName = Expecta; - productReference = A5B880FEB7120D903D08D5A4134FD8DF /* libExpecta.a */; - productType = "com.apple.product-type.library.static"; - }; - A3C3A40EFB5EA54D652EC5BEFDB4F726 /* RZDataBinding */ = { - isa = PBXNativeTarget; - buildConfigurationList = C7206F29847A8ED9A883CB611F9F2C43 /* Build configuration list for PBXNativeTarget "RZDataBinding" */; - buildPhases = ( - 79808F0477F65F7B24E445D3447BF4A0 /* Headers */, - 6619AF4385446DD1181D8CF3409DBDD5 /* Sources */, - 978DEBBF914F68139841CF7F5C8230A2 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = RZDataBinding; - productName = RZDataBinding; - productReference = 7160E1AC1908B0792C46512FA08C810C /* libRZDataBinding.a */; - productType = "com.apple.product-type.library.static"; - }; - B58CAE7FB9E57F981D1B1787C13117F3 /* PureLayout */ = { - isa = PBXNativeTarget; - buildConfigurationList = EF89EA2BA66B9CDB323777C7D79A97C7 /* Build configuration list for PBXNativeTarget "PureLayout" */; - buildPhases = ( - 5061B0F5C1C381CA816ED5ABC0055BE4 /* Headers */, - DEA1C7C6A246E3C0B334FC47368DC64E /* Sources */, - 54977F5B5EEC8CDE16727199A2081F93 /* Frameworks */, + 04636A396991778DB6263DC85229DDDE /* Headers */, + 49477D071AF77BEDC80F647562F04B62 /* Sources */, + 798FA432AB78673E4475C2044E95F52A /* Frameworks */, ); buildRules = ( ); @@ -3991,68 +3516,86 @@ ); name = PureLayout; productName = PureLayout; - productReference = 7FBA496BAEED97BBB12AEAD557185E8A /* libPureLayout.a */; + productReference = E4E7B3DD46ABB0DBBB56BD5AE90E4911 /* libPureLayout.a */; productType = "com.apple.product-type.library.static"; }; - B8BB9123545FB963281D96040E3DB350 /* FBSDKShareKit */ = { + 10C5885FCB0908EF785774EE52473DAB /* FBSDKLoginKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 47630D891C72A5B9E9FD1CF85A73A934 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; + buildConfigurationList = 9403020E2DC4940548B94719439C5693 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; buildPhases = ( - 5979AD75C9564060164A8509569955F0 /* Headers */, - 4256F71B562CCDD24C8B9EF0A2C67D96 /* Sources */, - 87F4769AB5C2EBCDCAD2E5692359503C /* Frameworks */, + 3D0242173D3E8572B3905DF688BAA93A /* Headers */, + 9F0E1F1DA773D8E3E40D773799965BA6 /* Sources */, + 4C5B76829F1C102DF96AFD5F100A8D34 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 6CE0BDAD4A2F407995A84AECEABCE9B7 /* PBXTargetDependency */, + 428426C51AA5DEBFA899C51CAB1F6A8F /* PBXTargetDependency */, ); - name = FBSDKShareKit; - productName = FBSDKShareKit; - productReference = C798E2F6F90FD31015E48545E9348A6F /* libFBSDKShareKit.a */; + name = FBSDKLoginKit; + productName = FBSDKLoginKit; + productReference = 5DE0FEFC3995E740EC1AE2611D0AEFB0 /* libFBSDKLoginKit.a */; productType = "com.apple.product-type.library.static"; }; - BF53CA0511709E8CFC3A31040F5C3BD4 /* PEAR-FileManager-iOS */ = { + 28907903AF6DD0AD321D92CD660E7E23 /* FBSDKCoreKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 0CA98EA9177EF194B9012C5CF6CB69DD /* Build configuration list for PBXNativeTarget "PEAR-FileManager-iOS" */; + buildConfigurationList = 632927A101DF58C8C2FA894C0ABE37CE /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; buildPhases = ( - BE08D5C1142FDD73D935B0E04EA7FF3E /* Headers */, - EDD346426CBC64D87AC27EBEECF7ECEE /* Sources */, - FCB4F7E0756BC6669E928B71504E2245 /* Frameworks */, + 2F2019F5ADB5E28336AE1EB46495E07A /* Headers */, + 7F4631255B9C1E4FD47476032829DE69 /* Sources */, + 9A0E2899EABDEC038775C52BD67C30C3 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); - name = "PEAR-FileManager-iOS"; - productName = "PEAR-FileManager-iOS"; - productReference = 4DDBFC1D5BDF4AED51727E70BC07E182 /* libPEAR-FileManager-iOS.a */; + name = FBSDKCoreKit; + productName = FBSDKCoreKit; + productReference = EC8F4D0BE3B0C192EBA4A93F8887D89F /* libFBSDKCoreKit.a */; productType = "com.apple.product-type.library.static"; }; - E88B7B10A2AD4EC505F001E3BA3920B9 /* Specta */ = { + 29CC8E943A3DAF8A6C8B8A99047D0566 /* Pods-PNObject_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 9B9939E0EF0EADB924070E5269B77A41 /* Build configuration list for PBXNativeTarget "Specta" */; + buildConfigurationList = 492217A1E816273C196989A591FC8477 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Example" */; buildPhases = ( - 551F0E3339BF674E75DC0F834CEE923D /* Headers */, - A7729E1A4061064B807BFC2DD4DF9667 /* Sources */, - A9AE3432046578EAC082DF088DED6A61 /* Frameworks */, + E53C7E9E664A1133AD522BF311C3061C /* Headers */, + 14460B572116626B49D3F03A074B6938 /* Sources */, + 091DB67733CA11F12E9F355900B69F82 /* Frameworks */, ); buildRules = ( ); dependencies = ( + DC9C93C0187453E2ADA8FF59395501AD /* PBXTargetDependency */, + E96024C55FBB3322B4B43BA583223034 /* PBXTargetDependency */, + 72C11185AFFECB4C14A1D9D0C0AB84F6 /* PBXTargetDependency */, + 6D794E7B178019705851A96DEB89B4D7 /* PBXTargetDependency */, + D4A89B5449EE51CC54D43FF0C21247CB /* PBXTargetDependency */, + 01FC55F84D2BD1B247DD7AADD104BE59 /* PBXTargetDependency */, + 4070A010904D84BF5EFDD1857CC05850 /* PBXTargetDependency */, + 783EBE758D1A7D5DFB17179F90686379 /* PBXTargetDependency */, + CDE099209D699A31E42C15B8F04F4CE5 /* PBXTargetDependency */, + 448784F4FC844F033D2E7AFF4D2D2CC5 /* PBXTargetDependency */, + 614384C4565A8A9D3247BBFD285C2D16 /* PBXTargetDependency */, + 53AC934177ED7F623859FAB39C0586B4 /* PBXTargetDependency */, + 8D188ADC5558BBD31B95D7D84C3CAA2D /* PBXTargetDependency */, + 09789558E6C646E710AF51583B20634C /* PBXTargetDependency */, + 42AA0434C890AE158CB723298D138A64 /* PBXTargetDependency */, + BE44598F401360CFFF71C1B01EA119A5 /* PBXTargetDependency */, + EF772269E54144D08D2B3C5CAA5D18DA /* PBXTargetDependency */, + 6AED604DE5E9E622F30EBE5AAADDF3BD /* PBXTargetDependency */, ); - name = Specta; - productName = Specta; - productReference = 75F264043AE55106986AD913E0F017C2 /* libSpecta.a */; + name = "Pods-PNObject_Example"; + productName = "Pods-PNObject_Example"; + productReference = DB97C961AD46E3B9D94105329C4D9B03 /* libPods-PNObject_Example.a */; productType = "com.apple.product-type.library.static"; }; - ECB5E7E8788197B450CD524AD4FAB627 /* NSString-Helper */ = { + 29DC1159737BBEB922AFEDEF074D020A /* NSString-Helper */ = { isa = PBXNativeTarget; - buildConfigurationList = 554D2A3586C5F42B13196406504DACDF /* Build configuration list for PBXNativeTarget "NSString-Helper" */; + buildConfigurationList = 2F90B54149248667830D377427B18010 /* Build configuration list for PBXNativeTarget "NSString-Helper" */; buildPhases = ( - 739499F415F7DB01D11BF2DDB594C936 /* Headers */, - D5BA14522236E5FA08121C37841193C5 /* Sources */, - 6BA43BBF05D0D5B766E21895DD4F1AA1 /* Frameworks */, + 28424C3DF0912D274D17C6CDDF85B1BD /* Headers */, + BA28381230A754455F1C5135114B4438 /* Sources */, + 5409B281A122B7E16D577A2F77A7D076 /* Frameworks */, ); buildRules = ( ); @@ -4060,16 +3603,276 @@ ); name = "NSString-Helper"; productName = "NSString-Helper"; - productReference = 4F6D6AE35FDDF06FFD471F85A2822BA0 /* libNSString-Helper.a */; + productReference = D770FA89FA490372BDD42164B4003345 /* libNSString-Helper.a */; productType = "com.apple.product-type.library.static"; }; - F6D80618FE30E0809B891A8B4361BD82 /* StrongestPasswordValidator */ = { + 30DE3F17E45759DA701027D2A07EBF5B /* Pods-PNObject_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = F40057EAD613291C39CC75513E74CF0F /* Build configuration list for PBXNativeTarget "StrongestPasswordValidator" */; + buildConfigurationList = 270EB1025D67EB9B0A27A21DC559FF52 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Tests" */; buildPhases = ( - 9CC8BCD4053F3A09E9940D85C9D010D7 /* Headers */, - 6CC6D56E4F79CBDCE0582652DA5EF4CB /* Sources */, - 4DD8B95189FA200C0C96678F3E4989F5 /* Frameworks */, + 9546BC43CDD522345091958072E2E8B4 /* Headers */, + 059244BEC92AE41101B9292D693610EF /* Sources */, + E7B7352C4E9AEFDF4E312BF8F1115E9E /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + C7619D1565D9D74787245BFF5C29CAE5 /* PBXTargetDependency */, + 80CDFA353F922DA03553649AE7CEE1A2 /* PBXTargetDependency */, + 8462B75AF9B508DE9FE83DC474CDE2F4 /* PBXTargetDependency */, + ); + name = "Pods-PNObject_Tests"; + productName = "Pods-PNObject_Tests"; + productReference = A0A3B91BACAEA694F02F88A2DAFBF39C /* libPods-PNObject_Tests.a */; + productType = "com.apple.product-type.library.static"; + }; + 3322D37BC14153310E7E1F2AC89F5892 /* DJLocalization */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3B3F60C5358041FE087F02662D428B84 /* Build configuration list for PBXNativeTarget "DJLocalization" */; + buildPhases = ( + 2CCDFF1CF3489BAE68B11AA39E4CC247 /* Headers */, + E0D10433E7CE1319D58B418C4A9A30BD /* Sources */, + D89D7597185B3B0D743B1B99D3CB00B2 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DJLocalization; + productName = DJLocalization; + productReference = 99459C38FD720FDADE24FBCEA85E5912 /* libDJLocalization.a */; + productType = "com.apple.product-type.library.static"; + }; + 56B00F23AD384D6704BC01F9AB3E16E1 /* NSDataAES */ = { + isa = PBXNativeTarget; + buildConfigurationList = D049B9822D6FD899BE546E3A5B19F927 /* Build configuration list for PBXNativeTarget "NSDataAES" */; + buildPhases = ( + BAEAEBD14EBF3AABD53EF0E2E8A3F063 /* Headers */, + 0663F698FBBFC8FF8597E1AF9D9740E2 /* Sources */, + B987A72ED665BF83324D0FB16735A58C /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NSDataAES; + productName = NSDataAES; + productReference = E9C322606300A7FE3DE117B824BF8D30 /* libNSDataAES.a */; + productType = "com.apple.product-type.library.static"; + }; + 56F4191D8CB8B4E6B4E5E4FA1A9F0F46 /* FBSDKShareKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 71CBB7F35BD4E0A3AB2277E8822C886D /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; + buildPhases = ( + EF961DF85FB391B4880CDC041586D582 /* Headers */, + 00EB266C8EECBC30E9BAD9D6244646D3 /* Sources */, + 17C8E049F95498FEF532668F4D3B451B /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 749BF9304F26C827E5B60113C9E8AA2B /* PBXTargetDependency */, + ); + name = FBSDKShareKit; + productName = FBSDKShareKit; + productReference = 85128AF76199890A6DD56FE81089D883 /* libFBSDKShareKit.a */; + productType = "com.apple.product-type.library.static"; + }; + 6D513278C42270774244D18170C8CC83 /* PNObject */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6A05CBCEC4BDF7925960B2211E59ECDF /* Build configuration list for PBXNativeTarget "PNObject" */; + buildPhases = ( + 90308F6600A1F26BEAF3E214327A073B /* Headers */, + 88106E7ADF8DB91E04FB7CBF4ADEF74B /* Sources */, + 65C5DF9F386625D1E72C4CCE956ED13B /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + AA92BAB7E0CB1C82B5C35BCDD34F44E2 /* PBXTargetDependency */, + 2555DC150601DEB86C5C92965F21413A /* PBXTargetDependency */, + E1005C8B122B3302D40895A1CE46CAD3 /* PBXTargetDependency */, + 7240B30F269AF93D9489B1C0CEEA8F11 /* PBXTargetDependency */, + A4DE665D278E8C6F1CDA2E074F2B5CBE /* PBXTargetDependency */, + C601A48ABD9923E514F7B877B1633226 /* PBXTargetDependency */, + 2579824EFA20513C02F721224EC1F3D3 /* PBXTargetDependency */, + DED5A825BE259BC14323608D80ADFDD2 /* PBXTargetDependency */, + 2882F5264FE28FA54154EDFE710CE3CD /* PBXTargetDependency */, + 72C944374D4B64B46749F8CC884D762D /* PBXTargetDependency */, + F508763D5A7AD80D614006AF60CD4141 /* PBXTargetDependency */, + DC8A2C965B510DE9C2504D90DA766C68 /* PBXTargetDependency */, + DA962476FB400CD658CF8A870A137606 /* PBXTargetDependency */, + E0EF40D7E105C48CA7F19F66BD1F4754 /* PBXTargetDependency */, + CC389907C28284ED12615F533C0910B5 /* PBXTargetDependency */, + 70C97418E2C2536013969F021D38BB81 /* PBXTargetDependency */, + ); + name = PNObject; + productName = PNObject; + productReference = 165209F924C9C7EAF3EBBB35DD106B3D /* libPNObject.a */; + productType = "com.apple.product-type.library.static"; + }; + 78DF8EBCD3FA8CC121AA947CD3ACA29D /* PEAR-FileManager-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = DFD17747A80A2F5691922C6096548006 /* Build configuration list for PBXNativeTarget "PEAR-FileManager-iOS" */; + buildPhases = ( + 2A5853E664DF3619EDFFBFCC4E74C152 /* Headers */, + 255FD55E78822E35DA59648B7092E7B9 /* Sources */, + BB83E7B1B12D4325E558F0D5395E148C /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "PEAR-FileManager-iOS"; + productName = "PEAR-FileManager-iOS"; + productReference = 14AC90D3D006C6B19A7F2C252814BA9A /* libPEAR-FileManager-iOS.a */; + productType = "com.apple.product-type.library.static"; + }; + 8522B11A0A4E6CCDBA184D2AAB3EA8C8 /* RZDataBinding */ = { + isa = PBXNativeTarget; + buildConfigurationList = C77564487F811EEDF6E6E6580650EA3E /* Build configuration list for PBXNativeTarget "RZDataBinding" */; + buildPhases = ( + EB3B01645FF306E1D8467FA51F1E1DF6 /* Headers */, + 660153EBBD484D862DB1A954841A7D5B /* Sources */, + C86B80E45382A8C608B9C502724CAB09 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RZDataBinding; + productName = RZDataBinding; + productReference = 3E0C40FD0298A1FF91D8C5C803BEADF6 /* libRZDataBinding.a */; + productType = "com.apple.product-type.library.static"; + }; + 8910BC215C7AF905CE272EE9581E871A /* UIDevice-Utils */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7EEEAD7921A3D810729A7483DCB43D4A /* Build configuration list for PBXNativeTarget "UIDevice-Utils" */; + buildPhases = ( + 0DC7AD101324E84EA0ADC8643B0EC670 /* Headers */, + DAE7BC92435E3A4EAB83F8AB007244CD /* Sources */, + EAB5937895A179681B803CAD4989EF23 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "UIDevice-Utils"; + productName = "UIDevice-Utils"; + productReference = C8166BB3BD7A8B94692E66D7DFC0AC10 /* libUIDevice-Utils.a */; + productType = "com.apple.product-type.library.static"; + }; + 89EF1085245EA10FA431ECBE3E002988 /* NSDate_Utils */ = { + isa = PBXNativeTarget; + buildConfigurationList = 03EE9DE89210286E661A59086E9D87D8 /* Build configuration list for PBXNativeTarget "NSDate_Utils" */; + buildPhases = ( + CDAB0E7305FB2A3E14B85E23AE505777 /* Headers */, + 110CE4B8D35FD8828A314EF939DDA6FF /* Sources */, + 2FDFE72D4B70A5B9147E79E376898F9A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 4056A00B51CE5181028292798B2F81F2 /* PBXTargetDependency */, + ); + name = NSDate_Utils; + productName = NSDate_Utils; + productReference = F16BAAF49CEBC19FEACD38152053DB72 /* libNSDate_Utils.a */; + productType = "com.apple.product-type.library.static"; + }; + A242E16C161DBB78B4F3424CE47A70CE /* nv-ios-http-status */ = { + isa = PBXNativeTarget; + buildConfigurationList = EA867E4653E74E5F79F71D04D9D895D7 /* Build configuration list for PBXNativeTarget "nv-ios-http-status" */; + buildPhases = ( + 827485331EB982CDA2B8194A7AE6EC0B /* Headers */, + 40E29578A873B9937859D9EE8925C607 /* Sources */, + 28091EE74436A104CCAE78050F4617CB /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "nv-ios-http-status"; + productName = "nv-ios-http-status"; + productReference = 588D820C376D20E8CD9260913BDF6AFC /* libnv-ios-http-status.a */; + productType = "com.apple.product-type.library.static"; + }; + A9C0F2028669FBE7E76BFAED238D845F /* DDDKeychainWrapper */ = { + isa = PBXNativeTarget; + buildConfigurationList = A08587F64D4282A471E426EEDC585916 /* Build configuration list for PBXNativeTarget "DDDKeychainWrapper" */; + buildPhases = ( + 7A6B556E8783B9593E27692B71C097AB /* Headers */, + 2F82D653C1BD5D5DCA08A1DCFDB3A972 /* Sources */, + E4A03B270C88FAD0E4823F8EF8372EA5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DDDKeychainWrapper; + productName = DDDKeychainWrapper; + productReference = D36B49FD5ABAD2816CB691096190A382 /* libDDDKeychainWrapper.a */; + productType = "com.apple.product-type.library.static"; + }; + D521CA2BCBBF4FB818112DC99A74AB91 /* FBSDKPlacesKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 236A68D583C132423D67812A4EBE5FF8 /* Build configuration list for PBXNativeTarget "FBSDKPlacesKit" */; + buildPhases = ( + 90D40677BD3B57E6E14C5903D027756F /* Headers */, + BF01506571BD9FFDC6018F016E12BFBE /* Sources */, + BDCB801378E9589F4760A59F62359223 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ADDC2455A2CDD755F77AF820E57D62E3 /* PBXTargetDependency */, + ); + name = FBSDKPlacesKit; + productName = FBSDKPlacesKit; + productReference = B419F3EDE88DB7099BE821352CFBB7E1 /* libFBSDKPlacesKit.a */; + productType = "com.apple.product-type.library.static"; + }; + DC371B7477C88184274EC6710690F97C /* Expecta */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6DED44BA887C7B50F308C1DB11861EC2 /* Build configuration list for PBXNativeTarget "Expecta" */; + buildPhases = ( + 559DF3BD40FAE2478E30F355A3BE9218 /* Headers */, + 1CDDE2E70F603750F1537E7A8A318C7D /* Sources */, + C966F79C4262300F36CF75EB47C91210 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Expecta; + productName = Expecta; + productReference = 08F7F0770B4878B9883B87DCD8569CB4 /* libExpecta.a */; + productType = "com.apple.product-type.library.static"; + }; + DE5FCB73EB1047C4981D3DD81BF0461D /* CodFis-Helper */ = { + isa = PBXNativeTarget; + buildConfigurationList = A72DCB8D16AA8079C9B191A597091DE4 /* Build configuration list for PBXNativeTarget "CodFis-Helper" */; + buildPhases = ( + 20A7981755A2382DF22A9A75BCC9F8B3 /* Headers */, + 02EB3DD138D1C585797658E082CBDC95 /* Sources */, + 419D3D6DB18BC8D6CFBF84D2D739C49F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "CodFis-Helper"; + productName = "CodFis-Helper"; + productReference = ABE0DE406F96E79B4E03E81BCA8EEDE9 /* libCodFis-Helper.a */; + productType = "com.apple.product-type.library.static"; + }; + F409CE466ADE0E5329AED43401B10558 /* StrongestPasswordValidator */ = { + isa = PBXNativeTarget; + buildConfigurationList = 167901D861FC136D022FE6BF7D19BDA4 /* Build configuration list for PBXNativeTarget "StrongestPasswordValidator" */; + buildPhases = ( + 414F6D29D69DDF6B1EC0FE355D434C36 /* Headers */, + 862BD75FD2CC71CE363C543231F5C00B /* Sources */, + EEDD844A79958B10A1BA8AAA32E6814E /* Frameworks */, ); buildRules = ( ); @@ -4077,25 +3880,24 @@ ); name = StrongestPasswordValidator; productName = StrongestPasswordValidator; - productReference = 428E8FAEC05A290CCC356492D7D5E678 /* libStrongestPasswordValidator.a */; + productReference = 5DCBD61C4C21E19A1CB0764FA976223E /* libStrongestPasswordValidator.a */; productType = "com.apple.product-type.library.static"; }; - F82F6D156A11A3A564623161D5DF0E1C /* FBSDKCoreKit */ = { + F8676010755CF1530FC02DA9A0D8822B /* Specta */ = { isa = PBXNativeTarget; - buildConfigurationList = 381A4159C7237C873B7A2CE8EFEC3D02 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; + buildConfigurationList = 18B87552B83CD6625866C939225E86EE /* Build configuration list for PBXNativeTarget "Specta" */; buildPhases = ( - 2E81AAF3D3C1F4A474CA20E18C212458 /* Headers */, - 1661F3D068EF79B7E58E4E872A02325F /* Sources */, - 5C226A25EBD98AE3388C3B6EE346E43D /* Frameworks */, + 6B4F9FF8BC45B00BE9D104D51FF7DDE8 /* Headers */, + 648927491508903E661DCAA6EFD92EEC /* Sources */, + F6983F776586A6E765DB3500DA940C37 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 4069CEBC77CD92E38CA6DBA54B16D3B5 /* PBXTargetDependency */, ); - name = FBSDKCoreKit; - productName = FBSDKCoreKit; - productReference = 96ED99C8C8CCC63543C5E357CACA0E1D /* libFBSDKCoreKit.a */; + name = Specta; + productName = Specta; + productReference = 15B13B063AA97C48C9010C298AECBDDA /* libSpecta.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -4104,785 +3906,798 @@ BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0930; - LastUpgradeCheck = 0930; + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = EDD9170F40AEED9F6D057F8B3764417F /* Products */; + productRefGroup = DA907DAC16F0F51AA7ECDCFE90E8669B /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 726B72F15C52C6D77C1B71FD3640970D /* AFNetworking */, - 4CEEA3727864ACEF2729940C5CCFF752 /* Bolts */, - 176104A755EE5DE10141CB771E7807E1 /* CodFis-Helper */, - 331B69A6E12311FA9485AF31E52534F6 /* DDDKeychainWrapper */, - 2EEE94220E4CB262F220514E2542D59D /* DJLocalization */, - 9C59561051F1403A293E0B943DB4E71F /* Expecta */, - F82F6D156A11A3A564623161D5DF0E1C /* FBSDKCoreKit */, - 49F9DBC21D7AACEE57AC6E48007A1F6B /* FBSDKLoginKit */, - 7CA27B1C39A0C1FE1AADBA1124CE8ABC /* FBSDKPlacesKit */, - B8BB9123545FB963281D96040E3DB350 /* FBSDKShareKit */, - 5E2AFD944F382B79C9F4C06E9E6288A6 /* NSDataAES */, - 5B021706D5B7FCF7981EADD0D618968B /* NSDate_Utils */, - ECB5E7E8788197B450CD524AD4FAB627 /* NSString-Helper */, - 155BA346539E11AD5BD9EA31727A1C9A /* nv-ios-http-status */, - BF53CA0511709E8CFC3A31040F5C3BD4 /* PEAR-FileManager-iOS */, - 192DBF78C939C1FE9C6EF8DA34F5FB58 /* PNObject */, - 9A3E23EF4FFD3A9FD7136C452EA6ECCD /* Pods-PNObject_Example */, - 0C0589E0AD53F8AC96600BDC8EFECBFA /* Pods-PNObject_Tests */, - B58CAE7FB9E57F981D1B1787C13117F3 /* PureLayout */, - A3C3A40EFB5EA54D652EC5BEFDB4F726 /* RZDataBinding */, - E88B7B10A2AD4EC505F001E3BA3920B9 /* Specta */, - F6D80618FE30E0809B891A8B4361BD82 /* StrongestPasswordValidator */, - 41741B48B3525A9905AB215A91E2358B /* UIDevice-Utils */, + 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */, + DE5FCB73EB1047C4981D3DD81BF0461D /* CodFis-Helper */, + A9C0F2028669FBE7E76BFAED238D845F /* DDDKeychainWrapper */, + 3322D37BC14153310E7E1F2AC89F5892 /* DJLocalization */, + DC371B7477C88184274EC6710690F97C /* Expecta */, + 28907903AF6DD0AD321D92CD660E7E23 /* FBSDKCoreKit */, + 10C5885FCB0908EF785774EE52473DAB /* FBSDKLoginKit */, + D521CA2BCBBF4FB818112DC99A74AB91 /* FBSDKPlacesKit */, + 56F4191D8CB8B4E6B4E5E4FA1A9F0F46 /* FBSDKShareKit */, + 56B00F23AD384D6704BC01F9AB3E16E1 /* NSDataAES */, + 89EF1085245EA10FA431ECBE3E002988 /* NSDate_Utils */, + 29DC1159737BBEB922AFEDEF074D020A /* NSString-Helper */, + A242E16C161DBB78B4F3424CE47A70CE /* nv-ios-http-status */, + 78DF8EBCD3FA8CC121AA947CD3ACA29D /* PEAR-FileManager-iOS */, + 6D513278C42270774244D18170C8CC83 /* PNObject */, + 29CC8E943A3DAF8A6C8B8A99047D0566 /* Pods-PNObject_Example */, + 30DE3F17E45759DA701027D2A07EBF5B /* Pods-PNObject_Tests */, + 06F5CDD6235E25837519792853B145A1 /* PureLayout */, + 8522B11A0A4E6CCDBA184D2AAB3EA8C8 /* RZDataBinding */, + F8676010755CF1530FC02DA9A0D8822B /* Specta */, + F409CE466ADE0E5329AED43401B10558 /* StrongestPasswordValidator */, + 8910BC215C7AF905CE272EE9581E871A /* UIDevice-Utils */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 0AF2239E2CB89687F9E29F0F2907FBF6 /* Sources */ = { + 0013C2F4C1357617646EA156AF532732 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 902EB295597FDE2452897CF427756E64 /* nv-ios-http-status-dummy.m in Sources */, - 6C8B06985746612ABE8D97720DADAE8A /* nv_ios_http_status.m in Sources */, + 5607AF83703C0AEDB12115740B6672BD /* AFAutoPurgingImageCache.m in Sources */, + 8231FDD98A7D1659F4FA5788AFEEE6DF /* AFHTTPSessionManager.m in Sources */, + 10EB9A7552672DC328F8695A98E605B3 /* AFImageDownloader.m in Sources */, + 1F66F73B61BEA115076A9CF7DD463832 /* AFNetworkActivityIndicatorManager.m in Sources */, + B098BC9005738774F6288FF2879FD51D /* AFNetworking-dummy.m in Sources */, + 3801A443834985F278FE479B54319B4F /* AFNetworkReachabilityManager.m in Sources */, + 1EA1235398DAC98440B2EFBE43839FD1 /* AFSecurityPolicy.m in Sources */, + 72797BC85469FCE7E6198B67EC88E851 /* AFURLRequestSerialization.m in Sources */, + 2C95C61175E1EB929A4B094581747835 /* AFURLResponseSerialization.m in Sources */, + E7351E56F4C49CE1F9559D5C69ECC1ED /* AFURLSessionManager.m in Sources */, + 551EDABAFCE6F89BB75C7174D4D9D059 /* UIActivityIndicatorView+AFNetworking.m in Sources */, + A16187923EA1A156F18C909206809C30 /* UIButton+AFNetworking.m in Sources */, + 40F9C3B7C0CCD0982FD14728F2595632 /* UIImageView+AFNetworking.m in Sources */, + 894126828AF68F98598CA7B53E737AEF /* UIProgressView+AFNetworking.m in Sources */, + 304FB2F3CB19F5C44D812D90AA2F1121 /* UIRefreshControl+AFNetworking.m in Sources */, + 5671A72ECAB90A855ECF6F69B750B4E1 /* UIWebView+AFNetworking.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1661F3D068EF79B7E58E4E872A02325F /* Sources */ = { + 00EB266C8EECBC30E9BAD9D6244646D3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F5F720E61CADB70A155B81FFB7C3C0AE /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, - 73FE9194E5401C931F15E4AD9588AC97 /* FBSDKAccessToken.m in Sources */, - 1FFF1C0BF427C479547A1B6D7A5F245C /* FBSDKAccessTokenCache.m in Sources */, - B67814E94FAC645E91C52EF002E961A0 /* FBSDKAccessTokenCacheV3.m in Sources */, - 2288B0C86E48CB2DB3E62EF41BE13F2B /* FBSDKAccessTokenCacheV3_17.m in Sources */, - 2AC0F08B7A751361B3E952A8F0DCFC02 /* FBSDKAccessTokenCacheV3_21.m in Sources */, - 456A612700CF066CA8E77976387D7AD9 /* FBSDKAccessTokenCacheV4.m in Sources */, - 902C09F3912C0DE87AAC6D5C69699CFD /* FBSDKAccessTokenExpirer.m in Sources */, - 16C7677384CA26F4E858E8628B41440A /* FBSDKAppEvents.m in Sources */, - A025A53FE2F050ABD4D3D78C6B09AD50 /* FBSDKAppEventsDeviceInfo.m in Sources */, - 5BFC31C26836F6EECABC630FEA42C47F /* FBSDKAppEventsState.m in Sources */, - 61A4A967808D0BDAFED867D708198A7A /* FBSDKAppEventsStateManager.m in Sources */, - 1DA7B8C1C0838A8752F63FEFF160134D /* FBSDKAppEventsUtility.m in Sources */, - 8F44CADA2F6E4DCBDBEBED9BF42E9934 /* FBSDKApplicationDelegate.m in Sources */, - 706FF60E17254728EF4B6F2C0E3E6DBB /* FBSDKAppLink.m in Sources */, - 383E9DF08C169EC6B43AFCD4B9A67B11 /* FBSDKAppLinkNavigation.m in Sources */, - 709254FF22BE9F0FA57F75D74F0BAF35 /* FBSDKAppLinkResolver.m in Sources */, - 733577888FC1EF0B9618414A68E28647 /* FBSDKAppLinkReturnToRefererController.m in Sources */, - FFF6BE01C265D5762AFE8D18E93F13AD /* FBSDKAppLinkReturnToRefererView.m in Sources */, - FB825CE3B4D4F3B3180B2AB4BF30E3C0 /* FBSDKAppLinkTarget.m in Sources */, - 8A732A16036A2FDAD3C9618984EB9F15 /* FBSDKAppLinkUtility.m in Sources */, - 596433C80F3DE2E83672C744FF1F62C6 /* FBSDKAudioResourceLoader.m in Sources */, - B49A9CF379362DE0292F335B81459FA7 /* FBSDKBase64.m in Sources */, - 00F15AC64D9BC14645D7EB2B8A02C10B /* FBSDKBoltsMeasurementEventListener.m in Sources */, - 1105C1BD653A0E9D12F55605D1A43E20 /* FBSDKBridgeAPICrypto.m in Sources */, - 930DFE7A7C0E8897AD9C48D2A289D5FF /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, - 7A06ACDB2006C0BAB5F57B0864425FF2 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, - AF948C6632A0F6B5E995B937B31993B7 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, - 04D38499EDB58829E869093378800678 /* FBSDKBridgeAPIRequest.m in Sources */, - CE2985CCB7A75E8DEB6E6B20F8221B6C /* FBSDKBridgeAPIResponse.m in Sources */, - 49986E9ECBCB45781614F54F15210768 /* FBSDKButton.m in Sources */, - BD070DA749633C9C7F4600ADC2A211F9 /* FBSDKCloseIcon.m in Sources */, - 3549AA6E940ABC495E3DE5B8C68DFB3C /* FBSDKCodelessIndexer.m in Sources */, - 667A9135AFFFDF5CF39767073454D40B /* FBSDKCodelessParameterComponent.m in Sources */, - F1C701950A48E1D9343669B852BAE661 /* FBSDKCodelessPathComponent.m in Sources */, - 40326479D044EF77DA5048A61EA3605C /* FBSDKColor.m in Sources */, - CD2519D4F0CC588038B64ACA9456FEF0 /* FBSDKConstants.m in Sources */, - CDBD2C452D108ADD42475E4BEF6822E5 /* FBSDKContainerViewController.m in Sources */, - 4E12A3E10CFDD210DB39E9EBE8317572 /* FBSDKCoreKit-dummy.m in Sources */, - 18DA1F3528A51CFF8425A84403AB3EC8 /* FBSDKCrypto.m in Sources */, - 17C87219DE92B3C47CAFF4F9ED2293D3 /* FBSDKDeviceRequestsHelper.m in Sources */, - CADBA7E876B2CB31F41F880D05C1719B /* FBSDKDialogConfiguration.m in Sources */, - 6EAE68AF1C3675D0A6EF837953C810C0 /* FBSDKDynamicFrameworkLoader.m in Sources */, - 76DC5B8FFD0FFD75C7ECCF26223C864C /* FBSDKError.m in Sources */, - DCB834362AE3F81F92EE24D1514B84A1 /* FBSDKErrorConfiguration.m in Sources */, - B775A74175C9590B464B59DDB24462B1 /* FBSDKErrorRecoveryAttempter.m in Sources */, - D71128F7FA61C7DC0DF30D0D78FFA9F7 /* FBSDKErrorRecoveryConfiguration.m in Sources */, - F224FAFD1E06F812884D9B2F5D4C843F /* FBSDKEventBinding.m in Sources */, - 85AFFE1B5492C45C944657FE0D88286B /* FBSDKEventBindingManager.m in Sources */, - 72D51D3F0F18B9F8B5B75C23FC55FD1D /* FBSDKGateKeeperManager.m in Sources */, - 4AD98DB3C8CD46AA2EDF65D8C567D07E /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, - C036434251013DBEEEFD233DF9906D55 /* FBSDKGraphRequest.m in Sources */, - AD4C199923F7CA4BC528E9D6393A7759 /* FBSDKGraphRequestBody.m in Sources */, - D26FC8DE38F5861F870809CCAAEFD892 /* FBSDKGraphRequestConnection.m in Sources */, - 723EEBD7EBE3B3F7D1612218AD41D5CD /* FBSDKGraphRequestDataAttachment.m in Sources */, - 8ABF83D7E78BF47FBC028DFF9542C335 /* FBSDKGraphRequestMetadata.m in Sources */, - 0BC3AFB238C982D905401F0567D3AB34 /* FBSDKGraphRequestPiggybackManager.m in Sources */, - 2444B1ACDFE80A90670CA47D9C1EB301 /* FBSDKHybridAppEventsScriptMessageHandler.m in Sources */, - 45B6DFDCCE83BD9FE36DCD09496A8AD6 /* FBSDKIcon.m in Sources */, - 2C34DD855E93BB8329604ECDAF9D2A02 /* FBSDKImageDownloader.m in Sources */, - 7D382DCC79396B351FFA1A681E508F43 /* FBSDKInternalUtility.m in Sources */, - 1B34C3F71090E7EDD712A9FBEF7FF31F /* FBSDKKeychainStore.m in Sources */, - 031D3C85F580318DBACE34745F397CE6 /* FBSDKKeychainStoreViaBundleID.m in Sources */, - 9364D869A81C48946007BFE5E5F2B8A2 /* FBSDKLogger.m in Sources */, - EA7E1A9727F7DC10403EC7CC81BE7D80 /* FBSDKLogo.m in Sources */, - D683A7251327E661F61B718CBEB4E3C0 /* FBSDKMaleSilhouetteIcon.m in Sources */, - 445FEF66C84DA5BF03E0C5C77B4D7D62 /* FBSDKMath.m in Sources */, - 38EFD39C20E2EEDD66372D8F68056FAE /* FBSDKMeasurementEvent.m in Sources */, - D28CCDE613D51CD98C868931285261DC /* FBSDKMonotonicTime.m in Sources */, - 8996AF75B66A11AF74575C329451A936 /* FBSDKPaymentObserver.m in Sources */, - 281E3ECBACBFB3452590BABC2302C807 /* FBSDKProfile.m in Sources */, - 99F88C201A81FFB30AA8C597BA83E7CD /* FBSDKProfilePictureView.m in Sources */, - A0D66110DEA3DF96063B779073CCDF4F /* FBSDKServerConfiguration.m in Sources */, - E59DC70A134CFC7A0A1CF06684FE3F3C /* FBSDKServerConfigurationManager.m in Sources */, - D32B990072C67035E81DDA98268CFDCD /* FBSDKSettings.m in Sources */, - 286AA56F94B5F9621AEE8E0ABC78BB62 /* FBSDKSwizzler.m in Sources */, - 679A3F2EA0B058BFFCA9920E67F1E558 /* FBSDKSystemAccountStoreAdapter.m in Sources */, - DAA86EE60437B778BBA4A6D9D7ABB337 /* FBSDKTestUsersManager.m in Sources */, - CAA25A80017BA67098F97D8DC8F2BF4D /* FBSDKTimeSpentData.m in Sources */, - AAD9EEE42FD921B664A3F6B5008E3CF8 /* FBSDKTriStateBOOL.m in Sources */, - 151F56E6C4E03522C0E66B524F884B93 /* FBSDKTypeUtility.m in Sources */, - 408027D0F27D619451276ADB71072900 /* FBSDKURL.m in Sources */, - 4DA62BFA89CEB176F4FBCFEAC444B1BB /* FBSDKURLSessionTask.m in Sources */, - CF19B0873AA3B7F9BCD5597F81868D69 /* FBSDKUserDataStore.m in Sources */, - 99ECED1C0B7A5C43B3ACB08FFE2F338A /* FBSDKUtility.m in Sources */, - 3020AB1E8ABA04D350B6F43AD6B8653A /* FBSDKViewHierarchy.m in Sources */, - CAECF55A4A5FA2E9C137863C5F39FDD9 /* FBSDKViewImpressionTracker.m in Sources */, - 1E3EDBCCB0B3312BBB581929F61AC67B /* FBSDKWebDialog.m in Sources */, - 9737A90D97365E4B64ABC1C17D006AF3 /* FBSDKWebDialogView.m in Sources */, - AC44DE40BEF8C05542070EFBAFACA661 /* FBSDKWebViewAppLinkResolver.m in Sources */, + D925C0B9D5480E72B33A3EFB10F4B534 /* FBSDKAppGroupContent.m in Sources */, + 2E18BAF256E8415EF0CA35314DE0A94F /* FBSDKAppInviteContent.m in Sources */, + 3819C9D8B1F371F0F6BE19773DB27D35 /* FBSDKCameraEffectArguments.m in Sources */, + 9C21FACCDDADB8B9B8CB3D4930B14563 /* FBSDKCameraEffectTextures.m in Sources */, + 7FCC3D21B38D28CDA0B84382FB5DFC51 /* FBSDKCheckmarkIcon.m in Sources */, + A9A5AABC89D7A5FFAC2F7EAA4FB38129 /* FBSDKGameRequestContent.m in Sources */, + 558C2AD45273CD90DC2994B6413D8F02 /* FBSDKGameRequestDialog.m in Sources */, + 30CFBF25179B0193B747DB98CBE35E77 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, + 83FF7BB5E66EFCE4F16C0BE7C72A9588 /* FBSDKHashtag.m in Sources */, + ACBC1264702F6F2AAF5DEF5BF090197F /* FBSDKLikeActionController.m in Sources */, + FBDD5D83153C4F3F9995973EB87C5F79 /* FBSDKLikeActionControllerCache.m in Sources */, + 21C0F4D653C086115150F2DC30774421 /* FBSDKLikeBoxBorderView.m in Sources */, + A080451B9A9657BEFFD52CFB585A63F1 /* FBSDKLikeBoxView.m in Sources */, + 5D23F02C1BA3C61CE42C45C887266C8F /* FBSDKLikeDialog.m in Sources */, + A19FFAFF76E0C882DCD18A628305248C /* FBSDKLikeObjectType.m in Sources */, + 4C6AA149721AE3932943325535A628DE /* FBSDKMessageDialog.m in Sources */, + C2BBF9A92208990FCA3F0E906A71F648 /* FBSDKMessengerIcon.m in Sources */, + 7A67D15EB1E9A04D206C732AF7EAB216 /* FBSDKSendButton.m in Sources */, + E2532422ACCB40786E44EF3937D396C8 /* FBSDKShareAPI.m in Sources */, + 4BD5CBCEAA6D12F5EAC58EED7B90CA33 /* FBSDKShareButton.m in Sources */, + 046B5BE460A9DC194F7CE5220F1E2523 /* FBSDKShareCameraEffectContent.m in Sources */, + 62FB37B3BACE413B79E1832D1779F113 /* FBSDKShareConstants.m in Sources */, + EAEE6576F3EC6416B0A408C19E82F35C /* FBSDKShareDialog.m in Sources */, + 95D094D1FA4C6E453C253F469B6AE8C5 /* FBSDKShareDialogMode.m in Sources */, + 9CBBC56F653655FB304D75D53C8F7022 /* FBSDKShareExtension.m in Sources */, + BC10594FD1E8C7CB0C5F767DBB742CAD /* FBSDKShareKit-dummy.m in Sources */, + 9377564A208355895387DBC9416720D6 /* FBSDKShareLinkContent.m in Sources */, + 0FE8923A542EA92C4CEB103B54EB6D13 /* FBSDKShareMediaContent.m in Sources */, + 585266AF43226FCCC597EA43C6F76BE8 /* FBSDKShareMessengerContentUtility.m in Sources */, + C4F437595BA38153B7F6A08B7CD04E4F /* FBSDKShareMessengerGenericTemplateContent.m in Sources */, + CCB699A2708BA34BAB125CAD2B0BA414 /* FBSDKShareMessengerGenericTemplateElement.m in Sources */, + 1203843ED4564D33EF4DB0B8D3B7CF1E /* FBSDKShareMessengerMediaTemplateContent.m in Sources */, + BFDFB97AD59223EFFA6B4BE3269EB1AE /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m in Sources */, + F82B01CE9BDA0F950C9142C752D6A1BF /* FBSDKShareMessengerURLActionButton.m in Sources */, + 8D27A8B27E33CEFE36705DA27D962B1E /* FBSDKShareOpenGraphAction.m in Sources */, + 13F2D53D7D3ED41BEB944ABAAFF77F23 /* FBSDKShareOpenGraphContent.m in Sources */, + 48D4A2545775F1FBF565D8EC0B3870CB /* FBSDKShareOpenGraphObject.m in Sources */, + 6BC2BD4E7EE77C749E7CC429B8CF5670 /* FBSDKShareOpenGraphValueContainer.m in Sources */, + 053DB041D877E8070A15CB87EEC73335 /* FBSDKSharePhoto.m in Sources */, + 033BFC0A9EF075A3772EFF982C672541 /* FBSDKSharePhotoContent.m in Sources */, + 1F05E84D04AFB3A281348CAFFF7D471C /* FBSDKShareUtility.m in Sources */, + CDB52CD237828D6DC0A6C9230A765273 /* FBSDKShareVideo.m in Sources */, + 7872C1110B844B7FF25BB50E128654CC /* FBSDKShareVideoContent.m in Sources */, + BA7642014EE39815D414EBBC6132FD7F /* FBSDKVideoUploader.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1BC094D260D00BB6D060D274556EF982 /* Sources */ = { + 02EB3DD138D1C585797658E082CBDC95 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C04DA1E565046BEF8539D81B5B2DB055 /* AFHTTPRequestSerializer+OAuth2.m in Sources */, - 7B87CF545BCF960866A8509FB65DAA00 /* AFJSONResponseSerializerWithData.m in Sources */, - A186AA6E4FDBBA2E17C50A4F36E3D169 /* AFOAuth2Manager.m in Sources */, - 3D445933D315AD15BEB85279F96AE853 /* AFOAuthCredential.m in Sources */, - 75591B618278962C31B36C2F2519ED11 /* PNAddress.m in Sources */, - 7E6290315B3DB1962203187523CA830C /* PNInstallation.m in Sources */, - DF4EFE7558ADE6C16FDFAA759B6FD6FC /* PNLocation.m in Sources */, - 23736F4F02682FF1825F13764B9AD952 /* PNObjcPassword.m in Sources */, - B3726BEAE3E7088884EF5B4DA8A00FDE /* PNObject+PNObjectConnection.m in Sources */, - 5AFF9E2DE3A73D45DD58D5DA876432EE /* PNObject+PNObjectDELETEConnection.m in Sources */, - 1D8210F566BBEB2CB9B9CA62348B949F /* PNObject+PNObjectGETConnection.m in Sources */, - 20DE18D2C8A23A5BFBA7D5C26936952C /* PNObject+PNObjectPOSTConnection.m in Sources */, - 76AB87F41C396B78EEA5F42E3F3E87D0 /* PNObject+Protected.m in Sources */, - 7A217415A41DE6A06320429B1B21791D /* PNObject-dummy.m in Sources */, - B74296BD93127B03BCCE75268C243381 /* PNObject.m in Sources */, - 8C80CA7960ABD2E07E31BB751E8B4C9E /* PNObjectConfig.m in Sources */, - 34A6E6F55828F2654103AC63E1999D8F /* PNObjectFormData.m in Sources */, - 294A49F93F2D6FC1E68AD209331789C1 /* PNObjectModel.m in Sources */, - 5988A752ACC6F8A00AFB5333484372A7 /* PNObjectUtilities.m in Sources */, - 76E184465B6EF5CCC71FD3BCB0EA66B6 /* PNUser.m in Sources */, + 9AC413BEAA923D28381CF1BFB16B2974 /* CodFis+Helper.m in Sources */, + 3AAF46B09CA6561F0F5589158DED8EAC /* CodFis-Helper-dummy.m in Sources */, + 4C88659E29581FB400995A4F0308D9F9 /* CodFisResponse.m in Sources */, + 977D6656979885020355386006FDAF87 /* VatNumber+Helper.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2E9A1AC5EAE157293C5EB3C47C7F3A5E /* Sources */ = { + 059244BEC92AE41101B9292D693610EF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0F952F6D3A5081CC52B018493F427E75 /* DJLocalizableString.m in Sources */, - 50656201B47E491AD58231E71330470A /* DJLocalization-dummy.m in Sources */, - 87E3E8408EE856438E5149336B58FFC9 /* DJLocalizationSystem.m in Sources */, - 250B47B2A7AC33A50E4CB6879A66E407 /* UIStoryboard+DJLocalization.m in Sources */, + ECDE83317B2888BCAF0AAC2C85501C36 /* Pods-PNObject_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 36AA76DD8F0A89D1D87934501B44774E /* Sources */ = { + 0663F698FBBFC8FF8597E1AF9D9740E2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8772BC040CEFA103A8EF256FCFC06765 /* Pods-PNObject_Example-dummy.m in Sources */, + 00A5DF2FEF31E60003B8E79FAC839DE9 /* NSData+AES.m in Sources */, + F5EFF8EEB284569DC2EFAE634BBF6B80 /* NSData+AESKey.m in Sources */, + D45317A93C74A472F2B97B0B7A2607D2 /* NSData+AESValue.m in Sources */, + BA2D4C72E2185DC986E32039A32F3C47 /* NSData+SHA.m in Sources */, + C6B94ED7EC66C8BD304A127BFC33D3F6 /* NSDataAES-dummy.m in Sources */, + FEEA8DAB8CC7648226B6CF3DD1AA856D /* NSDataAESCipher.m in Sources */, + 3EB3F60CF7AE71F87BDBED0BE0E9BA16 /* NSMutableData+AES.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3733BC959DAE496437C5180206EB8025 /* Sources */ = { + 110CE4B8D35FD8828A314EF939DDA6FF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8E1276E77FF9EFDE159D2E7D3E6C4721 /* BFAppLink.m in Sources */, - 3103D38EB328E45383D3F4CED21F94E1 /* BFAppLinkNavigation.m in Sources */, - 72C57AB2D67201704CF966637360DD8B /* BFAppLinkReturnToRefererController.m in Sources */, - E04633AA0FEF2BD076ACF70315D2DA15 /* BFAppLinkReturnToRefererView.m in Sources */, - F8CF621A2EC0CAB9CD03329E4728A861 /* BFAppLinkTarget.m in Sources */, - 92B8BFBF73EB6CA19F40B82B11D70363 /* BFCancellationToken.m in Sources */, - DDE9E4D3301783369597800913F88A6E /* BFCancellationTokenRegistration.m in Sources */, - 16C06142EE4616367556CB7438F6DDB8 /* BFCancellationTokenSource.m in Sources */, - 170DBB47E413244BEDCC46719DE8847F /* BFExecutor.m in Sources */, - B406E031D2059063DE73037525A78E64 /* BFMeasurementEvent.m in Sources */, - DF4831B00C4C154E76D7B03F3D3211A0 /* BFTask.m in Sources */, - B40A58D8C94D0179F2775DEB419AD1C7 /* BFTaskCompletionSource.m in Sources */, - FBB65BA80A0CDD08FB0293A85B6FA7EC /* BFURL.m in Sources */, - 5D263D870F4DDC61D61A4E649226BC12 /* BFWebViewAppLinkResolver.m in Sources */, - A4961564C76B4356F6119763931588A7 /* Bolts-dummy.m in Sources */, - DECD9FBA9FC5465D2E443693F14BB047 /* Bolts.m in Sources */, + 2A900BF2297113B84FEA1A90DAF248C8 /* NSDate+NSDate_Util.m in Sources */, + 0D37BF48ED0A0717217DC596363863D3 /* NSDate_Utils-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 397F88339C36F090E059AFFED4823E56 /* Sources */ = { + 14460B572116626B49D3F03A074B6938 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 51251C1E47DDE11C4ADC69A6AC173311 /* CodFis+Helper.m in Sources */, - 31D77A4F74849AF2D4766F704C9CE6D1 /* CodFis-Helper-dummy.m in Sources */, - F3037EF2E349AB27A3904D31F08AFF95 /* CodFisResponse.m in Sources */, - C82194DE44F522CE03A597BEC431463B /* VatNumber+Helper.m in Sources */, + 614EEB592BC35CB49DD0B4EB640012AD /* Pods-PNObject_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4256F71B562CCDD24C8B9EF0A2C67D96 /* Sources */ = { + 1CDDE2E70F603750F1537E7A8A318C7D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BC6139D83A8C5AA7CD654026143F7BEA /* FBSDKAppGroupAddDialog.m in Sources */, - F321F642A030FB90B6DB084309D0A75D /* FBSDKAppGroupContent.m in Sources */, - EEB4DAF3EC4BE2A1425BACE61EC5B87D /* FBSDKAppGroupJoinDialog.m in Sources */, - AA1224AA5D1FE230F8776B2FD4C44B64 /* FBSDKAppInviteContent.m in Sources */, - F19D6F0E7FE4EC81D874DEA19DC5A53E /* FBSDKAppInviteDialog.m in Sources */, - F2704F8067DF64A541892B4DB90A84A4 /* FBSDKCameraEffectArguments.m in Sources */, - BC6AEE42E926DB1FFE5074FA01F0D826 /* FBSDKCameraEffectTextures.m in Sources */, - 3A514261550472C40826165150A10A32 /* FBSDKCheckmarkIcon.m in Sources */, - B2DB629669B8DDCCBB909D4C7AB56CEF /* FBSDKGameRequestContent.m in Sources */, - C5FD25B3068659B8C78B07BA391784F9 /* FBSDKGameRequestDialog.m in Sources */, - 9250DECACCD8A0807C6828E50CCCFE6A /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, - 1A228D9ABBC4FC04C35FE1EC76311F56 /* FBSDKHashtag.m in Sources */, - F609ACC22A11A52BC513CF6C49C66B60 /* FBSDKLikeActionController.m in Sources */, - 5474BCEBBDBDA530287ACD7A6D6A2D05 /* FBSDKLikeActionControllerCache.m in Sources */, - 842837419CCE9CDC87632A14F4EDCE83 /* FBSDKLikeBoxBorderView.m in Sources */, - 4AB3B89F758FCDD2F00974B052A01E46 /* FBSDKLikeBoxView.m in Sources */, - CBD74B3F19C637F4BE1EC0434E5F4F0A /* FBSDKLikeButton.m in Sources */, - FC581640011812355E1D9AE4BF1C2AF9 /* FBSDKLikeButtonPopWAV.m in Sources */, - 5040181D8857BDDEDCF2F1AF40F96BBD /* FBSDKLikeControl.m in Sources */, - 6103B0C9AE3D86390099F01C063DA7D1 /* FBSDKLikeDialog.m in Sources */, - 784AC80BD7D4B2A6E9E64C17E2E347B7 /* FBSDKLikeObjectType.m in Sources */, - C8BA51F7719C03739F5B6189E2FEB3EB /* FBSDKMessageDialog.m in Sources */, - EBA369EB3402EC6CDCB15B28867D51AB /* FBSDKMessengerIcon.m in Sources */, - 549DEFC9FAF64B596B68DF254BF36744 /* FBSDKSendButton.m in Sources */, - 172585039DEB391779214F92C15804EA /* FBSDKShareAPI.m in Sources */, - 31292B0F3D8739FA5F2358CE2EAEB400 /* FBSDKShareButton.m in Sources */, - D87FBA678EECC7D878159DCA26BA7400 /* FBSDKShareCameraEffectContent.m in Sources */, - D2EC017CC394C76654C0969221D3E911 /* FBSDKShareConstants.m in Sources */, - BAB8DAF7B70E8B2E4B5E16B6CEE9CC1E /* FBSDKShareDialog.m in Sources */, - 087E194397DCCE3FDB9AEDB456481000 /* FBSDKShareDialogMode.m in Sources */, - C98A0F9C04BB43D9336B3178A78DA9BB /* FBSDKShareExtension.m in Sources */, - 3E3A00360C400B866423F45B3F741ED5 /* FBSDKShareKit-dummy.m in Sources */, - 18A239FDECEB25DFBF63D1ACBDE7A7EA /* FBSDKShareLinkContent.m in Sources */, - EDF10A8E2C7E448DA6B062FB501101EB /* FBSDKShareMediaContent.m in Sources */, - 86FD8CFC129904FD6CCA48958E061D55 /* FBSDKShareMessengerContentUtility.m in Sources */, - 63A5D66809EDA1E856FB05BEEBBC915F /* FBSDKShareMessengerGenericTemplateContent.m in Sources */, - 5149A2FBFC82FF90F424E1C66A6A19E0 /* FBSDKShareMessengerGenericTemplateElement.m in Sources */, - EE5799BEC21E38EA19D4040F442B2084 /* FBSDKShareMessengerMediaTemplateContent.m in Sources */, - 152654B44B1E78BA1AC303AEEF315D3A /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m in Sources */, - E51B702526AAAC282503FC2104DD63DF /* FBSDKShareMessengerURLActionButton.m in Sources */, - 43BCB76A3185070ADED799224C849F95 /* FBSDKShareOpenGraphAction.m in Sources */, - 6EB647BD1B9DE3803A530BBF22F389E2 /* FBSDKShareOpenGraphContent.m in Sources */, - CE6C89A752B368F9FFCDFB01560BA0E1 /* FBSDKShareOpenGraphObject.m in Sources */, - D4AFD6F4208B6E81C2DE8C1947907581 /* FBSDKShareOpenGraphValueContainer.m in Sources */, - D0A3B7DB082E85DF5A1BF164603CB211 /* FBSDKSharePhoto.m in Sources */, - 900A5C13CF40C08194F4249F6DCBEF0D /* FBSDKSharePhotoContent.m in Sources */, - C6AAD41B77B22C62B25D8E30526E9C5D /* FBSDKShareUtility.m in Sources */, - CC6D6F9C08C987CC8704E6404146994C /* FBSDKShareVideo.m in Sources */, - FB2102733B09BE3723D5BBF1DB8361D7 /* FBSDKShareVideoContent.m in Sources */, - BA89E8ED9EC70698FA446DDD072DBBE7 /* FBSDKVideoUploader.m in Sources */, + DA7B989AFE2B409E9EF6BF04120B8C13 /* EXPBlockDefinedMatcher.m in Sources */, + 6C2B1FA8BDF3452AD5C6E640AE95AA6C /* EXPDoubleTuple.m in Sources */, + B353DEE0F707A17093B0D8A5F53894D9 /* Expecta-dummy.m in Sources */, + 9D96E887F3AF3FCB896F40F6167D03AF /* ExpectaObject.m in Sources */, + 8873174683E2EE234F3A3EB7A9B4F15D /* ExpectaSupport.m in Sources */, + 43163FF5C47E1BAAC12E171C188302E1 /* EXPExpect.m in Sources */, + BCCC03AB3BEC74DAD5170A8441D9BBEC /* EXPFloatTuple.m in Sources */, + 08972BEC745F3895C5FE98732BB0E646 /* EXPMatcherHelpers.m in Sources */, + B7603387DF30944EE2AF64E8AFD9B996 /* EXPMatchers+beCloseTo.m in Sources */, + 6AB635E53472AFA729AD959EB18363B1 /* EXPMatchers+beFalsy.m in Sources */, + 7FD25AE74C165D37BB9909EF2026746C /* EXPMatchers+beginWith.m in Sources */, + 70384A05DD64D46FE1E31969F1C4F88D /* EXPMatchers+beGreaterThan.m in Sources */, + 051D4B5709A6257B6F79D54D9139E812 /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */, + 04E724A97339965ACA4E5D60226DA001 /* EXPMatchers+beIdenticalTo.m in Sources */, + 5A43305F185AD6B24558485ACBAC13D3 /* EXPMatchers+beInstanceOf.m in Sources */, + A3E9D8D3FCC116B9977B4D9D15931763 /* EXPMatchers+beInTheRangeOf.m in Sources */, + 6214814A6B4ED5038353C2DE0F71DE04 /* EXPMatchers+beKindOf.m in Sources */, + DFEEB75EA1B2172C382FA8594ADA0241 /* EXPMatchers+beLessThan.m in Sources */, + 80E371FE77A34E12BA35EE5C7EEC092C /* EXPMatchers+beLessThanOrEqualTo.m in Sources */, + 1CE288226DA4D5164FDE93288F20616B /* EXPMatchers+beNil.m in Sources */, + B5D629B65A97D9E8EF4D5BAA4F40C0FC /* EXPMatchers+beSubclassOf.m in Sources */, + F74BF06DBC15BB2A17E66943831132C2 /* EXPMatchers+beSupersetOf.m in Sources */, + 1222560B913CB9C9C0D14221D02C8306 /* EXPMatchers+beTruthy.m in Sources */, + 3FB675C0E73B6F8058EA1467E1A33C16 /* EXPMatchers+conformTo.m in Sources */, + CAE8D9E60604DD9EEC6F00A0E01E0C4F /* EXPMatchers+contain.m in Sources */, + 69349BECD39FBA209D2ECA0AFE6550AE /* EXPMatchers+endWith.m in Sources */, + BD769EA7F521A62B01BA7C52FBFE218B /* EXPMatchers+equal.m in Sources */, + EF07E681556BC7689CCED3B38434F00E /* EXPMatchers+haveCountOf.m in Sources */, + 8E971E2458163B8D717523B8D8BC892D /* EXPMatchers+match.m in Sources */, + 477C77170BBEBE5DA4591B9C45A375B4 /* EXPMatchers+postNotification.m in Sources */, + D33C600E6B5E582C65F3EF397CAD3338 /* EXPMatchers+raise.m in Sources */, + FC03EE048F70F1E14A2F78836CA26D49 /* EXPMatchers+raiseWithReason.m in Sources */, + D1BF0D14765A5F2B82A53A58E7912DF5 /* EXPMatchers+respondTo.m in Sources */, + C5ABCAD032D262081CC9D9A46F2315E4 /* EXPUnsupportedObject.m in Sources */, + EE62D51B4F4A55731CCD546D25BA1064 /* NSValue+Expecta.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 512BB96D35E16513CEA1F8CCA87EC3C3 /* Sources */ = { + 255FD55E78822E35DA59648B7092E7B9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 32F6C485413FAE4B39E84BB82662A79F /* DDDKeychainWrapper-dummy.m in Sources */, - F150E5C983FBA255C10F5EA5C4E2D478 /* DDDKeychainWrapper.m in Sources */, + C1CCECA59CB104BE96FDDCA9487E83D4 /* PEAR-FileManager-iOS-dummy.m in Sources */, + 2E8705A15AB5324F225D3CE28F8103E5 /* PEARFileManager.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5699B358B5374F41E6BA2BBC3342D54F /* Sources */ = { + 2F82D653C1BD5D5DCA08A1DCFDB3A972 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4DE291731DC4B09C7EE55342FB8EB195 /* EXPBlockDefinedMatcher.m in Sources */, - 08748D8BD4D1D8F1A59A3680E51C3019 /* EXPDoubleTuple.m in Sources */, - 5B64BBFA0CD5D63E1E5809D92B6E7FDF /* Expecta-dummy.m in Sources */, - 78B8BE94445C35BDAAC5FFBDF9FD7AEE /* ExpectaObject.m in Sources */, - 9ED31CD8DFCACF06F51A88E559058705 /* ExpectaSupport.m in Sources */, - 1A8DAF192608984F0C5BF370F2643DA2 /* EXPExpect.m in Sources */, - 6832975463D985146A4C9AD0BB93CAC0 /* EXPFloatTuple.m in Sources */, - F1EDBB2FDA3EA365FA56A9294BCB30C6 /* EXPMatcherHelpers.m in Sources */, - B890B155903A154005EE5651865DD151 /* EXPMatchers+beCloseTo.m in Sources */, - 7030759772B01F05620150FDAC7D2043 /* EXPMatchers+beFalsy.m in Sources */, - 9FD9C3873FFEFB06B0EFC348EBD3CDA4 /* EXPMatchers+beginWith.m in Sources */, - 1387C9B33E3189F9B6F20DC5AFFEFFDB /* EXPMatchers+beGreaterThan.m in Sources */, - 09F7D05FEBD4F98146BFE58421B16042 /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */, - FD678ACCB6B29F8DADD882EA98148249 /* EXPMatchers+beIdenticalTo.m in Sources */, - 0E96B74B9A624C37AEA6523C571783DF /* EXPMatchers+beInstanceOf.m in Sources */, - D3AC389E6BA3181AD81E46FB4F033CF5 /* EXPMatchers+beInTheRangeOf.m in Sources */, - B99EB3B1145B9AFD0708D92B3B40AC35 /* EXPMatchers+beKindOf.m in Sources */, - F2316598F9BBA8363F45B64D6B8F93F4 /* EXPMatchers+beLessThan.m in Sources */, - 6A9077D9ED73D8F084547624D2295E02 /* EXPMatchers+beLessThanOrEqualTo.m in Sources */, - A7677CEBE8C676B695C959384BC57583 /* EXPMatchers+beNil.m in Sources */, - BD933A069DC28703FECFC4B5D4ACA64C /* EXPMatchers+beSubclassOf.m in Sources */, - 3BEAB8AE0D3D6B4F0DA5C3F2477E7C08 /* EXPMatchers+beSupersetOf.m in Sources */, - 0A00079E6C88034A271D3302A67B141C /* EXPMatchers+beTruthy.m in Sources */, - 9649C3E0977C601124B165F614A8003F /* EXPMatchers+conformTo.m in Sources */, - 740667B5E21C75E36A436B6527883CFB /* EXPMatchers+contain.m in Sources */, - 7895827122C110CD4FD94EE3EFA5501A /* EXPMatchers+endWith.m in Sources */, - A054A5283AF7F8320A2AE5E035F64413 /* EXPMatchers+equal.m in Sources */, - B0691216975A0869780B661AAF32738D /* EXPMatchers+haveCountOf.m in Sources */, - D757070A74D2EF521FE79475E701D906 /* EXPMatchers+match.m in Sources */, - B27731D7870ACB9E57C629A60864F3D2 /* EXPMatchers+postNotification.m in Sources */, - 74BD6EA63472F447A81A316FE8914104 /* EXPMatchers+raise.m in Sources */, - 5C6FDDA71C273EF1F1E046C1467B3067 /* EXPMatchers+raiseWithReason.m in Sources */, - B56295163A81105E4A6D40E5DC0DD1B4 /* EXPMatchers+respondTo.m in Sources */, - 57B54BD5D85F5BABE3CC4F9883824D63 /* EXPUnsupportedObject.m in Sources */, - 2BED55731EE66CE43B17B9CECB6F842D /* NSValue+Expecta.m in Sources */, + 70CFE9C23D000064F5EAC103CAB191C9 /* DDDKeychainWrapper-dummy.m in Sources */, + F70E2BE9C9C78E74E603A30634D0521E /* DDDKeychainWrapper.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6619AF4385446DD1181D8CF3409DBDD5 /* Sources */ = { + 40E29578A873B9937859D9EE8925C607 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DA045350E1EADB3BFE170AD8512D3963 /* NSObject+RZDataBinding.m in Sources */, - 492E0F81FF29B651268BBC58F52A6B86 /* RZDataBinding-dummy.m in Sources */, - C85B3DC7D51FB6B53BBF31828A2133C3 /* RZDBCoalesce.m in Sources */, - 1E6AE9732A1E90A408D95505C01E253E /* RZDBTransforms.m in Sources */, + CEA5A78F7CC93E133B26DED2036AFC65 /* nv-ios-http-status-dummy.m in Sources */, + 7DB6D06B53FED23EA85B2478A1207CB5 /* nv_ios_http_status.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6CC6D56E4F79CBDCE0582652DA5EF4CB /* Sources */ = { + 49477D071AF77BEDC80F647562F04B62 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B82C81E98702A45E2765B93BAEC5BE8F /* StrongestPasswordValidator-dummy.m in Sources */, - 35F1AC0D09B83FF3386DA1AEF8D56C17 /* StrongestPasswordValidator.m in Sources */, + 31CEC96EEC7257709A75EAAEA05EA461 /* ALView+PureLayout.m in Sources */, + 5481E706ACF50767B5C8F1E7EA281A3E /* NSArray+PureLayout.m in Sources */, + AD3450AB06530792E03EBF9D22E66872 /* NSLayoutConstraint+PureLayout.m in Sources */, + 7FABC46072D3B491F89AE04B15F857EC /* PureLayout-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6E6000146941D806F9A488999DFE1706 /* Sources */ = { + 648927491508903E661DCAA6EFD92EEC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0CDE4C718DBECE970D5889AA6A83B636 /* FBSDKPlacesBluetoothScanner.m in Sources */, - 59E81EF550ED5634D936FF64F3C5E17D /* FBSDKPlacesKit-dummy.m in Sources */, - CAEDE3A9DFD0F0BD418FC491A5D7243F /* FBSDKPlacesKitConstants.m in Sources */, - 8B399E946AD1773EA4B06C4E61342C9A /* FBSDKPlacesManager.m in Sources */, + 32191F502809599463A4C660C3D87C3D /* Specta-dummy.m in Sources */, + 995E36B10245036B73BE5479BC8B7EE4 /* SpectaDSL.m in Sources */, + 5AA91205FA3FAF4841D458CDC5A309EA /* SpectaUtility.m in Sources */, + 53BA0E3AB59E76BF49B7F93414640FB2 /* SPTCallSite.m in Sources */, + 86CAEB4C75338076105657BFE9893563 /* SPTCompiledExample.m in Sources */, + 25932B1A98AA3BB95A7CF363477F9F9D /* SPTExample.m in Sources */, + 88DF8E3B926B1436918FD7D05FB3A522 /* SPTExampleGroup.m in Sources */, + B67A7C086020006FC96A8E8C76B20E53 /* SPTSharedExampleGroups.m in Sources */, + D0FBCCC982FBB42CB85A06B78077D892 /* SPTSpec.m in Sources */, + 3DD25E9D298146D13916809A80D21DE9 /* SPTTestSuite.m in Sources */, + F540AC089C6DBCA43B0B7B6B50421539 /* XCTestCase+Specta.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A004A398CA3667229C966FBEE5638122 /* Sources */ = { + 660153EBBD484D862DB1A954841A7D5B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9D4A3CD450738122D81E268CD283AC06 /* NSData+AES.m in Sources */, - 04619F2FC955F439C9826AEE09727E43 /* NSData+AESKey.m in Sources */, - 0F71E761514FE3BE7ADD33E329DE6A71 /* NSData+AESValue.m in Sources */, - DDB495B545E898DAAC7EDEE440B9AE7D /* NSData+SHA.m in Sources */, - 9FF7FE9B7F2E9D26A4449E7377AD5DFB /* NSDataAES-dummy.m in Sources */, - F129A3E8DFB18B1BAF0319F2E2E4E569 /* NSDataAESCipher.m in Sources */, - 3442DCE79E49CD932713E862427F0919 /* NSMutableData+AES.m in Sources */, + D503B5BD9586567D2CCDC1BA79582BF1 /* NSObject+RZDataBinding.m in Sources */, + AFA244786AEB3ABFCBEA1DD14D4B74CF /* RZDataBinding-dummy.m in Sources */, + 629647D0C6EC962A4DD4D50A8E1540F8 /* RZDBCoalesce.m in Sources */, + 9F626A7D5FD894DA71068A23E2127D41 /* RZDBTransforms.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A7729E1A4061064B807BFC2DD4DF9667 /* Sources */ = { + 7F4631255B9C1E4FD47476032829DE69 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 403D749E00A9BF47E45BAC57CB84D418 /* Specta-dummy.m in Sources */, - 36DD3860485616833D2A190DA0039B59 /* SpectaDSL.m in Sources */, - 0F3CE44572417072F9294F57B640C46F /* SpectaUtility.m in Sources */, - CDF60AB216F7505AA4BE3529CF791A83 /* SPTCallSite.m in Sources */, - 46C8B745A76BCED9F1638C20B749B7B7 /* SPTCompiledExample.m in Sources */, - B403AAFCF2C668C6CF5E3D24AEB896C4 /* SPTExample.m in Sources */, - 6924AE2C8D5D3E2BDF6411698B8A6BA4 /* SPTExampleGroup.m in Sources */, - 0B9C6B2F98C3A87D1912E7D661BD36FB /* SPTSharedExampleGroups.m in Sources */, - BA0DD61D8263AC3C2E23F674D333D3FA /* SPTSpec.m in Sources */, - 20CDA1602422F6AA07DD2836C9EB2CD6 /* SPTTestSuite.m in Sources */, - F67549EC0D030EC73D49C4C9F8F5CC98 /* XCTestCase+Specta.m in Sources */, + CA7D21AA224463EA25AA5441627D653A /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, + 8ECB890498477AACDAD30DFCCFEB3916 /* FBSDKAccessToken.m in Sources */, + F920DCD33D8A7BDB1F104D37CE7AC0A3 /* FBSDKAccessTokenCache.m in Sources */, + 8E0CCDA72EBEB213ABEF444655FBF8CF /* FBSDKAccessTokenExpirer.m in Sources */, + FAFD428333536F860928F80D98C3D077 /* FBSDKAppEvents.m in Sources */, + B1D1E30BA689172A84D7B39428543CCD /* FBSDKAppEventsDeviceInfo.m in Sources */, + 46B6AE049B20D63BCA73EDC7AC8135E8 /* FBSDKAppEventsState.m in Sources */, + D99E25CD2AF0C2C3335744C90A349A47 /* FBSDKAppEventsStateManager.m in Sources */, + D62C6C33AE7D5E71C60F501B247C4208 /* FBSDKAppEventsUtility.m in Sources */, + 5481D8E3EA6573EEFACF370BC4A8B32E /* FBSDKApplicationDelegate.m in Sources */, + 810E214E4964D346322768E9CB6DDC9E /* FBSDKAppLink.m in Sources */, + 184156CAD5B59811F1E93880393DC57E /* FBSDKAppLinkNavigation.m in Sources */, + 7C11F946C5C5F913CE3E9168C4FA0E5D /* FBSDKAppLinkResolver.m in Sources */, + 963D4FD958D554159FE45C275733F2B0 /* FBSDKAppLinkReturnToRefererController.m in Sources */, + 4AC0EF50FA28ECD5CAE8ADD11B93568A /* FBSDKAppLinkReturnToRefererView.m in Sources */, + D0815007848997ABC1C9FDBC0FD0D39D /* FBSDKAppLinkTarget.m in Sources */, + B23F454F0680C742B9D052E6AC3F4F5B /* FBSDKAppLinkUtility.m in Sources */, + 85C159232C615BB37176C21D44A31B4F /* FBSDKAudioResourceLoader.m in Sources */, + F51F3B5E3FD713B4863E577BB5C84545 /* FBSDKBase64.m in Sources */, + DCC83D6D240944FA9572DB1DA097ADD3 /* FBSDKBasicUtility.m in Sources */, + 9197618F7D7F7FBE14BE15F3CC3951B1 /* FBSDKBridgeAPI.m in Sources */, + 6C01B82FC46CF65B8BEDCD23333AE647 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, + 8E00F339F07F0EAF5C65C676A94C38A6 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, + D96616EABC5D76ADCF7317AE5256FF8E /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, + 3F29B68624F8CCACC4E5FDE6E6F47708 /* FBSDKBridgeAPIRequest.m in Sources */, + AC070DB0500703DF0B9F2107BE5100CE /* FBSDKBridgeAPIResponse.m in Sources */, + 0A480DDBB4513FA71D8860E7B7C42129 /* FBSDKButton.m in Sources */, + E5B75FB78E509A088C62525C0B92CED9 /* FBSDKCloseIcon.m in Sources */, + 3436A06B7F0BB9698CB232E1DF77F248 /* FBSDKCodelessIndexer.m in Sources */, + 37FA5B47B14C02C8C71CB66D98EFCF03 /* FBSDKCodelessParameterComponent.m in Sources */, + 8CFE8B65BF88A8C9D162B199B7BBD5C6 /* FBSDKCodelessPathComponent.m in Sources */, + EF66DBF31300874EA4FCFDEC6757AF1B /* FBSDKColor.m in Sources */, + 9D764267B82077209143B7CD260E4A67 /* FBSDKConstants.m in Sources */, + 673FFCB118ADF8093A391410DF7AF375 /* FBSDKContainerViewController.m in Sources */, + 7F73798D76816D32B059A14321567751 /* FBSDKCoreKit-dummy.m in Sources */, + 5399B5A477C804EF0AC35E557C113B7C /* FBSDKCrashHandler.m in Sources */, + 6CBF8A3B47B4F92B43A4C78E769D4B34 /* FBSDKCrashObserver.m in Sources */, + 72BD097F15B6FF82638E8193D2CA554D /* FBSDKCrypto.m in Sources */, + 61CFC7EFC595BFAC4950EBF8A29ABD73 /* FBSDKDeviceRequestsHelper.m in Sources */, + 055F4832BDEE32389F781B1B59C2EE11 /* FBSDKDialogConfiguration.m in Sources */, + C6D6D956D38FC516941F518B23E608EA /* FBSDKDynamicFrameworkLoader.m in Sources */, + 1FF106F974C13FD7D5B90B996E7F615E /* FBSDKError.m in Sources */, + 0B4608049B42989519201069B9038802 /* FBSDKErrorConfiguration.m in Sources */, + 01703FAF18A4CC39A19BB17C46698DC0 /* FBSDKErrorRecoveryAttempter.m in Sources */, + 97D1EED8AF05B0BF835A8551A236D63F /* FBSDKErrorRecoveryConfiguration.m in Sources */, + EE5DE937ED8857A7F4CAB974CBABF212 /* FBSDKErrorReport.m in Sources */, + EE1BD70240E716299B584C318F3DBE81 /* FBSDKEventBinding.m in Sources */, + C29138071BCF24E1800084726F030439 /* FBSDKEventBindingManager.m in Sources */, + B52035E151F76FB0559D1D84E133A3C8 /* FBSDKFeatureManager.m in Sources */, + C169EC99C9964AD23FFAD7F857680620 /* FBSDKGateKeeperManager.m in Sources */, + AC588E1A0B03DCCA231DB1D2EBCABEB4 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, + EAE0FD987296897E06DE124CFE4E62D1 /* FBSDKGraphRequest.m in Sources */, + 62087F74238165948006F933D2AF6998 /* FBSDKGraphRequestBody.m in Sources */, + E46B16A4EB1E7FA65E221C11B6F7B802 /* FBSDKGraphRequestConnection.m in Sources */, + 7D5565FD48A9B5B7CC3D32795897DC4B /* FBSDKGraphRequestDataAttachment.m in Sources */, + D8AC260C7E4974140FFD01D4B1116B90 /* FBSDKGraphRequestMetadata.m in Sources */, + 4D7CD31916B7F73BA49D58AE89F8DB46 /* FBSDKGraphRequestPiggybackManager.m in Sources */, + EF12FC5867E7A5144185995A355D99F2 /* FBSDKHybridAppEventsScriptMessageHandler.m in Sources */, + B56FD8039F122A55F611F0CB10A2AEEE /* FBSDKIcon.m in Sources */, + 41FB085C802D4FFE829CA9AC2D8FA1C7 /* FBSDKImageDownloader.m in Sources */, + A66A3C5F57756630B48ACAD7F54C02E2 /* FBSDKInstrumentManager.m in Sources */, + 14320520311E7D69F7359C4183EFAA43 /* FBSDKInternalUtility.m in Sources */, + 742920DE2DC904A9A9D3C2EF05120F62 /* FBSDKKeychainStore.m in Sources */, + 45CCF51B9627B5EF0C61D7825B0F517F /* FBSDKKeychainStoreViaBundleID.m in Sources */, + DFDC4D3CC2A3B94A22E270FCCF4FDA73 /* FBSDKLibAnalyzer.m in Sources */, + 4F33B4B8CFEF1BF41FE268E863F75BB6 /* FBSDKLogger.m in Sources */, + 8932318D8D8C98EA2FA0C05DACF4A3AC /* FBSDKLogo.m in Sources */, + 1BF2C4BD47F6723A0A9C92B54A0DDEBC /* FBSDKMaleSilhouetteIcon.m in Sources */, + B060DE8A5D631F23BF283E7AB742A8C0 /* FBSDKMath.m in Sources */, + 2E40A6D2C309AB2B655F0415E6122BDA /* FBSDKMeasurementEvent.m in Sources */, + F23E228CF81327451AEDAC3C41FE74B5 /* FBSDKMeasurementEventListener.m in Sources */, + D3C594B2693F4D3E1541568585AB255E /* FBSDKMetadataIndexer.m in Sources */, + 645E7803BA7624AEEF2F0695D8F5EE0A /* FBSDKMonotonicTime.m in Sources */, + 1492F9B3729350F15969D57DF966FEC2 /* FBSDKPaymentObserver.m in Sources */, + DBE8A0B85B218B36310B08A7C9800879 /* FBSDKProfile.m in Sources */, + 86838320D9CF206B64107BD88DFCE163 /* FBSDKProfilePictureView.m in Sources */, + 4A2A2A98F508605D9017420534982AE8 /* FBSDKRestrictiveDataFilterManager.m in Sources */, + 0A40566546E05326121C56702976E4AE /* FBSDKServerConfiguration.m in Sources */, + 97C571D4DE11A9BC5DB44E1C56AE3E81 /* FBSDKServerConfigurationManager.m in Sources */, + 4BEDEB993996A7BE2D8F9E79C5782642 /* FBSDKSettings.m in Sources */, + 5E1D0A74C516BA76CED6A0681E6CF2D2 /* FBSDKSwizzler.m in Sources */, + C23C1C0ECD81172691DD6868F3A17C90 /* FBSDKTestUsersManager.m in Sources */, + E50B0C05E5E0E44EEC5CAE48FA209C55 /* FBSDKTimeSpentData.m in Sources */, + 2D9F6ED20ECF34A954681DDEBF6C4ACB /* FBSDKTriStateBOOL.m in Sources */, + EFDC64DD3C580BD8CEDDB03763F5003E /* FBSDKTypeUtility.m in Sources */, + 63A811AA524F9C880A69F16BD83C1BF3 /* FBSDKURL.m in Sources */, + 0EFBEC06FDEB1750FA785CE4D18A1553 /* FBSDKURLSession.m in Sources */, + B3DE86F8CBDA4C6C0CD8CE85A44F0ED7 /* FBSDKURLSessionTask.m in Sources */, + 2468C3103B89DD87D7961CA0F4F2E171 /* FBSDKUserDataStore.m in Sources */, + 320AA878A70439F06845774F8EA90BE9 /* FBSDKUtility.m in Sources */, + 2F83D813F941FD4EEBB8EC6547101929 /* FBSDKViewHierarchy.m in Sources */, + C1CE4EEE1CE1FDB961C3F5D3D93F3D0B /* FBSDKViewImpressionTracker.m in Sources */, + 44225C41E291CB30A3B9FA1B95BABBDB /* FBSDKWebDialog.m in Sources */, + A58C186911AA304346D9FC1916AF3130 /* FBSDKWebDialogView.m in Sources */, + 0C0CD78C3FA9CC547C359497CCBA2E79 /* FBSDKWebViewAppLinkResolver.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A7C42CECC09A51BD923B43C3ECBD7194 /* Sources */ = { + 862BD75FD2CC71CE363C543231F5C00B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CDB2EBF1987BAD791CBF319911DE5343 /* Pods-PNObject_Tests-dummy.m in Sources */, + A9B89ED9133B7638F2B247702B0FA664 /* StrongestPasswordValidator-dummy.m in Sources */, + FD1D4FC31D4E5CC5668A499583D9DF1D /* StrongestPasswordValidator.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BE9E4C1D058C7E9CC8B9942294B9A342 /* Sources */ = { + 88106E7ADF8DB91E04FB7CBF4ADEF74B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9C5CF0725B222176901AF0515E5691EF /* NSDate+NSDate_Util.m in Sources */, - 02318965FBB73CF4641E85D5BD63CE25 /* NSDate_Utils-dummy.m in Sources */, + 0C1E588185163C1B61EAD0911D35D3A3 /* AFHTTPRequestSerializer+OAuth2.m in Sources */, + BF1BB85F5AE0CA3D82858CC2ED47F0BC /* AFJSONResponseSerializerWithData.m in Sources */, + 78CE7FE1DED29E5B110521C379316DF2 /* AFOAuth2Manager.m in Sources */, + 2049537737C21E5761B2D612F6231671 /* AFOAuthCredential.m in Sources */, + 960AD9C539DEE5FF7CD5FE3F9551B264 /* PNAddress.m in Sources */, + 25AE71D41142A334E5CF052D8624B330 /* PNInstallation.m in Sources */, + 9BB8ED3882E21D87E2D42476191721D9 /* PNLocation.m in Sources */, + CC867E9C867ACCA5C8C9524253343023 /* PNObjcPassword.m in Sources */, + 7E67FF3A5C6EBFCC7BBAD24AF2BCDA0C /* PNObject+PNObjectConnection.m in Sources */, + EA29128C061B1FE473033E28C7B1C191 /* PNObject+PNObjectDELETEConnection.m in Sources */, + 169E1E76112E93D0F615D868454BA152 /* PNObject+PNObjectGETConnection.m in Sources */, + C834CE7AE746FCA9913A6C00709FF1EA /* PNObject+PNObjectPOSTConnection.m in Sources */, + D9CB24FF58A3FAAE3843CB89A22A764F /* PNObject+Protected.m in Sources */, + C099F6C17B4935B2E76B8C8DCD4A3BC0 /* PNObject-dummy.m in Sources */, + F168A3179B3FC4F4C35A24A9009FB97F /* PNObject.m in Sources */, + 7BADB447A938E00B1012E711A61D704F /* PNObjectConfig.m in Sources */, + A262EDBD5AD9FD6253FECD7405A316E1 /* PNObjectFormData.m in Sources */, + DB57317FD0BE62412763308D6E2D9550 /* PNObjectModel.m in Sources */, + A907C978C5EE1A845964E19900471D6F /* PNObjectUtilities.m in Sources */, + D94E42F1FFC716035FCC843F2AF699B4 /* PNUser.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C57D898C6FF9BB3DD470FF7905768BB1 /* Sources */ = { + 9F0E1F1DA773D8E3E40D773799965BA6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4B57A6F4019CD902317D4D15342633D9 /* AFAutoPurgingImageCache.m in Sources */, - 9B343883F082BF15DB5B07B293A1750A /* AFHTTPSessionManager.m in Sources */, - 0C06F38E2739F2221ED383FBCC31E0B0 /* AFImageDownloader.m in Sources */, - 1240B44D07E5C748DE29CE790FF09102 /* AFNetworkActivityIndicatorManager.m in Sources */, - 4931C07E07520F809488D789C5EB2712 /* AFNetworking-dummy.m in Sources */, - D308822ED3D6ACB439BF8EC0A519D4B1 /* AFNetworkReachabilityManager.m in Sources */, - A5C7D257AAFB512208845FAD808E6073 /* AFSecurityPolicy.m in Sources */, - D441DEEB7BC6F19A4BD742AFBEBF12C8 /* AFURLRequestSerialization.m in Sources */, - 622EFD6D2100D9051D89920B9996B302 /* AFURLResponseSerialization.m in Sources */, - 8A299FB00D3AFF3B1C761417CC91C58A /* AFURLSessionManager.m in Sources */, - 4A76C618F60268660B024DC54B19B0A1 /* UIActivityIndicatorView+AFNetworking.m in Sources */, - 4DF82289D87CCE08962DDB38385A527D /* UIButton+AFNetworking.m in Sources */, - 8527C392C4672EA0DC765BF16B54862A /* UIImageView+AFNetworking.m in Sources */, - 0FCDBD23A36B2852D5F959AF817C6BAB /* UIProgressView+AFNetworking.m in Sources */, - 7849CA8886BF558557A9248D6BDB02CC /* UIRefreshControl+AFNetworking.m in Sources */, - 296EF40D064952BAF86099E7AFC4BBDB /* UIWebView+AFNetworking.m in Sources */, + 39DCF6FB22692BA9F559E1ED7130381E /* _FBSDKLoginRecoveryAttempter.m in Sources */, + F9E03AF48423E3D120FEDA2A9C049633 /* FBSDKDeviceLoginCodeInfo.m in Sources */, + 914E01CDABB593DC9C605BC42E9E2B48 /* FBSDKDeviceLoginManager.m in Sources */, + FE33707F9990A5CB0CB27925647C44F4 /* FBSDKDeviceLoginManagerResult.m in Sources */, + ED57D71A572237CB968F21444E5FC6A2 /* FBSDKLoginButton.m in Sources */, + 688EDDFA0B01126673796E2C6CD957F1 /* FBSDKLoginCompletion.m in Sources */, + 757A01B268965FF13D1FCB2DF6F56424 /* FBSDKLoginConstants.m in Sources */, + 24FA3E595D90D5CF85FD84998A688683 /* FBSDKLoginError.m in Sources */, + CEDFBB72C1E5B00A9D459D8B5BDE2EE3 /* FBSDKLoginKit-dummy.m in Sources */, + 87993430EB92E6BC8A855A7113249987 /* FBSDKLoginManager.m in Sources */, + 2BD2B00B25A0D9117DAE59627D0173D8 /* FBSDKLoginManagerLogger.m in Sources */, + E1B8129B391F15DB90CD9AF9CC34F97D /* FBSDKLoginManagerLoginResult.m in Sources */, + E1E26022893538C570CF0644AEFDB691 /* FBSDKLoginTooltipView.m in Sources */, + 57008224D47AF88F479634EC856C1D1E /* FBSDKLoginUtility.m in Sources */, + 2CACE3F2264B0A1C2DF425FFABDD488E /* FBSDKTooltipView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D41F51A20BC1BDF5FE70D4DE5EAFFD18 /* Sources */ = { + BA28381230A754455F1C5135114B4438 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 065C8F38AC6414257FAC099F41A8CAAA /* _FBSDKLoginRecoveryAttempter.m in Sources */, - DF0FAD206F1B439E62D730635EE8DAF5 /* FBSDKDeviceLoginCodeInfo.m in Sources */, - 937D855E531774439FE3A402843893B1 /* FBSDKDeviceLoginManager.m in Sources */, - CA7D3AE9AF043D378754554AC305FAA1 /* FBSDKDeviceLoginManagerResult.m in Sources */, - 827306C210FF38DBAF3E6C91FA8D4FF4 /* FBSDKLoginButton.m in Sources */, - 37CE84524E4CDE3130E062BBE89D76CF /* FBSDKLoginCompletion.m in Sources */, - 7E5F26F88D173036FE047C2E9765D0F8 /* FBSDKLoginConstants.m in Sources */, - 0FD4255074CB4D198BD752828B9E31CF /* FBSDKLoginError.m in Sources */, - A1DBEC43A74AB591D124082B553AFE69 /* FBSDKLoginKit-dummy.m in Sources */, - 4C4298D11A87C3FA81CF25C82D421845 /* FBSDKLoginManager.m in Sources */, - 9D9FB049251334E4FE9410562C252F32 /* FBSDKLoginManagerLogger.m in Sources */, - 38EBB0F084B8597B8C9AA5634F7924C6 /* FBSDKLoginManagerLoginResult.m in Sources */, - B7A9B0821275DB29D1240878B12B1827 /* FBSDKLoginTooltipView.m in Sources */, - 01B301AA87DA06AC4A3B90EADE3BC990 /* FBSDKLoginUtility.m in Sources */, - 205A700B86FFC41BC2D9E959C44568E4 /* FBSDKTooltipView.m in Sources */, + D6C35611ED937AAD1DA62C7DC503F269 /* NSString+Helper.m in Sources */, + E00B6C21CCFA76E6001B2BEEF74CF877 /* NSString-Helper-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D5BA14522236E5FA08121C37841193C5 /* Sources */ = { + BF01506571BD9FFDC6018F016E12BFBE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - FB892ED1EA5F6784C75947FF4F7EE015 /* NSString+Helper.m in Sources */, - 6B5CDE3D3C40393CECAFAFEBBB0D698A /* NSString-Helper-dummy.m in Sources */, + 40CC5005C417FA963E6082B995E18C51 /* FBSDKPlacesBluetoothScanner.m in Sources */, + 89CDC28A48EAA0E0FA8AF50A3B64206D /* FBSDKPlacesKit-dummy.m in Sources */, + B90A1CC2798F13C56260D2AE4062AD86 /* FBSDKPlacesKitConstants.m in Sources */, + 5BB7DB2B42E33838CDDAF4F62CA70627 /* FBSDKPlacesManager.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DEA1C7C6A246E3C0B334FC47368DC64E /* Sources */ = { + DAE7BC92435E3A4EAB83F8AB007244CD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - AA0FD9848E49AAB39F0C733B725CAE71 /* ALView+PureLayout.m in Sources */, - 628239A60B30AEBD2F4A910F9F633792 /* NSArray+PureLayout.m in Sources */, - B0EEAE3F44DD15E0483FC8E11A37250A /* NSLayoutConstraint+PureLayout.m in Sources */, - CFF6748F7FFDF1A8E1C5AFF87DEC3FF7 /* PureLayout-dummy.m in Sources */, + 418B6888649CD1639A0C395A164CDE18 /* UIDevice-Hardware.m in Sources */, + 1CDA59AD9E032636E29AA192023C1C2D /* UIDevice-Utils-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DF02041A8F660AB14A369C2340B5D5AC /* Sources */ = { + E0D10433E7CE1319D58B418C4A9A30BD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0E41D3EF3FCAC995C4BBDA55E86ECC31 /* UIDevice-Hardware.m in Sources */, - B49871FCA14AA68FE381F0C24BEE5FA8 /* UIDevice-Utils-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EDD346426CBC64D87AC27EBEECF7ECEE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F2E4AE166A19DE12DB21CDA14592C984 /* PEAR-FileManager-iOS-dummy.m in Sources */, - 649351C8A1DCCED1BCEED150FC385D2E /* PEARFileManager.m in Sources */, + AA89E9D0696282B8AF7F064E1D510ACB /* DJLocalizableString.m in Sources */, + 4529634D0C2C76D1268FFE63697EED08 /* DJLocalization-dummy.m in Sources */, + C0356C8716EB1841EE835473D9B880D8 /* DJLocalizationSystem.m in Sources */, + A22BC00808F6D9E0500E0717FEE49A1A /* UIStoryboard+DJLocalization.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 007CAA8218488C6837E3861CC6C88B4A /* PBXTargetDependency */ = { + 01FC55F84D2BD1B247DD7AADD104BE59 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKLoginKit; + target = 10C5885FCB0908EF785774EE52473DAB /* FBSDKLoginKit */; + targetProxy = 3F92927E8B02958A0AA133B119EE7311 /* PBXContainerItemProxy */; + }; + 09789558E6C646E710AF51583B20634C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = PureLayout; - target = B58CAE7FB9E57F981D1B1787C13117F3 /* PureLayout */; - targetProxy = 59AE7171A4968441A2D750E24D04E6C6 /* PBXContainerItemProxy */; + target = 06F5CDD6235E25837519792853B145A1 /* PureLayout */; + targetProxy = 73ABA711103E0E74BB20F3CED742954B /* PBXContainerItemProxy */; }; - 02D41B1AB7D15C21D89F5B0A16E2B5AC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Expecta; - target = 9C59561051F1403A293E0B943DB4E71F /* Expecta */; - targetProxy = 7707B30123AE1CEEC3CCC07FB7579879 /* PBXContainerItemProxy */; - }; - 04CEE38A8AA35AD6A397A96E523D9438 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = F82F6D156A11A3A564623161D5DF0E1C /* FBSDKCoreKit */; - targetProxy = F583F19603A3BF8DDAAC9864EF84FFB5 /* PBXContainerItemProxy */; - }; - 1447031301377D1375D489E8F9DF9F9F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "nv-ios-http-status"; - target = 155BA346539E11AD5BD9EA31727A1C9A /* nv-ios-http-status */; - targetProxy = F7A124DE757CA9B33E5CE9E768392D24 /* PBXContainerItemProxy */; - }; - 20483C1D17C748309005D621B1E14755 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 726B72F15C52C6D77C1B71FD3640970D /* AFNetworking */; - targetProxy = 08CFD7B90C65FCB9738DCDD06964347A /* PBXContainerItemProxy */; - }; - 2326FF0CB1B9A2798463429F85123025 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "NSString-Helper"; - target = ECB5E7E8788197B450CD524AD4FAB627 /* NSString-Helper */; - targetProxy = 3221CB525A4F9CC7786C7B6CB916735E /* PBXContainerItemProxy */; - }; - 2A6E9396297422B9D36A0110E2D30AEE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DJLocalization; - target = 2EEE94220E4CB262F220514E2542D59D /* DJLocalization */; - targetProxy = BF524875CA35957698AA710535095404 /* PBXContainerItemProxy */; - }; - 2C3A5B2CC95F696567D67B419F9131F8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKShareKit; - target = B8BB9123545FB963281D96040E3DB350 /* FBSDKShareKit */; - targetProxy = 3A7A36AA64F9153DD340919EB645AC30 /* PBXContainerItemProxy */; - }; - 2E16FE0F46231E36A1EB26C5E5F14282 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 726B72F15C52C6D77C1B71FD3640970D /* AFNetworking */; - targetProxy = A83B72AB740DC70D8057158E3343686B /* PBXContainerItemProxy */; - }; - 2ED6F69109D51BC6544EAFF43D8D05E0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RZDataBinding; - target = A3C3A40EFB5EA54D652EC5BEFDB4F726 /* RZDataBinding */; - targetProxy = 5C6C1D4417ADF7698BFE3E88253C6678 /* PBXContainerItemProxy */; - }; - 33E8CEB3D01B94727A5FEB7451320B17 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = F82F6D156A11A3A564623161D5DF0E1C /* FBSDKCoreKit */; - targetProxy = 81AD61098D6D2AB5E856FEF4FB8D0B01 /* PBXContainerItemProxy */; - }; - 3A8BF8DEB161A34335CCD98F8ACD9B72 /* PBXTargetDependency */ = { + 2555DC150601DEB86C5C92965F21413A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "CodFis-Helper"; - target = 176104A755EE5DE10141CB771E7807E1 /* CodFis-Helper */; - targetProxy = A26F2889CAE7642999087A075671E13A /* PBXContainerItemProxy */; + target = DE5FCB73EB1047C4981D3DD81BF0461D /* CodFis-Helper */; + targetProxy = 6F37E39F03221154C756DADF3691302F /* PBXContainerItemProxy */; }; - 40217308C799B53415A95151D8889626 /* PBXTargetDependency */ = { + 2579824EFA20513C02F721224EC1F3D3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Bolts; - target = 4CEEA3727864ACEF2729940C5CCFF752 /* Bolts */; - targetProxy = BD48FB7565F2AB73DB094084FFF541A1 /* PBXContainerItemProxy */; + name = FBSDKPlacesKit; + target = D521CA2BCBBF4FB818112DC99A74AB91 /* FBSDKPlacesKit */; + targetProxy = F066012F6E9AE58D9E17BE013EC6D079 /* PBXContainerItemProxy */; }; - 4069CEBC77CD92E38CA6DBA54B16D3B5 /* PBXTargetDependency */ = { + 2882F5264FE28FA54154EDFE710CE3CD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Bolts; - target = 4CEEA3727864ACEF2729940C5CCFF752 /* Bolts */; - targetProxy = 8DC0A7720D173F6C07C069F14C7EA1F1 /* PBXContainerItemProxy */; + name = NSDataAES; + target = 56B00F23AD384D6704BC01F9AB3E16E1 /* NSDataAES */; + targetProxy = 0E6F09D40C7B69C98565F26A37A8222A /* PBXContainerItemProxy */; }; - 426B217525E3CCB645F4E305FCE5C6B9 /* PBXTargetDependency */ = { + 4056A00B51CE5181028292798B2F81F2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "UIDevice-Utils"; - target = 41741B48B3525A9905AB215A91E2358B /* UIDevice-Utils */; - targetProxy = 20B473F9CB48426FBB42E58DB507666D /* PBXContainerItemProxy */; + name = DJLocalization; + target = 3322D37BC14153310E7E1F2AC89F5892 /* DJLocalization */; + targetProxy = AF4A43F5913052EC6B7445898E088AE5 /* PBXContainerItemProxy */; }; - 479B386610D003FB4BAF21D6CEEEB611 /* PBXTargetDependency */ = { + 4070A010904D84BF5EFDD1857CC05850 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = StrongestPasswordValidator; - target = F6D80618FE30E0809B891A8B4361BD82 /* StrongestPasswordValidator */; - targetProxy = 9E987CA2367395A64294C982EAA97A6C /* PBXContainerItemProxy */; + name = FBSDKPlacesKit; + target = D521CA2BCBBF4FB818112DC99A74AB91 /* FBSDKPlacesKit */; + targetProxy = B2E4747A55EDB28A5E49EF41528B082D /* PBXContainerItemProxy */; }; - 4CE4447C7A0FA139FB69130CE4A12542 /* PBXTargetDependency */ = { + 428426C51AA5DEBFA899C51CAB1F6A8F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKCoreKit; + target = 28907903AF6DD0AD321D92CD660E7E23 /* FBSDKCoreKit */; + targetProxy = A63C7A6D3163159DD90D040B999050F7 /* PBXContainerItemProxy */; + }; + 42AA0434C890AE158CB723298D138A64 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RZDataBinding; + target = 8522B11A0A4E6CCDBA184D2AAB3EA8C8 /* RZDataBinding */; + targetProxy = 8AE3481136721A5459A05ED85FE07D03 /* PBXContainerItemProxy */; + }; + 448784F4FC844F033D2E7AFF4D2D2CC5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NSDate_Utils; + target = 89EF1085245EA10FA431ECBE3E002988 /* NSDate_Utils */; + targetProxy = 2E8478ED29152AF23AB59BE5E00020D8 /* PBXContainerItemProxy */; + }; + 53AC934177ED7F623859FAB39C0586B4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "PEAR-FileManager-iOS"; + target = 78DF8EBCD3FA8CC121AA947CD3ACA29D /* PEAR-FileManager-iOS */; + targetProxy = 04D7216B3AB7320DA2BB8DEADA89679B /* PBXContainerItemProxy */; + }; + 614384C4565A8A9D3247BBFD285C2D16 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "NSString-Helper"; + target = 29DC1159737BBEB922AFEDEF074D020A /* NSString-Helper */; + targetProxy = AB27992D62B4866403567EE2D601564B /* PBXContainerItemProxy */; + }; + 6AED604DE5E9E622F30EBE5AAADDF3BD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "nv-ios-http-status"; + target = A242E16C161DBB78B4F3424CE47A70CE /* nv-ios-http-status */; + targetProxy = F515CD2372734095379CD47E631ED3AD /* PBXContainerItemProxy */; + }; + 6D794E7B178019705851A96DEB89B4D7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DJLocalization; + target = 3322D37BC14153310E7E1F2AC89F5892 /* DJLocalization */; + targetProxy = EF55D9B303E584F8C80711B761C27B5E /* PBXContainerItemProxy */; + }; + 70C97418E2C2536013969F021D38BB81 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "nv-ios-http-status"; + target = A242E16C161DBB78B4F3424CE47A70CE /* nv-ios-http-status */; + targetProxy = AC7797BF98A7763C9A1B5151D723EA68 /* PBXContainerItemProxy */; + }; + 7240B30F269AF93D9489B1C0CEEA8F11 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DJLocalization; + target = 3322D37BC14153310E7E1F2AC89F5892 /* DJLocalization */; + targetProxy = 78A27DBB6487B04E68DEF72D2E47CB5A /* PBXContainerItemProxy */; + }; + 72C11185AFFECB4C14A1D9D0C0AB84F6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DDDKeychainWrapper; + target = A9C0F2028669FBE7E76BFAED238D845F /* DDDKeychainWrapper */; + targetProxy = 2CB5A22BC8D677C88E805ED48C1B85BD /* PBXContainerItemProxy */; + }; + 72C944374D4B64B46749F8CC884D762D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NSDate_Utils; + target = 89EF1085245EA10FA431ECBE3E002988 /* NSDate_Utils */; + targetProxy = 20B9748CF2DA7DE92D486ECEAE7E28F7 /* PBXContainerItemProxy */; + }; + 749BF9304F26C827E5B60113C9E8AA2B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKCoreKit; + target = 28907903AF6DD0AD321D92CD660E7E23 /* FBSDKCoreKit */; + targetProxy = 7B072667CE70A8A2BE01E8051CB6FB88 /* PBXContainerItemProxy */; + }; + 783EBE758D1A7D5DFB17179F90686379 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKShareKit; + target = 56F4191D8CB8B4E6B4E5E4FA1A9F0F46 /* FBSDKShareKit */; + targetProxy = DC5559882660366FEE9FFFCD9F1170D2 /* PBXContainerItemProxy */; + }; + 80CDFA353F922DA03553649AE7CEE1A2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-PNObject_Example"; - target = 9A3E23EF4FFD3A9FD7136C452EA6ECCD /* Pods-PNObject_Example */; - targetProxy = 22724F18E3E68714606E9E95E3E6209F /* PBXContainerItemProxy */; + target = 29CC8E943A3DAF8A6C8B8A99047D0566 /* Pods-PNObject_Example */; + targetProxy = 3364A4B1EDAFCFFBEC9000E676B20F73 /* PBXContainerItemProxy */; }; - 56B7E1508395C80E7A4DD7DB44B62001 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = StrongestPasswordValidator; - target = F6D80618FE30E0809B891A8B4361BD82 /* StrongestPasswordValidator */; - targetProxy = 2047F415834BB191517B254AF80CB901 /* PBXContainerItemProxy */; - }; - 6CE0BDAD4A2F407995A84AECEABCE9B7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = F82F6D156A11A3A564623161D5DF0E1C /* FBSDKCoreKit */; - targetProxy = 92B506EC0E2F33903E905ACAE4CD902E /* PBXContainerItemProxy */; - }; - 6F446983F9461096D0EAE56BCAFDEDB2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NSDataAES; - target = 5E2AFD944F382B79C9F4C06E9E6288A6 /* NSDataAES */; - targetProxy = 4EC1DBC07001F6274FB3B84ADDF5D6C6 /* PBXContainerItemProxy */; - }; - 7463C4C7B07A069C73AE56D0D1CC6CC4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "PEAR-FileManager-iOS"; - target = BF53CA0511709E8CFC3A31040F5C3BD4 /* PEAR-FileManager-iOS */; - targetProxy = 71BF3D2089C9D8A31D681EADBF3D33B1 /* PBXContainerItemProxy */; - }; - 74B5DC1FC2334174BF26F185E1E2B683 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKLoginKit; - target = 49F9DBC21D7AACEE57AC6E48007A1F6B /* FBSDKLoginKit */; - targetProxy = 4836C9942911DECBA8430E9BDB507938 /* PBXContainerItemProxy */; - }; - 7A18E9A61EA12A1E64FADF4EC27C0F71 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NSDataAES; - target = 5E2AFD944F382B79C9F4C06E9E6288A6 /* NSDataAES */; - targetProxy = D513C9834AFCF66C6A58F2FD2E9FEFD4 /* PBXContainerItemProxy */; - }; - 7BC2535CAC75462D246B2F54DE44797C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "UIDevice-Utils"; - target = 41741B48B3525A9905AB215A91E2358B /* UIDevice-Utils */; - targetProxy = 4F6198CBFFE36D093DF56BC80F1152C0 /* PBXContainerItemProxy */; - }; - 841AC74F0A7279734575D9DD92E9F66B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DJLocalization; - target = 2EEE94220E4CB262F220514E2542D59D /* DJLocalization */; - targetProxy = 6FCE5684A05FD93BD646A803D4BB9D1D /* PBXContainerItemProxy */; - }; - 8D6B83EE81065C64D2B73C2CD1BB3DAC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKLoginKit; - target = 49F9DBC21D7AACEE57AC6E48007A1F6B /* FBSDKLoginKit */; - targetProxy = 9656D2CEDD657183AE277E6928ACBB69 /* PBXContainerItemProxy */; - }; - 95CD544773C626EF2F6D924844374936 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NSDate_Utils; - target = 5B021706D5B7FCF7981EADD0D618968B /* NSDate_Utils */; - targetProxy = 900CF0F26EEF551F71B96746ACF940AD /* PBXContainerItemProxy */; - }; - 9ACBB3494B293B55BD95AB17A0C6FDF1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DDDKeychainWrapper; - target = 331B69A6E12311FA9485AF31E52534F6 /* DDDKeychainWrapper */; - targetProxy = 1D380C6D842C50DE22A52CDDC7C5AEBF /* PBXContainerItemProxy */; - }; - 9B02BFC35DBD1DDA53704C880121696E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "nv-ios-http-status"; - target = 155BA346539E11AD5BD9EA31727A1C9A /* nv-ios-http-status */; - targetProxy = AA7749C5784F4499C38DF103BCAC458E /* PBXContainerItemProxy */; - }; - 9B884ABA8792393CFE70061846446B18 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = F82F6D156A11A3A564623161D5DF0E1C /* FBSDKCoreKit */; - targetProxy = 4F04873EF4CE2844A91429E783DF7612 /* PBXContainerItemProxy */; - }; - A69B23C8437113347DE106C38F6ECE1A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DJLocalization; - target = 2EEE94220E4CB262F220514E2542D59D /* DJLocalization */; - targetProxy = 7012C87AAC5014D0E9F6F68FF762C375 /* PBXContainerItemProxy */; - }; - AE5EE34F31298AD2736800F9520F7975 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = F82F6D156A11A3A564623161D5DF0E1C /* FBSDKCoreKit */; - targetProxy = 13C7C2399E414B7AC144E614F015498F /* PBXContainerItemProxy */; - }; - B852433E1AFC4CE538CE69E837F5C285 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "NSString-Helper"; - target = ECB5E7E8788197B450CD524AD4FAB627 /* NSString-Helper */; - targetProxy = 44BB2B8D5D83C2E161B4D87117BA8DD4 /* PBXContainerItemProxy */; - }; - BC4E605C444ED654357BBAF59A90C733 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKPlacesKit; - target = 7CA27B1C39A0C1FE1AADBA1124CE8ABC /* FBSDKPlacesKit */; - targetProxy = 8A528C8204BF7AD267111501DD364A62 /* PBXContainerItemProxy */; - }; - CD7EA14FC86092DD31C94A7223E6E68F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PNObject; - target = 192DBF78C939C1FE9C6EF8DA34F5FB58 /* PNObject */; - targetProxy = A4DC8D9C9D6ECC2741BC2B4AAE6BE30D /* PBXContainerItemProxy */; - }; - D2E83FC6D382B3F6A77B54784B7CDEA5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DDDKeychainWrapper; - target = 331B69A6E12311FA9485AF31E52534F6 /* DDDKeychainWrapper */; - targetProxy = A5FBDE546E1641F681DFF0EEAF51B7ED /* PBXContainerItemProxy */; - }; - DC1CA6BA5CBA49EA61872B2DD7E03EEE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "PEAR-FileManager-iOS"; - target = BF53CA0511709E8CFC3A31040F5C3BD4 /* PEAR-FileManager-iOS */; - targetProxy = 6A51F20DECA65FB4E5BE11B4687994EF /* PBXContainerItemProxy */; - }; - DD58683DB131179A8A7E80475A751534 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKPlacesKit; - target = 7CA27B1C39A0C1FE1AADBA1124CE8ABC /* FBSDKPlacesKit */; - targetProxy = BFF576445C54CF1D92597186B8D0DFDC /* PBXContainerItemProxy */; - }; - E98D46BE68BE08F14BBAC65E5202BE75 /* PBXTargetDependency */ = { + 8462B75AF9B508DE9FE83DC474CDE2F4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Specta; - target = E88B7B10A2AD4EC505F001E3BA3920B9 /* Specta */; - targetProxy = E69E08429885F5DB9A050C2FE30160ED /* PBXContainerItemProxy */; + target = F8676010755CF1530FC02DA9A0D8822B /* Specta */; + targetProxy = 8D57617A06EAFB004BC9CA59793CC384 /* PBXContainerItemProxy */; }; - EA9272A8BE8DA6ECE90137DA8C3F7F8C /* PBXTargetDependency */ = { + 8D188ADC5558BBD31B95D7D84C3CAA2D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NSDate_Utils; - target = 5B021706D5B7FCF7981EADD0D618968B /* NSDate_Utils */; - targetProxy = 43419EA6D273E12A6D5FAD8EFA8ED6A9 /* PBXContainerItemProxy */; + name = PNObject; + target = 6D513278C42270774244D18170C8CC83 /* PNObject */; + targetProxy = 350B90DB4A3A118376667CB5CC4FFF47 /* PBXContainerItemProxy */; }; - F1C84D1B6AE31A1BC12BF68CD9D7BB49 /* PBXTargetDependency */ = { + A4DE665D278E8C6F1CDA2E074F2B5CBE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "CodFis-Helper"; - target = 176104A755EE5DE10141CB771E7807E1 /* CodFis-Helper */; - targetProxy = 3BC97C757CCF68C05233F342377D5C27 /* PBXContainerItemProxy */; + name = FBSDKCoreKit; + target = 28907903AF6DD0AD321D92CD660E7E23 /* FBSDKCoreKit */; + targetProxy = 57593C600449495C358EC2D7CDDBC6A0 /* PBXContainerItemProxy */; }; - FCAA9E86CC8F1A27F40F1E55602B65C7 /* PBXTargetDependency */ = { + AA92BAB7E0CB1C82B5C35BCDD34F44E2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = 6CA333B5E02A7EB4D5A3F9CA1214CB30 /* PBXContainerItemProxy */; + }; + ADDC2455A2CDD755F77AF820E57D62E3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKCoreKit; + target = 28907903AF6DD0AD321D92CD660E7E23 /* FBSDKCoreKit */; + targetProxy = 6D5240898B57899072685CFE9BE0120F /* PBXContainerItemProxy */; + }; + BE44598F401360CFFF71C1B01EA119A5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = StrongestPasswordValidator; + target = F409CE466ADE0E5329AED43401B10558 /* StrongestPasswordValidator */; + targetProxy = D46D5160FAE3F4851209073C9CCCC644 /* PBXContainerItemProxy */; + }; + C601A48ABD9923E514F7B877B1633226 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKLoginKit; + target = 10C5885FCB0908EF785774EE52473DAB /* FBSDKLoginKit */; + targetProxy = 72730031B3F38B078EA10A3168A8F2EF /* PBXContainerItemProxy */; + }; + C7619D1565D9D74787245BFF5C29CAE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Expecta; + target = DC371B7477C88184274EC6710690F97C /* Expecta */; + targetProxy = F8F64D502635CCFBE7D0F15A9AEF8732 /* PBXContainerItemProxy */; + }; + CC389907C28284ED12615F533C0910B5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "UIDevice-Utils"; + target = 8910BC215C7AF905CE272EE9581E871A /* UIDevice-Utils */; + targetProxy = BC029EB7B00701209B46D914BE254BB2 /* PBXContainerItemProxy */; + }; + CDE099209D699A31E42C15B8F04F4CE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NSDataAES; + target = 56B00F23AD384D6704BC01F9AB3E16E1 /* NSDataAES */; + targetProxy = 6422AB2438A4A145CE89B4024D0F5ACD /* PBXContainerItemProxy */; + }; + D4A89B5449EE51CC54D43FF0C21247CB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKCoreKit; + target = 28907903AF6DD0AD321D92CD660E7E23 /* FBSDKCoreKit */; + targetProxy = 7A191158D6E96F95AE7CBBB93B8A4122 /* PBXContainerItemProxy */; + }; + DA962476FB400CD658CF8A870A137606 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RZDataBinding; - target = A3C3A40EFB5EA54D652EC5BEFDB4F726 /* RZDataBinding */; - targetProxy = 3227F1145EC35A81EF7E716BC692EA3C /* PBXContainerItemProxy */; + target = 8522B11A0A4E6CCDBA184D2AAB3EA8C8 /* RZDataBinding */; + targetProxy = 6942DAF55669E3AD9ADA03B3B94F25D8 /* PBXContainerItemProxy */; }; - FF1C47EAE772C63D45BB2FB29481979C /* PBXTargetDependency */ = { + DC8A2C965B510DE9C2504D90DA766C68 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "PEAR-FileManager-iOS"; + target = 78DF8EBCD3FA8CC121AA947CD3ACA29D /* PEAR-FileManager-iOS */; + targetProxy = 0A57B5AE1AFD7882B33ADD655F5F8B57 /* PBXContainerItemProxy */; + }; + DC9C93C0187453E2ADA8FF59395501AD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = 4559EE17AF0B45C78E822B24E32AA3CA /* PBXContainerItemProxy */; + }; + DED5A825BE259BC14323608D80ADFDD2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKShareKit; - target = B8BB9123545FB963281D96040E3DB350 /* FBSDKShareKit */; - targetProxy = ACE0063608CECA6DD681B3EA139E54A0 /* PBXContainerItemProxy */; + target = 56F4191D8CB8B4E6B4E5E4FA1A9F0F46 /* FBSDKShareKit */; + targetProxy = 3E6A3778E42BBF549A21EB0C960AF546 /* PBXContainerItemProxy */; + }; + E0EF40D7E105C48CA7F19F66BD1F4754 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = StrongestPasswordValidator; + target = F409CE466ADE0E5329AED43401B10558 /* StrongestPasswordValidator */; + targetProxy = 75055F7344CAC89AB6D4A96020398C4A /* PBXContainerItemProxy */; + }; + E1005C8B122B3302D40895A1CE46CAD3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DDDKeychainWrapper; + target = A9C0F2028669FBE7E76BFAED238D845F /* DDDKeychainWrapper */; + targetProxy = 13956C1720124F1B09F5B86308751817 /* PBXContainerItemProxy */; + }; + E96024C55FBB3322B4B43BA583223034 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "CodFis-Helper"; + target = DE5FCB73EB1047C4981D3DD81BF0461D /* CodFis-Helper */; + targetProxy = 88DBCD64F166E6838C2D71A5A9C91201 /* PBXContainerItemProxy */; + }; + EF772269E54144D08D2B3C5CAA5D18DA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "UIDevice-Utils"; + target = 8910BC215C7AF905CE272EE9581E871A /* UIDevice-Utils */; + targetProxy = D1750815DE3C0E9B3889D8B6719021BA /* PBXContainerItemProxy */; + }; + F508763D5A7AD80D614006AF60CD4141 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "NSString-Helper"; + target = 29DC1159737BBEB922AFEDEF074D020A /* NSString-Helper */; + targetProxy = F325CBD8C5F4A65738CB55FCBF0D83C6 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 06F0835B626E867DAB9AC50742B2CC97 /* Debug */ = { + 0605C2BC2955B33EFD5CF0045FA8FB95 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5D8332C529CCACC68CC9FF89FDF0A5A1 /* AFNetworking.xcconfig */; + baseConfigurationReference = FEF5D29249061AD2B5574942E0789298 /* FBSDKLoginKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBSDKLoginKit; + PRODUCT_NAME = FBSDKLoginKit; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 0944D47969E08AA2A1B17FF3E06CC887 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C1413646C389F5AA2C4F62D892DFEFC4 /* StrongestPasswordValidator.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/StrongestPasswordValidator/StrongestPasswordValidator-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = AFNetworking; - PRODUCT_NAME = AFNetworking; + PRODUCT_MODULE_NAME = StrongestPasswordValidator; + PRODUCT_NAME = StrongestPasswordValidator; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 0CA73BB92866CF1EE100E8F770DA7D91 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 76E42277B6D53DFBC752958754B15C16 /* DDDKeychainWrapper.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/DDDKeychainWrapper/DDDKeychainWrapper-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = DDDKeychainWrapper; + PRODUCT_NAME = DDDKeychainWrapper; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -4891,7 +4706,54 @@ }; name = Debug; }; - 07488D4657FB0A78086563621D425F8A /* Debug */ = { + 11C641A41E68327D305B04EE951AE202 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BCFD9CE791BADA4DBD7DB07060E711D3 /* NSDataAES.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/NSDataAES/NSDataAES-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = NSDataAES; + PRODUCT_NAME = NSDataAES; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 16081E204C08F0CEA67D2A2DAEC0997B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DD71969B8971C83B9B913445362538D7 /* PureLayout.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/PureLayout/PureLayout-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = PureLayout; + PRODUCT_NAME = PureLayout; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 196DFA3E4A09A28224918543529A1885 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -4942,7 +4804,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -4950,551 +4812,14 @@ STRIP_INSTALLED_PRODUCT = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - 0B5FC4D84A30410E5524A88AFD066693 /* Release */ = { + 1D5DDDB46E7F0F00581657C9B7F43CE2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6A4E9C04DF5129E4596C6BFA06F4857B /* FBSDKPlacesKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKPlacesKit/FBSDKPlacesKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FBSDKPlacesKit; - PRODUCT_NAME = FBSDKPlacesKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 0D679ABB271E9396C10FB6A61FAD6E3B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A767ACB26E90B6BF3F068BD8A7D7D248 /* PEAR-FileManager-iOS.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/PEAR-FileManager-iOS/PEAR-FileManager-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PEAR_FileManager_iOS; - PRODUCT_NAME = "PEAR-FileManager-iOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 184AAA3AABBE3950E5821036B4AA7761 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D79DDCD261B4B3043A499A1F3C17682E /* Pods-PNObject_Example.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 19ADDFEC0941BAA1649A6604EADA2D2C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8F20D0DD94419EF67235F760733EBDF5 /* Bolts.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Bolts; - PRODUCT_NAME = Bolts; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 1CD59F4FC03CA69B5AE457AFF8628F6C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E808DBA591E14616D3B577B365B17005 /* FBSDKLoginKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FBSDKLoginKit; - PRODUCT_NAME = FBSDKLoginKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 204EF5F14A7423978A9AA41A6CA1D195 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9D3D9CE8344FE9BA48FA805E55B25E44 /* NSDataAES.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/NSDataAES/NSDataAES-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = NSDataAES; - PRODUCT_NAME = NSDataAES; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 2081745019F62616B203F38FA2CE8FC5 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D5ED7C1FBE256501937B39E681452F3A /* PNObject.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/PNObject/PNObject-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PNObject; - PRODUCT_NAME = PNObject; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 24414D47AAF3AF8A120A92F032A1E499 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CB33176DEE595631B0B0425686DEE194 /* CodFis-Helper.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/CodFis-Helper/CodFis-Helper-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CodFis_Helper; - PRODUCT_NAME = "CodFis-Helper"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 25FD6D3AC8D6A710F83607663544AE4E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 62DEC9E410DDF1DC24C23EC0AED57DBB /* DJLocalization.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DJLocalization/DJLocalization-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DJLocalization; - PRODUCT_NAME = DJLocalization; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 30B281D9A528A6F58A15399FD6AB7CEB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8F20D0DD94419EF67235F760733EBDF5 /* Bolts.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Bolts; - PRODUCT_NAME = Bolts; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 338DCE5B4DC57F3351BFF420FA842E9B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B12593357CB41BECEABB9248D6FF3783 /* nv-ios-http-status.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/nv-ios-http-status/nv-ios-http-status-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = nv_ios_http_status; - PRODUCT_NAME = "nv-ios-http-status"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 39BAC2E8EF31EB80E230F3D691036BC7 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B974DF4CA8DA1E3F909D94001247BFEF /* Specta.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Specta/Specta-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Specta; - PRODUCT_NAME = Specta; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 402235B75F222202424166C874E0DA8B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E808DBA591E14616D3B577B365B17005 /* FBSDKLoginKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FBSDKLoginKit; - PRODUCT_NAME = FBSDKLoginKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 41F5B49F9C3454F0A19AC38F0A68E79E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 62DEC9E410DDF1DC24C23EC0AED57DBB /* DJLocalization.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DJLocalization/DJLocalization-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DJLocalization; - PRODUCT_NAME = DJLocalization; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 4247769F5000ACEE1B68B6E2FBCBF923 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8100D69BD5CF4CCFADDD69B9B33F2472 /* DDDKeychainWrapper.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DDDKeychainWrapper/DDDKeychainWrapper-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DDDKeychainWrapper; - PRODUCT_NAME = DDDKeychainWrapper; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 564D88334934550A9EC5744EE726EE06 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A767ACB26E90B6BF3F068BD8A7D7D248 /* PEAR-FileManager-iOS.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/PEAR-FileManager-iOS/PEAR-FileManager-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PEAR_FileManager_iOS; - PRODUCT_NAME = "PEAR-FileManager-iOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 5A8A775E16E984F5C7FB8F6FBB637963 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FA5E118A013F6143F08306D223E22DB8 /* NSString-Helper.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/NSString-Helper/NSString-Helper-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = NSString_Helper; - PRODUCT_NAME = "NSString-Helper"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 5D28522607D8BF68D40B2E96A35A9CDF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9D3D9CE8344FE9BA48FA805E55B25E44 /* NSDataAES.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/NSDataAES/NSDataAES-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = NSDataAES; - PRODUCT_NAME = NSDataAES; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 628C2C9A30A3828A6CE70FDED03A9F3C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D017C92EC445A44A8CB4710C103CFCE4 /* RZDataBinding.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/RZDataBinding/RZDataBinding-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = RZDataBinding; - PRODUCT_NAME = RZDataBinding; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 762F7FCB16E22F48593ACB06FC656E4E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 230D8E3526A219F87ECB71194308E744 /* Expecta.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Expecta; - PRODUCT_NAME = Expecta; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 8AAF5BF3508C24E2099FFC480C8AFE7B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6E7108190DE51C1390A0281C88FD33C4 /* FBSDKCoreKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FBSDKCoreKit; - PRODUCT_NAME = FBSDKCoreKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 8ABBFEDA657A9229E7660AD1D342F22B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 31E6F40974F44283228E9FF7921B56FA /* PureLayout.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/PureLayout/PureLayout-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PureLayout; - PRODUCT_NAME = PureLayout; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 8CE02190DCC7599C37B51285A643AD31 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 31E6F40974F44283228E9FF7921B56FA /* PureLayout.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/PureLayout/PureLayout-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PureLayout; - PRODUCT_NAME = PureLayout; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 8DB7965C9537D22C5ADE09073E43C1A2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2F9B201CDC5290A6C73E25462BBCD4F1 /* UIDevice-Utils.xcconfig */; + baseConfigurationReference = AF143A03FBEFC09F8F85C478431DD1D0 /* UIDevice-Utils.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5516,9 +4841,245 @@ }; name = Release; }; - 9371B2169A52A764E3DC46B61A9A5C64 /* Debug */ = { + 20B623E77C0E80E6DD21011192D14CFF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D017C92EC445A44A8CB4710C103CFCE4 /* RZDataBinding.xcconfig */; + baseConfigurationReference = 50F97EA3D808A9F24B8811FD64CF36EB /* CodFis-Helper.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/CodFis-Helper/CodFis-Helper-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = CodFis_Helper; + PRODUCT_NAME = "CodFis-Helper"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 23D23C77DE476701C43E4B842DE885E3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1770B20158EDADF28A69CF6036627525 /* NSString-Helper.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/NSString-Helper/NSString-Helper-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = NSString_Helper; + PRODUCT_NAME = "NSString-Helper"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 26633A35AD97EF73B788FB42B8ECB747 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 50F97EA3D808A9F24B8811FD64CF36EB /* CodFis-Helper.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/CodFis-Helper/CodFis-Helper-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = CodFis_Helper; + PRODUCT_NAME = "CodFis-Helper"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 2B54C7F68BC0F378EF0EA873FCD6BC22 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DD71969B8971C83B9B913445362538D7 /* PureLayout.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/PureLayout/PureLayout-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = PureLayout; + PRODUCT_NAME = PureLayout; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 30D58442E69F51029859C5A61F68DCF0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 367F7DF3819B9D9930F56325615545F6 /* PNObject.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/PNObject/PNObject-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = PNObject; + PRODUCT_NAME = PNObject; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 35C1D7A7F74F449321E3A8B947C4C4A4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 76E42277B6D53DFBC752958754B15C16 /* DDDKeychainWrapper.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/DDDKeychainWrapper/DDDKeychainWrapper-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = DDDKeychainWrapper; + PRODUCT_NAME = DDDKeychainWrapper; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 51A4E9F53A44AF31E2CF992B2A378B37 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2D05AD56E1E7895EAB52A8DDC00125CD /* RZDataBinding.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/RZDataBinding/RZDataBinding-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = RZDataBinding; + PRODUCT_NAME = RZDataBinding; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 566046166B2446942F8898FCA735B0D7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DEAF5A8E11A841550FAF9FCDCFB49B04 /* FBSDKPlacesKit.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKPlacesKit/FBSDKPlacesKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBSDKPlacesKit; + PRODUCT_NAME = FBSDKPlacesKit; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 5E472B313AAA528C22C1BF1D61D97C44 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E0D6474DCE1AF34AA6DE32F3AE5A8BE2 /* AFNetworking.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = AFNetworking; + PRODUCT_NAME = AFNetworking; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 727E263DC59E2F869DD7A4CD6B973C9D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DEAF5A8E11A841550FAF9FCDCFB49B04 /* FBSDKPlacesKit.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKPlacesKit/FBSDKPlacesKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBSDKPlacesKit; + PRODUCT_NAME = FBSDKPlacesKit; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 7A5F8BB2AAFDC6879B86F85E42434BD3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2D05AD56E1E7895EAB52A8DDC00125CD /* RZDataBinding.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5539,9 +5100,245 @@ }; name = Debug; }; - 9952F2B9C72B9612D2A4E9BE1E0F57B3 /* Debug */ = { + 7E3B1422A0C4E42020579C4ED3A2E0AC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 44FB8FBE06B0DE294D5E3CE220091D81 /* NSDate_Utils.xcconfig */; + baseConfigurationReference = 421E501380BC5F366098BA168E9DBC05 /* Specta.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Specta/Specta-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = Specta; + PRODUCT_NAME = Specta; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 80561D0A1DB196A97B85118C1DFD4C63 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C940CDBC5BC214FC36A39C2B8FA82467 /* Expecta.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = Expecta; + PRODUCT_NAME = Expecta; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8F4824EC8B9952F37B300055882B3387 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5DCA818906066C7D4AF3D58F4B226424 /* FBSDKCoreKit.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBSDKCoreKit; + PRODUCT_NAME = FBSDKCoreKit; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 912CC7436ADF055386E761F33E30AA19 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BCFD9CE791BADA4DBD7DB07060E711D3 /* NSDataAES.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/NSDataAES/NSDataAES-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = NSDataAES; + PRODUCT_NAME = NSDataAES; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 91FDE7297456C9815BDA6C1A4E2CDE79 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CF66AF169927C3FD23A480AEDB51FE06 /* DJLocalization.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/DJLocalization/DJLocalization-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = DJLocalization; + PRODUCT_NAME = DJLocalization; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 968AFCA2D8A30FD657816553337B7EB5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1770B20158EDADF28A69CF6036627525 /* NSString-Helper.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/NSString-Helper/NSString-Helper-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = NSString_Helper; + PRODUCT_NAME = "NSString-Helper"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 98F375288ACCEA07B500C586A985961E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5DCA818906066C7D4AF3D58F4B226424 /* FBSDKCoreKit.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBSDKCoreKit; + PRODUCT_NAME = FBSDKCoreKit; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9930FFA42A88D2D5100B66E67FFD1648 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7FA9677C3B2A905BE9B07145E6589A93 /* PEAR-FileManager-iOS.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/PEAR-FileManager-iOS/PEAR-FileManager-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = PEAR_FileManager_iOS; + PRODUCT_NAME = "PEAR-FileManager-iOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9AB268784F2060F53AB5B13CD500D951 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C940CDBC5BC214FC36A39C2B8FA82467 /* Expecta.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = Expecta; + PRODUCT_NAME = Expecta; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9CA29FC76999C23134108210A63E204E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 72AEC07F14948EC95ACFA1A77D02BB0F /* Pods-PNObject_Example.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + A13C69FCD56962C21CE85E1F37BAF54A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C00245051B13644BEDB1902167791B5E /* NSDate_Utils.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5559,34 +5356,81 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 99617DD3516F656D0A7162A15B464E17 /* Release */ = { + A7EFFE5693532D8E1041B8FDFE50C329 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6E7108190DE51C1390A0281C88FD33C4 /* FBSDKCoreKit.xcconfig */; + baseConfigurationReference = 54E8B6E57FD33BB7E1EF92F1DD97E7DD /* Pods-PNObject_Tests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MACH_O_TYPE = staticlib; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FBSDKCoreKit; - PRODUCT_NAME = FBSDKCoreKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - A1962E6FF39BBAC201A2E5DDF99557DF /* Release */ = { + AB25C19699C6CCC6605352DBE2E8354E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FEF5D29249061AD2B5574942E0789298 /* FBSDKLoginKit.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBSDKLoginKit; + PRODUCT_NAME = FBSDKLoginKit; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + AF279B8EE8733837053BC7B6F6BC4296 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C1413646C389F5AA2C4F62D892DFEFC4 /* StrongestPasswordValidator.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/StrongestPasswordValidator/StrongestPasswordValidator-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = StrongestPasswordValidator; + PRODUCT_NAME = StrongestPasswordValidator; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B01D14FDC83DCF9D4BE53066BEA96D05 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -5634,21 +5478,21 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; - ACDE6EFA6480F178B44C085A2D4AEFE9 /* Release */ = { + B1D998BF33D34E285CC7A84B553BE752 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 44FB8FBE06B0DE294D5E3CE220091D81 /* NSDate_Utils.xcconfig */; + baseConfigurationReference = C00245051B13644BEDB1902167791B5E /* NSDate_Utils.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5666,59 +5510,35 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B797E10B4CB13B9DBB9242A0A24E209D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EB1E0F3DED9D97EEB76BED76FEF83E6C /* Pods-PNObject_Example.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B50E6A4C5B8CE1F731C419C9629EBA1B /* Debug */ = { + B80BF81170C4DA7D7784E5E9B3BBB27A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D5ED7C1FBE256501937B39E681452F3A /* PNObject.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/PNObject/PNObject-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PNObject; - PRODUCT_NAME = PNObject; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - B8904B8AFEA6F92DD8CF096CF46FFA99 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6A4E9C04DF5129E4596C6BFA06F4857B /* FBSDKPlacesKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKPlacesKit/FBSDKPlacesKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FBSDKPlacesKit; - PRODUCT_NAME = FBSDKPlacesKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - B9068727097CAF2DBFB5DE5CE5D6E489 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B12593357CB41BECEABB9248D6FF3783 /* nv-ios-http-status.xcconfig */; + baseConfigurationReference = 89A3D09C33C7AED2AF8040BD13026AB8 /* nv-ios-http-status.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5740,21 +5560,22 @@ }; name = Release; }; - BE0604831899CB74ACBC28078BD87002 /* Release */ = { + BC60FBE570E1BFAA78B06E747122433F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CB33176DEE595631B0B0425686DEE194 /* CodFis-Helper.xcconfig */; + baseConfigurationReference = 367F7DF3819B9D9930F56325615545F6 /* PNObject.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/CodFis-Helper/CodFis-Helper-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + GCC_PREFIX_HEADER = "Target Support Files/PNObject/PNObject-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CodFis_Helper; - PRODUCT_NAME = "CodFis-Helper"; + PRODUCT_MODULE_NAME = PNObject; + PRODUCT_NAME = PNObject; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -5764,125 +5585,9 @@ }; name = Release; }; - C0E618686D9BB181D9B1B0FEAA30863E /* Debug */ = { + C2D21966084DB322706A09516700ABAA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FA5E118A013F6143F08306D223E22DB8 /* NSString-Helper.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/NSString-Helper/NSString-Helper-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = NSString_Helper; - PRODUCT_NAME = "NSString-Helper"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - CD9929050A399841D5D1A41E8B1DBECD /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7819150A98C3CA61F570BE130949DB6A /* StrongestPasswordValidator.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/StrongestPasswordValidator/StrongestPasswordValidator-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = StrongestPasswordValidator; - PRODUCT_NAME = StrongestPasswordValidator; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - CFE25D0DE1C57E36FFCD2E82DF44D8C8 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B161B66C41A404C41870786CE63774C0 /* FBSDKShareKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FBSDKShareKit; - PRODUCT_NAME = FBSDKShareKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - D1F93A3229DDD1C22475D7AD7689A56E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2F9B201CDC5290A6C73E25462BBCD4F1 /* UIDevice-Utils.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/UIDevice-Utils/UIDevice-Utils-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = UIDevice_Utils; - PRODUCT_NAME = "UIDevice-Utils"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - D91937FDA7A918C62E9BEF2930B665E3 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B161B66C41A404C41870786CE63774C0 /* FBSDKShareKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FBSDKShareKit; - PRODUCT_NAME = FBSDKShareKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - D9E66B4C406260E25805D12198E21C2E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B974DF4CA8DA1E3F909D94001247BFEF /* Specta.xcconfig */; + baseConfigurationReference = 421E501380BC5F366098BA168E9DBC05 /* Specta.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5900,44 +5605,43 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - DF5236ED2D73B7A177822E2E784B93BB /* Release */ = { + C65F223FC4240B20B4A1CF611C3BABB4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7819150A98C3CA61F570BE130949DB6A /* StrongestPasswordValidator.xcconfig */; + baseConfigurationReference = CF66AF169927C3FD23A480AEDB51FE06 /* DJLocalization.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/StrongestPasswordValidator/StrongestPasswordValidator-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + GCC_PREFIX_HEADER = "Target Support Files/DJLocalization/DJLocalization-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = StrongestPasswordValidator; - PRODUCT_NAME = StrongestPasswordValidator; + PRODUCT_MODULE_NAME = DJLocalization; + PRODUCT_NAME = DJLocalization; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - DFE80189A85E6B0A564ECBD1C305C42F /* Release */ = { + C76A3B8531A7BEFCA6A69A57B4E674CC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F9FD130E49D5F3EDC423BC59ABCE061B /* Pods-PNObject_Example.release.xcconfig */; + baseConfigurationReference = 326A77BF4B7DCB08FE6B514825B0E0AA /* Pods-PNObject_Tests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; MACH_O_TYPE = staticlib; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; @@ -5946,35 +5650,61 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - E4C1C2D9A7ABEA5FFE942A429D379467 /* Release */ = { + D1F5433C9E7B5CA09F04956FBFBEEA47 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E26534A32946BB6D27643A091DB4DB9A /* Pods-PNObject_Tests.release.xcconfig */; + baseConfigurationReference = 01A52256CE7C8FFF4CF5E430DCAC06E9 /* FBSDKShareKit.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = staticlib; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBSDKShareKit; + PRODUCT_NAME = FBSDKShareKit; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - E898F444F0DD2BEFF99535DA5767F50D /* Release */ = { + EF333777FEE34DA732035615768859B9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5D8332C529CCACC68CC9FF89FDF0A5A1 /* AFNetworking.xcconfig */; + baseConfigurationReference = 01A52256CE7C8FFF4CF5E430DCAC06E9 /* FBSDKShareKit.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBSDKShareKit; + PRODUCT_NAME = FBSDKShareKit; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F0E0DE99D8C9C7D10672428D98A470BF /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E0D6474DCE1AF34AA6DE32F3AE5A8BE2 /* AFNetworking.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5996,45 +5726,21 @@ }; name = Release; }; - EBDF3D745E9FEFB502D4CE82D7E3B97D /* Release */ = { + F4701C98911AED44181E3DDA6977C1AC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 230D8E3526A219F87ECB71194308E744 /* Expecta.xcconfig */; + baseConfigurationReference = 7FA9677C3B2A905BE9B07145E6589A93 /* PEAR-FileManager-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Expecta; - PRODUCT_NAME = Expecta; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - F436ED3A6D55F0C8310B86023A7AE01F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8100D69BD5CF4CCFADDD69B9B33F2472 /* DDDKeychainWrapper.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DDDKeychainWrapper/DDDKeychainWrapper-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/PEAR-FileManager-iOS/PEAR-FileManager-iOS-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DDDKeychainWrapper; - PRODUCT_NAME = DDDKeychainWrapper; + PRODUCT_MODULE_NAME = PEAR_FileManager_iOS; + PRODUCT_NAME = "PEAR-FileManager-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -6044,23 +5750,48 @@ }; name = Release; }; - F899ACFAA13CBA9CCF0481FBC2EF7255 /* Debug */ = { + FBBB8553CD312D185282F8FE1696205C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FF312BFA0B2DE97E3C73A236E2338259 /* Pods-PNObject_Tests.debug.xcconfig */; + baseConfigurationReference = 89A3D09C33C7AED2AF8040BD13026AB8 /* nv-ios-http-status.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = staticlib; + GCC_PREFIX_HEADER = "Target Support Files/nv-ios-http-status/nv-ios-http-status-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = nv_ios_http_status; + PRODUCT_NAME = "nv-ios-http-status"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + FCFBD0823D7F354BE11B63F52AF4F6D0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AF143A03FBEFC09F8F85C478431DD1D0 /* UIDevice-Utils.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/UIDevice-Utils/UIDevice-Utils-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = UIDevice_Utils; + PRODUCT_NAME = "UIDevice-Utils"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -6068,38 +5799,65 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 01A966802882B97B98554F31C7BEEA1A /* Build configuration list for PBXNativeTarget "UIDevice-Utils" */ = { + 03EE9DE89210286E661A59086E9D87D8 /* Build configuration list for PBXNativeTarget "NSDate_Utils" */ = { isa = XCConfigurationList; buildConfigurations = ( - D1F93A3229DDD1C22475D7AD7689A56E /* Debug */, - 8DB7965C9537D22C5ADE09073E43C1A2 /* Release */, + B1D998BF33D34E285CC7A84B553BE752 /* Debug */, + A13C69FCD56962C21CE85E1F37BAF54A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 0CA98EA9177EF194B9012C5CF6CB69DD /* Build configuration list for PBXNativeTarget "PEAR-FileManager-iOS" */ = { + 167901D861FC136D022FE6BF7D19BDA4 /* Build configuration list for PBXNativeTarget "StrongestPasswordValidator" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0D679ABB271E9396C10FB6A61FAD6E3B /* Debug */, - 564D88334934550A9EC5744EE726EE06 /* Release */, + AF279B8EE8733837053BC7B6F6BC4296 /* Debug */, + 0944D47969E08AA2A1B17FF3E06CC887 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 381A4159C7237C873B7A2CE8EFEC3D02 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { + 18B87552B83CD6625866C939225E86EE /* Build configuration list for PBXNativeTarget "Specta" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8AAF5BF3508C24E2099FFC480C8AFE7B /* Debug */, - 99617DD3516F656D0A7162A15B464E17 /* Release */, + C2D21966084DB322706A09516700ABAA /* Debug */, + 7E3B1422A0C4E42020579C4ED3A2E0AC /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 47630D891C72A5B9E9FD1CF85A73A934 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { + 236A68D583C132423D67812A4EBE5FF8 /* Build configuration list for PBXNativeTarget "FBSDKPlacesKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - D91937FDA7A918C62E9BEF2930B665E3 /* Debug */, - CFE25D0DE1C57E36FFCD2E82DF44D8C8 /* Release */, + 727E263DC59E2F869DD7A4CD6B973C9D /* Debug */, + 566046166B2446942F8898FCA735B0D7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 270EB1025D67EB9B0A27A21DC559FF52 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C76A3B8531A7BEFCA6A69A57B4E674CC /* Debug */, + A7EFFE5693532D8E1041B8FDFE50C329 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2F90B54149248667830D377427B18010 /* Build configuration list for PBXNativeTarget "NSString-Helper" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 968AFCA2D8A30FD657816553337B7EB5 /* Debug */, + 23D23C77DE476701C43E4B842DE885E3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3B3F60C5358041FE087F02662D428B84 /* Build configuration list for PBXNativeTarget "DJLocalization" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C65F223FC4240B20B4A1CF611C3BABB4 /* Debug */, + 91FDE7297456C9815BDA6C1A4E2CDE79 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -6107,179 +5865,143 @@ 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 07488D4657FB0A78086563621D425F8A /* Debug */, - A1962E6FF39BBAC201A2E5DDF99557DF /* Release */, + 196DFA3E4A09A28224918543529A1885 /* Debug */, + B01D14FDC83DCF9D4BE53066BEA96D05 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 49DC5E6784260A054458864007E2B6FB /* Build configuration list for PBXNativeTarget "DDDKeychainWrapper" */ = { + 492217A1E816273C196989A591FC8477 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4247769F5000ACEE1B68B6E2FBCBF923 /* Debug */, - F436ED3A6D55F0C8310B86023A7AE01F /* Release */, + 9CA29FC76999C23134108210A63E204E /* Debug */, + B797E10B4CB13B9DBB9242A0A24E209D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4A30326247CC56F96A667067B90D9F6B /* Build configuration list for PBXNativeTarget "NSDataAES" */ = { + 632927A101DF58C8C2FA894C0ABE37CE /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 204EF5F14A7423978A9AA41A6CA1D195 /* Debug */, - 5D28522607D8BF68D40B2E96A35A9CDF /* Release */, + 8F4824EC8B9952F37B300055882B3387 /* Debug */, + 98F375288ACCEA07B500C586A985961E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4C7AC986495CB5A192AA0F6D473F0D4B /* Build configuration list for PBXNativeTarget "CodFis-Helper" */ = { + 6A05CBCEC4BDF7925960B2211E59ECDF /* Build configuration list for PBXNativeTarget "PNObject" */ = { isa = XCConfigurationList; buildConfigurations = ( - 24414D47AAF3AF8A120A92F032A1E499 /* Debug */, - BE0604831899CB74ACBC28078BD87002 /* Release */, + 30D58442E69F51029859C5A61F68DCF0 /* Debug */, + BC60FBE570E1BFAA78B06E747122433F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 554D2A3586C5F42B13196406504DACDF /* Build configuration list for PBXNativeTarget "NSString-Helper" */ = { + 6D491BCB55D907CBAA7FD46E94A44621 /* Build configuration list for PBXNativeTarget "PureLayout" */ = { isa = XCConfigurationList; buildConfigurations = ( - C0E618686D9BB181D9B1B0FEAA30863E /* Debug */, - 5A8A775E16E984F5C7FB8F6FBB637963 /* Release */, + 2B54C7F68BC0F378EF0EA873FCD6BC22 /* Debug */, + 16081E204C08F0CEA67D2A2DAEC0997B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6861A79462F123BF43748FD9EACCABA6 /* Build configuration list for PBXNativeTarget "Bolts" */ = { + 6DED44BA887C7B50F308C1DB11861EC2 /* Build configuration list for PBXNativeTarget "Expecta" */ = { isa = XCConfigurationList; buildConfigurations = ( - 19ADDFEC0941BAA1649A6604EADA2D2C /* Debug */, - 30B281D9A528A6F58A15399FD6AB7CEB /* Release */, + 80561D0A1DB196A97B85118C1DFD4C63 /* Debug */, + 9AB268784F2060F53AB5B13CD500D951 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6B7A147647AF6FE5B132CCDC7394BABB /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { + 71CBB7F35BD4E0A3AB2277E8822C886D /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1CD59F4FC03CA69B5AE457AFF8628F6C /* Debug */, - 402235B75F222202424166C874E0DA8B /* Release */, + EF333777FEE34DA732035615768859B9 /* Debug */, + D1F5433C9E7B5CA09F04956FBFBEEA47 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 801CCC7366514FA159AED8C8FACC8ECD /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { + 7EEEAD7921A3D810729A7483DCB43D4A /* Build configuration list for PBXNativeTarget "UIDevice-Utils" */ = { isa = XCConfigurationList; buildConfigurations = ( - 06F0835B626E867DAB9AC50742B2CC97 /* Debug */, - E898F444F0DD2BEFF99535DA5767F50D /* Release */, + FCFBD0823D7F354BE11B63F52AF4F6D0 /* Debug */, + 1D5DDDB46E7F0F00581657C9B7F43CE2 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 846B37D7E744F683EE22CC9B587CD47E /* Build configuration list for PBXNativeTarget "FBSDKPlacesKit" */ = { + 9403020E2DC4940548B94719439C5693 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - B8904B8AFEA6F92DD8CF096CF46FFA99 /* Debug */, - 0B5FC4D84A30410E5524A88AFD066693 /* Release */, + AB25C19699C6CCC6605352DBE2E8354E /* Debug */, + 0605C2BC2955B33EFD5CF0045FA8FB95 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9B9939E0EF0EADB924070E5269B77A41 /* Build configuration list for PBXNativeTarget "Specta" */ = { + A08587F64D4282A471E426EEDC585916 /* Build configuration list for PBXNativeTarget "DDDKeychainWrapper" */ = { isa = XCConfigurationList; buildConfigurations = ( - 39BAC2E8EF31EB80E230F3D691036BC7 /* Debug */, - D9E66B4C406260E25805D12198E21C2E /* Release */, + 0CA73BB92866CF1EE100E8F770DA7D91 /* Debug */, + 35C1D7A7F74F449321E3A8B947C4C4A4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9EE9A75C1FD5655C2534157CA8532260 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Tests" */ = { + A72DCB8D16AA8079C9B191A597091DE4 /* Build configuration list for PBXNativeTarget "CodFis-Helper" */ = { isa = XCConfigurationList; buildConfigurations = ( - F899ACFAA13CBA9CCF0481FBC2EF7255 /* Debug */, - E4C1C2D9A7ABEA5FFE942A429D379467 /* Release */, + 20B623E77C0E80E6DD21011192D14CFF /* Debug */, + 26633A35AD97EF73B788FB42B8ECB747 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A2CF67F3619405DFEF5E46C8B55A201B /* Build configuration list for PBXNativeTarget "NSDate_Utils" */ = { + C77564487F811EEDF6E6E6580650EA3E /* Build configuration list for PBXNativeTarget "RZDataBinding" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9952F2B9C72B9612D2A4E9BE1E0F57B3 /* Debug */, - ACDE6EFA6480F178B44C085A2D4AEFE9 /* Release */, + 7A5F8BB2AAFDC6879B86F85E42434BD3 /* Debug */, + 51A4E9F53A44AF31E2CF992B2A378B37 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B6DA5203ABB442ED06B578569EDDF205 /* Build configuration list for PBXNativeTarget "Expecta" */ = { + D049B9822D6FD899BE546E3A5B19F927 /* Build configuration list for PBXNativeTarget "NSDataAES" */ = { isa = XCConfigurationList; buildConfigurations = ( - 762F7FCB16E22F48593ACB06FC656E4E /* Debug */, - EBDF3D745E9FEFB502D4CE82D7E3B97D /* Release */, + 11C641A41E68327D305B04EE951AE202 /* Debug */, + 912CC7436ADF055386E761F33E30AA19 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C7206F29847A8ED9A883CB611F9F2C43 /* Build configuration list for PBXNativeTarget "RZDataBinding" */ = { + DFD17747A80A2F5691922C6096548006 /* Build configuration list for PBXNativeTarget "PEAR-FileManager-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9371B2169A52A764E3DC46B61A9A5C64 /* Debug */, - 628C2C9A30A3828A6CE70FDED03A9F3C /* Release */, + 9930FFA42A88D2D5100B66E67FFD1648 /* Debug */, + F4701C98911AED44181E3DDA6977C1AC /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D2EE1DB000990BFF4F38CB748C05A6D6 /* Build configuration list for PBXNativeTarget "DJLocalization" */ = { + EA867E4653E74E5F79F71D04D9D895D7 /* Build configuration list for PBXNativeTarget "nv-ios-http-status" */ = { isa = XCConfigurationList; buildConfigurations = ( - 41F5B49F9C3454F0A19AC38F0A68E79E /* Debug */, - 25FD6D3AC8D6A710F83607663544AE4E /* Release */, + FBBB8553CD312D185282F8FE1696205C /* Debug */, + B80BF81170C4DA7D7784E5E9B3BBB27A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E20F1D0144C5E3832C7B7A120BF3927C /* Build configuration list for PBXNativeTarget "nv-ios-http-status" */ = { + EE91476FFEA2C3B3AB024E94672BCFF2 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( - 338DCE5B4DC57F3351BFF420FA842E9B /* Debug */, - B9068727097CAF2DBFB5DE5CE5D6E489 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EEC950D5C3149CF69E7A46E6D03CF236 /* Build configuration list for PBXNativeTarget "PNObject" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B50E6A4C5B8CE1F731C419C9629EBA1B /* Debug */, - 2081745019F62616B203F38FA2CE8FC5 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EF89EA2BA66B9CDB323777C7D79A97C7 /* Build configuration list for PBXNativeTarget "PureLayout" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8ABBFEDA657A9229E7660AD1D342F22B /* Debug */, - 8CE02190DCC7599C37B51285A643AD31 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F40057EAD613291C39CC75513E74CF0F /* Build configuration list for PBXNativeTarget "StrongestPasswordValidator" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CD9929050A399841D5D1A41E8B1DBECD /* Debug */, - DF5236ED2D73B7A177822E2E784B93BB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F9A2821F9D95EE3EF1471FB49769BD44 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 184AAA3AABBE3950E5821036B4AA7761 /* Debug */, - DFE80189A85E6B0A564ECBD1C305C42F /* Release */, + 5E472B313AAA528C22C1BF1D61D97C44 /* Debug */, + F0E0DE99D8C9C7D10672428D98A470BF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.h b/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.h index 42ed644..ced5859 100755 --- a/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.h +++ b/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.h @@ -222,6 +222,7 @@ PL__ASSUME_NONNULL_BEGIN #pragma mark Pin to Layout Guides (iOS only) #if TARGET_OS_IPHONE +#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_11_0 // Top and bottom layout guides were deprecated in iOS 11 /** Pins the top edge of the view to the top layout guide of the given view controller with an inset. Available on iOS only. */ - (NSLayoutConstraint *)autoPinToTopLayoutGuideOfViewController:(UIViewController *)viewController withInset:(CGFloat)inset; @@ -235,6 +236,7 @@ PL__ASSUME_NONNULL_BEGIN /** Pins the bottom edge of the view to the bottom layout guide of the given view controller with an inset as a maximum or minimum. Available on iOS only. */ - (NSLayoutConstraint *)autoPinToBottomLayoutGuideOfViewController:(UIViewController *)viewController withInset:(CGFloat)inset relation:(NSLayoutRelation)relation; +#endif /* __IPHONE_OS_VERSION_MIN_REQUIRED */ #endif /* TARGET_OS_IPHONE */ @end diff --git a/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.m b/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.m index 8e05f4c..3ec32e2 100755 --- a/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.m +++ b/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.m @@ -297,7 +297,7 @@ } break; } - constraint.active = YES; + [constraint autoInstall]; return constraint; #else return [self autoPinEdgeToSuperviewEdge:edge withInset:inset relation:relation]; @@ -502,7 +502,7 @@ Pins the given edge of the view to the corresponding margin of its superview with an inset. @param edge The edge of this view to pin to the corresponding margin of its superview. - @param @param inset The amount to inset this view's edge from the corresponding margin of its superview edge. + @param inset The amount to inset this view's edge from the corresponding margin of its superview edge. @return The constraint added. */ - (NSLayoutConstraint *)autoPinEdgeToSuperviewMargin:(ALEdge)edge withInset:(CGFloat)inset @@ -956,7 +956,7 @@ #pragma mark Pin to Layout Guides #if TARGET_OS_IPHONE - +#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_11_0 // Top and bottom layout guides were deprecated in iOS 11 /** Pins the top edge of the view to the top layout guide of the given view controller with an inset. For compatibility with iOS 6 (where layout guides do not exist), this method will simply pin the top edge of @@ -1018,6 +1018,7 @@ } } +#endif /* __IPHONE_OS_VERSION_MIN_REQUIRED */ #endif /* TARGET_OS_IPHONE */ #pragma mark Internal Methods diff --git a/Example/Pods/PureLayout/PureLayout/PureLayout/NSLayoutConstraint+PureLayout.m b/Example/Pods/PureLayout/PureLayout/PureLayout/NSLayoutConstraint+PureLayout.m index 5738bc0..4ee751d 100755 --- a/Example/Pods/PureLayout/PureLayout/PureLayout/NSLayoutConstraint+PureLayout.m +++ b/Example/Pods/PureLayout/PureLayout/PureLayout/NSLayoutConstraint+PureLayout.m @@ -373,73 +373,73 @@ static PL__NSMutableArray_of(NSString *) *_al_globalConstraintIdentifiers = nil; { NSLayoutAttribute layoutAttribute = NSLayoutAttributeNotAnAttribute; switch (attribute) { - case ALEdgeLeft: + case ALAttributeLeft: layoutAttribute = NSLayoutAttributeLeft; break; - case ALEdgeRight: + case ALAttributeRight: layoutAttribute = NSLayoutAttributeRight; break; - case ALEdgeTop: + case ALAttributeTop: layoutAttribute = NSLayoutAttributeTop; break; - case ALEdgeBottom: + case ALAttributeBottom: layoutAttribute = NSLayoutAttributeBottom; break; - case ALEdgeLeading: + case ALAttributeLeading: layoutAttribute = NSLayoutAttributeLeading; break; - case ALEdgeTrailing: + case ALAttributeTrailing: layoutAttribute = NSLayoutAttributeTrailing; break; - case ALDimensionWidth: + case ALAttributeWidth: layoutAttribute = NSLayoutAttributeWidth; break; - case ALDimensionHeight: + case ALAttributeHeight: layoutAttribute = NSLayoutAttributeHeight; break; - case ALAxisVertical: + case ALAttributeVertical: layoutAttribute = NSLayoutAttributeCenterX; break; - case ALAxisHorizontal: + case ALAttributeHorizontal: layoutAttribute = NSLayoutAttributeCenterY; break; - case ALAxisBaseline: // same value as ALAxisLastBaseline + case ALAttributeBaseline: // same value as ALAxisLastBaseline layoutAttribute = NSLayoutAttributeBaseline; break; #if PL__PureLayout_MinBaseSDK_iOS_8_0 - case ALAxisFirstBaseline: + case ALAttributeFirstBaseline: NSAssert(PL__PureLayout_MinSysVer_iOS_8_0, @"ALAxisFirstBaseline is only supported on iOS 8.0 or higher."); layoutAttribute = NSLayoutAttributeFirstBaseline; break; - case ALMarginLeft: + case ALAttributeMarginLeft: NSAssert(PL__PureLayout_MinSysVer_iOS_8_0, @"ALEdgeLeftMargin is only supported on iOS 8.0 or higher."); layoutAttribute = NSLayoutAttributeLeftMargin; break; - case ALMarginRight: + case ALAttributeMarginRight: NSAssert(PL__PureLayout_MinSysVer_iOS_8_0, @"ALEdgeRightMargin is only supported on iOS 8.0 or higher."); layoutAttribute = NSLayoutAttributeRightMargin; break; - case ALMarginTop: + case ALAttributeMarginTop: NSAssert(PL__PureLayout_MinSysVer_iOS_8_0, @"ALEdgeTopMargin is only supported on iOS 8.0 or higher."); layoutAttribute = NSLayoutAttributeTopMargin; break; - case ALMarginBottom: + case ALAttributeMarginBottom: NSAssert(PL__PureLayout_MinSysVer_iOS_8_0, @"ALEdgeBottomMargin is only supported on iOS 8.0 or higher."); layoutAttribute = NSLayoutAttributeBottomMargin; break; - case ALMarginLeading: + case ALAttributeMarginLeading: NSAssert(PL__PureLayout_MinSysVer_iOS_8_0, @"ALEdgeLeadingMargin is only supported on iOS 8.0 or higher."); layoutAttribute = NSLayoutAttributeLeadingMargin; break; - case ALMarginTrailing: + case ALAttributeMarginTrailing: NSAssert(PL__PureLayout_MinSysVer_iOS_8_0, @"ALEdgeTrailingMargin is only supported on iOS 8.0 or higher."); layoutAttribute = NSLayoutAttributeTrailingMargin; break; - case ALMarginAxisVertical: + case ALAttributeMarginAxisVertical: NSAssert(PL__PureLayout_MinSysVer_iOS_8_0, @"ALAxisVerticalMargin is only supported on iOS 8.0 or higher."); layoutAttribute = NSLayoutAttributeCenterXWithinMargins; break; - case ALMarginAxisHorizontal: + case ALAttributeMarginAxisHorizontal: NSAssert(PL__PureLayout_MinSysVer_iOS_8_0, @"ALAxisHorizontalMargin is only supported on iOS 8.0 or higher."); layoutAttribute = NSLayoutAttributeCenterYWithinMargins; break; diff --git a/Example/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig b/Example/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig index 2a9e916..9af64af 100644 --- a/Example/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig +++ b/Example/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/AFNetworking PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Bolts/Bolts-dummy.m b/Example/Pods/Target Support Files/Bolts/Bolts-dummy.m deleted file mode 100644 index aeabf61..0000000 --- a/Example/Pods/Target Support Files/Bolts/Bolts-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Bolts : NSObject -@end -@implementation PodsDummy_Bolts -@end diff --git a/Example/Pods/Target Support Files/Bolts/Bolts-prefix.pch b/Example/Pods/Target Support Files/Bolts/Bolts-prefix.pch deleted file mode 100644 index beb2a24..0000000 --- a/Example/Pods/Target Support Files/Bolts/Bolts-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Example/Pods/Target Support Files/Bolts/Bolts.xcconfig b/Example/Pods/Target Support Files/Bolts/Bolts.xcconfig deleted file mode 100644 index a1f3829..0000000 --- a/Example/Pods/Target Support Files/Bolts/Bolts.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Bolts -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Bolts -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES diff --git a/Example/Pods/Target Support Files/CodFis-Helper/CodFis-Helper.xcconfig b/Example/Pods/Target Support Files/CodFis-Helper/CodFis-Helper.xcconfig index c1d914f..102a7f2 100644 --- a/Example/Pods/Target Support Files/CodFis-Helper/CodFis-Helper.xcconfig +++ b/Example/Pods/Target Support Files/CodFis-Helper/CodFis-Helper.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/CodFis-Helper PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/DDDKeychainWrapper/DDDKeychainWrapper.xcconfig b/Example/Pods/Target Support Files/DDDKeychainWrapper/DDDKeychainWrapper.xcconfig index ec1924c..afe727b 100644 --- a/Example/Pods/Target Support Files/DDDKeychainWrapper/DDDKeychainWrapper.xcconfig +++ b/Example/Pods/Target Support Files/DDDKeychainWrapper/DDDKeychainWrapper.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/DDDKeychainWrapper PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/DJLocalization/DJLocalization.xcconfig b/Example/Pods/Target Support Files/DJLocalization/DJLocalization.xcconfig index d594b8e..23a8989 100644 --- a/Example/Pods/Target Support Files/DJLocalization/DJLocalization.xcconfig +++ b/Example/Pods/Target Support Files/DJLocalization/DJLocalization.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/DJLocalization PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Expecta/Expecta.xcconfig b/Example/Pods/Target Support Files/Expecta/Expecta.xcconfig index 5c5ceeb..525d259 100644 --- a/Example/Pods/Target Support Files/Expecta/Expecta.xcconfig +++ b/Example/Pods/Target Support Files/Expecta/Expecta.xcconfig @@ -9,3 +9,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/Expecta PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig b/Example/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig index c3812d3..14ae517 100644 --- a/Example/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig +++ b/Example/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig @@ -1,9 +1,10 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/FBSDKCoreKit PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig b/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig index 20d0e19..d91a1fc 100644 --- a/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig +++ b/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig @@ -1,10 +1,10 @@ -CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FBSDKLoginKit GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/FBSDKLoginKit PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/FBSDKPlacesKit/FBSDKPlacesKit.xcconfig b/Example/Pods/Target Support Files/FBSDKPlacesKit/FBSDKPlacesKit.xcconfig index d7a2284..da01334 100644 --- a/Example/Pods/Target Support Files/FBSDKPlacesKit/FBSDKPlacesKit.xcconfig +++ b/Example/Pods/Target Support Files/FBSDKPlacesKit/FBSDKPlacesKit.xcconfig @@ -1,10 +1,10 @@ -CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FBSDKPlacesKit GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/FBSDKPlacesKit PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig b/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig index a78e73c..51fcda5 100644 --- a/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig +++ b/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig @@ -1,10 +1,10 @@ -CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FBSDKShareKit GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/FBSDKShareKit PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/NSDataAES/NSDataAES.xcconfig b/Example/Pods/Target Support Files/NSDataAES/NSDataAES.xcconfig index 0a0e227..927b57d 100644 --- a/Example/Pods/Target Support Files/NSDataAES/NSDataAES.xcconfig +++ b/Example/Pods/Target Support Files/NSDataAES/NSDataAES.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/NSDataAES PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/NSDate_Utils/NSDate_Utils.xcconfig b/Example/Pods/Target Support Files/NSDate_Utils/NSDate_Utils.xcconfig index 7214c7c..d954287 100644 --- a/Example/Pods/Target Support Files/NSDate_Utils/NSDate_Utils.xcconfig +++ b/Example/Pods/Target Support Files/NSDate_Utils/NSDate_Utils.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/NSDate_Utils PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/NSString-Helper/NSString-Helper.xcconfig b/Example/Pods/Target Support Files/NSString-Helper/NSString-Helper.xcconfig index defa892..3df374a 100644 --- a/Example/Pods/Target Support Files/NSString-Helper/NSString-Helper.xcconfig +++ b/Example/Pods/Target Support Files/NSString-Helper/NSString-Helper.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/NSString-Helper PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/PEAR-FileManager-iOS/PEAR-FileManager-iOS.xcconfig b/Example/Pods/Target Support Files/PEAR-FileManager-iOS/PEAR-FileManager-iOS.xcconfig index 2489c8c..1be101d 100644 --- a/Example/Pods/Target Support Files/PEAR-FileManager-iOS/PEAR-FileManager-iOS.xcconfig +++ b/Example/Pods/Target Support Files/PEAR-FileManager-iOS/PEAR-FileManager-iOS.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/PEAR-FileManager-iOS PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/PNObject/PNObject.xcconfig b/Example/Pods/Target Support Files/PNObject/PNObject.xcconfig index 0f9f047..c1eaccc 100644 --- a/Example/Pods/Target Support Files/PNObject/PNObject.xcconfig +++ b/Example/Pods/Target Support Files/PNObject/PNObject.xcconfig @@ -1,9 +1,10 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PNObject GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/PNObject" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/PNObject" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-acknowledgements.markdown index 01d9ddc..17476e5 100644 --- a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-acknowledgements.markdown @@ -24,39 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## 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. - ## CodFis-Helper Copyright (c) 2015 Giuseppe Nucifora diff --git a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-acknowledgements.plist index 54b00ea..d8f617a 100644 --- a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-acknowledgements.plist @@ -41,45 +41,6 @@ THE SOFTWARE. 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. - License - BSD - Title - Bolts - Type - PSGroupSpecifier - FooterText Copyright (c) 2015 Giuseppe Nucifora <me@giuseppenucifora.com> diff --git a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-frameworks.sh deleted file mode 100755 index 08e3eaa..0000000 --- a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example-frameworks.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --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 -} - -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" - fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" - fi - 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}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${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 - STRIP_BINARY_RETVAL=1 -} - -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.debug.xcconfig index 1beb1ed..05f1a4b 100644 --- a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.debug.xcconfig @@ -1,8 +1,9 @@ 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/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/Bolts" "${PODS_CONFIGURATION_BUILD_DIR}/CodFis-Helper" "${PODS_CONFIGURATION_BUILD_DIR}/DDDKeychainWrapper" "${PODS_CONFIGURATION_BUILD_DIR}/DJLocalization" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKLoginKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKPlacesKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKShareKit" "${PODS_CONFIGURATION_BUILD_DIR}/NSDataAES" "${PODS_CONFIGURATION_BUILD_DIR}/NSDate_Utils" "${PODS_CONFIGURATION_BUILD_DIR}/NSString-Helper" "${PODS_CONFIGURATION_BUILD_DIR}/PEAR-FileManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PNObject" "${PODS_CONFIGURATION_BUILD_DIR}/PureLayout" "${PODS_CONFIGURATION_BUILD_DIR}/RZDataBinding" "${PODS_CONFIGURATION_BUILD_DIR}/StrongestPasswordValidator" "${PODS_CONFIGURATION_BUILD_DIR}/UIDevice-Utils" "${PODS_CONFIGURATION_BUILD_DIR}/nv-ios-http-status" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"CodFis-Helper" -l"DDDKeychainWrapper" -l"DJLocalization" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKPlacesKit" -l"FBSDKShareKit" -l"NSDataAES" -l"NSDate_Utils" -l"NSString-Helper" -l"PEAR-FileManager-iOS" -l"PNObject" -l"PureLayout" -l"RZDataBinding" -l"StrongestPasswordValidator" -l"UIDevice-Utils" -l"nv-ios-http-status" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -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/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CodFis-Helper" "${PODS_CONFIGURATION_BUILD_DIR}/DDDKeychainWrapper" "${PODS_CONFIGURATION_BUILD_DIR}/DJLocalization" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKLoginKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKPlacesKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKShareKit" "${PODS_CONFIGURATION_BUILD_DIR}/NSDataAES" "${PODS_CONFIGURATION_BUILD_DIR}/NSDate_Utils" "${PODS_CONFIGURATION_BUILD_DIR}/NSString-Helper" "${PODS_CONFIGURATION_BUILD_DIR}/PEAR-FileManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PNObject" "${PODS_CONFIGURATION_BUILD_DIR}/PureLayout" "${PODS_CONFIGURATION_BUILD_DIR}/RZDataBinding" "${PODS_CONFIGURATION_BUILD_DIR}/StrongestPasswordValidator" "${PODS_CONFIGURATION_BUILD_DIR}/UIDevice-Utils" "${PODS_CONFIGURATION_BUILD_DIR}/nv-ios-http-status" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"CodFis-Helper" -l"DDDKeychainWrapper" -l"DJLocalization" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKPlacesKit" -l"FBSDKShareKit" -l"NSDataAES" -l"NSDate_Utils" -l"NSString-Helper" -l"PEAR-FileManager-iOS" -l"PNObject" -l"PureLayout" -l"RZDataBinding" -l"StrongestPasswordValidator" -l"UIDevice-Utils" -l"nv-ios-http-status" -l"z" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -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_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.release.xcconfig index 1beb1ed..05f1a4b 100644 --- a/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PNObject_Example/Pods-PNObject_Example.release.xcconfig @@ -1,8 +1,9 @@ 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/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/Bolts" "${PODS_CONFIGURATION_BUILD_DIR}/CodFis-Helper" "${PODS_CONFIGURATION_BUILD_DIR}/DDDKeychainWrapper" "${PODS_CONFIGURATION_BUILD_DIR}/DJLocalization" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKLoginKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKPlacesKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKShareKit" "${PODS_CONFIGURATION_BUILD_DIR}/NSDataAES" "${PODS_CONFIGURATION_BUILD_DIR}/NSDate_Utils" "${PODS_CONFIGURATION_BUILD_DIR}/NSString-Helper" "${PODS_CONFIGURATION_BUILD_DIR}/PEAR-FileManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PNObject" "${PODS_CONFIGURATION_BUILD_DIR}/PureLayout" "${PODS_CONFIGURATION_BUILD_DIR}/RZDataBinding" "${PODS_CONFIGURATION_BUILD_DIR}/StrongestPasswordValidator" "${PODS_CONFIGURATION_BUILD_DIR}/UIDevice-Utils" "${PODS_CONFIGURATION_BUILD_DIR}/nv-ios-http-status" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"CodFis-Helper" -l"DDDKeychainWrapper" -l"DJLocalization" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKPlacesKit" -l"FBSDKShareKit" -l"NSDataAES" -l"NSDate_Utils" -l"NSString-Helper" -l"PEAR-FileManager-iOS" -l"PNObject" -l"PureLayout" -l"RZDataBinding" -l"StrongestPasswordValidator" -l"UIDevice-Utils" -l"nv-ios-http-status" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -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/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CodFis-Helper" "${PODS_CONFIGURATION_BUILD_DIR}/DDDKeychainWrapper" "${PODS_CONFIGURATION_BUILD_DIR}/DJLocalization" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKLoginKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKPlacesKit" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKShareKit" "${PODS_CONFIGURATION_BUILD_DIR}/NSDataAES" "${PODS_CONFIGURATION_BUILD_DIR}/NSDate_Utils" "${PODS_CONFIGURATION_BUILD_DIR}/NSString-Helper" "${PODS_CONFIGURATION_BUILD_DIR}/PEAR-FileManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PNObject" "${PODS_CONFIGURATION_BUILD_DIR}/PureLayout" "${PODS_CONFIGURATION_BUILD_DIR}/RZDataBinding" "${PODS_CONFIGURATION_BUILD_DIR}/StrongestPasswordValidator" "${PODS_CONFIGURATION_BUILD_DIR}/UIDevice-Utils" "${PODS_CONFIGURATION_BUILD_DIR}/nv-ios-http-status" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"CodFis-Helper" -l"DDDKeychainWrapper" -l"DJLocalization" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKPlacesKit" -l"FBSDKShareKit" -l"NSDataAES" -l"NSDate_Utils" -l"NSString-Helper" -l"PEAR-FileManager-iOS" -l"PNObject" -l"PureLayout" -l"RZDataBinding" -l"StrongestPasswordValidator" -l"UIDevice-Utils" -l"nv-ios-http-status" -l"z" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -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_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests-frameworks.sh deleted file mode 100755 index 08e3eaa..0000000 --- a/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests-frameworks.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --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 -} - -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" - fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" - fi - 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}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${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 - STRIP_BINARY_RETVAL=1 -} - -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests-resources.sh deleted file mode 100755 index 345301f..0000000 --- a/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests-resources.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then - # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy - # resources to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -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" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - else - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" - fi -fi diff --git a/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests.debug.xcconfig index 2010e6b..a49d995 100644 --- a/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests.debug.xcconfig @@ -1,9 +1,10 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 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/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Expecta" "${PODS_CONFIGURATION_BUILD_DIR}/Specta" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"Specta" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "XCTest" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"Specta" -l"z" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "XCTest" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests.release.xcconfig index 2010e6b..a49d995 100644 --- a/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PNObject_Tests/Pods-PNObject_Tests.release.xcconfig @@ -1,9 +1,10 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 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/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/CodFis-Helper" "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" "${PODS_ROOT}/Headers/Public/DJLocalization" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKPlacesKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/NSDataAES" "${PODS_ROOT}/Headers/Public/NSDate_Utils" "${PODS_ROOT}/Headers/Public/NSString-Helper" "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" "${PODS_ROOT}/Headers/Public/PNObject" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/RZDataBinding" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" "${PODS_ROOT}/Headers/Public/UIDevice-Utils" "${PODS_ROOT}/Headers/Public/nv-ios-http-status" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Expecta" "${PODS_CONFIGURATION_BUILD_DIR}/Specta" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"Specta" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "XCTest" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"Specta" -l"z" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "XCTest" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/PureLayout/PureLayout.xcconfig b/Example/Pods/Target Support Files/PureLayout/PureLayout.xcconfig index 3b74e6f..3b3b581 100644 --- a/Example/Pods/Target Support Files/PureLayout/PureLayout.xcconfig +++ b/Example/Pods/Target Support Files/PureLayout/PureLayout.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/PureLayout PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/RZDataBinding/RZDataBinding.xcconfig b/Example/Pods/Target Support Files/RZDataBinding/RZDataBinding.xcconfig index 93ff6d9..2e3be15 100644 --- a/Example/Pods/Target Support Files/RZDataBinding/RZDataBinding.xcconfig +++ b/Example/Pods/Target Support Files/RZDataBinding/RZDataBinding.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/RZDataBinding PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Specta/Specta.xcconfig b/Example/Pods/Target Support Files/Specta/Specta.xcconfig index 05ba33e..d47a138 100644 --- a/Example/Pods/Target Support Files/Specta/Specta.xcconfig +++ b/Example/Pods/Target Support Files/Specta/Specta.xcconfig @@ -9,3 +9,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/Specta PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/StrongestPasswordValidator/StrongestPasswordValidator.xcconfig b/Example/Pods/Target Support Files/StrongestPasswordValidator/StrongestPasswordValidator.xcconfig index d6f4384..32d935a 100644 --- a/Example/Pods/Target Support Files/StrongestPasswordValidator/StrongestPasswordValidator.xcconfig +++ b/Example/Pods/Target Support Files/StrongestPasswordValidator/StrongestPasswordValidator.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/StrongestPasswordValidator PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/UIDevice-Utils/UIDevice-Utils.xcconfig b/Example/Pods/Target Support Files/UIDevice-Utils/UIDevice-Utils.xcconfig index bcdbb4f..55bed6e 100644 --- a/Example/Pods/Target Support Files/UIDevice-Utils/UIDevice-Utils.xcconfig +++ b/Example/Pods/Target Support Files/UIDevice-Utils/UIDevice-Utils.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/UIDevice-Utils PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/nv-ios-http-status/nv-ios-http-status.xcconfig b/Example/Pods/Target Support Files/nv-ios-http-status/nv-ios-http-status.xcconfig index c760c71..e59d713 100644 --- a/Example/Pods/Target Support Files/nv-ios-http-status/nv-ios-http-status.xcconfig +++ b/Example/Pods/Target Support Files/nv-ios-http-status/nv-ios-http-status.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/nv-ios-http-status PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/UIDevice-Utils/Pod/Classes/UIDevice-Hardware.m b/Example/Pods/UIDevice-Utils/Pod/Classes/UIDevice-Hardware.m index a5239b9..4f30646 100755 --- a/Example/Pods/UIDevice-Utils/Pod/Classes/UIDevice-Hardware.m +++ b/Example/Pods/UIDevice-Utils/Pod/Classes/UIDevice-Hardware.m @@ -142,13 +142,28 @@ if ([modelIdentifier hasSuffix:@"86"] || [modelIdentifier isEqual:@"x86_64"]) { - BOOL iPhoneScreen = ([[UIScreen mainScreen] bounds].size.width < 768.0); - BOOL iPadScreen = !iPhoneScreen; - if (iPadScreen) { - return UIDeviceGenerationModeliPadSimulator; - } - else { - return UIDeviceGenerationModeliPhoneSimulator; + CGRect screenRect = [[UIScreen mainScreen] bounds]; + NSInteger screenHeight = ((NSInteger)screenRect.size.height > (NSInteger)screenRect.size.width) ? (NSInteger)screenRect.size.height : (NSInteger)screenRect.size.width; + + switch (screenHeight) { + case 480: + case 568: + case 667: + case 736: + case 812: + case 896:{ + return UIDeviceGenerationModeliPhoneSimulator; + break; + } + break; + case 1024: + case 1366:{ + return UIDeviceGenerationModeliPadSimulator; + break; + } + default:{ + break; + } } } return UIDeviceGenerationModelUnknown; @@ -258,8 +273,31 @@ // Simulator if ([modelIdentifier hasSuffix:@"86"] || [modelIdentifier isEqual:@"x86_64"]) { - BOOL smallerScreen = ([[UIScreen mainScreen] bounds].size.width < 768.0); - return (smallerScreen ? @"iPhone Simulator" : @"iPad Simulator"); + + CGRect screenRect = [[UIScreen mainScreen] bounds]; + NSInteger screenHeight = ((NSInteger)screenRect.size.height > (NSInteger)screenRect.size.width) ? (NSInteger)screenRect.size.height : (NSInteger)screenRect.size.width; + + switch (screenHeight) { + case 480: + case 568: + case 667: + case 736: + case 812: + case 896:{ + return @"iPhone Simulator"; + break; + } + break; + case 1024: + case 1366:{ + return @"iPad Simulator"; + break; + } + default:{ + return @""; + break; + } + } } return modelIdentifier; diff --git a/PNObject.podspec b/PNObject.podspec index f04bcac..a02d196 100644 --- a/PNObject.podspec +++ b/PNObject.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = 'PNObject' -s.version = '2.6.4' +s.version = '2.6.5' s.summary = 'PNObject is a simple replica of the more complex ParseObject' @@ -21,7 +21,7 @@ s.author = { 'Giuseppe Nucifora' => 'me@giuseppenucifora.com' } s.source = { :git => "https://github.com/giuseppenucifora/PNObject.git", :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/' -s.ios.deployment_target = '9.0' +s.ios.deployment_target = '10.0' s.source_files = 'PNObject/Classes/**/*' diff --git a/PNObject/Classes/PNClasses/PNUser.m b/PNObject/Classes/PNClasses/PNUser.m index 8fd5e24..fa895fe 100644 --- a/PNObject/Classes/PNClasses/PNUser.m +++ b/PNObject/Classes/PNClasses/PNUser.m @@ -264,7 +264,8 @@ static bool isFirstAccess = YES; } else { FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; - [login logInWithReadPermissions: @[@"public_profile",@"email",@"user_birthday"] fromViewController:viewController handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { + + [login logInWithPermissions: @[@"public_profile",@"email",@"user_birthday"] fromViewController:viewController handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { NSLogDebug(@"Process error"); if (failure) { @@ -333,7 +334,7 @@ static bool isFirstAccess = YES; } else { FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; - [login logInWithReadPermissions: @[@"public_profile",@"email",@"user_birthday"] fromViewController:viewController handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { + [login logInWithPermissions: @[@"public_profile",@"email",@"user_birthday"] fromViewController:viewController handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { NSLogDebug(@"Process error"); if (failure) {