From 16291103499696237e172a37c6e443b16531b381 Mon Sep 17 00:00:00 2001 From: Giuseppe Nucifora Date: Tue, 8 Jan 2019 14:55:10 +0100 Subject: [PATCH] - add client custom identifier to save credentials --- Example/Podfile.lock | 39 +- .../FBSDKCoreKit/FBSDKAccessToken.h | 32 +- .../FBSDKCoreKit/FBSDKAccessToken.m | 44 +- .../FBSDKCoreKit/FBSDKAppEvents.h | 208 +- .../FBSDKCoreKit/FBSDKAppEvents.m | 167 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m | 8 +- .../FBSDKCoreKit/FBSDKAppLinkNavigation.h | 12 +- .../FBSDKCoreKit/FBSDKAppLinkNavigation.m | 32 +- .../FBSDKCoreKit/FBSDKAppLinkResolver.m | 50 +- .../FBSDKAppLinkReturnToRefererController.m | 4 +- .../FBSDKAppLinkReturnToRefererView.m | 14 +- .../FBSDKCoreKit/FBSDKAppLinkTarget.m | 6 +- .../FBSDKCoreKit/FBSDKAppLinkUtility.h | 2 +- .../FBSDKCoreKit/FBSDKAppLinkUtility.m | 10 +- .../FBSDKCoreKit/FBSDKApplicationDelegate.m | 70 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m | 18 +- .../FBSDKCoreKit/FBSDKConstants.h | 386 +- .../FBSDKCoreKit/FBSDKConstants.m | 34 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h | 4 +- .../FBSDKGraphErrorRecoveryProcessor.h | 4 +- .../FBSDKGraphErrorRecoveryProcessor.m | 136 +- .../FBSDKCoreKit/FBSDKGraphRequest.h | 3 + .../FBSDKCoreKit/FBSDKGraphRequest.m | 16 +- .../FBSDKGraphRequestConnection.h | 29 +- .../FBSDKGraphRequestConnection.m | 119 +- .../FBSDKGraphRequestDataAttachment.h | 3 + .../FBSDKGraphRequestDataAttachment.m | 8 - .../FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h | 20 - .../FBSDKCoreKit/FBSDKMeasurementEvent.h | 14 +- .../FBSDKCoreKit/FBSDKMeasurementEvent.m | 12 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h | 29 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m | 30 +- .../FBSDKCoreKit/FBSDKProfilePictureView.m | 31 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h | 37 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m | 12 +- .../FBSDKCoreKit/FBSDKTestUsersManager.h | 3 + .../FBSDKCoreKit/FBSDKTestUsersManager.m | 26 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m | 12 +- .../FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h | 3 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m | 26 +- .../FBSDKWebViewAppLinkResolver.m | 6 +- .../Codeless/FBSDKCodelessIndexer.h} | 4 +- .../AppEvents/Codeless/FBSDKCodelessIndexer.m | 322 + .../AppEvents/Codeless/FBSDKCodelessMacros.h | 43 +- .../FBSDKCodelessParameterComponent.m | 11 +- .../Codeless/FBSDKCodelessPathComponent.m | 24 +- .../AppEvents/Codeless/FBSDKEventBinding.m | 32 +- .../Codeless/FBSDKEventBindingManager.m | 120 +- .../AppEvents/Codeless/FBSDKViewHierarchy.h | 9 +- .../AppEvents/Codeless/FBSDKViewHierarchy.m | 410 +- .../AppEvents/FBSDKAppEvents+Internal.h | 211 +- .../AppEvents/FBSDKAppEventsDeviceInfo.m | 14 +- .../Internal/AppEvents/FBSDKAppEventsState.h | 12 +- .../Internal/AppEvents/FBSDKAppEventsState.m | 7 - .../AppEvents/FBSDKAppEventsUninstall.m | 118 - .../AppEvents/FBSDKAppEventsUtility.h | 5 + .../AppEvents/FBSDKAppEventsUtility.m | 122 +- ...FBSDKHybridAppEventsScriptMessageHandler.m | 4 +- .../Internal/AppEvents/FBSDKPaymentObserver.m | 16 +- .../Internal/AppEvents/FBSDKTimeSpentData.h | 4 +- .../Internal/AppEvents/FBSDKTimeSpentData.m | 12 +- .../Internal/AppEvents/FBSDKUserDataStore.h | 2 - .../Internal/AppEvents/FBSDKUserDataStore.m | 17 +- .../FBSDKBoltsMeasurementEventListener.m | 15 +- .../Internal/Base64/FBSDKBase64.m | 46 +- .../Internal/BridgeAPI/FBSDKBridgeAPICrypto.h | 3 + .../Internal/BridgeAPI/FBSDKBridgeAPICrypto.m | 15 +- .../BridgeAPI/FBSDKBridgeAPIProtocol.h | 8 +- .../BridgeAPI/FBSDKBridgeAPIRequest.h | 2 + .../BridgeAPI/FBSDKBridgeAPIRequest.m | 15 +- .../BridgeAPI/FBSDKBridgeAPIResponse.h | 3 + .../BridgeAPI/FBSDKBridgeAPIResponse.m | 7 - .../FBSDKBridgeAPIProtocolNativeV1.h | 13 +- .../FBSDKBridgeAPIProtocolNativeV1.m | 39 +- .../FBSDKBridgeAPIProtocolWebV1.m | 5 +- .../FBSDKBridgeAPIProtocolWebV2.m | 4 +- .../Internal/Cryptography/FBSDKCrypto.m | 12 +- .../FBSDKErrorRecoveryAttempter.m | 4 +- .../FBSDKApplicationDelegate+Internal.h | 11 +- .../Internal/FBSDKAudioResourceLoader.m | 2 +- .../Internal/FBSDKCoreKit+Internal.h | 1 + .../Internal/FBSDKDeviceRequestsHelper.m | 5 +- .../Internal/FBSDKDynamicFrameworkLoader.h | 95 +- .../FBSDKCoreKit/Internal/FBSDKError.h | 87 +- .../FBSDKCoreKit/Internal/FBSDKError.m | 170 +- .../Internal/FBSDKInternalUtility.h | 8 + .../Internal/FBSDKInternalUtility.m | 74 +- .../FBSDKCoreKit/Internal/FBSDKLogger.m | 13 +- .../FBSDKCoreKit/Internal/FBSDKMath.h | 3 + .../FBSDKCoreKit/Internal/FBSDKMath.m | 10 - .../FBSDKCoreKit/Internal/FBSDKSwizzler.m | 4 +- .../Internal/FBSDKSystemAccountStoreAdapter.h | 49 +- .../Internal/FBSDKSystemAccountStoreAdapter.m | 25 +- .../FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h | 8 +- .../FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m | 2 +- .../FBSDKCoreKit/Internal/FBSDKTypeUtility.h | 3 + .../FBSDKCoreKit/Internal/FBSDKTypeUtility.m | 28 +- .../Network/FBSDKGraphRequest+Internal.h | 5 +- .../Internal/Network/FBSDKGraphRequestBody.m | 20 +- .../Network/FBSDKGraphRequestMetadata.h | 3 + .../Network/FBSDKGraphRequestMetadata.m | 7 - .../FBSDKGraphRequestPiggybackManager.m | 16 +- .../Internal/Network/FBSDKURLConnection.h | 51 - .../Internal/Network/FBSDKURLConnection.m | 191 - .../Internal/Network/FBSDKURLSessionTask.h | 9 +- .../Internal/Network/FBSDKURLSessionTask.m | 23 +- .../FBSDKDialogConfiguration.h | 3 + .../FBSDKDialogConfiguration.m | 8 - .../FBSDKErrorConfiguration.h | 3 + .../FBSDKErrorConfiguration.m | 32 +- .../FBSDKErrorRecoveryConfiguration.h | 7 +- .../FBSDKErrorRecoveryConfiguration.m | 13 +- .../FBSDKGateKeeperManager.h} | 24 +- .../FBSDKGateKeeperManager.m | 178 + .../FBSDKServerConfiguration+Internal.h | 8 +- .../FBSDKServerConfiguration.h | 19 +- .../FBSDKServerConfiguration.m | 14 +- .../FBSDKServerConfigurationManager.m | 21 +- .../TokenCaching/FBSDKAccessTokenCache.m | 12 +- .../TokenCaching/FBSDKAccessTokenCacheV3.h | 3 +- .../TokenCaching/FBSDKAccessTokenCacheV3.m | 4 +- .../TokenCaching/FBSDKAccessTokenCacheV3_17.m | 4 +- .../TokenCaching/FBSDKAccessTokenCacheV3_21.m | 6 +- .../TokenCaching/FBSDKAccessTokenCacheV4.m | 8 +- .../TokenCaching/FBSDKAccessTokenCaching.h | 4 +- .../TokenCaching/FBSDKAccessTokenExpirer.m | 4 +- .../TokenCaching/FBSDKKeychainStore.h | 2 + .../TokenCaching/FBSDKKeychainStore.m | 19 +- .../FBSDKKeychainStoreViaBundleID.m | 2 +- .../Internal/UI/FBSDKButton+Subclass.h | 9 +- .../FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m | 2 - .../FBSDKCoreKit/Internal/UI/FBSDKIcon.m | 2 - .../FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h | 20 +- .../Internal/WebDialog/FBSDKWebDialog.m | 15 +- .../Internal/WebDialog/FBSDKWebDialogView.m | 2 +- .../FBSDKDynamicFrameworkLoader.m | 10 +- Example/Pods/FBSDKCoreKit/README.md | 2 + .../FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h | 62 - .../FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m | 38 - .../FBSDKLoginKit/FBSDKDeviceLoginManager.h | 105 - .../FBSDKLoginKit/FBSDKDeviceLoginManager.m | 233 - .../FBSDKDeviceLoginManagerResult.h | 50 - .../FBSDKDeviceLoginManagerResult.m | 33 - .../FBSDKLoginKit/FBSDKLoginButton.h | 131 - .../FBSDKLoginKit/FBSDKLoginButton.m | 359 - .../FBSDKLoginKit/FBSDKLoginConstants.h | 99 - .../FBSDKLoginKit/FBSDKLoginConstants.m | 21 - .../FBSDKLoginKit/FBSDKLoginKit.h | 31 - .../FBSDKLoginKit/FBSDKLoginManager.h | 212 - .../FBSDKLoginKit/FBSDKLoginManager.m | 859 --- .../FBSDKLoginManagerLoginResult.h | 64 - .../FBSDKLoginManagerLoginResult.m | 56 - .../FBSDKLoginKit/FBSDKLoginTooltipView.h | 90 - .../FBSDKLoginKit/FBSDKLoginTooltipView.m | 62 - .../FBSDKLoginKit/FBSDKTooltipView.h | 136 - .../FBSDKLoginKit/FBSDKTooltipView.m | 603 -- .../FBSDKDeviceLoginCodeInfo+Internal.h | 43 - .../Internal/FBSDKDeviceLoginError.h | 29 - .../Internal/FBSDKDeviceLoginError.m | 30 - .../Internal/FBSDKLoginCompletion+Internal.h | 39 - .../Internal/FBSDKLoginCompletion.h | 98 - .../Internal/FBSDKLoginCompletion.m | 332 - .../FBSDKLoginKit/Internal/FBSDKLoginError.h | 35 - .../FBSDKLoginKit/Internal/FBSDKLoginError.m | 252 - .../Internal/FBSDKLoginKit+Internal.h | 24 - .../Internal/FBSDKLoginManager+Internal.h | 81 - .../Internal/FBSDKLoginManagerLogger.h | 48 - .../Internal/FBSDKLoginManagerLogger.m | 309 - .../FBSDKLoginManagerLoginResult+Internal.h | 32 - .../Internal/FBSDKLoginUtility.h | 30 - .../Internal/FBSDKLoginUtility.m | 86 - .../Internal/_FBSDKLoginRecoveryAttempter.h | 23 - .../Internal/_FBSDKLoginRecoveryAttempter.m | 47 - .../FBSDKMarketingKit | Bin 0 -> 487840 bytes .../Headers/FBSDKAutoLog.h} | 3 +- .../Headers/FBSDKMarketingKit.h} | 8 +- .../FBSDKMarketingKit.framework/Info.plist | Bin 0 -> 734 bytes .../Modules/module.modulemap | 6 + .../LICENSE => FBSDKMarketingKit/LICENSE.txt} | 0 Example/Pods/FBSDKMarketingKit/README.txt | 46 + .../FBSDKShareKit/FBSDKAppGroupAddDialog.h | 96 - .../FBSDKShareKit/FBSDKAppGroupAddDialog.m | 185 - .../FBSDKShareKit/FBSDKAppGroupContent.h | 68 - .../FBSDKShareKit/FBSDKAppGroupContent.m | 109 - .../FBSDKShareKit/FBSDKAppGroupJoinDialog.h | 92 - .../FBSDKShareKit/FBSDKAppGroupJoinDialog.m | 167 - .../FBSDKShareKit/FBSDKAppInviteContent.h | 96 - .../FBSDKShareKit/FBSDKAppInviteContent.m | 177 - .../FBSDKShareKit/FBSDKAppInviteDialog.h | 118 - .../FBSDKShareKit/FBSDKAppInviteDialog.m | 83 - .../FBSDKCameraEffectArguments.h | 57 - .../FBSDKCameraEffectArguments.m | 177 - .../FBSDKShareKit/FBSDKCameraEffectTextures.h | 43 - .../FBSDKShareKit/FBSDKCameraEffectTextures.m | 132 - .../FBSDKShareKit/FBSDKGameRequestContent.h | 140 - .../FBSDKShareKit/FBSDKGameRequestContent.m | 235 - .../FBSDKShareKit/FBSDKGameRequestDialog.h | 108 - .../FBSDKShareKit/FBSDKGameRequestDialog.m | 274 - .../FBSDKShareKit/FBSDKHashtag.h | 61 - .../FBSDKShareKit/FBSDKHashtag.m | 123 - .../FBSDKShareKit/FBSDKLikeButton.h | 45 - .../FBSDKShareKit/FBSDKLikeButton.m | 294 - .../FBSDKShareKit/FBSDKLikeControl.h | 144 - .../FBSDKShareKit/FBSDKLikeControl.m | 664 -- .../FBSDKShareKit/FBSDKLikeObjectType.h | 40 - .../FBSDKShareKit/FBSDKLikeObjectType.m | 32 - .../FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h | 49 - .../FBSDKShareKit/FBSDKMessageDialog.h | 47 - .../FBSDKShareKit/FBSDKMessageDialog.m | 243 - .../FBSDKShareKit/FBSDKSendButton.h | 33 - .../FBSDKShareKit/FBSDKSendButton.m | 97 - .../FBSDKShareKit/FBSDKShareAPI.h | 94 - .../FBSDKShareKit/FBSDKShareAPI.m | 825 -- .../FBSDKShareKit/FBSDKShareButton.h | 33 - .../FBSDKShareKit/FBSDKShareButton.m | 90 - .../FBSDKShareCameraEffectContent.h | 53 - .../FBSDKShareCameraEffectContent.m | 236 - .../FBSDKShareKit/FBSDKShareConstants.h | 57 - .../FBSDKShareKit/FBSDKShareConstants.m | 24 - .../FBSDKShareKit/FBSDKShareDialog.h | 54 - .../FBSDKShareKit/FBSDKShareDialog.m | 1165 --- .../FBSDKShareKit/FBSDKShareDialogMode.h | 65 - .../FBSDKShareKit/FBSDKShareDialogMode.m | 51 - .../FBSDKShareKit/FBSDKShareKit.h | 62 - .../FBSDKShareKit/FBSDKShareLinkContent.h | 78 - .../FBSDKShareKit/FBSDKShareLinkContent.m | 228 - .../FBSDKShareKit/FBSDKShareMediaContent.h | 41 - .../FBSDKShareKit/FBSDKShareMediaContent.m | 227 - .../FBSDKShareMessengerActionButton.h | 34 - ...BSDKShareMessengerGenericTemplateContent.h | 55 - ...BSDKShareMessengerGenericTemplateContent.m | 177 - ...BSDKShareMessengerGenericTemplateElement.h | 56 - ...BSDKShareMessengerGenericTemplateElement.m | 71 - .../FBSDKShareMessengerMediaTemplateContent.h | 69 - .../FBSDKShareMessengerMediaTemplateContent.m | 204 - ...reMessengerOpenGraphMusicTemplateContent.h | 41 - ...reMessengerOpenGraphMusicTemplateContent.m | 139 - .../FBSDKShareMessengerURLActionButton.h | 62 - .../FBSDKShareMessengerURLActionButton.m | 82 - .../FBSDKShareKit/FBSDKShareOpenGraphAction.h | 70 - .../FBSDKShareKit/FBSDKShareOpenGraphAction.m | 117 - .../FBSDKShareOpenGraphContent.h | 50 - .../FBSDKShareOpenGraphContent.m | 191 - .../FBSDKShareKit/FBSDKShareOpenGraphObject.h | 59 - .../FBSDKShareKit/FBSDKShareOpenGraphObject.m | 63 - .../FBSDKShareOpenGraphValueContainer.h | 162 - .../FBSDKShareOpenGraphValueContainer.m | 238 - .../FBSDKShareKit/FBSDKSharePhoto.h | 98 - .../FBSDKShareKit/FBSDKSharePhoto.m | 224 - .../FBSDKShareKit/FBSDKSharePhotoContent.h | 41 - .../FBSDKShareKit/FBSDKSharePhotoContent.m | 229 - .../FBSDKShareKit/FBSDKShareVideo.h | 102 - .../FBSDKShareKit/FBSDKShareVideo.m | 265 - .../FBSDKShareKit/FBSDKShareVideoContent.h | 50 - .../FBSDKShareKit/FBSDKShareVideoContent.m | 249 - .../FBSDKShareKit/FBSDKSharing.h | 117 - .../FBSDKShareKit/FBSDKSharingButton.h | 37 - .../FBSDKShareKit/FBSDKSharingContent.h | 85 - .../FBSDKShareKit/FBSDKSharingScheme.h | 33 - .../FBSDKShareKit/FBSDKSharingValidation.h | 46 - .../FBSDKCameraEffectArguments+Internal.h | 25 - .../FBSDKCameraEffectTextures+Internal.h | 25 - .../Internal/FBSDKCheckmarkIcon.m | 43 - ...SDKGameRequestFrictionlessRecipientCache.h | 26 - ...SDKGameRequestFrictionlessRecipientCache.m | 101 - .../Internal/FBSDKLikeActionController.h | 48 - .../Internal/FBSDKLikeActionController.m | 1069 --- .../Internal/FBSDKLikeActionControllerCache.h | 31 - .../Internal/FBSDKLikeActionControllerCache.m | 116 - .../Internal/FBSDKLikeBoxBorderView.h | 33 - .../Internal/FBSDKLikeBoxBorderView.m | 323 - .../FBSDKShareKit/Internal/FBSDKLikeBoxView.h | 43 - .../FBSDKShareKit/Internal/FBSDKLikeBoxView.m | 108 - .../Internal/FBSDKLikeButton+Internal.h | 29 - .../Internal/FBSDKLikeButtonPopWAV.h | 24 - .../Internal/FBSDKLikeButtonPopWAV.m | 36 - .../Internal/FBSDKLikeControl+Internal.h | 27 - .../FBSDKShareKit/Internal/FBSDKLikeDialog.h | 49 - .../FBSDKShareKit/Internal/FBSDKLikeDialog.m | 159 - .../Internal/FBSDKMessengerIcon.h | 25 - .../Internal/FBSDKMessengerIcon.m | 50 - .../Internal/FBSDKShareDefines.h | 43 - .../FBSDKShareKit/Internal/FBSDKShareError.m | 30 - .../Internal/FBSDKShareKit+Internal.h | 27 - .../Internal/FBSDKShareLinkContent+Internal.h | 26 - .../FBSDKShareMessengerContentUtility.h | 49 - .../FBSDKShareMessengerContentUtility.m | 145 - ...SDKShareOpenGraphValueContainer+Internal.h | 29 - .../Internal/FBSDKShareUtility.h | 77 - .../Internal/FBSDKShareUtility.m | 729 -- .../Internal/FBSDKVideoUploader.h | 104 - .../Internal/FBSDKVideoUploader.m | 230 - Example/Pods/FBSDKShareKit/README.md | 41 - .../LICENSE | 0 .../README.md | 0 .../FBSDKCoreKit/FBSDKAppEventsUninstall.h | 1 - .../FBSDKCoreKit/FBSDKCodelessIndexer.h | 1 + .../FBSDKCoreKit/FBSDKGateKeeperManager.h | 1 + .../Private/FBSDKCoreKit/FBSDKURLConnection.h | 1 - .../FBSDKDeviceLoginCodeInfo+Internal.h | 1 - .../FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h | 1 - .../FBSDKLoginKit/FBSDKDeviceLoginError.h | 1 - .../FBSDKLoginKit/FBSDKDeviceLoginManager.h | 1 - .../FBSDKDeviceLoginManagerResult+Internal.h | 1 - .../FBSDKDeviceLoginManagerResult.h | 1 - .../Private/FBSDKLoginKit/FBSDKLoginButton.h | 1 - .../FBSDKLoginCompletion+Internal.h | 1 - .../FBSDKLoginKit/FBSDKLoginCompletion.h | 1 - .../FBSDKLoginKit/FBSDKLoginConstants.h | 1 - .../Private/FBSDKLoginKit/FBSDKLoginError.h | 1 - .../FBSDKLoginKit/FBSDKLoginKit+Internal.h | 1 - .../Private/FBSDKLoginKit/FBSDKLoginKit.h | 1 - .../FBSDKLoginManager+Internal.h | 1 - .../Private/FBSDKLoginKit/FBSDKLoginManager.h | 1 - .../FBSDKLoginKit/FBSDKLoginManagerLogger.h | 1 - .../FBSDKLoginManagerLoginResult+Internal.h | 1 - .../FBSDKLoginManagerLoginResult.h | 1 - .../FBSDKLoginKit/FBSDKLoginTooltipView.h | 1 - .../Private/FBSDKLoginKit/FBSDKLoginUtility.h | 1 - .../Private/FBSDKLoginKit/FBSDKTooltipView.h | 1 - .../_FBSDKLoginRecoveryAttempter.h | 1 - .../FBSDKShareKit/FBSDKAppGroupAddDialog.h | 1 - .../FBSDKShareKit/FBSDKAppGroupContent.h | 1 - .../FBSDKShareKit/FBSDKAppGroupJoinDialog.h | 1 - .../FBSDKShareKit/FBSDKAppInviteContent.h | 1 - .../FBSDKShareKit/FBSDKAppInviteDialog.h | 1 - .../FBSDKCameraEffectArguments+Internal.h | 1 - .../FBSDKCameraEffectArguments.h | 1 - .../FBSDKCameraEffectTextures+Internal.h | 1 - .../FBSDKShareKit/FBSDKCameraEffectTextures.h | 1 - .../FBSDKShareKit/FBSDKCheckmarkIcon.h | 1 - .../FBSDKShareKit/FBSDKGameRequestContent.h | 1 - .../FBSDKShareKit/FBSDKGameRequestDialog.h | 1 - ...SDKGameRequestFrictionlessRecipientCache.h | 1 - .../FBSDKShareKit/FBSDKHashtag.h | 1 - .../FBSDKShareKit/FBSDKLikeActionController.h | 1 - .../FBSDKLikeActionControllerCache.h | 1 - .../FBSDKShareKit/FBSDKLikeBoxBorderView.h | 1 - .../FBSDKShareKit/FBSDKLikeBoxView.h | 1 - .../FBSDKShareKit/FBSDKLikeButton+Internal.h | 1 - .../FBSDKShareKit/FBSDKLikeButton.h | 1 - .../FBSDKShareKit/FBSDKLikeButtonPopWAV.h | 1 - .../FBSDKShareKit/FBSDKLikeControl+Internal.h | 1 - .../FBSDKShareKit/FBSDKLikeControl.h | 1 - .../FBSDKShareKit/FBSDKLikeDialog.h | 1 - .../FBSDKShareKit/FBSDKLikeObjectType.h | 1 - .../FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h | 1 - .../FBSDKShareKit/FBSDKMessageDialog.h | 1 - .../FBSDKShareKit/FBSDKMessengerIcon.h | 1 - .../FBSDKShareKit/FBSDKSendButton.h | 1 - .../FBSDKShareKit/FBSDKShareAPI.h | 1 - .../FBSDKShareKit/FBSDKShareButton.h | 1 - .../FBSDKShareCameraEffectContent.h | 1 - .../FBSDKShareKit/FBSDKShareConstants.h | 1 - .../FBSDKShareKit/FBSDKShareDefines.h | 1 - .../FBSDKShareKit/FBSDKShareDialog.h | 1 - .../FBSDKShareKit/FBSDKShareDialogMode.h | 1 - .../FBSDKShareKit/FBSDKShareError.h | 1 - .../FBSDKShareKit/FBSDKShareKit+Internal.h | 1 - .../FBSDKShareKit/FBSDKShareKit.h | 1 - .../FBSDKShareLinkContent+Internal.h | 1 - .../FBSDKShareKit/FBSDKShareLinkContent.h | 1 - .../FBSDKShareKit/FBSDKShareMediaContent.h | 1 - .../FBSDKShareMessengerActionButton.h | 1 - .../FBSDKShareMessengerContentUtility.h | 1 - ...BSDKShareMessengerGenericTemplateContent.h | 1 - ...BSDKShareMessengerGenericTemplateElement.h | 1 - .../FBSDKShareMessengerMediaTemplateContent.h | 1 - ...reMessengerOpenGraphMusicTemplateContent.h | 1 - .../FBSDKShareMessengerURLActionButton.h | 1 - .../FBSDKShareKit/FBSDKShareOpenGraphAction.h | 1 - .../FBSDKShareOpenGraphContent.h | 1 - .../FBSDKShareKit/FBSDKShareOpenGraphObject.h | 1 - ...SDKShareOpenGraphValueContainer+Internal.h | 1 - .../FBSDKShareOpenGraphValueContainer.h | 1 - .../FBSDKShareKit/FBSDKSharePhoto.h | 1 - .../FBSDKShareKit/FBSDKSharePhotoContent.h | 1 - .../FBSDKShareKit/FBSDKShareUtility.h | 1 - .../FBSDKShareKit/FBSDKShareVideo.h | 1 - .../FBSDKShareKit/FBSDKShareVideoContent.h | 1 - .../FBSDKShareKit/FBSDKSharing.h | 1 - .../FBSDKShareKit/FBSDKSharingButton.h | 1 - .../FBSDKShareKit/FBSDKSharingContent.h | 1 - .../FBSDKShareKit/FBSDKSharingScheme.h | 1 - .../FBSDKShareKit/FBSDKSharingValidation.h | 1 - .../FBSDKShareKit/FBSDKVideoUploader.h | 1 - .../FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h | 1 - .../FBSDKLoginKit/FBSDKDeviceLoginManager.h | 1 - .../FBSDKDeviceLoginManagerResult.h | 1 - .../Public/FBSDKLoginKit/FBSDKLoginButton.h | 1 - .../FBSDKLoginKit/FBSDKLoginConstants.h | 1 - .../Public/FBSDKLoginKit/FBSDKLoginKit.h | 1 - .../Public/FBSDKLoginKit/FBSDKLoginManager.h | 1 - .../FBSDKLoginManagerLoginResult.h | 1 - .../FBSDKLoginKit/FBSDKLoginTooltipView.h | 1 - .../Public/FBSDKLoginKit/FBSDKTooltipView.h | 1 - .../FBSDKMarketingKit/FBSDKAutoLog.h | 1 + .../FBSDKMarketingKit/FBSDKMarketingKit.h | 1 + .../FBSDKShareKit/FBSDKAppGroupAddDialog.h | 1 - .../FBSDKShareKit/FBSDKAppGroupContent.h | 1 - .../FBSDKShareKit/FBSDKAppGroupJoinDialog.h | 1 - .../FBSDKShareKit/FBSDKAppInviteContent.h | 1 - .../FBSDKShareKit/FBSDKAppInviteDialog.h | 1 - .../FBSDKCameraEffectArguments.h | 1 - .../FBSDKShareKit/FBSDKCameraEffectTextures.h | 1 - .../FBSDKShareKit/FBSDKGameRequestContent.h | 1 - .../FBSDKShareKit/FBSDKGameRequestDialog.h | 1 - .../FBSDKShareKit/FBSDKHashtag.h | 1 - .../FBSDKShareKit/FBSDKLikeButton.h | 1 - .../FBSDKShareKit/FBSDKLikeControl.h | 1 - .../FBSDKShareKit/FBSDKLikeObjectType.h | 1 - .../FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h | 1 - .../FBSDKShareKit/FBSDKMessageDialog.h | 1 - .../FBSDKShareKit/FBSDKSendButton.h | 1 - .../FBSDKShareKit/FBSDKShareAPI.h | 1 - .../FBSDKShareKit/FBSDKShareButton.h | 1 - .../FBSDKShareCameraEffectContent.h | 1 - .../FBSDKShareKit/FBSDKShareConstants.h | 1 - .../FBSDKShareKit/FBSDKShareDialog.h | 1 - .../FBSDKShareKit/FBSDKShareDialogMode.h | 1 - .../FBSDKShareKit/FBSDKShareKit.h | 1 - .../FBSDKShareKit/FBSDKShareLinkContent.h | 1 - .../FBSDKShareKit/FBSDKShareMediaContent.h | 1 - .../FBSDKShareMessengerActionButton.h | 1 - ...BSDKShareMessengerGenericTemplateContent.h | 1 - ...BSDKShareMessengerGenericTemplateElement.h | 1 - .../FBSDKShareMessengerMediaTemplateContent.h | 1 - ...reMessengerOpenGraphMusicTemplateContent.h | 1 - .../FBSDKShareMessengerURLActionButton.h | 1 - .../FBSDKShareKit/FBSDKShareOpenGraphAction.h | 1 - .../FBSDKShareOpenGraphContent.h | 1 - .../FBSDKShareKit/FBSDKShareOpenGraphObject.h | 1 - .../FBSDKShareOpenGraphValueContainer.h | 1 - .../FBSDKShareKit/FBSDKSharePhoto.h | 1 - .../FBSDKShareKit/FBSDKSharePhotoContent.h | 1 - .../FBSDKShareKit/FBSDKShareVideo.h | 1 - .../FBSDKShareKit/FBSDKShareVideoContent.h | 1 - .../FBSDKShareKit/FBSDKSharing.h | 1 - .../FBSDKShareKit/FBSDKSharingButton.h | 1 - .../FBSDKShareKit/FBSDKSharingContent.h | 1 - .../FBSDKShareKit/FBSDKSharingScheme.h | 1 - .../FBSDKShareKit/FBSDKSharingValidation.h | 1 - .../Pods/Local Podspecs/PNObject.podspec.json | 8 +- Example/Pods/Manifest.lock | 39 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 6827 +++++++---------- .../PureLayout/PureLayout/ALView+PureLayout.h | 12 +- .../PureLayout/PureLayout/ALView+PureLayout.m | 2 +- Example/Pods/PureLayout/README.md | 12 + .../FBSDKLoginKit/FBSDKLoginKit-dummy.m | 5 - .../FBSDKLoginKit/FBSDKLoginKit-prefix.pch | 12 - .../FBSDKLoginKit/FBSDKLoginKit.xcconfig | 12 - .../FBSDKShareKit/FBSDKShareKit-dummy.m | 5 - .../FBSDKShareKit/FBSDKShareKit-prefix.pch | 12 - .../FBSDKShareKit/FBSDKShareKit.xcconfig | 12 - .../PNObject/PNObject.xcconfig | 5 +- ...PNObject_Example-acknowledgements.markdown | 4 +- ...ds-PNObject_Example-acknowledgements.plist | 4 +- .../Pods-PNObject_Example.debug.xcconfig | 9 +- .../Pods-PNObject_Example.release.xcconfig | 9 +- .../Pods-PNObject_Tests.debug.xcconfig | 10 +- .../Pods-PNObject_Tests.release.xcconfig | 10 +- PNObject.podspec | 6 +- PNObject/Classes/PNObjectConfig.h | 19 +- PNObject/Classes/PNObjectConfig.m | 74 +- PNObject/Classes/PNObjectModel.h | 4 +- PNObject/Classes/PNObjectModel.m | 45 +- 466 files changed, 5976 insertions(+), 26033 deletions(-) rename Example/Pods/{FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h => FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h} (93%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.m delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h delete mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m rename Example/Pods/{FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginManagerResult+Internal.h => FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h} (74%) create mode 100644 Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginCodeInfo+Internal.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h delete mode 100644 Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m create mode 100644 Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/FBSDKMarketingKit rename Example/Pods/{FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.h => FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKAutoLog.h} (96%) rename Example/Pods/{FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h => FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKMarketingKit.h} (80%) create mode 100644 Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Info.plist create mode 100644 Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Modules/module.modulemap rename Example/Pods/{FBSDKLoginKit/LICENSE => FBSDKMarketingKit/LICENSE.txt} (100%) create mode 100644 Example/Pods/FBSDKMarketingKit/README.txt 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/FBSDKAppGroupContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.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/FBSDKAppInviteContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.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/FBSDKCameraEffectArguments.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.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/FBSDKLikeObjectType.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectTextures+Internal.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h 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/FBSDKLikeControl+Internal.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h delete mode 100644 Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m delete mode 100644 Example/Pods/FBSDKShareKit/README.md rename Example/Pods/{FBSDKShareKit => Facebook-iOS-SDK}/LICENSE (100%) rename Example/Pods/{FBSDKLoginKit => Facebook-iOS-SDK}/README.md (100%) delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsUninstall.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessIndexer.h create mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKGateKeeperManager.h delete mode 120000 Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLConnection.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginError.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManager.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManagerResult+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginButton.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginCompletion+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginCompletion.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginConstants.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginError.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManager+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManager.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLogger.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLoginResult+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginTooltipView.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginUtility.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKTooltipView.h delete mode 120000 Example/Pods/Headers/Private/FBSDKLoginKit/_FBSDKLoginRecoveryAttempter.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCheckmarkIcon.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestFrictionlessRecipientCache.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionController.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionControllerCache.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxBorderView.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxView.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton+Internal.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/FBSDKLikeDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessengerIcon.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDefines.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareError.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerContentUtility.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer+Internal.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareUtility.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h delete mode 120000 Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKVideoUploader.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginManager.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginButton.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginConstants.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginManager.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginTooltipView.h delete mode 120000 Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKTooltipView.h create mode 120000 Example/Pods/Headers/Public/FBSDKMarketingKit/FBSDKMarketingKit/FBSDKAutoLog.h create mode 120000 Example/Pods/Headers/Public/FBSDKMarketingKit/FBSDKMarketingKit/FBSDKMarketingKit.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.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 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h delete mode 120000 Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h delete mode 100644 Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-dummy.m delete mode 100644 Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch delete mode 100644 Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig delete mode 100644 Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-dummy.m delete mode 100644 Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch delete mode 100644 Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 45b638f..1c45441 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -26,12 +26,21 @@ PODS: - DJLocalization/Core (= 1.2.2) - DJLocalization/Core (1.2.2) - Expecta (1.0.6) - - FBSDKCoreKit (4.37.0): - - Bolts (~> 1.7) - - FBSDKLoginKit (4.37.0): + - Facebook-iOS-SDK (4.38.0): + - Bolts (~> 1.9) + - Facebook-iOS-SDK/CoreKit (= 4.38.0) + - Facebook-iOS-SDK/MarketingKit (= 4.38.0) + - Facebook-iOS-SDK/CoreKit (4.38.0): + - Bolts (~> 1.9) + - FBSDKCoreKit + - Facebook-iOS-SDK/MarketingKit (4.38.0): + - Bolts (~> 1.9) + - Facebook-iOS-SDK/CoreKit + - FBSDKMarketingKit + - FBSDKCoreKit (4.39.0): + - Bolts (~> 1.9) + - FBSDKMarketingKit (4.38.0): - FBSDKCoreKit - - FBSDKShareKit (4.37.0): - - FBSDKCoreKit (~> 4.37.0) - NSDataAES (0.2.2) - NSDate_Utils (1.1.0): - DJLocalization @@ -43,9 +52,7 @@ PODS: - CodFis-Helper - DDDKeychainWrapper - DJLocalization - - FBSDKCoreKit - - FBSDKLoginKit - - FBSDKShareKit + - Facebook-iOS-SDK - NSDataAES - NSDate_Utils - NSString-Helper @@ -54,7 +61,7 @@ PODS: - RZDataBinding - StrongestPasswordValidator - UIDevice-Utils - - PureLayout (3.1.2) + - PureLayout (3.1.4) - RZDataBinding (2.1.1) - Specta (1.0.7) - StrongestPasswordValidator (0.1.2) @@ -74,9 +81,9 @@ SPEC REPOS: - DDDKeychainWrapper - DJLocalization - Expecta + - Facebook-iOS-SDK - FBSDKCoreKit - - FBSDKLoginKit - - FBSDKShareKit + - FBSDKMarketingKit - NSDataAES - NSDate_Utils - NSString-Helper @@ -99,16 +106,16 @@ SPEC CHECKSUMS: DDDKeychainWrapper: e681a4daba6448786fa83b4941f58102a33b1897 DJLocalization: 0c84029af375647d4104a42ae36be87194c46c47 Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5 - FBSDKCoreKit: fe5f3474499a81963e11e3f3a5c753d0a95ca2b4 - FBSDKLoginKit: 2f7249686d1e30ce8a5ef5400eedf50b3e3df332 - FBSDKShareKit: 52e0083222c38e930eb6878007478326599195c3 + Facebook-iOS-SDK: 9077b67c4178ea46c62997bcf2b6314ca6555440 + FBSDKCoreKit: 1e3981faefab8c88edfaa9eecd94aab02d99a9bc + FBSDKMarketingKit: e609f39d74ab273cf52e2f8b7e8829ed412b2827 NSDataAES: 967ea3337476a80e9838a533c25d570a06855ed0 NSDate_Utils: c858a89da6e204ecf53aca48dbccb4da4d25bc9e NSString-Helper: 1c259caa6c845e79e0bb45ee25e34f95d86d2317 nv-ios-http-status: b6c2b5fc8656cc19e0d3000dadce2080b99d0e2f PEAR-FileManager-iOS: 3bc403f68a53483f5629aa822f4649e40275c4d3 - PNObject: d92d660eb43b9385e7148e42598b8a7d3a785834 - PureLayout: 4634d0b61e3b5021166e8ec7c18e9e0ca0720c8b + PNObject: 11e8fe8e955d327a9832ed63f6720f60b877d66a + PureLayout: f08c01b8dec00bb14a1fefa3de4c7d9c265df85e RZDataBinding: 289e2fbdce8b9585afef69def83425c5d380ffbd Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66 StrongestPasswordValidator: 921e42615bdf353513c6f925bffd4fc29865dbd7 diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h index 994b4b8..ff73de5 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h @@ -20,7 +20,8 @@ #import #import -#import + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 /** Notification indicating that the `currentAccessToken` has changed. @@ -29,7 +30,20 @@ `FBSDKAccessTokenChangeOldKey` and `FBSDKAccessTokenChangeNewKey`. */ -FBSDK_EXTERN NSString *const FBSDKAccessTokenDidChangeNotification; +FOUNDATION_EXPORT NSNotificationName const FBSDKAccessTokenDidChangeNotification; + +#else + +/** + Notification indicating that the `currentAccessToken` has changed. + + the userInfo dictionary of the notification will contain keys + `FBSDKAccessTokenChangeOldKey` and + `FBSDKAccessTokenChangeNewKey`. + */ +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidChangeNotification; + +#endif /** A key in the notification's userInfo that will be set @@ -44,27 +58,33 @@ FBSDK_EXTERN 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). */ -FBSDK_EXTERN NSString *const FBSDKAccessTokenDidChangeUserID; +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidChangeUserIDKey; + +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidChangeUserID +DEPRECATED_MSG_ATTRIBUTE("Renamed `FBSDKAccessTokenDidChangeUserIDKey`"); /* key in notification's userInfo object for getting the old token. If there was no old token, the key will not be present. */ -FBSDK_EXTERN NSString *const FBSDKAccessTokenChangeOldKey; +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenChangeOldKey; /* key in notification's userInfo object for getting the new token. If there is no new token, the key will not be present. */ -FBSDK_EXTERN NSString *const FBSDKAccessTokenChangeNewKey; +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenChangeNewKey; /* A key in the notification's userInfo that will be set if and only if the token has expired. */ -FBSDK_EXTERN NSString *const FBSDKAccessTokenDidExpire; +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidExpireKey; + +FOUNDATION_EXPORT NSString *const FBSDKAccessTokenDidExpire +DEPRECATED_MSG_ATTRIBUTE("Renamed `FBSDKAccessTokenDidExpireKey`"); /** diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m index 3bb920a..f26a9e2 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m @@ -23,10 +23,21 @@ #import "FBSDKMath.h" #import "FBSDKSettings+Internal.h" +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +NSNotificationName const FBSDKAccessTokenDidChangeNotification = @"com.facebook.sdk.FBSDKAccessTokenData.FBSDKAccessTokenDidChangeNotification"; + +#else + NSString *const FBSDKAccessTokenDidChangeNotification = @"com.facebook.sdk.FBSDKAccessTokenData.FBSDKAccessTokenDidChangeNotification"; + +#endif + +NSString *const FBSDKAccessTokenDidChangeUserIDKey = @"FBSDKAccessTokenDidChangeUserID"; NSString *const FBSDKAccessTokenDidChangeUserID = @"FBSDKAccessTokenDidChangeUserID"; NSString *const FBSDKAccessTokenChangeNewKey = @"FBSDKAccessToken"; NSString *const FBSDKAccessTokenChangeOldKey = @"FBSDKAccessTokenOld"; +NSString *const FBSDKAccessTokenDidExpireKey = @"FBSDKAccessTokenDidExpire"; NSString *const FBSDKAccessTokenDidExpire = @"FBSDKAccessTokenDidExpire"; static FBSDKAccessToken *g_currentAccessToken; @@ -43,11 +54,6 @@ static FBSDKAccessToken *g_currentAccessToken; @implementation FBSDKAccessToken -- (instancetype)init NS_UNAVAILABLE -{ - assert(0); -} - - (instancetype)initWithTokenString:(NSString *)tokenString permissions:(NSArray *)permissions declinedPermissions:(NSArray *)declinedPermissions @@ -117,7 +123,7 @@ static FBSDKAccessToken *g_currentAccessToken; [FBSDKInternalUtility 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]) { - userInfo[FBSDKAccessTokenDidChangeUserID] = @YES; + userInfo[FBSDKAccessTokenDidChangeUserIDKey] = @YES; } g_currentAccessToken = token; @@ -128,7 +134,7 @@ static FBSDKAccessToken *g_currentAccessToken; [FBSDKInternalUtility deleteFacebookCookies]; } - [[FBSDKSettings accessTokenCache] cacheAccessToken:token]; + [FBSDKSettings accessTokenCache].accessToken = token; [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKAccessTokenDidChangeNotification object:[self class] userInfo:userInfo]; @@ -149,7 +155,7 @@ static FBSDKAccessToken *g_currentAccessToken; [connection start]; } else { if (completionHandler) { - completionHandler(nil, nil, [FBSDKError errorWithCode:FBSDKAccessTokenRequiredErrorCode message:@"No current access token to refresh"]); + completionHandler(nil, nil, [NSError fbErrorWithCode:FBSDKErrorAccessTokenRequired message:@"No current access token to refresh"]); } } } @@ -159,14 +165,14 @@ static FBSDKAccessToken *g_currentAccessToken; - (NSUInteger)hash { NSUInteger subhashes[] = { - [self.tokenString hash], - [self.permissions hash], - [self.declinedPermissions hash], - [self.appID hash], - [self.userID hash], - [self.refreshDate hash], - [self.expirationDate hash], - [self.dataAccessExpirationDate hash] + self.tokenString.hash, + self.permissions.hash, + self.declinedPermissions.hash, + self.appID.hash, + self.userID.hash, + self.refreshDate.hash, + self.expirationDate.hash, + self.dataAccessExpirationDate.hash }; return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; } @@ -210,7 +216,7 @@ static FBSDKAccessToken *g_currentAccessToken; return YES; } -- (id)initWithCoder:(NSCoder *)decoder +- (instancetype)initWithCoder:(NSCoder *)decoder { NSString *appID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_ACCESSTOKEN_APPID_KEY]; NSSet *declinedPermissions = [decoder decodeObjectOfClass:[NSSet class] forKey:FBSDK_ACCESSTOKEN_DECLINEDPERMISSIONS_KEY]; @@ -222,8 +228,8 @@ static FBSDKAccessToken *g_currentAccessToken; NSDate *dataAccessExpirationDate = [decoder decodeObjectOfClass:[NSDate class] forKey:FBSDK_ACCESSTOKEN_DATA_EXPIRATIONDATE_KEY]; return [self initWithTokenString:tokenString - permissions:[permissions allObjects] - declinedPermissions:[declinedPermissions allObjects] + permissions:permissions.allObjects + declinedPermissions:declinedPermissions.allObjects appID:appID userID:userID expirationDate:expirationDate diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h index 3735685..4216bfd 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h @@ -24,16 +24,23 @@ #import -#import "FBSDKMacros.h" - @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. */ -FBSDK_EXTERN NSString *const FBSDKAppEventsLoggingResultNotification; +FOUNDATION_EXPORT NSNotificationName const FBSDKAppEventsLoggingResultNotification; + +#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; + +#endif /** optional plist key ("FacebookLoggingOverrideAppID") for setting `loggingOverrideAppID` */ -FBSDK_EXTERN NSString *const FBSDKAppEventsOverrideAppIDBundleKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsOverrideAppIDBundleKey; /** @@ -100,70 +107,70 @@ typedef NS_ENUM(NSUInteger, FBSDKProductCondition) */ /** Log this event when the user has achieved a level in the app. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameAchievedLevel; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAchievedLevel; /** Log this event when the user has entered their payment info. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameAddedPaymentInfo; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAddedPaymentInfo; /** Log this event when the user has added an item to their cart. The valueToSum passed to logEvent should be the item's price. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameAddedToCart; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAddedToCart; /** Log this event when the user has added an item to their wishlist. The valueToSum passed to logEvent should be the item's price. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameAddedToWishlist; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAddedToWishlist; /** Log this event when a user has completed registration with the app. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameCompletedRegistration; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameCompletedRegistration; /** Log this event when the user has completed a tutorial in the app. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameCompletedTutorial; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameCompletedTutorial; /** Log this event when the user has entered the checkout process. The valueToSum passed to logEvent should be the total price in the cart. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameInitiatedCheckout; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameInitiatedCheckout; /** Log this event when the user has rated an item in the app. The valueToSum passed to logEvent should be the numeric rating. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameRated; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameRated; /** Log this event when a user has performed a search within the app. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameSearched; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSearched; /** Log this event when the user has spent app credits. The valueToSum passed to logEvent should be the number of credits spent. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameSpentCredits; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSpentCredits; /** Log this event when the user has unlocked an achievement in the app. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameUnlockedAchievement; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameUnlockedAchievement; /** Log this event when a user has viewed a form of content in the app. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameViewedContent; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameViewedContent; /** A telephone/SMS, email, chat or other type of contact between a customer and your business. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameContact; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameContact; /** The customization of products through a configuration tool or other application your business owns. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameCustomizeProduct; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameCustomizeProduct; /** The donation of funds to your organization or cause. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameDonate; +FOUNDATION_EXPORT NSString *const 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). */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFindLocation; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFindLocation; /** The booking of an appointment to visit one of your locations. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameSchedule; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSchedule; /** The start of a free trial of a product or service you offer (example: trial subscription). */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameStartTrial; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameStartTrial; -/** The submission of an application for a product, service or program you offer (example: credit card, educational program or job).. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameSubmitApplication; +/** 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; /** The start of a paid subscription for a product or service you offer. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameSubscribe; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSubscribe; /** Log this event when the user views an ad. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameAdImpression; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAdImpression; /** Log this event when the user clicks an ad. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameAdClick; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAdClick; /** @methodgroup Predefined event name parameters for common additional information to accompany events logged through the `logEvent` family @@ -176,40 +183,104 @@ FBSDK_EXTERN NSString *const FBSDKAppEventNameAdClick; * Example: * "[{\"id\": \"1234\", \"quantity\": 2, \"item_price\": 5.99}, {\"id\": \"5678\", \"quantity\": 1, \"item_price\": 9.99}]" */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameContent; +FOUNDATION_EXPORT NSString *const 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. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameContentID; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameContentID; /** Parameter key used to specify a generic content type/family for the logged event, e.g. "music", "photo", "video". Options to use will vary based upon what the app is all about. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameContentType; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameContentType; /** Parameter key used to specify currency used with logged event. E.g. "USD", "EUR", "GBP". See ISO-4217 for specific values. One reference for these is . */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameCurrency; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameCurrency; /** Parameter key used to specify a description appropriate to the event being logged. E.g., the name of the achievement unlocked in the `FBAppEventNameAchievementUnlocked` event. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameDescription; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameDescription; /** Parameter key used to specify the level achieved in a `FBAppEventNameAchieved` event. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameLevel; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameLevel; /** Parameter key used to specify the maximum rating available for the `FBAppEventNameRate` event. E.g., "5" or "10". */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameMaxRatingValue; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameMaxRatingValue; /** Parameter key used to specify how many items are being processed for an `FBAppEventNameInitiatedCheckout` or `FBAppEventNamePurchased` event. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameNumItems; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameNumItems; /** Parameter key used to specify whether payment info is available for the `FBAppEventNameInitiatedCheckout` event. `FBSDKAppEventParameterValueYes` and `FBSDKAppEventParameterValueNo` are good canonical values to use for this parameter. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNamePaymentInfoAvailable; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNamePaymentInfoAvailable; /** Parameter key used to specify method user has used to register for the app, e.g., "Facebook", "email", "Twitter", etc */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameRegistrationMethod; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameRegistrationMethod; /** Parameter key used to specify the string provided by the user for a search operation. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameSearchString; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameSearchString; /** Parameter key used to specify whether the activity being logged about was successful or not. `FBSDKAppEventParameterValueYes` and `FBSDKAppEventParameterValueNo` are good canonical values to use for this parameter. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameSuccess; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameSuccess; + +/** + @methodgroup Predefined event name parameters for common additional information to accompany events logged through the `logProductItem` method on `FBSDKAppEvents`. + */ + +/** Parameter key used to specify the product item's custom label 0. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel0; + +/** Parameter key used to specify the product item's custom label 1. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel1; + +/** Parameter key used to specify the product item's custom label 2. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel2; + +/** Parameter key used to specify the product item's custom label 3. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel3; + +/** Parameter key used to specify the product item's custom label 4. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel4; + +/** Parameter key used to specify the product item's AppLink app URL for iOS. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIOSUrl; + +/** Parameter key used to specify the product item's AppLink app ID for iOS App Store. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIOSAppStoreID; + +/** Parameter key used to specify the product item's AppLink app name for iOS. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIOSAppName; + +/** Parameter key used to specify the product item's AppLink app URL for iPhone. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPhoneUrl; + +/** Parameter key used to specify the product item's AppLink app ID for iPhone App Store. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPhoneAppStoreID; + +/** Parameter key used to specify the product item's AppLink app name for iPhone. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPhoneAppName; + +/** Parameter key used to specify the product item's AppLink app URL for iPad. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPadUrl; + +/** Parameter key used to specify the product item's AppLink app ID for iPad App Store. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPadAppStoreID; + +/** Parameter key used to specify the product item's AppLink app name for iPad. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPadAppName; + +/** Parameter key used to specify the product item's AppLink app URL for Android. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkAndroidUrl; + +/** Parameter key used to specify the product item's AppLink fully-qualified package name for intent generation. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkAndroidPackage; + +/** Parameter key used to specify the product item's AppLink app name for Android. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkAndroidAppName; + +/** Parameter key used to specify the product item's AppLink app URL for Windows Phone. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneUrl; + +/** Parameter key used to specify the product item's AppLink app ID, as a GUID, for App Store. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneAppID; + +/** Parameter key used to specify the product item's AppLink app name for Windows Phone. */ +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneAppName; /* @methodgroup Predefined values to assign to event parameters that accompany events logged through the `logEvent` family @@ -217,19 +288,19 @@ FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameSuccess; */ /** Yes-valued parameter value to be used with parameter keys that need a Yes/No value */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterValueYes; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterValueYes; /** No-valued parameter value to be used with parameter keys that need a Yes/No value */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterValueNo; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterValueNo; /** Parameter key used to specify the type of ad in an FBSDKAppEventNameAdImpression * or FBSDKAppEventNameAdClick event. * E.g. "banner", "interstitial", "rewarded_video", "native" */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameAdType; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameAdType; /** Parameter key used to specify the unique ID for all events within a subscription * in an FBSDKAppEventNameSubscribe or FBSDKAppEventNameStartTrial event. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameOrderID; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID; /** @@ -530,7 +601,7 @@ FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameOrderID; + (void)activateApp; /* - * Push Notifications Registration + * Push Notifications Registration and Uninstall Tracking */ /** @@ -544,6 +615,17 @@ FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameOrderID; */ + (void)setPushNotificationsDeviceToken:(NSData *)deviceToken; +/** + Sets and sends device token string to register the current application for push notifications. + + + + Sets and sends a device token string + + @param deviceTokenString Device token string. + */ ++ (void)setPushNotificationsDeviceTokenString:(NSString *)deviceTokenString; + /* * Control over event batching/flushing */ @@ -677,16 +759,16 @@ FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameOrderID; @param zip user's zip @param country user's 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; ++ (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; /* Returns the set user data else nil */ @@ -719,4 +801,22 @@ FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameOrderID; + (void)augmentHybridWKWebView:(WKWebView *)webView; #endif +/* + * Unity helper functions + */ + +/** + + Set if the Unity is already initialized + + @param isUnityInit whether Unity is initialized. + + */ ++ (void)setIsUnityInit:(BOOL)isUnityInit; + +/* + Send event binding to Unity + */ ++ (void)sendEventBindingsToUnity; + @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m index 57788a1..366d086 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m @@ -19,6 +19,8 @@ #import "FBSDKAppEvents.h" #import "FBSDKAppEvents+Internal.h" +#import + #import #import "FBSDKAccessToken.h" @@ -97,6 +99,31 @@ NSString *const FBSDKAppEventParameterLaunchSource = @"fb_mobile_l NSString *const FBSDKAppEventParameterNameAdType = @"ad_type"; NSString *const 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"; + // // Public event parameter values // @@ -238,8 +265,16 @@ NSString *const FBSDKAppEventsDialogShareContentTypeMessengerMediaTemplate NSString *const FBSDKAppEventsDialogShareContentTypeMessengerOpenGraphMusicTemplate = @"OpenGraphMusicTemplate"; NSString *const FBSDKAppEventsDialogShareContentTypeUnknown = @"Unknown"; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +NSNotificationName const FBSDKAppEventsLoggingResultNotification = @"com.facebook.sdk:FBSDKAppEventsLoggingResultNotification"; + +#else + NSString *const FBSDKAppEventsLoggingResultNotification = @"com.facebook.sdk:FBSDKAppEventsLoggingResultNotification"; +#endif + NSString *const FBSDKAppEventsOverrideAppIDBundleKey = @"FacebookLoggingOverrideAppID"; // @@ -271,11 +306,19 @@ NSString *const FBSDKAPPEventsWKWebViewMessagesProtocolKey = @"fbmq-0.1"; #define FLUSH_PERIOD_IN_SECONDS 15 #define USER_ID_USER_DEFAULTS_KEY @"com.facebook.sdk.appevents.userid" +#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 () -@property (nonatomic, readwrite) FBSDKAppEventsFlushBehavior flushBehavior; +@property (nonatomic, assign) FBSDKAppEventsFlushBehavior flushBehavior; //for testing only. @property (nonatomic, assign) BOOL disableTimer; @@ -294,6 +337,7 @@ static NSString *g_overrideAppID = nil; FBSDKEventBindingManager *_eventBindingManager; #endif NSString *_userID; + BOOL _isUnityInit; } #pragma mark - Object Lifecycle @@ -319,6 +363,7 @@ static NSString *g_overrideAppID = nil; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; _userID = [defaults stringForKey:USER_ID_USER_DEFAULTS_KEY]; + [self fetchServerConfiguration:nil]; } return self; @@ -380,7 +425,7 @@ static NSString *g_overrideAppID = nil; parameters:(NSDictionary *)parameters { [FBSDKAppEvents logEvent:eventName - valueToSum:[NSNumber numberWithDouble:valueToSum] + valueToSum:@(valueToSum) parameters:parameters accessToken:nil]; } @@ -432,7 +477,7 @@ static NSString *g_overrideAppID = nil; } [FBSDKAppEvents logEvent:FBSDKAppEventNamePurchased - valueToSum:[NSNumber numberWithDouble:purchaseAmount] + valueToSum:@(purchaseAmount) parameters:newParameters accessToken:accessToken]; @@ -523,7 +568,7 @@ static NSString *g_overrideAppID = nil; [dict setValuesForKeysWithDictionary:parameters]; } - [dict setObject:itemID forKey:FBSDKAppEventParameterProductItemID]; + dict[FBSDKAppEventParameterProductItemID] = itemID; NSString *avail = nil; switch (availability) { @@ -539,7 +584,7 @@ static NSString *g_overrideAppID = nil; avail = @"DISCONTINUED"; break; } if (avail) { - [dict setObject:avail forKey:FBSDKAppEventParameterProductAvailability]; + dict[FBSDKAppEventParameterProductAvailability] = avail; } NSString *cond = nil; @@ -552,23 +597,23 @@ static NSString *g_overrideAppID = nil; cond = @"USED"; break; } if (cond) { - [dict setObject:cond forKey:FBSDKAppEventParameterProductCondition]; + dict[FBSDKAppEventParameterProductCondition] = cond; } - [dict setObject:description forKey:FBSDKAppEventParameterProductDescription]; - [dict setObject:imageLink forKey:FBSDKAppEventParameterProductImageLink]; - [dict setObject:link forKey:FBSDKAppEventParameterProductLink]; - [dict setObject:title forKey:FBSDKAppEventParameterProductTitle]; - [dict setObject:[NSString stringWithFormat:@"%.3lf", priceAmount] forKey:FBSDKAppEventParameterProductPriceAmount]; - [dict setObject:currency forKey:FBSDKAppEventParameterProductPriceCurrency]; + dict[FBSDKAppEventParameterProductDescription] = description; + dict[FBSDKAppEventParameterProductImageLink] = imageLink; + dict[FBSDKAppEventParameterProductLink] = link; + dict[FBSDKAppEventParameterProductTitle] = title; + dict[FBSDKAppEventParameterProductPriceAmount] = [NSString stringWithFormat:@"%.3lf", priceAmount]; + dict[FBSDKAppEventParameterProductPriceCurrency] = currency; if (gtin) { - [dict setObject:gtin forKey:FBSDKAppEventParameterProductGTIN]; + dict[FBSDKAppEventParameterProductGTIN] = gtin; } if (mpn) { - [dict setObject:mpn forKey:FBSDKAppEventParameterProductMPN]; + dict[FBSDKAppEventParameterProductMPN] = mpn; } if (brand) { - [dict setObject:brand forKey:FBSDKAppEventParameterProductBrand]; + dict[FBSDKAppEventParameterProductBrand] = brand; } [FBSDKAppEvents logEvent:FBSDKAppEventNameProductCatalogUpdate @@ -595,6 +640,11 @@ static NSString *g_overrideAppID = nil; + (void)setPushNotificationsDeviceToken:(NSData *)deviceToken { NSString *deviceTokenString = [FBSDKInternalUtility hexadecimalStringFromData:deviceToken]; + [FBSDKAppEvents setPushNotificationsDeviceTokenString:deviceTokenString]; +} + ++ (void)setPushNotificationsDeviceTokenString:(NSString *)deviceTokenString +{ if (deviceTokenString == nil) { [FBSDKAppEvents singleton].pushNotificationsDeviceTokenString = nil; return; @@ -609,6 +659,23 @@ static NSString *g_overrideAppID = nil; if ([FBSDKAppEvents flushBehavior] != FBSDKAppEventsFlushBehaviorExplicitOnly) { [[FBSDKAppEvents singleton] flushForReason:FBSDKAppEventsFlushReasonEagerlyFlushingEvent]; } + + // Update device push token for uninstall tracking + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *error) { + if (serverConfiguration.uninstallTrackingEnabled) { + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] + initWithGraphPath:[NSString stringWithFormat:@"%@/%@", + [FBSDKSettings appID], UNINSTALL_TRACKING_TOKEN_ENDPOINT] + parameters:@{ + UNINSTALL_TRACKING_DEVICE_TOKEN_KEY: deviceTokenString, + UNINSTALL_TRACKING_PLATFORM_KEY: @"ios", + // advertiserID could be 0s if user select limit ad tracking + UNINSTALL_TRACKING_DEVICE_ID_KEY: [FBSDKAppEventsUtility advertiserID] ?: @"" + } + HTTPMethod:@"POST"]; + [request startWithCompletionHandler:nil]; + } + }]; } } @@ -668,16 +735,16 @@ static NSString *g_overrideAppID = nil; [FBSDKUserDataStore setUserDataAndHash: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 ++ (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 @@ -716,7 +783,7 @@ static NSString *g_overrideAppID = nil; if (userID.length == 0) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:@"Missing [FBSDKAppEvents userID] for [FBSDKAppEvents updateUserProperties:]"]; - NSError *error = [FBSDKError requiredArgumentErrorWithName:@"userID" message:@"Missing [FBSDKAppEvents userID] for [FBSDKAppEvents updateUserProperties:]"]; + NSError *error = [NSError fbRequiredArgumentErrorWithName:@"userID" message:@"Missing [FBSDKAppEvents userID] for [FBSDKAppEvents updateUserProperties:]"]; if (handler) { handler(nil, nil, error); } @@ -731,7 +798,7 @@ static NSString *g_overrideAppID = nil; __block NSError *invalidObjectError; NSString *dataJSONString = [FBSDKInternalUtility JSONStringForObject:@[dataDictionary] error:&error invalidObjectHandler:^id(id object, BOOL *stop) { *stop = YES; - invalidObjectError = [FBSDKError unknownErrorWithMessage:@"The values in the properties dictionary must be NSStrings or NSNumbers"]; + invalidObjectError = [NSError fbUnknownErrorWithMessage:@"The values in the properties dictionary must be NSStrings or NSNumbers"]; return nil; }]; if (!error) { @@ -785,6 +852,33 @@ static NSString *g_overrideAppID = nil; } #endif ++ (void)setIsUnityInit:(BOOL)isUnityInit +{ + [FBSDKAppEvents singleton]->_isUnityInit = isUnityInit; +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" ++ (void)sendEventBindingsToUnity +{ + // Send event bindings to Unity only Unity is initialized + if ([FBSDKAppEvents singleton]->_isUnityInit + && [FBSDKAppEvents singleton]->_serverConfiguration + && [NSJSONSerialization isValidJSONObject:[FBSDKAppEvents singleton]->_serverConfiguration.eventBindings] + ) { + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[FBSDKAppEvents singleton]->_serverConfiguration.eventBindings ?: @"" + options:0 + error:nil]; + NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; + Class classFBUnityUtility = objc_lookUpClass(FBUnityUtilityClassName); + SEL updateBindingSelector = NSSelectorFromString(FBUnityUtilityUpdateBindingsSelector); + if ([classFBUnityUtility respondsToSelector:updateBindingSelector]) { + [classFBUnityUtility performSelector:updateBindingSelector withObject:jsonString]; + } + } +} +#pragma clang diagnostic pop + #pragma mark - Internal Methods + (void)logImplicitEvent:(NSString *)eventName @@ -837,7 +931,7 @@ static NSString *g_overrideAppID = nil; - (void)publishInstall { NSString *appID = [self appID]; - if ([appID length] == 0) { + if (appID.length == 0) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:@"Missing [FBSDKAppEvents appID] for [FBSDKAppEvents publishInstall:]"]; return; } @@ -875,8 +969,12 @@ static NSString *g_overrideAppID = nil; [_eventBindingManager start]; } - [_eventBindingManager updateBindings:[FBSDKEventBindingManager - parseArray:_serverConfiguration.eventBindings]]; + if ([FBSDKInternalUtility isUnity]) { + [FBSDKAppEvents sendEventBindingsToUnity]; + } else { + [_eventBindingManager updateBindings:[FBSDKEventBindingManager + parseArray:_serverConfiguration.eventBindings]]; + } } } #endif @@ -1046,7 +1144,7 @@ static NSString *g_overrideAppID = nil; return; } - if ([appEventsState.appID length] == 0) { + if (appEventsState.appID.length == 0) { [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:@"Missing [FBSDKAppEvents appEventsState.appID] for [FBSDKAppEvents flushOnMainQueue:]"]; return; } @@ -1065,7 +1163,7 @@ static NSString *g_overrideAppID = nil; activityParametersDictionaryForEvent:@"CUSTOM_APP_EVENTS" implicitEventsOnly:appEventsState.areAllEventsImplicit shouldAccessAdvertisingID:self->_serverConfiguration.advertisingIDEnabled]; - NSInteger length = [receipt_data length]; + NSInteger length = receipt_data.length; if (length > 0) { postParameters[@"receipt_data"] = receipt_data; } @@ -1097,7 +1195,6 @@ static NSString *g_overrideAppID = nil; prettyPrintedJsonEvents]; } - [FBSDKAppEventsUtility logAndNotify:[NSString stringWithFormat:@"param %@", postParameters]]; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/activities", appEventsState.appID] parameters:postParameters tokenString:appEventsState.tokenString @@ -1138,7 +1235,7 @@ static NSString *g_overrideAppID = nil; if (flushResult == FlushResultServerError) { // Only log events that developer can do something with (i.e., if parameters are incorrect). // as opposed to cases where the token is bad. - if ([error.userInfo[FBSDKGraphRequestErrorCategoryKey] unsignedIntegerValue] == FBSDKGraphRequestErrorCategoryOther) { + if ([error.userInfo[FBSDKGraphRequestErrorKey] unsignedIntegerValue] == FBSDKGraphRequestErrorOther) { NSString *message = [NSString stringWithFormat:@"Failed to send AppEvents: %@", error]; [FBSDKAppEventsUtility logAndNotify:message allowLogAsDeveloperError:!appEventsState.areAllEventsImplicit]; } @@ -1164,7 +1261,7 @@ static NSString *g_overrideAppID = nil; break; case FlushResultServerError: - resultString = [NSString stringWithFormat:@"Server Error - %@", [error description]]; + resultString = [NSString stringWithFormat:@"Server Error - %@", error.description]; break; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m index f3dfacd..57597dd 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m @@ -30,11 +30,11 @@ NSString *const FBSDKAppLinkVersion = @"1.0"; @interface FBSDKAppLink () -@property (nonatomic, strong, readwrite) NSURL *sourceURL; -@property (nonatomic, copy, readwrite) NSArray *targets; -@property (nonatomic, strong, readwrite) NSURL *webURL; +@property (nonatomic, strong) NSURL *sourceURL; +@property (nonatomic, copy) NSArray *targets; +@property (nonatomic, strong) NSURL *webURL; -@property (nonatomic, assign, readwrite, getter=isBackToReferrer) BOOL backToReferrer; +@property (nonatomic, assign, getter=isBackToReferrer) BOOL backToReferrer; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h index 8c99e42..daf124f 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h @@ -69,6 +69,12 @@ NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension") /*! 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 */ + (instancetype)navigationWithAppLink:(FBSDKAppLink *)appLink extras:(NSDictionary *)extras @@ -103,12 +109,6 @@ NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension") */ + (FBSDKAppLinkNavigationType)navigationTypeForLink:(FBSDKAppLink *)link; -/*! - Return navigation type for current instance. - No-side-effect version of navigate: - */ -- (FBSDKAppLinkNavigationType)navigationType; - /*! Navigates to a URL (an asynchronous action) and returns a FBSDKNavigationType */ + (void)navigateToURL:(NSURL *)destination handler:(FBSDKAppLinkNavigationHandler)handler; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m index 318e092..436ceb4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m @@ -37,9 +37,9 @@ static id defaultResolver; @interface FBSDKAppLinkNavigation () -@property (nonatomic, copy, readwrite) NSDictionary *extras; -@property (nonatomic, copy, readwrite) NSDictionary *appLinkData; -@property (nonatomic, strong, readwrite) FBSDKAppLink *appLink; +@property (nonatomic, copy) NSDictionary *extras; +@property (nonatomic, copy) NSDictionary *appLinkData; +@property (nonatomic, strong) FBSDKAppLink *appLink; @end @@ -61,15 +61,7 @@ static id defaultResolver; } - (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 { @@ -96,7 +88,7 @@ static id defaultResolver; NSString *encoded = [self stringByEscapingQueryString:jsonString]; NSString *endUrlString = [NSString stringWithFormat:@"%@%@%@=%@", - [targetUrl absoluteString], + targetUrl.absoluteString, targetUrl.query ? @"&" : @"?", FBSDKAppLinkDataParameterName, encoded]; @@ -158,8 +150,8 @@ static id defaultResolver; NSMutableDictionary *logData = [[NSMutableDictionary alloc] init]; - NSString *outputURLScheme = [outputURL scheme]; - NSString *outputURLString = [outputURL absoluteString]; + NSString *outputURLScheme = outputURL.scheme; + NSString *outputURLString = outputURL.absoluteString; if (outputURLScheme) { logData[@"outputURLScheme"] = outputURLScheme; } @@ -167,9 +159,9 @@ static id defaultResolver; logData[@"outputURL"] = outputURLString; } - NSString *sourceURLString = [self.appLink.sourceURL absoluteString]; - NSString *sourceURLHost = [self.appLink.sourceURL host]; - NSString *sourceURLScheme = [self.appLink.sourceURL scheme]; + NSString *sourceURLString = self.appLink.sourceURL.absoluteString; + NSString *sourceURLHost = self.appLink.sourceURL.host; + NSString *sourceURLScheme = self.appLink.sourceURL.scheme; if (sourceURLString) { logData[@"sourceURL"] = sourceURLString; } @@ -179,8 +171,8 @@ static id defaultResolver; if (sourceURLScheme) { logData[@"sourceScheme"] = sourceURLScheme; } - if ([error localizedDescription]) { - logData[@"error"] = [error localizedDescription]; + if (error.localizedDescription) { + logData[@"error"] = error.localizedDescription; } NSString *success = nil; //no NSString *linkType = nil; // unknown; @@ -207,7 +199,7 @@ static id defaultResolver; logData[@"type"] = linkType; } - if ([self.appLink isBackToReferrer]) { + if (self.appLink.backToReferrer) { [FBSDKMeasurementEvent postNotificationForEventName:FBSDKAppLinkNavigateBackToReferrerEventName args:logData]; } else { [FBSDKMeasurementEvent postNotificationForEventName:FBSDKAppLinkNavigateOutEventName args:logData]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m index 0f1f624..3f43655 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m @@ -102,10 +102,8 @@ static Class g_BFTaskClass; appLinks[url] = self.cachedFBSDKAppLinks[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 + NSCharacterSet *urlAllowedSet = [NSCharacterSet URLQueryAllowedCharacterSet]; + NSString *toFindString = [url.absoluteString stringByAddingPercentEncodingWithAllowedCharacters:urlAllowedSet]; if (toFindString) { [toFindStrings addObject:toFindString]; } @@ -147,25 +145,25 @@ static Class g_BFTaskClass; return; } for (NSURL *url in toFind) { - id nestedObject = [[result objectForKey:url.absoluteString] objectForKey:kAppLinksKey]; + id nestedObject = result[url.absoluteString][kAppLinksKey]; NSMutableArray *rawTargets = [NSMutableArray array]; if (idiomSpecificField) { - [rawTargets addObjectsFromArray:[nestedObject objectForKey:idiomSpecificField]]; + [rawTargets addObjectsFromArray:nestedObject[idiomSpecificField]]; } - [rawTargets addObjectsFromArray:[nestedObject objectForKey:kIOSKey]]; + [rawTargets addObjectsFromArray:nestedObject[kIOSKey]]; NSMutableArray *targets = [NSMutableArray arrayWithCapacity:rawTargets.count]; for (id rawTarget in rawTargets) { - [targets addObject:[FBSDKAppLinkTarget appLinkTargetWithURL:[NSURL URLWithString:[rawTarget objectForKey:kURLKey]] - appStoreId:[rawTarget objectForKey:kIOSAppStoreIdKey] - appName:[rawTarget objectForKey:kIOSAppNameKey]]]; + [targets addObject:[FBSDKAppLinkTarget appLinkTargetWithURL:[NSURL URLWithString:rawTarget[kURLKey]] + appStoreId:rawTarget[kIOSAppStoreIdKey] + appName:rawTarget[kIOSAppNameKey]]]; } - id webTarget = [nestedObject objectForKey:kWebKey]; - NSString *webFallbackString = [webTarget objectForKey:kURLKey]; + id webTarget = nestedObject[kWebKey]; + NSString *webFallbackString = webTarget[kURLKey]; NSURL *fallbackUrl = webFallbackString ? [NSURL URLWithString:webFallbackString] : url; - NSNumber *shouldFallback = [webTarget objectForKey:kShouldFallbackKey]; + NSNumber *shouldFallback = webTarget[kShouldFallbackKey]; if (shouldFallback && !shouldFallback.boolValue) { fallbackUrl = nil; } @@ -198,10 +196,8 @@ static Class g_BFTaskClass; appLinks[url] = self.cachedBFAppLinks[url]; } else { [toFind addObject:url]; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [toFindStrings addObject:[url.absoluteString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; -#pragma clang diagnostic pop + NSCharacterSet *urlAllowedSet = [NSCharacterSet URLQueryAllowedCharacterSet]; + [toFindStrings addObject:[url.absoluteString stringByAddingPercentEncodingWithAllowedCharacters:urlAllowedSet]]; } } } @@ -240,25 +236,25 @@ static Class g_BFTaskClass; return; } for (NSURL *url in toFind) { - id nestedObject = [[result objectForKey:url.absoluteString] objectForKey:kAppLinksKey]; + id nestedObject = result[url.absoluteString][kAppLinksKey]; NSMutableArray *rawTargets = [NSMutableArray array]; if (idiomSpecificField) { - [rawTargets addObjectsFromArray:[nestedObject objectForKey:idiomSpecificField]]; + [rawTargets addObjectsFromArray:nestedObject[idiomSpecificField]]; } - [rawTargets addObjectsFromArray:[nestedObject objectForKey:kIOSKey]]; + [rawTargets addObjectsFromArray:nestedObject[kIOSKey]]; NSMutableArray *targets = [NSMutableArray arrayWithCapacity:rawTargets.count]; for (id rawTarget in rawTargets) { - [targets addObject:[g_BFAppLinkTargetClass appLinkTargetWithURL:[NSURL URLWithString:[rawTarget objectForKey:kURLKey]] - appStoreId:[rawTarget objectForKey:kIOSAppStoreIdKey] - appName:[rawTarget objectForKey:kIOSAppNameKey]]]; + [targets addObject:[g_BFAppLinkTargetClass appLinkTargetWithURL:[NSURL URLWithString:rawTarget[kURLKey]] + appStoreId:rawTarget[kIOSAppStoreIdKey] + appName:rawTarget[kIOSAppNameKey]]]; } - id webTarget = [nestedObject objectForKey:kWebKey]; - NSString *webFallbackString = [webTarget objectForKey:kURLKey]; + id webTarget = nestedObject[kWebKey]; + NSString *webFallbackString = webTarget[kURLKey]; NSURL *fallbackUrl = webFallbackString ? [NSURL URLWithString:webFallbackString] : url; - NSNumber *shouldFallback = [webTarget objectForKey:kShouldFallbackKey]; + NSNumber *shouldFallback = webTarget[kShouldFallbackKey]; if (shouldFallback && !shouldFallback.boolValue) { fallbackUrl = nil; } @@ -288,7 +284,7 @@ static Class g_BFTaskClass; } #pragma clang diagnostic pop -+ (id)resolver ++ (instancetype)resolver { return [[self alloc] initWithUserInterfaceIdiom:UI_USER_INTERFACE_IDIOM()]; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.m index 5a11c25..c2268f6 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.m @@ -130,7 +130,7 @@ static const CFTimeInterval kFBSDKViewAnimationDuration = 0.25f; #pragma mark - Private - (void)statusBarFrameWillChange:(NSNotification *)notification { - NSValue *rectValue = [[notification userInfo] valueForKey:UIApplicationStatusBarFrameUserInfoKey]; + NSValue *rectValue = [notification.userInfo valueForKey:UIApplicationStatusBarFrameUserInfoKey]; CGRect newFrame; [rectValue getValue:&newFrame]; @@ -145,7 +145,7 @@ static const CFTimeInterval kFBSDKViewAnimationDuration = 0.25f; } - (void)statusBarFrameDidChange:(NSNotification *)notification { - NSValue *rectValue = [[notification userInfo] valueForKey:UIApplicationStatusBarFrameUserInfoKey]; + NSValue *rectValue = [notification.userInfo valueForKey:UIApplicationStatusBarFrameUserInfoKey]; CGRect newFrame; [rectValue getValue:&newFrame]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m index 7537c60..82ede34 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m @@ -89,11 +89,7 @@ static const CGFloat FBSDKCloseButtonHeight = 12.0; _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]; @@ -156,7 +152,7 @@ static const CGFloat FBSDKCloseButtonHeight = 12.0; include = YES; break; case FBSDKIncludeStatusBarInSizeIOS7AndLater: { - float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; + float systemVersion = [UIDevice currentDevice].systemVersion.floatValue; include = (systemVersion >= 7.0); break; } @@ -209,7 +205,7 @@ static const CGFloat FBSDKCloseButtonHeight = 12.0; #pragma mark - Private - (void)updateLabelText { - NSString *appName = (_refererAppLink && _refererAppLink.targets[0]) ? [_refererAppLink.targets[0] appName] : nil; + NSString *appName = (_refererAppLink && _refererAppLink.targets[0]) ? _refererAppLink.targets[0].appName : nil; _labelView.text = [self localizedLabelForReferer:appName]; } @@ -226,8 +222,8 @@ static const CGFloat FBSDKCloseButtonHeight = 12.0; CGContextRef context = UIGraphicsGetCurrentContext(); - CGContextSetStrokeColorWithColor(context, [color CGColor]); - CGContextSetFillColorWithColor(context, [color CGColor]); + CGContextSetStrokeColorWithColor(context, color.CGColor); + CGContextSetFillColorWithColor(context, color.CGColor); CGContextSetLineWidth(context, 1.25f); @@ -269,7 +265,7 @@ static const CGFloat FBSDKCloseButtonHeight = 12.0; } - (void)updateHidden { - [super setHidden:_explicitlyHidden || _closed || !self.hasRefererData]; + super.hidden = _explicitlyHidden || _closed || !self.hasRefererData; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.m index 5a0c26b..250ed1a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.m @@ -20,9 +20,9 @@ @interface FBSDKAppLinkTarget () -@property (nonatomic, strong, readwrite) NSURL *URL; -@property (nonatomic, copy, readwrite) NSString *appStoreId; -@property (nonatomic, copy, readwrite) NSString *appName; +@property (nonatomic, strong) NSURL *URL; +@property (nonatomic, copy) NSString *appStoreId; +@property (nonatomic, copy) NSString *appName; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h index c242f29..8a971b2 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h @@ -66,7 +66,7 @@ typedef void (^FBSDKDeferredAppInviteHandler)(NSURL *url); @warning This method is no longer available and will always return NO. */ + (BOOL)fetchDeferredAppInvite:(FBSDKDeferredAppInviteHandler)handler -__attribute__((deprecated("This method is no longer available.")));; +DEPRECATED_MSG_ATTRIBUTE("This method is no longer available."); /* Call this method to fetch promotion code from the url, if it's present. This function diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m index 6def9e4..9b180c2 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m @@ -63,10 +63,10 @@ static NSString *const FBSDKDeferredAppLinkEvent = @"DEFERRED_APP_LINK"; NSString *createTimeUtc = result[@"click_time"]; if (createTimeUtc) { // append/translate the create_time_utc so it can be used by clients - NSString *modifiedURLString = [[applinkURL absoluteString] + NSString *modifiedURLString = [applinkURL.absoluteString stringByAppendingFormat:@"%@fb_click_time_utc=%@", - ([applinkURL query]) ? @"&" : @"?" , - createTimeUtc ]; + (applinkURL.query) ? @"&" : @"?" , + createTimeUtc]; applinkURL = [NSURL URLWithString:modifiedURLString]; } } @@ -88,12 +88,12 @@ static NSString *const FBSDKDeferredAppLinkEvent = @"DEFERRED_APP_LINK"; + (NSString*)appInvitePromotionCodeFromURL:(NSURL*)url; { BFURL *parsedUrl = [[FBSDKInternalUtility resolveBoltsClassWithName:@"BFURL"] URLWithURL:url]; - NSDictionary *extras = [parsedUrl appLinkExtras]; + NSDictionary *extras = parsedUrl.appLinkExtras; if (extras) { NSString *deeplinkContextString = extras[@"deeplink_context"]; // Parse deeplinkContext and extract promo code - if ([deeplinkContextString length] > 0) { + if (deeplinkContextString.length > 0) { NSError *error = nil; NSDictionary *deeplinkContextData = [FBSDKInternalUtility objectForJSONString:deeplinkContextString error:&error]; if (!error && [deeplinkContextData isKindOfClass:[NSDictionary class]]) { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m index 716f2f0..457bb77 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m @@ -29,6 +29,7 @@ #import "FBSDKConstants.h" #import "FBSDKDynamicFrameworkLoader.h" #import "FBSDKError.h" +#import "FBSDKGateKeeperManager.h" #import "FBSDKInternalUtility.h" #import "FBSDKLogger.h" #import "FBSDKServerConfiguration.h" @@ -45,8 +46,16 @@ #import "FBSDKProfile+Internal.h" #endif +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +NSNotificationName const FBSDKApplicationDidBecomeActiveNotification = @"com.facebook.sdk.FBSDKApplicationDidBecomeActiveNotification"; + +#else + NSString *const FBSDKApplicationDidBecomeActiveNotification = @"com.facebook.sdk.FBSDKApplicationDidBecomeActiveNotification"; +#endif + static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; @implementation FBSDKApplicationDelegate @@ -95,7 +104,6 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; [FBSDKTimeSpentData registerAutoResetSourceApplication]; [FBSDKInternalUtility validateFacebookReservedURLSchemes]; - // Remove the observer [[NSNotificationCenter defaultCenter] removeObserver:self]; } @@ -141,10 +149,14 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; openURL:(NSURL *)url options:(NSDictionary *)options { - return [self application:application - openURL:url - sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] - annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; + if (@available(iOS 9.0, *)) { + return [self application:application + openURL:url + sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] + annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; + } + + return NO; } #endif @@ -208,12 +220,14 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; } _isAppLaunched = YES; - FBSDKAccessToken *cachedToken = [[FBSDKSettings accessTokenCache] fetchAccessToken]; + FBSDKAccessToken *cachedToken = [FBSDKSettings accessTokenCache].accessToken; [FBSDKAccessToken setCurrentAccessToken:cachedToken]; // fetch app settings [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; + // fetch gate keepers + [FBSDKGateKeeperManager loadGateKeepers]; - if ([[FBSDKSettings autoLogAppEventsEnabled] boolValue]) { + if ([FBSDKSettings autoLogAppEventsEnabled].boolValue) { [self _logSDKInitialize]; } #if !TARGET_OS_TV @@ -249,7 +263,7 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; - (void)applicationDidBecomeActive:(NSNotification *)notification { // Auto log basic events in case autoLogAppEventsEnabled is set - if ([[FBSDKSettings autoLogAppEventsEnabled] boolValue]) { + if ([FBSDKSettings autoLogAppEventsEnabled].boolValue) { [FBSDKAppEvents activateApp]; } // _expectingBackground can be YES if the caller started doing work (like login) @@ -267,7 +281,7 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; if (notExpectingBackground) { _active = YES; #if !TARGET_OS_TV - [_pendingURLOpen applicationDidBecomeActive:[notification object]]; + [_pendingURLOpen applicationDidBecomeActive:notification.object]; [self _cancelBridgeRequest]; #endif [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKApplicationDidBecomeActiveNotification object:self]; @@ -288,9 +302,11 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; // 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]) { - [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) { - handler(success, nil); - }]; + if (@available(iOS 10.0, *)) { + [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) { + handler(success, nil); + }]; + } } else { BOOL opened = [[UIApplication sharedApplication] openURL:url]; @@ -332,10 +348,10 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; self->_pendingRequestCompletionBlock = nil; NSError *openedURLError; if ([request.scheme hasPrefix:@"http"]) { - openedURLError = [FBSDKError errorWithCode:FBSDKBrowserUnavailableErrorCode + openedURLError = [NSError fbErrorWithCode:FBSDKErrorBrowserUnavailable message:@"the app switch failed because the browser is unavailable"]; } else { - openedURLError = [FBSDKError errorWithCode:FBSDKAppVersionUnsupportedErrorCode + openedURLError = [NSError fbErrorWithCode:FBSDKErrorAppVersionUnsupported message:@"the app switch failed because the destination app is out of date"]; } FBSDKBridgeAPIResponse *response = [FBSDKBridgeAPIResponse bridgeAPIResponseWithRequest:request @@ -409,7 +425,7 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; NSURLQueryItem *sfvcQueryItem = [[NSURLQueryItem alloc] initWithName:@"sfvc" value:@"1"]; - [components setQueryItems:[components.queryItems arrayByAddingObject:sfvcQueryItem]]; + components.queryItems = [components.queryItems arrayByAddingObject:sfvcQueryItem]; url = components.URL; FBSDKContainerViewController *container = [[FBSDKContainerViewController alloc] init]; container.delegate = self; @@ -499,8 +515,8 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; 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"]; + [FBSDKInternalUtility dictionary:logData setObject:targetURL.absoluteString forKey:@"targetURL"]; + [FBSDKInternalUtility dictionary:logData setObject:targetURL.host forKey:@"targetURLHost"]; NSDictionary *refererData = applinkData[@"referer_data"]; if (refererData) { @@ -508,8 +524,8 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; [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"]; + [FBSDKInternalUtility dictionary:logData setObject:url.absoluteString forKey:@"inputURL"]; + [FBSDKInternalUtility dictionary:logData setObject:url.scheme forKey:@"inputURLScheme"]; [FBSDKAppEvents logImplicitEvent:FBSDKAppLinkInboundEvent valueToSum:nil @@ -520,27 +536,27 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; - (void)_logSDKInitialize { NSMutableDictionary *params = [NSMutableDictionary new]; - [params setObject:@1 forKey:@"core_lib_included"]; + params[@"core_lib_included"] = @1; if (objc_lookUpClass("FBSDKShareDialog") != nil) { - [params setObject:@1 forKey:@"share_lib_included"]; + params[@"share_lib_included"] = @1; } if (objc_lookUpClass("FBSDKLoginManager") != nil) { - [params setObject:@1 forKey:@"login_lib_included"]; + params[@"login_lib_included"] = @1; } if (objc_lookUpClass("FBSDKPlacesManager") != nil) { - [params setObject:@1 forKey:@"places_lib_included"]; + params[@"places_lib_included"] = @1; } if (objc_lookUpClass("FBSDKMessengerButton") != nil) { - [params setObject:@1 forKey:@"messenger_lib_included"]; + params[@"messenger_lib_included"] = @1; } if (objc_lookUpClass("FBSDKMessengerButton") != nil) { - [params setObject:@1 forKey:@"messenger_lib_included"]; + params[@"messenger_lib_included"] = @1; } if (objc_lookUpClass("FBSDKTVInterfaceFactory.m") != nil) { - [params setObject:@1 forKey:@"tv_lib_included"]; + params[@"tv_lib_included"] = @1; } if (objc_lookUpClass("FBSDKAutoLog") != nil) { - [params setObject:@1 forKey:@"marketing_lib_included"]; + params[@"marketing_lib_included"] = @1; } [FBSDKAppEvents logEvent:@"fb_sdk_initialize" parameters:params]; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m index 91690e3..ebd53ff 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m @@ -76,7 +76,7 @@ - (CGRect)imageRectForContentRect:(CGRect)contentRect { - if ([self isHidden] || CGRectIsEmpty(self.bounds)) { + if (self.hidden || CGRectIsEmpty(self.bounds)) { return CGRectZero; } CGRect imageRect = UIEdgeInsetsInsetRect(contentRect, self.imageEdgeInsets); @@ -101,9 +101,9 @@ { // automatic impression tracking if the button conforms to FBSDKButtonImpressionTracking if ([self conformsToProtocol:@protocol(FBSDKButtonImpressionTracking)]) { - NSString *eventName = [(id)self impressionTrackingEventName]; - NSString *identifier = [(id)self impressionTrackingIdentifier]; - NSDictionary *parameters = [(id)self analyticsParameters]; + NSString *eventName = ((id)self).impressionTrackingEventName; + NSString *identifier = ((id)self).impressionTrackingIdentifier; + NSDictionary *parameters = ((id)self).analyticsParameters; if (eventName && identifier) { FBSDKViewImpressionTracker *impressionTracker = [FBSDKViewImpressionTracker impressionTrackerWithEventName:eventName]; [impressionTracker logImpressionWithIdentifier:identifier parameters:parameters]; @@ -114,7 +114,7 @@ - (CGSize)sizeThatFits:(CGSize)size { - if ([self isHidden]) { + if (self.hidden) { return CGSizeZero; } CGSize normalSize = [self sizeThatFits:size title:[self titleForState:UIControlStateNormal]]; @@ -131,7 +131,7 @@ - (CGRect)titleRectForContentRect:(CGRect)contentRect { - if ([self isHidden] || CGRectIsEmpty(self.bounds)) { + if (self.hidden || CGRectIsEmpty(self.bounds)) { return CGRectZero; } CGRect imageRect = [self imageRectForContentRect:contentRect]; @@ -174,9 +174,9 @@ - (void)checkImplicitlyDisabled { - BOOL enabled = !_isExplicitlyDisabled && ![self isImplicitlyDisabled]; - BOOL currentEnabled = [self isEnabled]; - [super setEnabled:enabled]; + BOOL enabled = !_isExplicitlyDisabled && !self.implicitlyDisabled; + BOOL currentEnabled = self.enabled; + super.enabled = enabled; if (currentEnabled != enabled) { [self invalidateIntrinsicContentSize]; [self setNeedsLayout]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h index fc2779f..55003d0 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h @@ -18,195 +18,300 @@ #import -#import +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 /** - The error domain for all errors from FBSDKCoreKit. + The error domain for all errors from FBSDKCoreKit. Error codes from the SDK in the range 0-99 are reserved for this domain. */ -FBSDK_EXTERN NSString *const FBSDKErrorDomain; +FOUNDATION_EXPORT NSErrorDomain const FBSDKErrorDomain; + +#else /** - NS_ENUM(NSInteger, FBSDKErrorCode) - Error codes for FBSDKErrorDomain. + The error domain for all errors from FBSDKCoreKit. + + Error codes from the SDK in the range 0-99 are reserved for this domain. */ -typedef NS_ENUM(NSInteger, FBSDKErrorCode) -{ - /** - Reserved. - */ - FBSDKReservedErrorCode = 0, +FOUNDATION_EXPORT NSString *const FBSDKErrorDomain; - /** - The error code for errors from invalid encryption on incoming encryption URLs. - */ - FBSDKEncryptionErrorCode, +#endif - /** - The error code for errors from invalid arguments to SDK methods. - */ - FBSDKInvalidArgumentErrorCode, - - /** - The error code for unknown errors. - */ - FBSDKUnknownErrorCode, - - /** - A request failed due to a network error. Use NSUnderlyingErrorKey to retrieve - the error object from the NSURLConnection for more information. - */ - FBSDKNetworkErrorCode, - - /** - The error code for errors encountered during an App Events flush. - */ - FBSDKAppEventsFlushErrorCode, - - /** - An endpoint that returns a binary response was used with FBSDKGraphRequestConnection. - - Endpoints that return image/jpg, etc. should be accessed using NSURLRequest - */ - FBSDKGraphRequestNonTextMimeTypeReturnedErrorCode, - - /** - The operation failed because the server returned an unexpected response. - - You can get this error if you are not using the most recent SDK, or you are accessing a version of the - Graph API incompatible with the current SDK. - */ - FBSDKGraphRequestProtocolMismatchErrorCode, - - /** - The Graph API returned an error. - - See below for useful userInfo keys (beginning with FBSDKGraphRequestError*) - */ - FBSDKGraphRequestGraphAPIErrorCode, - - /** - The specified dialog configuration is not available. - - This error may signify that the configuration for the dialogs has not yet been downloaded from the server - or that the dialog is unavailable. Subsequent attempts to use the dialog may succeed as the configuration is loaded. - */ - FBSDKDialogUnavailableErrorCode, - - /** - Indicates an operation failed because a required access token was not found. - */ - FBSDKAccessTokenRequiredErrorCode, - - /** - Indicates an app switch (typically for a dialog) failed because the destination app is out of date. - */ - FBSDKAppVersionUnsupportedErrorCode, - - /** - Indicates an app switch to the browser (typically for a dialog) failed. - */ - FBSDKBrowserUnavailableErrorCode, - - /** - -@warning use FBSDKBrowserUnavailableErrorCode instead - */ - FBSDKBrowswerUnavailableErrorCode __attribute__ ((deprecated("use FBSDKBrowserUnavailableErrorCode instead"))) = FBSDKBrowserUnavailableErrorCode, -}; - -/** - NS_ENUM(NSUInteger, FBSDKGraphRequestErrorCategory) - Describes the category of Facebook error. See `FBSDKGraphRequestErrorCategoryKey`. - */ -typedef NS_ENUM(NSUInteger, FBSDKGraphRequestErrorCategory) -{ - /** The default error category that is not known to be recoverable. Check `FBSDKLocalizedErrorDescriptionKey` for a user facing message. */ - FBSDKGraphRequestErrorCategoryOther = 0, - /** Indicates the error is temporary (such as server throttling). While a recoveryAttempter will be provided with the error instance, the attempt is guaranteed to succeed so you can simply retry the operation if you do not want to present an alert. */ - FBSDKGraphRequestErrorCategoryTransient = 1, - /** Indicates the error can be recovered (such as requiring a login). A recoveryAttempter will be provided with the error instance that can take UI action. */ - FBSDKGraphRequestErrorCategoryRecoverable = 2 -}; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0 /* @methodgroup error userInfo keys */ /** - The userInfo key for the invalid collection for errors with FBSDKInvalidArgumentErrorCode. + The userInfo key for the invalid collection for errors with FBSDKErrorInvalidArgument. If the invalid argument is a collection, the collection can be found with this key and the individual invalid item can be found with FBSDKErrorArgumentValueKey. */ -FBSDK_EXTERN NSString *const FBSDKErrorArgumentCollectionKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentCollectionKey; /** - The userInfo key for the invalid argument name for errors with FBSDKInvalidArgumentErrorCode. + The userInfo key for the invalid argument name for errors with FBSDKErrorInvalidArgument. */ -FBSDK_EXTERN NSString *const FBSDKErrorArgumentNameKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentNameKey; /** - The userInfo key for the invalid argument value for errors with FBSDKInvalidArgumentErrorCode. + The userInfo key for the invalid argument value for errors with FBSDKErrorInvalidArgument. */ -FBSDK_EXTERN NSString *const FBSDKErrorArgumentValueKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentValueKey; /** - The userInfo key for the message for developers in NSErrors that originate from the SDK. + 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. */ -FBSDK_EXTERN NSString *const FBSDKErrorDeveloperMessageKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorDeveloperMessageKey; /** - The userInfo key describing a localized description that can be presented to the user. + The userInfo key describing a localized description that can be presented to the user. */ -FBSDK_EXTERN NSString *const FBSDKErrorLocalizedDescriptionKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedDescriptionKey; /** - The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`. + The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`. */ -FBSDK_EXTERN NSString *const FBSDKErrorLocalizedTitleKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedTitleKey; /* @methodgroup FBSDKGraphRequest error userInfo keys */ /** - The userInfo key describing the error category, for error recovery purposes. + The userInfo key describing the error category, for error recovery purposes. See `FBSDKGraphErrorRecoveryProcessor` and `[FBSDKGraphRequest disableErrorRecovery]`. */ -FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorCategoryKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorKey; + +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorCategoryKey +DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorKey instead"); /* - The userInfo key for the Graph API error code. + The userInfo key for the Graph API error code. */ -FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorGraphErrorCode; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCodeKey; + +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCode +DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorCodeKey instead"); /* - The userInfo key for the Graph API error subcode. + The userInfo key for the Graph API error subcode. */ -FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorGraphErrorSubcode; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcodeKey; + +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcode +DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorSubcodeKey instead"); /* - The userInfo key for the HTTP status code. + The userInfo key for the HTTP status code. */ -FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorHTTPStatusCodeKey; +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorHTTPStatusCodeKey; /* - The userInfo key for the raw JSON response. + The userInfo key for the raw JSON response. + */ +FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorParsedJSONResponseKey; + +#else + +/* + @methodgroup error userInfo keys */ -FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey; /** - a formal protocol very similar to the informal protocol NSErrorRecoveryAttempting + The userInfo key for the invalid collection for errors with FBSDKErrorInvalidArgument. + + 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; + +/** + The userInfo key for the invalid argument name for errors with FBSDKErrorInvalidArgument. + */ +FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentNameKey; + +/** + The userInfo key for the invalid argument value for errors with FBSDKErrorInvalidArgument. + */ +FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentValueKey; + +/** + 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; + +/** + The userInfo key describing a localized description that can be presented to the user. + */ +FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedDescriptionKey; + +/** + The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`. + */ +FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedTitleKey; + +/* + @methodgroup FBSDKGraphRequest error userInfo keys + */ + +/** + The userInfo key describing the error category, for error recovery purposes. + + See `FBSDKGraphErrorRecoveryProcessor` and `[FBSDKGraphRequest disableErrorRecovery]`. + */ +FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorKey; + +FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorCategoryKey +DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorKey instead"); + +/* + 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"); + +/* + 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"); + +/* + The userInfo key for the HTTP status code. + */ +FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorHTTPStatusCodeKey; + +/* + The userInfo key for the raw JSON response. + */ +FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey; + +#endif + +#ifndef NS_ERROR_ENUM +#define NS_ERROR_ENUM(_domain, _name) \ +enum _name: NSInteger _name; \ +enum __attribute__((ns_error_domain(_domain))) _name: NSInteger +#endif + +/** + FBSDKError + Error codes for FBSDKErrorDomain. + */ +typedef NS_ERROR_ENUM(FBSDKErrorDomain, FBSDKError) +{ + /** + Reserved. + */ + FBSDKErrorReserved = 0, + + /** + The error code for errors from invalid encryption on incoming encryption URLs. + */ + FBSDKErrorEncryption, + + /** + The error code for errors from invalid arguments to SDK methods. + */ + FBSDKErrorInvalidArgument, + + /** + The error code for unknown errors. + */ + FBSDKErrorUnknown, + + /** + A request failed due to a network error. Use NSUnderlyingErrorKey to retrieve + the error object from the NSURLSession for more information. + */ + FBSDKErrorNetwork, + + /** + The error code for errors encountered during an App Events flush. + */ + FBSDKErrorAppEventsFlush, + + /** + An endpoint that returns a binary response was used with FBSDKGraphRequestConnection. + + Endpoints that return image/jpg, etc. should be accessed using NSURLRequest + */ + FBSDKErrorGraphRequestNonTextMimeTypeReturned, + + /** + The operation failed because the server returned an unexpected response. + + You can get this error if you are not using the most recent SDK, or you are accessing a version of the + Graph API incompatible with the current SDK. + */ + FBSDKErrorGraphRequestProtocolMismatch, + + /** + The Graph API returned an error. + + See below for useful userInfo keys (beginning with FBSDKGraphRequestError*) + */ + FBSDKErrorGraphRequestGraphAPI, + + /** + The specified dialog configuration is not available. + + This error may signify that the configuration for the dialogs has not yet been downloaded from the server + or that the dialog is unavailable. Subsequent attempts to use the dialog may succeed as the configuration is loaded. + */ + FBSDKErrorDialogUnavailable, + + /** + Indicates an operation failed because a required access token was not found. + */ + FBSDKErrorAccessTokenRequired, + + /** + Indicates an app switch (typically for a dialog) failed because the destination app is out of date. + */ + FBSDKErrorAppVersionUnsupported, + + /** + Indicates an app switch to the browser (typically for a dialog) failed. + */ + FBSDKErrorBrowserUnavailable, +}; + +/** + FBSDKGraphRequestError + Describes the category of Facebook error. See `FBSDKGraphRequestErrorKey`. + */ +typedef NS_ENUM(NSUInteger, FBSDKGraphRequestError) +{ + /** The default error category that is not known to be recoverable. Check `FBSDKLocalizedErrorDescriptionKey` for a user facing message. */ + FBSDKGraphRequestErrorOther = 0, + /** Indicates the error is temporary (such as server throttling). While a recoveryAttempter will be provided with the error instance, the attempt is guaranteed to succeed so you can simply retry the operation if you do not want to present an alert. */ + 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 +}; + +/** + a formal protocol very similar to the informal protocol NSErrorRecoveryAttempting */ @protocol FBSDKErrorRecoveryAttempting /** - attempt the recovery + attempt the recovery @param error the error @param recoveryOptionIndex the selected option index @param delegate the delegate @@ -223,3 +328,34 @@ FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey; - (void)attemptRecoveryFromError:(NSError *)error optionIndex:(NSUInteger)recoveryOptionIndex delegate:(id)delegate didRecoverSelector:(SEL)didRecoverSelector contextInfo:(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"); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m index f3a6ee5..24f9d57 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m @@ -18,8 +18,37 @@ #import "FBSDKConstants.h" +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +NSErrorDomain const FBSDKErrorDomain = @"com.facebook.sdk.core"; + +#else + NSString *const FBSDKErrorDomain = @"com.facebook.sdk.core"; +#endif + + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +NSErrorUserInfoKey const FBSDKErrorArgumentCollectionKey = @"com.facebook.sdk:FBSDKErrorArgumentCollectionKey"; +NSErrorUserInfoKey const FBSDKErrorArgumentNameKey = @"com.facebook.sdk:FBSDKErrorArgumentNameKey"; +NSErrorUserInfoKey const FBSDKErrorArgumentValueKey = @"com.facebook.sdk:FBSDKErrorArgumentValueKey"; +NSErrorUserInfoKey const FBSDKErrorDeveloperMessageKey = @"com.facebook.sdk:FBSDKErrorDeveloperMessageKey"; +NSErrorUserInfoKey const FBSDKErrorLocalizedDescriptionKey = @"com.facebook.sdk:FBSDKErrorLocalizedDescriptionKey"; +NSErrorUserInfoKey const FBSDKErrorLocalizedTitleKey = @"com.facebook.sdk:FBSDKErrorLocalizedErrorTitleKey"; + +NSErrorUserInfoKey const FBSDKGraphRequestErrorKey = @"com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey"; +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 FBSDKGraphRequestErrorHTTPStatusCodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey"; +NSErrorUserInfoKey const FBSDKGraphRequestErrorParsedJSONResponseKey = @"com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey"; + +#else + NSString *const FBSDKErrorArgumentCollectionKey = @"com.facebook.sdk:FBSDKErrorArgumentCollectionKey"; NSString *const FBSDKErrorArgumentNameKey = @"com.facebook.sdk:FBSDKErrorArgumentNameKey"; NSString *const FBSDKErrorArgumentValueKey = @"com.facebook.sdk:FBSDKErrorArgumentValueKey"; @@ -27,8 +56,13 @@ NSString *const FBSDKErrorDeveloperMessageKey = @"com.facebook.sdk:FBSDKErrorDev NSString *const FBSDKErrorLocalizedDescriptionKey = @"com.facebook.sdk:FBSDKErrorLocalizedDescriptionKey"; NSString *const FBSDKErrorLocalizedTitleKey = @"com.facebook.sdk:FBSDKErrorLocalizedErrorTitleKey"; +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 FBSDKGraphRequestErrorHTTPStatusCodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey"; NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey = @"com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey"; + +#endif diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h index 95e6016..2df30cc 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h @@ -53,5 +53,5 @@ #import #endif -#define FBSDK_VERSION_STRING @"4.37.0" -#define FBSDK_TARGET_PLATFORM_VERSION @"v3.1" +#define FBSDK_VERSION_STRING @"4.39.0" +#define FBSDK_TARGET_PLATFORM_VERSION @"v3.2" diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h index 1fb560e..820be4b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h @@ -44,7 +44,7 @@ return NO if the processor should not process the error. For example, if you want to prevent alerts of localized messages but otherwise perform retries and recoveries, - you could return NO for errors where userInfo[FBSDKGraphRequestErrorCategoryKey] equal to FBSDKGraphRequestErrorCategoryOther + you could return NO for errors where userInfo[FBSDKGraphRequestErrorKey] equal to FBSDKGraphRequestErrorOther */ - (BOOL)processorWillProcessError:(FBSDKGraphErrorRecoveryProcessor *)processor error:(NSError *)error; @@ -56,7 +56,7 @@ Facebook NSErrors can contain FBSDKErrorRecoveryAttempting instances to recover from errors, or localized messages to present to the user. This class will process the instances as follows: - 1. If the error is temporary as indicated by FBSDKGraphRequestErrorCategoryKey, assume the recovery succeeded and + 1. If the error is temporary as indicated by FBSDKGraphRequestErrorKey, assume the recovery succeeded and notify the delegate. 2. If a FBSDKErrorRecoveryAttempting instance is available, display an alert (dispatched to main thread) with the recovery options and call the instance's [ attemptRecoveryFromError:optionIndex:...]. diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m index 0fc8c5d..bd21cec 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m @@ -20,17 +20,13 @@ #import "FBSDKCoreKit+Internal.h" #import "FBSDKErrorRecoveryAttempter.h" -@interface FBSDKGraphErrorRecoveryProcessor() +@interface FBSDKGraphErrorRecoveryProcessor() { FBSDKErrorRecoveryAttempter *_recoveryAttempter; NSError *_error; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - UIAlertView *_alertView; -#pragma clang diagnostic pop } -@property (nonatomic, strong, readwrite) iddelegate; +@property (nonatomic, strong) iddelegate; @end @@ -38,9 +34,7 @@ - (void)dealloc { - if (_alertView) { - _alertView.delegate = nil; - } + } - (BOOL)processError:(NSError *)error request:(FBSDKGraphRequest *)request delegate:(id) delegate @@ -52,13 +46,13 @@ } } - FBSDKGraphRequestErrorCategory errorCategory = [error.userInfo[FBSDKGraphRequestErrorCategoryKey] unsignedIntegerValue]; + FBSDKGraphRequestError errorCategory = [error.userInfo[FBSDKGraphRequestErrorKey] unsignedIntegerValue]; switch (errorCategory) { - case FBSDKGraphRequestErrorCategoryTransient : + case FBSDKGraphRequestErrorTransient : [self.delegate processorDidAttemptRecovery:self didRecover:YES error:nil]; self.delegate = nil; return YES; - case FBSDKGraphRequestErrorCategoryRecoverable : + case FBSDKGraphRequestErrorRecoverable : if ([request.tokenString isEqualToString:[FBSDKAccessToken currentAccessToken].tokenString]) { _recoveryAttempter = error.recoveryAttempter; BOOL isLoginRecoveryAttempter = [_recoveryAttempter isKindOfClass:NSClassFromString(@"_FBSDKLoginRecoveryAttempter")]; @@ -78,7 +72,7 @@ return NO; }; - if ([request.tokenString isEqualToString:[[FBSDKSystemAccountStoreAdapter sharedInstance] accessTokenString]] && + 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. @@ -101,7 +95,7 @@ return standardRecoveryWork(); } return NO; - case FBSDKGraphRequestErrorCategoryOther : + case FBSDKGraphRequestErrorOther : if ([request.tokenString isEqualToString:[FBSDKAccessToken currentAccessToken].tokenString]) { NSString *message = error.userInfo[FBSDKErrorLocalizedDescriptionKey]; NSString *title = error.userInfo[FBSDKErrorLocalizedTitleKey]; @@ -120,93 +114,53 @@ return NO; } -#pragma mark - UIAlertView and UIAlertController support +#pragma mark - UIAlertController support - (void)displayAlertWithRecoverySuggestion:(NSString *)recoverySuggestion recoveryOptionsTitles:(NSArray *)recoveryOptionsTitles { - if ([UIAlertController class]) { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil - message:recoverySuggestion - preferredStyle:UIAlertControllerStyleAlert]; - for (NSUInteger i = 0; i < recoveryOptionsTitles.count; i++) { - NSString *title = recoveryOptionsTitles[i]; - UIAlertAction *option = [UIAlertAction actionWithTitle:title - style:UIAlertActionStyleDefault - handler:^(UIAlertAction * _Nonnull action) { - [self->_recoveryAttempter attemptRecoveryFromError:self->_error - optionIndex:i - delegate:self - didRecoverSelector:@selector(didPresentErrorWithRecovery:contextInfo:) - contextInfo:nil]; - }]; - [alertController addAction:option]; - } - UIViewController *topMostViewController = [FBSDKInternalUtility topMostViewController]; - [topMostViewController presentViewController:alertController - animated:YES - completion:nil]; - } else { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - _alertView = [[UIAlertView alloc] initWithTitle:nil - message:recoverySuggestion - delegate:self - cancelButtonTitle:nil - otherButtonTitles:nil]; -#pragma clang diagnostic pop - for (NSString *option in recoveryOptionsTitles) { - [_alertView addButtonWithTitle:option]; - } - [_alertView show]; + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil + message:recoverySuggestion + preferredStyle:UIAlertControllerStyleAlert]; + for (NSUInteger i = 0; i < recoveryOptionsTitles.count; i++) { + NSString *title = recoveryOptionsTitles[i]; + UIAlertAction *option = [UIAlertAction actionWithTitle:title + style:UIAlertActionStyleDefault + handler:^(UIAlertAction * _Nonnull action) { + [self->_recoveryAttempter attemptRecoveryFromError:self->_error + optionIndex:i + delegate:self + didRecoverSelector:@selector(didPresentErrorWithRecovery:contextInfo:) + contextInfo:nil]; + }]; + [alertController addAction:option]; } + UIViewController *topMostViewController = [FBSDKInternalUtility topMostViewController]; + [topMostViewController presentViewController:alertController + animated:YES + completion:nil]; } - (void)displayAlertWithTitle:(NSString *)title message:(NSString *)message cancelButtonTitle:(NSString *)localizedOK { - if ([UIAlertController class]) { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil - message:message - preferredStyle:UIAlertControllerStyleAlert]; - UIAlertAction *OKAction = [UIAlertAction actionWithTitle:localizedOK - style:UIAlertActionStyleCancel - handler:^(UIAlertAction * _Nonnull action) { - [self->_recoveryAttempter attemptRecoveryFromError:self->_error - optionIndex:0 - delegate:self - didRecoverSelector:@selector(didPresentErrorWithRecovery:contextInfo:) - contextInfo:nil]; - }]; - [alertController addAction:OKAction]; - UIViewController *topMostViewController = [FBSDKInternalUtility topMostViewController]; - [topMostViewController presentViewController:alertController - animated:YES - completion:nil]; - } else { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [[[UIAlertView alloc] initWithTitle:title - message:message - delegate:nil - cancelButtonTitle:localizedOK - otherButtonTitles:nil] show]; -#pragma clang diagnostic pop - } + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil + message:message + preferredStyle:UIAlertControllerStyleAlert]; + UIAlertAction *OKAction = [UIAlertAction actionWithTitle:localizedOK + style:UIAlertActionStyleCancel + handler:^(UIAlertAction * _Nonnull action) { + [self->_recoveryAttempter attemptRecoveryFromError:self->_error + optionIndex:0 + delegate:self + didRecoverSelector:@selector(didPresentErrorWithRecovery:contextInfo:) + contextInfo:nil]; + }]; + [alertController addAction:OKAction]; + UIViewController *topMostViewController = [FBSDKInternalUtility topMostViewController]; + [topMostViewController presentViewController:alertController + animated:YES + completion:nil]; } -#pragma mark - UIAlertViewDelegate - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" -- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex -{ - [_recoveryAttempter attemptRecoveryFromError:_error optionIndex:buttonIndex delegate:self didRecoverSelector:@selector(didPresentErrorWithRecovery:contextInfo:) contextInfo:nil]; - if (_alertView) { - _alertView.delegate = nil; - _alertView = nil; - } -} -#pragma clang diagnostic pop - #pragma mark - FBSDKErrorRecoveryAttempting "delegate" - (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(void *)contextInfo diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h index 99b1de3..bcb5149 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h @@ -43,6 +43,9 @@ */ @interface FBSDKGraphRequest : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** Initializes a new instance that use use `[FBSDKAccessToken currentAccessToken]`. @param graphPath the graph path (e.g., @"me"). diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m index ee1ba08..59c6e61 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m @@ -38,11 +38,6 @@ static NSString *const kPostHTTPMethod = @"POST"; @implementation FBSDKGraphRequest -- (instancetype)init NS_UNAVAILABLE -{ - assert(0); -} - - (instancetype)initWithGraphPath:(NSString *)graphPath parameters:(NSDictionary *)parameters { return [self initWithGraphPath:graphPath @@ -154,10 +149,9 @@ static NSString *const kPostHTTPMethod = @"POST"; forBatch:(BOOL)forBatch { params = [self preprocessParams: params]; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - NSURL *parsedURL = [NSURL URLWithString:[baseUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; -#pragma clang pop + NSCharacterSet *urlAllowedSet = [NSCharacterSet URLFragmentAllowedCharacterSet]; + NSURL *parsedURL = [NSURL URLWithString:[baseUrl stringByAddingPercentEncodingWithAllowedCharacters:urlAllowedSet]]; + if ([httpMethod isEqualToString:kPostHTTPMethod] && !forBatch) { return baseUrl; } @@ -181,7 +175,7 @@ static NSString *const kPostHTTPMethod = @"POST"; NSString *debugValue = [FBSDKSettings graphAPIDebugParamValue]; if (debugValue) { NSMutableDictionary *mutableParams = [NSMutableDictionary dictionaryWithDictionary:params]; - [mutableParams setObject:debugValue forKey:@"debug"]; + mutableParams[@"debug"] = debugValue; return mutableParams; } @@ -209,7 +203,7 @@ static NSString *const kPostHTTPMethod = @"POST"; if (self.HTTPMethod) { [result appendFormat:@", HTTPMethod: %@", self.HTTPMethod]; } - [result appendFormat:@", parameters: %@>", [self.parameters description]]; + [result appendFormat:@", parameters: %@>", self.parameters.description]; return result; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h index b8cc0f3..af10a85 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h @@ -18,8 +18,6 @@ #import -#import - @class FBSDKGraphRequest; @class FBSDKGraphRequestConnection; @@ -118,7 +116,7 @@ typedef void (^FBSDKGraphRequestHandler)(FBSDKGraphRequestConnection *connection The byte count arguments refer to the aggregated objects, not a particular . - Like `NSURLConnection`, the values may change in unexpected ways if data needs to be resent. + Like `NSURLSession`, the values may change in unexpected ways if data needs to be resent. @param connection The request connection transmitting data to a remote host @param bytesWritten The number of bytes sent in the last transmission @@ -153,7 +151,7 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; /** Gets or sets the timeout interval to wait for a response before giving up. */ -@property (nonatomic) NSTimeInterval timeout; +@property (nonatomic, assign) NSTimeInterval timeout; /** The raw response that was returned from the server. (readonly) @@ -222,9 +220,14 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; 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; + batchEntryName:(NSString *)name +DEPRECATED_MSG_ATTRIBUTE("Renamed `addRequest:batchEntryName:completionHandler:`"); /** @method @@ -245,9 +248,14 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; 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; + batchParameters:(NSDictionary *)batchParameters +DEPRECATED_MSG_ATTRIBUTE("Renamed `addRequest:batchParameters:completionHandler:`"); /** @methodgroup Instance methods @@ -289,8 +297,6 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; By default, a connection is scheduled on the current thread in the default mode when it is created. You cannot reschedule a connection after it has started. - - This is very similar to `[NSURLConnection setDelegateQueue:]`. */ - (void)setDelegateQueue:(NSOperationQueue *)queue; @@ -307,7 +313,10 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; @param version This is a string in the form @"v2.0" which will be used for the version part of an API path */ -- (void)overrideVersionPartWith:(NSString *)version; +- (void)overrideGraphAPIVersion:(NSString *)version; + +- (void)overrideVersionPartWith:(NSString *)version +DEPRECATED_MSG_ATTRIBUTE("Renamed `overrideGraphAPIVersion`"); @end @@ -320,4 +329,4 @@ totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; will be wrapped into a dictionary using this const as the key. This only applies for very few Graph API prior to v2.1. */ -FBSDK_EXTERN NSString *const FBSDKNonJSONResponseProperty; +FOUNDATION_EXPORT NSString *const FBSDKNonJSONResponseProperty; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m index 33cad15..2df445a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m @@ -154,20 +154,20 @@ NSURLSessionDataDelegate - (void)addRequest:(FBSDKGraphRequest *)request completionHandler:(FBSDKGraphRequestHandler)handler { - [self addRequest:request completionHandler:handler batchEntryName:nil]; + [self addRequest:request batchEntryName:nil completionHandler:handler]; } - (void)addRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)handler batchEntryName:(NSString *)name + completionHandler:(FBSDKGraphRequestHandler)handler { NSDictionary *batchParams = (name)? @{kBatchEntryName : name } : nil; - [self addRequest:request completionHandler:handler batchParameters:batchParams]; + [self addRequest:request batchParameters:batchParams completionHandler:handler]; } - (void)addRequest:(FBSDKGraphRequest *)request + batchParameters:(NSDictionary *)batchParameters completionHandler:(FBSDKGraphRequestHandler)handler - batchParameters:(NSDictionary *)batchParameters { if (self.state != kStateCreated) { @throw [NSException exceptionWithName:NSInternalInconsistencyException @@ -181,6 +181,20 @@ 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; @@ -188,13 +202,18 @@ NSURLSessionDataDelegate [self cleanUpSession]; } -- (void)overrideVersionPartWith:(NSString *)version +- (void)overrideGraphAPIVersion:(NSString *)version { if (![_overrideVersionPart isEqualToString:version]) { _overrideVersionPart = [version copy]; } } +- (void)overrideVersionPartWith:(NSString *)version +{ + [self overrideGraphAPIVersion:version]; +} + - (void)start { static dispatch_once_t onceToken; @@ -284,13 +303,13 @@ NSURLSessionDataDelegate if ([FBSDKGraphRequest isAttachment:value]) { NSString *name = [NSString stringWithFormat:@"%@%lu", kBatchFileNamePrefix, - (unsigned long)[attachments count]]; + (unsigned long)attachments.count]; [attachmentNames addObject:name]; attachments[name] = value; } }]; - if ([attachmentNames count]) { + if (attachmentNames.count) { requestElement[kBatchAttachmentKey] = [attachmentNames componentsJoinedByString:@","]; } @@ -412,16 +431,16 @@ NSURLSessionDataDelegate [self _validateFieldsParamForGetRequests:requests]; - if ([requests count] == 1) { - FBSDKGraphRequestMetadata *metadata = [requests objectAtIndex:0]; + if (requests.count == 1) { + FBSDKGraphRequestMetadata *metadata = requests[0]; NSURL *url = [NSURL URLWithString:[self urlStringForSingleRequest:metadata.request forBatch:NO]]; request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:timeout]; // HTTP methods are case-sensitive; be helpful in case someone provided a mixed case one. - NSString *httpMethod = [metadata.request.HTTPMethod uppercaseString]; - [request setHTTPMethod:httpMethod]; + NSString *httpMethod = metadata.request.HTTPMethod.uppercaseString; + request.HTTPMethod = httpMethod; [self appendAttachments:metadata.request.parameters toBody:body addFormData:[httpMethod isEqualToString:@"POST"] @@ -457,11 +476,11 @@ NSURLSessionDataDelegate request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:timeout]; - [request setHTTPMethod:@"POST"]; + request.HTTPMethod = @"POST"; } - [request setHTTPBody:[body data]]; - NSUInteger bodyLength = [[body data] length] / 1024; + request.HTTPBody = body.data; + NSUInteger bodyLength = body.data.length / 1024; [request setValue:[FBSDKGraphRequestConnection userAgent] forHTTPHeaderField:@"User-Agent"]; [request setValue:[body mimeContentType] forHTTPHeaderField:@"Content-Type"]; @@ -501,17 +520,17 @@ NSURLSessionDataDelegate NSString *prefix = kGraphURLPrefix; // We special case a graph post to /videos and send it to graph-video.facebook.com // We only do this for non batch post requests - NSString *graphPath = [request.graphPath lowercaseString]; - if ([[request.HTTPMethod uppercaseString] isEqualToString:@"POST"] && + NSString *graphPath = request.graphPath.lowercaseString; + if ([request.HTTPMethod.uppercaseString isEqualToString:@"POST"] && [graphPath hasSuffix:@"/videos"]) { graphPath = [graphPath stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"/"]]; NSArray *components = [graphPath componentsSeparatedByString:@"/"]; - if ([components count] == 2) { + if (components.count == 2) { prefix = kGraphVideoURLPrefix; } } - baseURL = [[FBSDKInternalUtility facebookURLWithHostPrefix:prefix path:request.graphPath queryParameters:nil defaultVersion:request.version error:NULL] absoluteString]; + baseURL = [FBSDKInternalUtility facebookURLWithHostPrefix:prefix path:request.graphPath queryParameters:nil defaultVersion:request.version error:NULL].absoluteString; } NSString *url = [FBSDKGraphRequest serializeURL:baseURL @@ -544,7 +563,7 @@ NSURLSessionDataDelegate NSInteger statusCode = _URLResponse.statusCode; if (!error && [response.MIMEType hasPrefix:@"image"]) { - error = [FBSDKError errorWithCode:FBSDKGraphRequestNonTextMimeTypeReturnedErrorCode + error = [NSError fbErrorWithCode: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 { @@ -553,28 +572,28 @@ NSURLSessionDataDelegate statusCode:statusCode]; } } else if (!error) { - error = [FBSDKError errorWithCode:FBSDKUnknownErrorCode + error = [NSError fbErrorWithCode:FBSDKErrorUnknown message:@"Missing NSURLResponse"]; } if (!error) { - if ([self.requests count] != [results count]) { - error = [FBSDKError errorWithCode:FBSDKGraphRequestProtocolMismatchErrorCode + if (self.requests.count != results.count) { + error = [NSError fbErrorWithCode: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", - (unsigned long)[_logger loggerSerialNumber], + (unsigned long)_logger.loggerSerialNumber, [FBSDKInternalUtility currentTimeInMilliseconds] - _requestStartTime, - (unsigned long)[data length], + (unsigned long)data.length, results]; } } if (error) { [_logger appendFormat:@"Response <#%lu> :\n%@\n%@\n", - (unsigned long)[_logger loggerSerialNumber], - [error localizedDescription], - [error userInfo]]; + (unsigned long)_logger.loggerSerialNumber, + error.localizedDescription, + error.userInfo]; } [_logger emitToNSLog]; @@ -607,7 +626,7 @@ NSURLSessionDataDelegate id response = [self parseJSONOrOtherwise:responseUTF8 error:error]; if (responseUTF8 == nil) { - NSString *base64Data = [data length] != 0 ? [data base64EncodedStringWithOptions:0] : @""; + NSString *base64Data = data.length != 0 ? [data base64EncodedStringWithOptions:0] : @""; if (base64Data != nil) { [FBSDKAppEvents logImplicitEvent:@"fb_response_invalid_utf8" valueToSum:nil @@ -619,13 +638,13 @@ NSURLSessionDataDelegate NSDictionary *responseError = nil; if (!response) { if ((error != NULL) && (*error == nil)) { - *error = [self errorWithCode:FBSDKUnknownErrorCode + *error = [self errorWithCode:FBSDKErrorUnknown statusCode:statusCode parsedJSONResponse:nil innerError:nil message:@"The server returned an unexpected response."]; } - } else if ([self.requests count] == 1) { + } else if (self.requests.count == 1) { // response is the entry, so put it in a dictionary under "body" and add // that to array of responses. [results addObject:@{ @@ -666,7 +685,7 @@ NSURLSessionDataDelegate [results addObject:result]; } } else if (error != NULL) { - *error = [self errorWithCode:FBSDKGraphRequestProtocolMismatchErrorCode + *error = [self errorWithCode:FBSDKErrorGraphRequestProtocolMismatch statusCode:statusCode parsedJSONResponse:results innerError:nil @@ -703,11 +722,11 @@ NSURLSessionDataDelegate - (void)completeWithResults:(NSArray *)results networkError:(NSError *)networkError { - NSUInteger count = [self.requests count]; + NSUInteger count = self.requests.count; _expectingResults = count; NSUInteger disabledRecoveryCount = 0; for (FBSDKGraphRequestMetadata *metadata in self.requests) { - if ([metadata.request isGraphErrorRecoveryDisabled]) { + if (metadata.request.graphErrorRecoveryDisabled) { disabledRecoveryCount++; } } @@ -716,7 +735,7 @@ NSURLSessionDataDelegate #endif [self.requests enumerateObjectsUsingBlock:^(FBSDKGraphRequestMetadata *metadata, NSUInteger i, BOOL *stop) { - id result = networkError ? nil : [results objectAtIndex:i]; + id result = networkError ? nil : results[i]; NSError *resultError = networkError ?: [self errorFromResult:result request:metadata.request]; id body = nil; @@ -726,7 +745,7 @@ NSURLSessionDataDelegate } #if !TARGET_OS_TV - if (resultError && ![metadata.request isGraphErrorRecoveryDisabled] && isSingleRequestToRecover) { + if (resultError && !metadata.request.graphErrorRecoveryDisabled && isSingleRequestToRecover) { self->_recoveringRequestMetadata = metadata; self->_errorRecoveryProcessor = [[FBSDKGraphErrorRecoveryProcessor alloc] init]; if ([self->_errorRecoveryProcessor processError:resultError request:metadata.request delegate:self]) { @@ -748,7 +767,7 @@ NSURLSessionDataDelegate - (void)processResultBody:(NSDictionary *)body error:(NSError *)error metadata:(FBSDKGraphRequestMetadata *)metadata canNotifyDelegate:(BOOL)canNotifyDelegate { void (^finishAndInvokeCompletionHandler)(void) = ^{ - NSDictionary *graphDebugDict = [body objectForKey:@"__debug__"]; + NSDictionary *graphDebugDict = body[@"__debug__"]; if ([graphDebugDict isKindOfClass:[NSDictionary class]]) { [self processResultDebugDictionary: graphDebugDict]; } @@ -781,8 +800,8 @@ NSURLSessionDataDelegate BOOL isAccountStoreLogin = [metadataTokenString isEqualToString:accountStoreTokenString]; if ([metadataTokenString isEqualToString:currentTokenString] || isAccountStoreLogin) { - NSInteger errorCode = [error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] integerValue]; - NSInteger errorSubcode = [error.userInfo[FBSDKGraphRequestErrorGraphErrorSubcode] integerValue]; + NSInteger errorCode = [error.userInfo[FBSDKGraphRequestErrorGraphErrorCodeKey] integerValue]; + NSInteger errorSubcode = [error.userInfo[FBSDKGraphRequestErrorGraphErrorSubcodeKey] integerValue]; if (errorCode == 190 || errorCode == 102) { if (isAccountStoreLogin) { if (errorSubcode == 460) { @@ -821,7 +840,7 @@ NSURLSessionDataDelegate - (void)processResultDebugDictionary:(NSDictionary *)dict { NSArray *messages = [FBSDKTypeUtility arrayValue:dict[@"messages"]]; - if (![messages count]) { + if (!messages.count) { return; } @@ -854,8 +873,8 @@ NSURLSessionDataDelegate if ([errorDictionary isKindOfClass:[NSDictionary class]]) { NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"code"] forKey:FBSDKGraphRequestErrorGraphErrorCode]; - [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"error_subcode"] forKey:FBSDKGraphRequestErrorGraphErrorSubcode]; + [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"code"] forKey:FBSDKGraphRequestErrorGraphErrorCodeKey]; + [FBSDKInternalUtility 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]; @@ -867,20 +886,20 @@ NSURLSessionDataDelegate [FBSDKInternalUtility dictionary:userInfo setObject:result forKey:FBSDKGraphRequestErrorParsedJSONResponseKey]; FBSDKErrorRecoveryConfiguration *recoveryConfiguration = [g_errorConfiguration - recoveryConfigurationForCode:[userInfo[FBSDKGraphRequestErrorGraphErrorCode] stringValue] - subcode:[userInfo[FBSDKGraphRequestErrorGraphErrorSubcode] stringValue] + recoveryConfigurationForCode:[userInfo[FBSDKGraphRequestErrorGraphErrorCodeKey] stringValue] + subcode:[userInfo[FBSDKGraphRequestErrorGraphErrorSubcodeKey] stringValue] request:request]; if ([errorDictionary[@"is_transient"] boolValue]) { - userInfo[FBSDKGraphRequestErrorCategoryKey] = @(FBSDKGraphRequestErrorCategoryTransient); + userInfo[FBSDKGraphRequestErrorKey] = @(FBSDKGraphRequestErrorTransient); } else { - [FBSDKInternalUtility dictionary:userInfo setObject:@(recoveryConfiguration.errorCategory) forKey:FBSDKGraphRequestErrorCategoryKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:@(recoveryConfiguration.errorCategory) forKey:FBSDKGraphRequestErrorKey]; } [FBSDKInternalUtility dictionary:userInfo setObject:recoveryConfiguration.localizedRecoveryDescription forKey:NSLocalizedRecoverySuggestionErrorKey]; [FBSDKInternalUtility dictionary:userInfo setObject:recoveryConfiguration.localizedRecoveryOptionDescriptions forKey:NSLocalizedRecoveryOptionsErrorKey]; FBSDKErrorRecoveryAttempter *attempter = [FBSDKErrorRecoveryAttempter recoveryAttempterFromConfiguration:recoveryConfiguration]; [FBSDKInternalUtility dictionary:userInfo setObject:attempter forKey:NSRecoveryAttempterErrorKey]; - return [FBSDKError errorWithCode:FBSDKGraphRequestGraphAPIErrorCode + return [NSError fbErrorWithCode:FBSDKErrorGraphRequestGraphAPI userInfo:userInfo message:nil underlyingError:nil]; @@ -890,7 +909,7 @@ NSURLSessionDataDelegate return nil; } -- (NSError *)errorWithCode:(FBSDKErrorCode)code +- (NSError *)errorWithCode:(FBSDKError)code statusCode:(NSInteger)statusCode parsedJSONResponse:(id)response innerError:(NSError *)innerError @@ -927,8 +946,8 @@ NSURLSessionDataDelegate { if (_logger.isActive) { [_logger appendFormat:@"Request <#%lu>:\n", (unsigned long)_logger.loggerSerialNumber]; - [_logger appendKey:@"URL" value:[[request URL] absoluteString]]; - [_logger appendKey:@"Method" value:[request HTTPMethod]]; + [_logger appendKey:@"URL" value:request.URL.absoluteString]; + [_logger appendKey:@"Method" value:request.HTTPMethod]; [_logger appendKey:@"UserAgent" value:[request valueForHTTPHeaderField:@"User-Agent"]]; [_logger appendKey:@"MIME" value:[request valueForHTTPHeaderField:@"Content-Type"]]; @@ -1054,7 +1073,7 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend if (comma) { [result appendString:@",\n"]; } - [result appendString:[request description]]; + [result appendString:request.description]; comma = YES; } [result appendString:@"\n)>"]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h index 17a10df..7ad50dc 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h @@ -23,6 +23,9 @@ */ @interface FBSDKGraphRequestDataAttachment : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** Initializes the receiver with the attachment data and metadata. @param data The attachment data (retained, not copied) diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m index d5ec04d..9a61611 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m @@ -18,8 +18,6 @@ #import "FBSDKGraphRequestDataAttachment.h" -#import "FBSDKMacros.h" - @implementation FBSDKGraphRequestDataAttachment - (instancetype)initWithData:(NSData *)data filename:(NSString *)filename contentType:(NSString *)contentType @@ -32,10 +30,4 @@ return self; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithData:filename:contentType:); - return [self initWithData:nil filename:nil contentType:nil]; -} - @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h index fd2e2ff..d749579 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h @@ -17,23 +17,3 @@ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #import - -#ifdef __cplusplus -#define FBSDK_EXTERN extern "C" __attribute__((visibility ("default"))) -#else -#define FBSDK_EXTERN extern __attribute__((visibility ("default"))) -#endif - -#define FBSDK_STATIC_INLINE static inline - -#define FBSDK_NO_DESIGNATED_INITIALIZER() \ -@throw [NSException exceptionWithName:NSInvalidArgumentException \ - reason:[NSString stringWithFormat:@"unrecognized selector sent to instance %p", self] \ - userInfo:nil] - -#define FBSDK_NOT_DESIGNATED_INITIALIZER(DESIGNATED_INITIALIZER) \ -@throw [NSException exceptionWithName:NSInvalidArgumentException \ - reason:[NSString stringWithFormat:@"Please use the designated initializer [%p %@]", \ - self, \ - NSStringFromSelector(@selector(DESIGNATED_INITIALIZER))] \ - userInfo:nil] diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h index 057cb96..3798330 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h @@ -20,8 +20,20 @@ NS_ASSUME_NONNULL_BEGIN +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + /*! The name of the notification posted by FBSDKMeasurementEvent */ -FOUNDATION_EXPORT NSString *const FBSDKMeasurementEventNotificationName; +FOUNDATION_EXPORT NSNotificationName const FBSDKMeasurementEventNotification; + +#else + +/*! The name of the notification posted by FBSDKMeasurementEvent */ +FOUNDATION_EXPORT NSString *const FBSDKMeasurementEventNotification; + +#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 */ diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m index 11a1822..ef96d3e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m @@ -18,6 +18,16 @@ #import "FBSDKMeasurementEvent_Internal.h" +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +NSNotificationName const FBSDKMeasurementEventNotification = @"com.facebook.facebook-objc-sdk.measurement_event"; + +#else + +NSString *const FBSDKMeasurementEventNotification = @"com.facebook.facebook-objc-sdk.measurement_event"; + +#endif + NSString *const FBSDKMeasurementEventNotificationName = @"com.facebook.facebook-objc-sdk.measurement_event"; NSString *const FBSDKMeasurementEventNameKey = @"event_name"; @@ -46,7 +56,7 @@ NSString *const FBSDKAppLinkNavigateBackToReferrerEventName = @"al_ref_back_out" NSDictionary *userInfo = @{FBSDKMeasurementEventNameKey : _name, FBSDKMeasurementEventArgsKey : _args}; - [center postNotificationName:FBSDKMeasurementEventNotificationName + [center postNotificationName:FBSDKMeasurementEventNotification object:self userInfo:userInfo]; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h index 2c1ec26..d0e245b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h @@ -14,11 +14,12 @@ // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." -#import "FBSDKMacros.h" #import "FBSDKProfilePictureView.h" +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + /** Notification indicating that the `currentProfile` has changed. @@ -26,19 +27,32 @@ `FBSDKProfileChangeOldKey` and `FBSDKProfileChangeNewKey`. */ -FBSDK_EXTERN NSString *const FBSDKProfileDidChangeNotification; +FOUNDATION_EXPORT NSNotificationName const FBSDKProfileDidChangeNotification; + +#else + +/** + Notification indicating that the `currentProfile` has changed. + + the userInfo dictionary of the notification will contain keys + `FBSDKProfileChangeOldKey` and + `FBSDKProfileChangeNewKey`. + */ +FOUNDATION_EXPORT NSString *const FBSDKProfileDidChangeNotification; + +#endif /* key in notification's userInfo object for getting the old profile. If there was no old profile, the key will not be present. */ -FBSDK_EXTERN NSString *const FBSDKProfileChangeOldKey; +FOUNDATION_EXPORT NSString *const FBSDKProfileChangeOldKey; /* key in notification's userInfo object for getting the new profile. If there is no new profile, the key will not be present. */ -FBSDK_EXTERN NSString *const FBSDKProfileChangeNewKey; +FOUNDATION_EXPORT NSString *const FBSDKProfileChangeNewKey; /** Represents an immutable Facebook profile @@ -54,6 +68,9 @@ FBSDK_EXTERN NSString *const FBSDKProfileChangeNewKey; */ @interface FBSDKProfile : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** initializes a new instance. @param userID the user ID @@ -156,7 +173,7 @@ FBSDK_EXTERN NSString *const FBSDKProfileChangeNewKey; @param size The height and width. This will be rounded to integer precision. */ - (NSString *)imagePathForPictureMode:(FBSDKProfilePictureMode)mode size:(CGSize)size -__attribute__ ((deprecated("use imageURLForPictureMode:size: instead"))); +DEPRECATED_MSG_ATTRIBUTE("use imageURLForPictureMode:size: instead"); /** Returns YES if the profile is equivalent to the receiver. diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m index f2f76d0..c785d1a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m @@ -20,7 +20,16 @@ #import "FBSDKCoreKit+Internal.h" +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +NSNotificationName const FBSDKProfileDidChangeNotification = @"com.facebook.sdk.FBSDKProfile.FBSDKProfileDidChangeNotification";; + +#else + NSString *const FBSDKProfileDidChangeNotification = @"com.facebook.sdk.FBSDKProfile.FBSDKProfileDidChangeNotification";; + +#endif + NSString *const FBSDKProfileChangeOldKey = @"FBSDKProfileOld"; NSString *const FBSDKProfileChangeNewKey = @"FBSDKProfileNew"; static NSString *const FBSDKProfileUserDefaultsKey = @"com.facebook.sdk.FBSDKProfile.currentProfile"; @@ -39,11 +48,6 @@ static FBSDKProfile *g_currentProfile; @implementation FBSDKProfile -- (instancetype)init NS_UNAVAILABLE -{ - assert(0); -} - - (instancetype)initWithUserID:(NSString *)userID firstName:(NSString *)firstName middleName:(NSString *)middleName @@ -140,13 +144,13 @@ static FBSDKProfile *g_currentProfile; - (NSUInteger)hash { NSUInteger subhashes[] = { - [self.userID hash], - [self.firstName hash], - [self.middleName hash], - [self.lastName hash], - [self.name hash], - [self.linkURL hash], - [self.refreshDate hash] + self.userID.hash, + self.firstName.hash, + self.middleName.hash, + self.lastName.hash, + self.name.hash, + self.linkURL.hash, + self.refreshDate.hash }; return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; } @@ -179,7 +183,7 @@ static FBSDKProfile *g_currentProfile; return YES; } -- (id)initWithCoder:(NSCoder *)decoder +- (instancetype)initWithCoder:(NSCoder *)decoder { NSString *userID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDKPROFILE_USERID_KEY]; NSString *firstName = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDKPROFILE_FIRSTNAME_KEY]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m index 001d737..850aad3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m @@ -22,7 +22,6 @@ #import "FBSDKInternalUtility.h" #import "FBSDKMaleSilhouetteIcon.h" #import "FBSDKMath.h" -#import "FBSDKURLConnection.h" #import "FBSDKUtility.h" @interface FBSDKProfilePictureViewState : NSObject @@ -70,7 +69,7 @@ (NSUInteger)_size.height, (NSUInteger)_scale, (NSUInteger)_pictureMode, - [_profileID hash], + _profileID.hash, }; return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; } @@ -120,7 +119,7 @@ return self; } -- (id)initWithCoder:(NSCoder *)decoder +- (instancetype)initWithCoder:(NSCoder *)decoder { if ((self = [super initWithCoder:decoder])) { [self _configureProfilePictureView]; @@ -139,7 +138,7 @@ { CGRect currentBounds = self.bounds; if (!CGRectEqualToRect(currentBounds, bounds)) { - [super setBounds:bounds]; + super.bounds = bounds; if (!CGSizeEqualToSize(currentBounds.size, bounds.size)) { _placeholderImageIsValid = NO; [self setNeedsImageUpdate]; @@ -156,7 +155,7 @@ { if (_imageView.contentMode != contentMode) { _imageView.contentMode = contentMode; - [super setContentMode:contentMode]; + super.contentMode = contentMode; [self setNeedsImageUpdate]; } } @@ -212,16 +211,16 @@ if (!imageURL) { return; } - FBSDKURLConnectionHandler completionHandler = ^(FBSDKURLConnection *connection, - NSError *error, - NSURLResponse *response, - NSData *responseData) { - if (!error && [responseData length]) { - completionBlock(responseData); - } - }; + NSURLRequest *request = [[NSURLRequest alloc] initWithURL:imageURL]; - [[[FBSDKURLConnection alloc] initWithRequest:request completionHandler:completionHandler] start]; + 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 @@ -241,7 +240,7 @@ - (void)_accessTokenDidChangeNotification:(NSNotification *)notification { - if (![_profileID isEqualToString:@"me"] || !notification.userInfo[FBSDKAccessTokenDidChangeUserID]) { + if (![_profileID isEqualToString:@"me"] || !notification.userInfo[FBSDKAccessTokenDidChangeUserIDKey]) { return; } _lastState = nil; @@ -328,7 +327,7 @@ // leave the current value until the new resolution image is downloaded BOOL imageShouldFit = [self _imageShouldFit]; UIScreen *screen = self.window.screen ?: [UIScreen mainScreen]; - CGFloat scale = [screen scale]; + CGFloat scale = screen.scale; CGSize imageSize = [self _imageSize:imageShouldFit scale:scale]; FBSDKProfilePictureViewState *state = [[FBSDKProfilePictureViewState alloc] initWithProfileID:_profileID size:imageSize diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h index f854710..5364cfd 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h @@ -18,46 +18,47 @@ #import -#import - /* * Constants defining logging behavior. Use with <[FBSDKSettings setLoggingBehavior]>. */ /** Include access token in logging. */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorAccessTokens; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorAccessTokens; /** Log performance characteristics */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorPerformanceCharacteristics; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorPerformanceCharacteristics; /** Log FBSDKAppEvents interactions */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorAppEvents; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorAppEvents; /** Log Informational occurrences */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorInformational; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorInformational; /** Log cache errors. */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorCacheErrors; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorCacheErrors; /** Log errors from SDK UI controls */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorUIControlErrors; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorUIControlErrors; /** Log debug warnings from API response, i.e. when friends fields requested, but user_friends permission isn't granted. */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorGraphAPIDebugWarning; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorGraphAPIDebugWarning; /** Log warnings from API response, i.e. when requested feature will be deprecated in next version of API. Info is the lowest level of severity, using it will result in logging all previously mentioned levels. */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorGraphAPIDebugInfo; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorGraphAPIDebugInfo; /** Log errors from SDK network requests */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorNetworkRequests; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorNetworkRequests; /** Log errors likely to be preventable by the developer. This is in the default set of enabled logging behaviors. */ -FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorDeveloperErrors; +FOUNDATION_EXPORT NSString *const FBSDKLoggingBehaviorDeveloperErrors; @interface FBSDKSettings : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** Get the Facebook App ID used by the SDK. @@ -177,6 +178,18 @@ FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorDeveloperErrors; */ + (void)setCodelessDebugLogEnabled:(NSNumber *)CodelessDebugLogEnabled; +/** + Flag which controls whether advertiserID could be collected. + If not explicitly set, the default is 1 - true + */ ++ (NSNumber *)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. + */ ++ (void)setAdvertiserIDCollectionEnabled:(NSNumber *)AdvertiserIDCollectionEnabled; + /** 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. */ diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m index 7bc6346..241446f 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m @@ -77,6 +77,8 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookAutoLogAppEvent setAutoLogAppEventsEnabled, @1); FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLogEnabled, codelessDebugLogEnabled, setCodelessDebugLogEnabled, @0); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookAdvertiserIDCollectionEnabled, advertiserIDCollectionEnabled, + setAdvertiserIDCollectionEnabled, @1); + (void)setGraphErrorRecoveryDisabled:(BOOL)disableGraphErrorRecovery { g_disableErrorRecovery = disableGraphErrorRecovery; @@ -88,7 +90,7 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo + (CGFloat)JPEGCompressionQuality { - return [[self _JPEGCompressionQualityNumber] floatValue]; + return [self _JPEGCompressionQualityNumber].floatValue; } + (void)setJPEGCompressionQuality:(CGFloat)JPEGCompressionQuality @@ -173,14 +175,6 @@ FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookCodelessDebugLo return FBSDK_VERSION_STRING; } -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - #pragma mark - Internal + (NSObject *)accessTokenCache diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h index 17a5ea5..7373639 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h @@ -48,6 +48,9 @@ typedef void (^FBSDKTestUsersManagerRemoveTestAccountHandler)(NSError *error) ; */ @interface FBSDKTestUsersManager : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** construct or return the shared instance @param appID the Facebook app id diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m index acc0571..d6e45c7 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m @@ -48,12 +48,6 @@ static NSMutableDictionary *gInstancesDictionary; return self; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithAppID:appSecret:); - return [self initWithAppID:nil appSecret:nil]; -} - + (instancetype)sharedInstanceForAppID:(NSString *)appID appSecret:(NSString *)appSecret { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ @@ -132,7 +126,7 @@ static NSMutableDictionary *gInstancesDictionary; completionHandler:(FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)handler { NSDictionary *params = @{ @"installed" : @"true", - @"permissions" : [[permissions allObjects] componentsJoinedByString:@","], + @"permissions" : [permissions.allObjects componentsJoinedByString:@","], @"access_token" : self.appAccessToken }; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:kFBGraphAPITestUsersPathFormat, _appID] @@ -166,8 +160,8 @@ static NSMutableDictionary *gInstancesDictionary; __block int expectedCount = 2; void (^complete)(NSError *) = ^(NSError *error) { // ignore if they're already friends or pending request - if ([error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] integerValue] == 522 || - [error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] integerValue] == 520) { + if ([error.userInfo[FBSDKGraphRequestErrorGraphErrorCodeKey] integerValue] == 522 || + [error.userInfo[FBSDKGraphRequestErrorGraphErrorCodeKey] integerValue] == 520) { error = nil; } if (--expectedCount == 0 || error) { @@ -185,12 +179,16 @@ static NSMutableDictionary *gInstancesDictionary; version:nil HTTPMethod:@"POST"]; FBSDKGraphRequestConnection *conn = [[FBSDKGraphRequestConnection alloc] init]; - [conn addRequest:one completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + [conn addRequest:one + batchEntryName:@"first" + completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { complete(error); - } batchEntryName:@"first"]; - [conn addRequest:two completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + }]; + [conn addRequest:two + batchParameters:@{ @"depends_on" : @"first"} + completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { complete(error); - } batchParameters:@{ @"depends_on" : @"first"} ]; + }]; [conn start]; } @@ -211,7 +209,7 @@ static NSMutableDictionary *gInstancesDictionary; #pragma mark - private methods - (FBSDKAccessToken *)tokenDataForTokenString:(NSString *)tokenString permissions:(NSSet *)permissions userId:(NSString *)userId{ return [[FBSDKAccessToken alloc] initWithTokenString:tokenString - permissions:[permissions allObjects] + permissions:permissions.allObjects declinedPermissions:nil appID:_appID userID:userId diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m index 1a27e29..adc4729 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m @@ -88,14 +88,14 @@ if (sourceApplication) { logData[@"sourceApplication"] = sourceApplication; } - if ([_targetURL absoluteString]) { - logData[@"targetURL"] = [_targetURL absoluteString]; + if (_targetURL.absoluteString) { + logData[@"targetURL"] = _targetURL.absoluteString; } - if ([_inputURL absoluteString]) { - logData[@"inputURL"] = [_inputURL absoluteString]; + if (_inputURL.absoluteString) { + logData[@"inputURL"] = _inputURL.absoluteString; } - if ([_inputURL scheme]) { - logData[@"inputURLScheme"] = [_inputURL scheme]; + 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; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h index 5a7fdff..560b6b0 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h @@ -23,6 +23,9 @@ */ @interface FBSDKUtility : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** Parses a query string into a dictionary. @param queryString The query string value. diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m index 1735d6c..8888db1 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m @@ -21,7 +21,6 @@ #import #import "FBSDKInternalUtility.h" -#import "FBSDKMacros.h" @implementation FBSDKUtility @@ -31,7 +30,7 @@ NSArray *parts = [queryString componentsSeparatedByString:@"&"]; for (NSString *part in parts) { - if ([part length] == 0) { + if (part.length == 0) { continue; } @@ -63,23 +62,18 @@ + (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 [value + stringByReplacingOccurrencesOfString:@"+" + withString:@" "].stringByRemovingPercentEncoding; } #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); + NSCharacterSet *urlAllowedSet = [NSCharacterSet + characterSetWithCharactersInString:@" !*();:'@&=+$,/?%#[]\""].invertedSet; + return [value stringByAddingPercentEncodingWithAllowedCharacters:urlAllowedSet]; } #pragma clang diagnostic pop @@ -133,10 +127,4 @@ return encryptedStuff; } -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m index 3f40440..6b6839a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m @@ -139,14 +139,10 @@ static NSString *const FBSDKWebViewAppLinkResolverShouldFallbackKey = @"should_f NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setValue:FBSDKWebViewAppLinkResolverMetaTagPrefix forHTTPHeaderField:FBSDKWebViewAppLinkResolverPreferHeader]; -#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 } - (void)appLinkFromURL:(NSURL *)url handler:(FBSDKAppLinkFromURLHandler)handler @@ -293,7 +289,7 @@ static NSString *const FBSDKWebViewAppLinkResolverShouldFallbackKey = @"should_f NSURL *webUrl = destination; if (shouldFallbackString && - [@[ @"no", @"false", @"0" ] containsObject:[shouldFallbackString lowercaseString]]) { + [@[ @"no", @"false", @"0" ] containsObject:shouldFallbackString.lowercaseString]) { webUrl = nil; } if (webUrl && webUrlString) { diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h similarity index 93% rename from Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h index ad83522..016fad5 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h @@ -18,8 +18,8 @@ #import -#import "FBSDKCoreKit+Internal.h" +@interface FBSDKCodelessIndexer : NSObject -@interface FBSDKShareError : FBSDKError ++ (NSString *)extInfo; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.m new file mode 100644 index 0000000..d31c7e0 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.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 "FBSDKCodelessIndexer.h" + +#import +#import +#import + +#import + +#import +#import + +#import "FBSDKCoreKit+Internal.h" + +@implementation FBSDKCodelessIndexer + +static BOOL _isCodelessIndexing; +static BOOL _isCheckingSession; +static BOOL _isCodelessIndexingEnabled; + +static NSString *_deviceSessionID; +static NSTimer *_appIndexingTimer; +static NSString *_lastTreeHash; + ++ (void)load +{ +#if TARGET_OS_SIMULATOR + [self setupGesture]; +#else + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *error) { + if (serverConfiguration.codelessSetupEnabled) { + [self setupGesture]; + } + }]; +#endif +} + ++ (void)setupGesture +{ + [UIApplication sharedApplication].applicationSupportsShakeToEdit = YES; + Class class = [UIApplication class]; + + [FBSDKSwizzler swizzleSelector:@selector(motionBegan:withEvent:) onClass:class withBlock:^{ + if ([FBSDKServerConfigurationManager cachedServerConfiguration].isCodelessEventsEnabled) { + [self checkCodelessIndexingSession]; + } + } named:@"motionBegan"]; +} + + + ++ (void)checkCodelessIndexingSession +{ + if (_isCheckingSession) return; + + _isCheckingSession = YES; + NSDictionary *parameters = @{ + CODELESS_INDEXING_SESSION_ID_KEY: [self currentSessionDeviceID], + CODELESS_INDEXING_EXT_INFO_KEY: [self extInfo] + }; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] + initWithGraphPath:[NSString stringWithFormat:@"%@/%@", + [FBSDKSettings appID], CODELESS_INDEXING_SESSION_ENDPOINT] + parameters: parameters + HTTPMethod:@"POST"]; + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + _isCheckingSession = NO; + if ([result isKindOfClass:[NSDictionary class]]) { + _isCodelessIndexingEnabled = [((NSDictionary *)result)[CODELESS_INDEXING_STATUS_KEY] boolValue]; + if (_isCodelessIndexingEnabled) { + _lastTreeHash = nil; + if (!_appIndexingTimer) { + _appIndexingTimer = [NSTimer timerWithTimeInterval:CODELESS_INDEXING_UPLOAD_INTERVAL_IN_SECONDS + target:self + selector:@selector(startIndexing) + userInfo:nil + repeats:YES]; + + [[NSRunLoop mainRunLoop] addTimer:_appIndexingTimer forMode:NSDefaultRunLoopMode]; + } + } else { + _deviceSessionID = nil; + } + } + }]; +} + ++ (NSString *)currentSessionDeviceID +{ + if (!_deviceSessionID) { + _deviceSessionID = [NSUUID UUID].UUIDString; + } + return _deviceSessionID; +} + ++ (NSString *)extInfo +{ + struct utsname systemInfo; + uname(&systemInfo); + NSString *machine = @(systemInfo.machine); + NSString *advertiserID = [FBSDKAppEventsUtility advertiserID] ?: @""; + machine = machine ?: @""; + NSString *debugStatus = [FBSDKAppEventsUtility isDebugBuild] ? @"1" : @"0"; +#if TARGET_IPHONE_SIMULATOR + NSString *isSimulator = @"1"; +#else + NSString *isSimulator = @"0"; +#endif + NSLocale *locale = [NSLocale currentLocale]; + NSString *languageCode = [locale objectForKey:NSLocaleLanguageCode]; + NSString *countryCode = [locale objectForKey:NSLocaleCountryCode]; + NSString *localeString = locale.localeIdentifier; + if (languageCode && countryCode) { + localeString = [NSString stringWithFormat:@"%@_%@", languageCode, countryCode]; + } + + NSString *extinfo = [FBSDKInternalUtility JSONStringForObject:@[machine, + advertiserID, + debugStatus, + isSimulator, + localeString] + error:NULL + invalidObjectHandler:NULL]; + + return extinfo ?: @""; +} + ++ (void)startIndexing { + if (!_isCodelessIndexingEnabled) { + return; + } + + if (UIApplicationStateActive != [UIApplication sharedApplication].applicationState) { + return; + } + + // If userAgentSuffix begins with Unity, trigger unity code to upload view hierarchy + NSString *userAgentSuffix = [FBSDKSettings userAgentSuffix]; + if (userAgentSuffix != nil && [userAgentSuffix hasPrefix:@"Unity"]) { + Class FBUnityUtility = objc_lookUpClass("FBUnityUtility"); + SEL selector = NSSelectorFromString(@"triggerUploadViewHierarchy"); + if (FBUnityUtility && selector && [FBUnityUtility respondsToSelector:selector]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + [FBUnityUtility performSelector:selector]; +#pragma clang diagnostic pop + } + } else { + [self uploadIndexing]; + } +} + ++ (void)uploadIndexing +{ + if (_isCodelessIndexing) { + return; + } + + NSString *tree = [FBSDKCodelessIndexer currentViewTree]; + + [self uploadIndexing:tree]; +} + ++ (void)uploadIndexing:(NSString *)tree +{ + if (_isCodelessIndexing) { + return; + } + + if (!tree) { + return; + } + + NSString *currentTreeHash = [FBSDKUtility SHA256Hash:tree]; + if (_lastTreeHash && [_lastTreeHash isEqualToString:currentTreeHash]) { + return; + } + + _lastTreeHash = currentTreeHash; + + NSBundle *mainBundle = [NSBundle mainBundle]; + NSString *version = [mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; + + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] + initWithGraphPath:[NSString stringWithFormat:@"%@/%@", + [FBSDKSettings appID], CODELESS_INDEXING_ENDPOINT] + parameters:@{ + CODELESS_INDEXING_TREE_KEY: tree, + CODELESS_INDEXING_APP_VERSION_KEY: version ?: @"", + CODELESS_INDEXING_PLATFORM_KEY: @"iOS", + CODELESS_INDEXING_SESSION_ID_KEY: [self currentSessionDeviceID] + } + HTTPMethod:@"POST"]; + _isCodelessIndexing = YES; + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + _isCodelessIndexing = NO; + if ([result isKindOfClass:[NSDictionary class]]) { + _isCodelessIndexingEnabled = [result[CODELESS_INDEXING_STATUS_KEY] boolValue]; + if (!_isCodelessIndexingEnabled) { + _deviceSessionID = nil; + } + } + }]; +} + ++ (NSString *)currentViewTree +{ + NSMutableArray *trees = [NSMutableArray array]; + + NSArray *windows = [UIApplication sharedApplication].windows; + for (UIWindow *window in windows) { + NSDictionary *tree = [FBSDKCodelessIndexer recursiveCaptureTree:window]; + if (tree) { + if (window.isKeyWindow) { + [trees insertObject:tree atIndex:0]; + } else { + [trees addObject:tree]; + } + } + } + + if (0 == trees.count) { + return nil; + } + + NSArray *viewTrees = [trees reverseObjectEnumerator].allObjects; + + NSData *data = UIImageJPEGRepresentation([FBSDKCodelessIndexer screenshot], 0.5); + NSString *screenshot = [data base64EncodedStringWithOptions:0]; + + NSMutableDictionary *treeInfo = [NSMutableDictionary dictionary]; + + treeInfo[@"view"] = viewTrees; + treeInfo[@"screenshot"] = screenshot ?: @""; + + NSString *tree = nil; + data = [NSJSONSerialization dataWithJSONObject:treeInfo options:0 error:nil]; + if (data) { + tree = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + } + + return tree; +} + ++ (NSDictionary *)recursiveCaptureTree:(NSObject *)obj +{ + if (!obj) { + return nil; + } + + NSMutableDictionary *result = [FBSDKViewHierarchy getDetailAttributesOf:obj]; + + NSArray *children = [FBSDKViewHierarchy getChildren:obj]; + NSMutableArray *childrenTrees = [NSMutableArray array]; + for (NSObject *child in children) { + NSDictionary *objTree = [self recursiveCaptureTree:child]; + [childrenTrees addObject:objTree]; + } + + if (childrenTrees.count > 0) { + [result setValue:[childrenTrees copy] forKey:CODELESS_VIEW_TREE_CHILDREN_KEY]; + } + + return [result copy]; +} + ++ (UIImage *)screenshot { + UIWindow *window = [UIApplication sharedApplication].delegate.window; + + UIGraphicsBeginImageContext(window.bounds.size); + [window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES]; + UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + return image; +} + ++ (NSDictionary *)dimensionOf:(NSObject *)obj +{ + UIView *view = nil; + + if ([obj isKindOfClass:[UIView class]]) { + view = (UIView *)obj; + } else if ([obj isKindOfClass:[UIViewController class]]) { + view = ((UIViewController *)obj).view; + } + + CGRect frame = view.frame; + CGPoint offset = CGPointZero; + + if ([view isKindOfClass:[UIScrollView class]]) + offset = ((UIScrollView *)view).contentOffset; + + return @{ + CODELESS_VIEW_TREE_TOP_KEY: @((int)frame.origin.y), + CODELESS_VIEW_TREE_LEFT_KEY: @((int)frame.origin.x), + CODELESS_VIEW_TREE_WIDTH_KEY: @((int)frame.size.width), + CODELESS_VIEW_TREE_HEIGHT_KEY: @((int)frame.size.height), + CODELESS_VIEW_TREE_OFFSET_X_KEY: @((int)offset.x), + CODELESS_VIEW_TREE_OFFSET_Y_KEY: @((int)offset.y), + CODELESS_VIEW_TREE_VISIBILITY_KEY: view.isHidden ? @4 : @0 + }; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h index 213e6f3..fb86be4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h @@ -37,12 +37,49 @@ #define CODELESS_MAPPING_HINT_KEY @"hint" #define CODELESS_MAPPING_PARAMETERS_KEY @"parameters" #define CODELESS_MAPPING_PARAMETER_NAME_KEY @"name" -#define CODELESS_MAPPING_PARAMETER_VALUE_KEY @"value" +#define CODELESS_MAPPING_PARAMETER_VALUE_KEY @"value" #define CODELESS_MAPPING_PARENT_CLASS_NAME @".." #define CODELESS_MAPPING_CURRENT_CLASS_NAME @"." -#define ReactNativeClassRCTView @"RCTView" -#define ReactNativeClassRCTRootView @"RCTRootView" +#define ReactNativeClassRCTView "RCTView" +#define ReactNativeClassRCTRootView "RCTRootView" + +#define CODELESS_INDEXING_UPLOAD_INTERVAL_IN_SECONDS 1 +#define CODELESS_INDEXING_STATUS_KEY @"is_app_indexing_enabled" +#define CODELESS_INDEXING_SESSION_ID_KEY @"device_session_id" +#define CODELESS_INDEXING_APP_VERSION_KEY @"app_version" +#define CODELESS_INDEXING_SDK_VERSION_KEY @"sdk_version" +#define CODELESS_INDEXING_PLATFORM_KEY @"platform" +#define CODELESS_INDEXING_TREE_KEY @"tree" +#define CODELESS_INDEXING_SCREENSHOT_KEY @"screenshot" +#define CODELESS_INDEXING_EXT_INFO_KEY @"extinfo" + +#define CODELESS_INDEXING_ENDPOINT @"app_indexing" +#define CODELESS_INDEXING_SESSION_ENDPOINT @"app_indexing_session" + +// keys for view tree +#define CODELESS_VIEW_TREE_CLASS_NAME_KEY @"classname" +#define CODELESS_VIEW_TREE_CLASS_TYPE_BIT_MASK_KEY @"classtypebitmask" +#define CODELESS_VIEW_TREE_TEXT_KEY @"text" +#define CODELESS_VIEW_TREE_DESC_KEY @"description" +#define CODELESS_VIEW_TREE_DIMENSION_KEY @"dimension" +#define CODELESS_VIEW_TREE_TAG_KEY @"tag" +#define CODELESS_VIEW_TREE_CHILDREN_KEY @"childviews" +#define CODELESS_VIEW_TREE_HINT_KEY @"hint" +#define CODELESS_VIEW_TREE_ACTIONS_KEY @"actions" + +#define CODELESS_VIEW_TREE_TOP_KEY @"top" +#define CODELESS_VIEW_TREE_LEFT_KEY @"left" +#define CODELESS_VIEW_TREE_WIDTH_KEY @"width" +#define CODELESS_VIEW_TREE_HEIGHT_KEY @"height" +#define CODELESS_VIEW_TREE_OFFSET_X_KEY @"scrollx" +#define CODELESS_VIEW_TREE_OFFSET_Y_KEY @"scrolly" +#define CODELESS_VIEW_TREE_VISIBILITY_KEY @"visibility" + +#define CODELESS_VIEW_TREE_TEXT_STYLE_KEY @"text_style" +#define CODELESS_VIEW_TREE_TEXT_IS_BOLD_KEY @"is_bold" +#define CODELESS_VIEW_TREE_TEXT_IS_ITALIC_KEY @"is_italic" +#define CODELESS_VIEW_TREE_TEXT_SIZE_KEY @"font_size" #endif /* FBSDKCodelessMacros_h */ diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.m index ea57563..769ff88 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.m @@ -25,15 +25,14 @@ - (instancetype)initWithJSON:(NSDictionary *)dict { if (self = [super init]) { - _name = [[dict objectForKey:CODELESS_MAPPING_PARAMETER_NAME_KEY] copy]; - _value = [[dict objectForKey:CODELESS_MAPPING_PARAMETER_VALUE_KEY] copy]; - _pathType = [[dict objectForKey:CODELESS_MAPPING_PATH_TYPE_KEY] copy]; + _name = [dict[CODELESS_MAPPING_PARAMETER_NAME_KEY] copy]; + _value = [dict[CODELESS_MAPPING_PARAMETER_VALUE_KEY] copy]; + _pathType = [dict[CODELESS_MAPPING_PATH_TYPE_KEY] copy]; - NSArray *ary = [dict objectForKey:CODELESS_MAPPING_PATH_KEY]; + NSArray *ary = dict[CODELESS_MAPPING_PATH_KEY]; NSMutableArray *mut = [NSMutableArray array]; for (NSDictionary *info in ary) { - FBSDKCodelessPathComponent *component = [[FBSDKCodelessPathComponent alloc] - initWithJSON:info]; + FBSDKCodelessPathComponent *component = [[FBSDKCodelessPathComponent alloc] initWithJSON:info]; [mut addObject:component]; } _path = [mut copy]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.m index 77f433f..1fc5108 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.m @@ -24,32 +24,32 @@ - (instancetype)initWithJSON:(NSDictionary *)dict { if (self = [super init]) { - _className = [[dict objectForKey:CODELESS_MAPPING_CLASS_NAME_KEY] copy]; - _text = [[dict objectForKey:CODELESS_MAPPING_TEXT_KEY] copy]; - _hint = [[dict objectForKey:CODELESS_MAPPING_HINT_KEY] copy]; - _desc = [[dict objectForKey:CODELESS_MAPPING_DESC_KEY] copy]; + _className = [dict[CODELESS_MAPPING_CLASS_NAME_KEY] copy]; + _text = [dict[CODELESS_MAPPING_TEXT_KEY] copy]; + _hint = [dict[CODELESS_MAPPING_HINT_KEY] copy]; + _desc = [dict[CODELESS_MAPPING_DESC_KEY] copy]; - if ([dict objectForKey:CODELESS_MAPPING_INDEX_KEY]) { - _index = [[dict objectForKey:CODELESS_MAPPING_INDEX_KEY] intValue]; + if (dict[CODELESS_MAPPING_INDEX_KEY]) { + _index = [dict[CODELESS_MAPPING_INDEX_KEY] intValue]; } else { _index = -1; } - if ([dict objectForKey:CODELESS_MAPPING_SECTION_KEY]) { - _section = [[dict objectForKey:CODELESS_MAPPING_SECTION_KEY] intValue]; + if (dict[CODELESS_MAPPING_SECTION_KEY]) { + _section = [dict[CODELESS_MAPPING_SECTION_KEY] intValue]; } else { _section = -1; } - if ([dict objectForKey:CODELESS_MAPPING_ROW_KEY]) { - _row = [[dict objectForKey:CODELESS_MAPPING_ROW_KEY] intValue]; + if (dict[CODELESS_MAPPING_ROW_KEY]) { + _row = [dict[CODELESS_MAPPING_ROW_KEY] intValue]; } else { _row = -1; } - _tag = [[dict objectForKey:CODELESS_MAPPING_TAG_KEY] intValue]; - _matchBitmask = [[dict objectForKey:CODELESS_MAPPING_MATCH_BITMASK_KEY] intValue]; + _tag = [dict[CODELESS_MAPPING_TAG_KEY] intValue]; + _matchBitmask = [dict[CODELESS_MAPPING_MATCH_BITMASK_KEY] intValue]; } return self; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m index 7dcae2f..322b4ef 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m @@ -37,25 +37,23 @@ - (FBSDKEventBinding *)initWithJSON:(NSDictionary *)dict { if ((self = [super init])) { - _eventName = [[dict objectForKey:CODELESS_MAPPING_EVENT_NAME_KEY] copy]; - _eventType = [[dict objectForKey:CODELESS_MAPPING_EVENT_TYPE_KEY] copy]; - _appVersion = [[dict objectForKey:CODELESS_MAPPING_APP_VERSION_KEY] copy]; - _pathType = [[dict objectForKey:CODELESS_MAPPING_PATH_TYPE_KEY] copy]; + _eventName = [dict[CODELESS_MAPPING_EVENT_NAME_KEY] copy]; + _eventType = [dict[CODELESS_MAPPING_EVENT_TYPE_KEY] copy]; + _appVersion = [dict[CODELESS_MAPPING_APP_VERSION_KEY] copy]; + _pathType = [dict[CODELESS_MAPPING_PATH_TYPE_KEY] copy]; - NSArray *pathComponents = [dict objectForKey:CODELESS_MAPPING_PATH_KEY]; + NSArray *pathComponents = dict[CODELESS_MAPPING_PATH_KEY]; NSMutableArray *mut = [NSMutableArray array]; for (NSDictionary *info in pathComponents) { - FBSDKCodelessPathComponent *component = [[FBSDKCodelessPathComponent alloc] - initWithJSON:info]; + FBSDKCodelessPathComponent *component = [[FBSDKCodelessPathComponent alloc] initWithJSON:info]; [mut addObject:component]; } _path = [mut copy]; - NSArray *parameters = [dict objectForKey:CODELESS_MAPPING_PARAMETERS_KEY]; + NSArray *parameters = dict[CODELESS_MAPPING_PARAMETERS_KEY]; mut = [NSMutableArray array]; for (NSDictionary *info in parameters) { - FBSDKCodelessParameterComponent *component = [[FBSDKCodelessParameterComponent alloc] - initWithJSON:info]; + FBSDKCodelessParameterComponent *component = [[FBSDKCodelessParameterComponent alloc] initWithJSON:info]; [mut addObject:component]; } _parameters = [mut copy]; @@ -67,7 +65,7 @@ { UIView *sourceView = [sender isKindOfClass:[UIView class]] ? (UIView *)sender : nil; NSMutableDictionary *params = [NSMutableDictionary dictionary]; - [params setObject:@"1" forKey:CODELESS_CODELESS_EVENT_KEY]; + params[CODELESS_CODELESS_EVENT_KEY] = @"1"; for (FBSDKCodelessParameterComponent *component in self.parameters) { NSString *text = component.value; if (!text || text.length == 0) { @@ -78,9 +76,9 @@ if (text) { if ([component.name isEqualToString:PARAMETER_NAME_PRICE]) { NSNumber *value = [FBSDKAppEventsUtility getNumberValue:text]; - [params setObject:value forKey:component.name]; + params[component.name] = value; } else { - [params setObject:text forKey:component.name]; + params[component.name] = text; } } } @@ -162,8 +160,8 @@ pathComponent:(FBSDKCodelessPathComponent *)component NSInteger idxPath = path.count - i - 1; NSInteger idxViewPath = viewPath.count - i - 1; - FBSDKCodelessPathComponent *pathComponent = [path objectAtIndex:idxPath]; - FBSDKCodelessPathComponent *viewPathComponent = [viewPath objectAtIndex:idxViewPath]; + FBSDKCodelessPathComponent *pathComponent = path[idxPath]; + FBSDKCodelessPathComponent *viewPathComponent = viewPath[idxViewPath]; if (![pathComponent.className isEqualToString:viewPathComponent.className]) { return NO; @@ -206,7 +204,7 @@ pathComponent:(FBSDKCodelessPathComponent *)component return nil; } - FBSDKCodelessPathComponent *pathComponent = [path objectAtIndex:level]; + FBSDKCodelessPathComponent *pathComponent = path[level]; // If found parent, skip to next level if ([pathComponent.className isEqualToString:CODELESS_MAPPING_PARENT_CLASS_NAME]) { @@ -232,7 +230,7 @@ pathComponent:(FBSDKCodelessPathComponent *)component if (path.count - 1 == level) { int index = pathComponent.index; if (index >= 0) { - NSObject *child = index < children.count ? [children objectAtIndex:index] : nil; + NSObject *child = index < children.count ? children[index] : nil; if ([self match:child pathComponent:pathComponent]) { return child; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m index 1db42c0..8850bcf 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m @@ -18,6 +18,8 @@ #import "FBSDKEventBindingManager.h" +#import + #import #import "FBSDKCodelessMacros.h" @@ -27,14 +29,13 @@ #import "FBSDKTypeUtility.h" #import "FBSDKViewHierarchy.h" -#define ReactNativeEventNameKey @"eventName" -#define ReactNativeViewTagKey @"viewTag" -#define ReactNativeTouchEndEventName @"touchEnd" +#define ReactNativeTargetKey @"target" +#define ReactNativeTouchEndEventName @"topTouchEnd" -#define ReactNativeClassRCTTextView @"RCTTextView" -#define ReactNativeClassRCTImageView @"RCTImageVIew" -#define ReactNativeClassRCTEventDispatcher @"RCTEventDispatcher" -#define ReactNativeClassRCTTouchEvent @"RCTTouchEvent" +#define ReactNativeClassRCTTextView "RCTTextView" +#define ReactNativeClassRCTImageView "RCTImageVIew" +#define ReactNativeClassRCTEventDispatcher "RCTEventDispatcher" +#define ReactNativeClassRCTTouchEvent "RCTTouchEvent" static void fb_dispatch_on_main_thread(dispatch_block_t block) { dispatch_async(dispatch_get_main_queue(), block); @@ -59,7 +60,7 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { - (id)init { self = [super init]; if (self) { - isStarted = false; + isStarted = NO; hasReactNative = NO; reactBindings = [NSMutableDictionary dictionary]; @@ -68,12 +69,12 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { [classes addObject:[UITableView class]]; [classes addObject:[UICollectionView class]]; // ReactNative - Class classRCTRootView = NSClassFromString(ReactNativeClassRCTRootView); + Class classRCTRootView = objc_lookUpClass(ReactNativeClassRCTRootView); if (classRCTRootView != nil) { hasReactNative = YES; - Class classRCTView = NSClassFromString(ReactNativeClassRCTView); - Class classRCTTextView = NSClassFromString(ReactNativeClassRCTTextView); - Class classRCTImageView = NSClassFromString(ReactNativeClassRCTImageView); + Class classRCTView = objc_lookUpClass(ReactNativeClassRCTView); + Class classRCTTextView = objc_lookUpClass(ReactNativeClassRCTTextView); + Class classRCTImageView = objc_lookUpClass(ReactNativeClassRCTImageView); if (classRCTView) { [classes addObject:classRCTView]; } @@ -121,7 +122,7 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { if (isStarted) { return; } - isStarted = true; + isStarted = YES; void (^blockToSuperview)(id view) = ^(id view) { [self matchView:view delegate:nil]; @@ -132,45 +133,47 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { }; [FBSDKSwizzler swizzleSelector:@selector(didMoveToSuperview) - onClass:[UIControl class] - withBlock:blockToSuperview named:@"map_control"]; + onClass:[UIControl class] + withBlock:blockToSuperview named:@"map_control"]; [FBSDKSwizzler swizzleSelector:@selector(didMoveToWindow) - onClass:[UIControl class] - withBlock:blockToWindow named:@"map_control"]; + onClass:[UIControl class] + withBlock:blockToWindow named:@"map_control"]; // ReactNative if (hasReactNative) { // If app is built via ReactNative - Class classRCTView = NSClassFromString(ReactNativeClassRCTView); - Class classRCTTextView = NSClassFromString(ReactNativeClassRCTTextView); - Class classRCTImageView = NSClassFromString(ReactNativeClassRCTImageView); - Class classRCTEventDispatcher = NSClassFromString(ReactNativeClassRCTEventDispatcher); + Class classRCTView = objc_lookUpClass(ReactNativeClassRCTView); + Class classRCTTextView = objc_lookUpClass(ReactNativeClassRCTTextView); + Class classRCTImageView = objc_lookUpClass(ReactNativeClassRCTImageView); + Class classRCTEventDispatcher = objc_lookUpClass(ReactNativeClassRCTEventDispatcher); // All react-native views would be added tp RCTRootView, so no need to check didMoveToWindow [FBSDKSwizzler swizzleSelector:@selector(didMoveToSuperview) - onClass:classRCTView - withBlock:blockToSuperview - named:@"match_react_native"]; + onClass:classRCTView + withBlock:blockToSuperview + named:@"match_react_native"]; [FBSDKSwizzler swizzleSelector:@selector(didMoveToSuperview) - onClass:classRCTTextView - withBlock:blockToSuperview - named:@"match_react_native"]; + onClass:classRCTTextView + withBlock:blockToSuperview + named:@"match_react_native"]; [FBSDKSwizzler swizzleSelector:@selector(didMoveToSuperview) - onClass:classRCTImageView - withBlock:blockToSuperview - named:@"match_react_native"]; + onClass:classRCTImageView + withBlock:blockToSuperview + named:@"match_react_native"]; [FBSDKSwizzler swizzleSelector:@selector(dispatchEvent:) onClass:classRCTEventDispatcher withBlock:^(id dispatcher, SEL command, id event){ - if ([event isKindOfClass:NSClassFromString(ReactNativeClassRCTTouchEvent)]) { + if ([event isKindOfClass:objc_lookUpClass(ReactNativeClassRCTTouchEvent)]) { @try { - NSString *eventName = [event valueForKeyPath:ReactNativeEventNameKey]; - NSNumber *viewTag = [event valueForKeyPath:ReactNativeViewTagKey]; - - if ([eventName isEqualToString:ReactNativeTouchEndEventName] - && nil != viewTag) { - FBSDKEventBinding *eventBinding = [self->reactBindings objectForKey:viewTag]; - if (eventBinding) { - [eventBinding trackEvent:nil]; + NSArray *eventArgs = [event arguments]; + NSString *eventName = eventArgs[0]; + NSArray *touches = eventArgs[1]; + if (eventName && touches && [eventName isEqualToString:ReactNativeTouchEndEventName]) { + for (NSDictionary *touch in touches) { + NSNumber *targetTag = touch[ReactNativeTargetKey]; + FBSDKEventBinding *eventBinding = self->reactBindings[targetTag]; + if (eventBinding) { + [eventBinding trackEvent:nil]; + } } } } @@ -193,9 +196,9 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { [self matchView:tableView delegate:delegate]; }; [FBSDKSwizzler swizzleSelector:@selector(setDelegate:) - onClass:[UITableView class] - withBlock:tableViewBlock - named:@"match_table_view"]; + onClass:[UITableView class] + withBlock:tableViewBlock + named:@"match_table_view"]; // UICollectionView void (^collectionViewBlock)(UICollectionView *collectionView, SEL cmd, @@ -208,9 +211,9 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { [self matchView:collectionView delegate:delegate]; }; [FBSDKSwizzler swizzleSelector:@selector(setDelegate:) - onClass:[UICollectionView class] - withBlock:collectionViewBlock - named:@"handle_collection_view"]; + onClass:[UICollectionView class] + withBlock:collectionViewBlock + named:@"handle_collection_view"]; } - (void)rematchBindings { @@ -284,12 +287,17 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { } } else if (self->hasReactNative && [view respondsToSelector:@selector(reactTag)]) { - NSNumber *reactTag = [view performSelector:@selector(reactTag)]; for (FBSDKEventBinding *binding in self->eventBindings) { if ([FBSDKEventBinding isPath:binding.path matchViewPath:path]) { fb_dispatch_on_main_thread(^{ - if (reactTag && [reactTag isKindOfClass:[NSNumber class]]) { - [self->reactBindings setObject:binding forKey:reactTag]; + // React Native touchable event is targeted at first subview, + // so extract the first subview and set the binding for it + UIView *reactView = view.subviews.firstObject; + if (reactView) { + NSNumber *reactTag = [FBSDKViewHierarchy getViewReactTag:reactView]; + if (reactTag != nil) { + self->reactBindings[reactTag] = binding; + } } }); break; @@ -310,7 +318,7 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { } if (matchedBindings.count > 0) { - NSArray *bindings = [matchedBindings allObjects]; + NSArray *bindings = matchedBindings.allObjects; void (^block)(id, SEL, id, id) = ^(id target, SEL command, UITableView *tableView, NSIndexPath *indexPath) { fb_dispatch_on_main_thread(^{ for (FBSDKEventBinding *binding in bindings) { @@ -324,9 +332,9 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { }); }; [FBSDKSwizzler swizzleSelector:@selector(tableView:didSelectRowAtIndexPath:) - onClass:[delegate class] - withBlock:block - named:@"handle_table_view"]; + onClass:[delegate class] + withBlock:block + named:@"handle_table_view"]; } }); } else if ([view isKindOfClass:[UICollectionView class]] @@ -344,7 +352,7 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { } if (matchedBindings.count > 0) { - NSArray *bindings = [matchedBindings allObjects]; + NSArray *bindings = matchedBindings.allObjects; void (^block)(id, SEL, id, id) = ^(id target, SEL command, UICollectionView *collectionView, NSIndexPath *indexPath) { fb_dispatch_on_main_thread(^{ for (FBSDKEventBinding *binding in bindings) { @@ -358,9 +366,9 @@ static void fb_dispatch_on_default_thread(dispatch_block_t block) { }); }; [FBSDKSwizzler swizzleSelector:@selector(collectionView:didSelectItemAtIndexPath:) - onClass:[delegate class] - withBlock:block - named:@"handle_collection_view"]; + onClass:[delegate class] + withBlock:block + named:@"handle_collection_view"]; } }); } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h index 4fd881d..980c785 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h @@ -22,12 +22,17 @@ @interface FBSDKViewHierarchy : NSObject + (NSObject *)getParent:(NSObject *)obj; -+ (NSArray *)getChildren:(NSObject *)obj; -+ (NSArray *)getPath:(NSObject *)obj; ++ (NSArray *)getChildren:(NSObject *)obj; ++ (NSArray *)getPath:(NSObject *)obj; ++ (NSMutableDictionary *)getDetailAttributesOf:(NSObject *)obj; + (NSString *)getText:(NSObject *)obj; + (NSString *)getHint:(NSObject *)obj; ++ (NSIndexPath *)getIndexPath:(NSObject *)obj; ++ (NSUInteger)getClassBitmask:(NSObject *)obj; + (UITableView *)getParentTableView:(UIView *)cell; + (UICollectionView *)getParentCollectionView:(UIView *)cell; ++ (NSInteger)getTag:(NSObject *)obj; ++ (NSNumber *)getViewReactTag:(UIView *)view; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m index 4895c52..760ea8b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m @@ -28,9 +28,33 @@ #define MAX_VIEW_HIERARCHY_LEVEL 35 +typedef NS_ENUM(NSUInteger, FBCodelessClassBitmask) { + /*! Indicates that the class is subclass of UIControl */ + FBCodelessClassBitmaskUIControl = 1 << 3, + /*! Indicates that the class is subclass of UIControl */ + FBCodelessClassBitmaskUIButton = 1 << 4, + /*! Indicates that the class is ReactNative Button */ + FBCodelessClassBitmaskReactNativeButton = 1 << 6, + /*! Indicates that the class is UITableViewCell */ + FBCodelessClassBitmaskUITableViewCell = 1 << 7, + /*! Indicates that the class is UICollectionViewCell */ + FBCodelessClassBitmaskUICollectionViewCell = 1 << 8, + /*! Indicates that the class is UILabel */ + FBCodelessClassBitmaskLabel = 1 << 10, + /*! Indicates that the class is UITextView or UITextField*/ + FBCodelessClassBitmaskInput = 1 << 11, + /*! Indicates that the class is UIPicker*/ + FBCodelessClassBitmaskPicker = 1 << 12, + /*! Indicates that the class is UISwitch*/ + FBCodelessClassBitmaskSwitch = 1 << 13, + /*! Indicates that the class is UIViewController*/ + FBCodelessClassBitmaskUIViewController = 1 << 17, +}; + @implementation FBSDKViewHierarchy -+ (NSArray*)getChildren:(NSObject*)obj { ++ (NSArray*)getChildren:(NSObject*)obj +{ if ([obj isKindOfClass:[UIControl class]]) { return nil; } @@ -40,7 +64,7 @@ // children of window should be viewcontroller if ([obj isKindOfClass:[UIWindow class]]) { UIViewController *rootVC = ((UIWindow *)obj).rootViewController; - NSArray *subviews = [(UIWindow *)obj subviews]; + NSArray *subviews = ((UIWindow *)obj).subviews; for (UIView *child in subviews) { if (child != rootVC.view) { UIViewController *vc = [FBSDKViewHierarchy getParentViewController:child]; @@ -56,7 +80,7 @@ } } } else if ([obj isKindOfClass:[UIView class]]) { - NSArray *subviews = [[(UIView *)obj subviews] copy]; + NSArray *subviews = [((UIView *)obj).subviews copy]; for (UIView *child in subviews) { UIViewController *vc = [FBSDKViewHierarchy getParentViewController:child]; if (vc && vc.view == child) { @@ -66,8 +90,8 @@ } } } else if ([obj isKindOfClass:[UINavigationController class]]) { - UIViewController *vc = [(UINavigationController*)obj visibleViewController]; - UIViewController *tc = [(UINavigationController*)obj topViewController]; + UIViewController *vc = ((UINavigationController*)obj).visibleViewController; + UIViewController *tc = ((UINavigationController*)obj).topViewController; NSArray *nextChildren = [FBSDKViewHierarchy getChildren:((UIViewController*)obj).view]; for (NSObject *child in nextChildren) { if (tc && [self isView:child superViewOfView:tc.view]) { @@ -91,7 +115,7 @@ [children addObject:vc]; } } else if ([obj isKindOfClass:[UITabBarController class]]) { - UIViewController *vc = [(UITabBarController *)obj selectedViewController]; + UIViewController *vc = ((UITabBarController *)obj).selectedViewController; NSArray *nextChildren = [FBSDKViewHierarchy getChildren:((UIViewController*)obj).view]; for (NSObject *child in nextChildren) { if (vc && [self isView:child superViewOfView:vc.view]) { @@ -116,7 +140,7 @@ [children addObjectsFromArray:nextChildren]; } } - for (NSObject *child in [vc childViewControllers]) { + for (NSObject *child in vc.childViewControllers) { [children addObject:child]; } UIViewController *presentedVC = vc.presentedViewController; @@ -130,7 +154,7 @@ + (NSObject *)getParent:(NSObject *)obj { if ([obj isKindOfClass:[UIView class]]) { - UIView *superview = [(UIView *)obj superview]; + UIView *superview = ((UIView *)obj).superview; UIViewController *superviewViewController = [FBSDKViewHierarchy getParentViewController:superview]; if (superviewViewController && superviewViewController.view == superview) { @@ -142,10 +166,10 @@ } else if ([obj isKindOfClass:[UIViewController class]]) { UIViewController *vc = (UIViewController *)obj; - UIViewController *parentVC = [vc parentViewController]; - UIViewController *presentingVC = [vc presentingViewController]; - UINavigationController *nav = [vc navigationController]; - UITabBarController *tab = [vc tabBarController]; + UIViewController *parentVC = vc.parentViewController; + UIViewController *presentingVC = vc.presentingViewController; + UINavigationController *nav = vc.navigationController; + UITabBarController *tab = vc.tabBarController; if (nav) { return nav; @@ -159,7 +183,7 @@ return parentVC; } - if (presentingVC && [presentingVC presentedViewController] == vc) { + if (presentingVC && presentingVC.presentedViewController == vc) { return presentingVC; } @@ -172,11 +196,13 @@ return nil; } -+ (NSArray *)getPath:(NSObject *)obj { ++ (NSArray *)getPath:(NSObject *)obj +{ return [FBSDKViewHierarchy getPath:obj limit:MAX_VIEW_HIERARCHY_LEVEL]; } -+ (NSArray *)getPath:(NSObject *)obj limit:(int)limit { ++ (NSArray *)getPath:(NSObject *)obj limit:(int)limit +{ if (!obj || limit <= 0) { return nil; } @@ -191,61 +217,7 @@ path = [NSMutableArray array]; } - NSMutableDictionary *componentInfo = [NSMutableDictionary dictionary]; - [componentInfo setObject:NSStringFromClass([obj class]) - forKey:CODELESS_MAPPING_CLASS_NAME_KEY]; - - NSString *text = [FBSDKViewHierarchy getText:obj]; - if (text) { - [componentInfo setObject:text forKey:CODELESS_MAPPING_TEXT_KEY]; - } - - if (parent != nil) { - NSArray *children = [FBSDKViewHierarchy getChildren:parent]; - NSUInteger index = [children indexOfObject:obj]; - if (index != NSNotFound) { - [componentInfo setObject:@(index) - forKey:CODELESS_MAPPING_INDEX_KEY]; - } - } else { - [componentInfo setObject:@0 forKey:CODELESS_MAPPING_INDEX_KEY]; - } - - if ([obj isKindOfClass:[UIView class]]) { - [componentInfo setObject:@(((UIView *)obj).tag) - forKey:CODELESS_MAPPING_TAG_KEY]; - - // Handle UITableViewCell & UICollectionViewCell - if ([obj isKindOfClass:[UITableViewCell class]]) { - UITableView *tableView = [FBSDKViewHierarchy getParentTableView:(UIView *)obj]; - NSIndexPath *indexPath = [tableView indexPathForCell:(UITableViewCell *)obj]; - if (indexPath) { - [componentInfo setObject:@(indexPath.section) - forKey:CODELESS_MAPPING_SECTION_KEY]; - [componentInfo setObject:@(indexPath.row) - forKey:CODELESS_MAPPING_ROW_KEY]; - } - } else if ([obj isKindOfClass:[UICollectionViewCell class]]) { - UICollectionView *collectionView = [FBSDKViewHierarchy getParentCollectionView:(UIView *)obj]; - NSIndexPath *indexPath = [collectionView indexPathForCell:(UICollectionViewCell *)obj]; - if (indexPath) { - [componentInfo setObject:@(indexPath.section) - forKey:CODELESS_MAPPING_SECTION_KEY]; - [componentInfo setObject:@(indexPath.row) - forKey:CODELESS_MAPPING_ROW_KEY]; - } - } else if ([obj isKindOfClass:[UITextField class]]) { - NSString *hint = [FBSDKViewHierarchy getHint:obj]; - if (hint) { - [componentInfo setObject:hint forKey:CODELESS_MAPPING_HINT_KEY]; - } - } - } else if ([obj isKindOfClass:[UINavigationController class]]) { - NSString *hint = [FBSDKViewHierarchy getHint:obj]; - if (hint) { - [componentInfo setObject:hint forKey:CODELESS_MAPPING_HINT_KEY]; - } - } + NSDictionary *componentInfo = [FBSDKViewHierarchy getAttributesOf:obj parent:parent]; FBSDKCodelessPathComponent *pathComponent = [[FBSDKCodelessPathComponent alloc] initWithJSON:componentInfo]; @@ -254,18 +226,114 @@ return [NSArray arrayWithArray:path]; } -+ (NSString *)getText:(NSObject *)obj { ++ (NSDictionary *)getAttributesOf:(NSObject *)obj parent:(NSObject *)parent +{ + NSMutableDictionary *componentInfo = [NSMutableDictionary dictionary]; + componentInfo[CODELESS_MAPPING_CLASS_NAME_KEY] = NSStringFromClass([obj class]); + + NSString *text = [FBSDKViewHierarchy getText:obj]; + if (text) { + componentInfo[CODELESS_MAPPING_TEXT_KEY] = text; + } + + NSString *hint = [FBSDKViewHierarchy getHint:obj]; + if (hint) { + componentInfo[CODELESS_MAPPING_HINT_KEY] = hint; + } + + NSIndexPath *indexPath = [FBSDKViewHierarchy getIndexPath:obj]; + if (indexPath) { + componentInfo[CODELESS_MAPPING_SECTION_KEY] = @(indexPath.section); + componentInfo[CODELESS_MAPPING_ROW_KEY] = @(indexPath.row); + } + + if (parent != nil) { + NSArray *children = [FBSDKViewHierarchy getChildren:parent]; + NSUInteger index = [children indexOfObject:obj]; + if (index != NSNotFound) { + componentInfo[CODELESS_MAPPING_INDEX_KEY] = @(index); + } + } else { + componentInfo[CODELESS_MAPPING_INDEX_KEY] = @0; + } + + componentInfo[CODELESS_VIEW_TREE_TAG_KEY] = @([FBSDKViewHierarchy getTag:obj]); + + return [componentInfo copy]; +} + ++ (NSMutableDictionary *)getDetailAttributesOf:(NSObject *)obj +{ + if (!obj) { + return nil; + } + + NSObject *parent = [FBSDKViewHierarchy getParent:obj]; + + NSDictionary *simpleAttributes = [FBSDKViewHierarchy getAttributesOf:obj parent:parent]; + + NSMutableDictionary *result = [NSMutableDictionary dictionaryWithDictionary:simpleAttributes]; + + NSString *className = NSStringFromClass([obj class]); + result[CODELESS_VIEW_TREE_CLASS_NAME_KEY] = className; + + NSUInteger classBitmask = [FBSDKViewHierarchy getClassBitmask:obj]; + result[CODELESS_VIEW_TREE_CLASS_TYPE_BIT_MASK_KEY] = [NSString stringWithFormat:@"%lu", (unsigned long)classBitmask]; + + if ([obj isKindOfClass:[UIControl class]]) { + // Get actions of UIControl + UIControl *control = (UIControl *)obj; + NSMutableSet *actions = [NSMutableSet set]; + NSSet *targets = control.allTargets; + for (NSObject *target in targets) { + NSArray *ary = [control actionsForTarget:target forControlEvent:0]; + if (ary.count > 0) { + [actions addObjectsFromArray:ary]; + } + } + if (targets.count > 0) { + result[CODELESS_VIEW_TREE_ACTIONS_KEY] = actions.allObjects; + } + } + + result[CODELESS_VIEW_TREE_DIMENSION_KEY] = [FBSDKViewHierarchy getDimensionOf:obj]; + + NSDictionary *textStyle = [FBSDKViewHierarchy getTextStyle:obj]; + if (textStyle) { + result[CODELESS_VIEW_TREE_TEXT_STYLE_KEY] = textStyle; + } + + return result; +} + ++ (NSIndexPath *)getIndexPath:(NSObject *)obj +{ + NSIndexPath *indexPath = nil; + + if ([obj isKindOfClass:[UITableViewCell class]]) { + UITableView *tableView = [FBSDKViewHierarchy getParentTableView:(UIView *)obj]; + indexPath = [tableView indexPathForCell:(UITableViewCell *)obj]; + } else if ([obj isKindOfClass:[UICollectionViewCell class]]) { + UICollectionView *collectionView = [FBSDKViewHierarchy getParentCollectionView:(UIView *)obj]; + indexPath = [collectionView indexPathForCell:(UICollectionViewCell *)obj]; + } + + return indexPath; +} + ++ (NSString *)getText:(NSObject *)obj +{ NSString *text = nil; if ([obj isKindOfClass:[UIButton class]]) { - text = [(UIButton *)obj currentTitle]; + text = ((UIButton *)obj).currentTitle; } else if ([obj isKindOfClass:[UITextView class]] || [obj isKindOfClass:[UITextField class]] || [obj isKindOfClass:[UILabel class]]) { - text = [(UILabel *)obj text]; + text = ((UILabel *)obj).text; } else if ([obj isKindOfClass:[UIPickerView class]]) { UIPickerView *picker = (UIPickerView *)obj; - NSInteger sections = [picker numberOfComponents]; + NSInteger sections = picker.numberOfComponents; NSMutableArray *titles = [NSMutableArray array]; for (NSInteger i = 0; i < sections; i++) { @@ -276,9 +344,9 @@ title = [picker.delegate pickerView:picker titleForRow:row forComponent:i]; } else if ([picker.delegate respondsToSelector:@selector(pickerView:attributedTitleForRow:forComponent:)]) { - title = [[picker.delegate - pickerView:picker - attributedTitleForRow:row forComponent:i] string]; + title = [picker.delegate + pickerView:picker + attributedTitleForRow:row forComponent:i].string; } [titles addObject:title ?: @""]; } @@ -291,23 +359,23 @@ } else if ([obj isKindOfClass:[UIDatePicker class]]) { UIDatePicker *picker = (UIDatePicker *)obj; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ssZ"]; + formatter.dateFormat = @"yyyy-MM-dd HH:mm:ssZ"; text = [formatter stringFromDate:picker.date]; - } else if ([obj isKindOfClass:NSClassFromString(@"RCTTextView")]) { + } else if ([obj isKindOfClass:objc_lookUpClass("RCTTextView")]) { NSTextStorage *textStorage = [FBSDKAppEventsUtility getVariable:@"_textStorage" fromInstance:obj]; if (textStorage) { - text = [textStorage string]; + text = textStorage.string; } - } else if ([obj isKindOfClass:NSClassFromString(@"RCTBaseTextInputView")]) { + } else if ([obj isKindOfClass:objc_lookUpClass("RCTBaseTextInputView")]) { NSAttributedString *attributedText = [FBSDKAppEventsUtility getVariable:@"attributedText" fromInstance:obj]; - text = [attributedText string]; + text = attributedText.string; } if ([obj conformsToProtocol:@protocol(UITextInput)]) { id input = (id)obj; - if ([input isSecureTextEntry]) { + if (input.secureTextEntry) { text = nil; } else { switch (input.keyboardType) { @@ -320,16 +388,50 @@ } } + if ([FBSDKAppEventsUtility isSensitiveUserData:text]) { + return nil; + } + return text.length > 0 ? text : nil; } -+ (NSString *)getHint:(NSObject *)obj { ++ (NSDictionary *)getTextStyle:(NSObject *)obj +{ + UIFont *font = nil; + if ([obj isKindOfClass:[UIButton class]]) { + font = ((UIButton *)obj).titleLabel.font; + } else if ([obj isKindOfClass:[UILabel class]]) { + font = ((UILabel *)obj).font; + } else if ([obj isKindOfClass:[UITextField class]]) { + font = ((UITextField *)obj).font; + } else if ([obj isKindOfClass:[UITextView class]]) { + font = ((UITextView *)obj).font; + } + + if (font) { + UIFontDescriptorSymbolicTraits traits = font.fontDescriptor.symbolicTraits; + BOOL isBold = (traits & UIFontDescriptorTraitBold) != 0; + BOOL isItalic = (traits & UIFontDescriptorTraitItalic) != 0; + CGFloat fontSize = font.pointSize; + + return @{ + CODELESS_VIEW_TREE_TEXT_IS_BOLD_KEY: @(isBold), + CODELESS_VIEW_TREE_TEXT_IS_ITALIC_KEY: @(isItalic), + CODELESS_VIEW_TREE_TEXT_SIZE_KEY: @(fontSize) + }; + } + + return nil; +} + ++ (NSString *)getHint:(NSObject *)obj +{ NSString *hint = nil; if ([obj isKindOfClass:[UITextField class]]) { - hint = [(UITextField *)obj placeholder]; + hint = ((UITextField *)obj).placeholder; } else if ([obj isKindOfClass:[UINavigationController class]]) { - UIViewController *top = [(UINavigationController *)obj topViewController]; + UIViewController *top = ((UINavigationController *)obj).topViewController; if (top) { hint = NSStringFromClass([top class]); } @@ -338,7 +440,86 @@ return hint.length > 0 ? hint : nil; } -+ (BOOL)isView:(NSObject *)obj1 superViewOfView:(UIView *)obj2 { ++ (NSUInteger)getClassBitmask:(NSObject *)obj +{ + NSUInteger bitmask = 0; + + if ([obj isKindOfClass:[UIView class]]) { + if ([obj isKindOfClass:[UIControl class]]) { + bitmask |= FBCodelessClassBitmaskUIControl; + if ([obj isKindOfClass:[UIButton class]]) { + bitmask |= FBCodelessClassBitmaskUIButton; + } else if ([obj isKindOfClass:[UISwitch class]]) { + bitmask |= FBCodelessClassBitmaskSwitch; + }else if ([obj isKindOfClass:[UIDatePicker class]]) { + bitmask |= FBCodelessClassBitmaskPicker; + } + } else if ([obj isKindOfClass:[UITableViewCell class]]) { + bitmask |= FBCodelessClassBitmaskUITableViewCell; + } else if ([obj isKindOfClass:[UICollectionViewCell class]]) { + bitmask |= FBCodelessClassBitmaskUICollectionViewCell; + } else if ([obj isKindOfClass:[UIPickerView class]]) { + bitmask |= FBCodelessClassBitmaskPicker; + } else if ([obj isKindOfClass:[UILabel class]]) { + bitmask |= FBCodelessClassBitmaskLabel; + } + + if ([FBSDKViewHierarchy isRCTButton:((UIView *)obj)]) { + bitmask |= FBCodelessClassBitmaskReactNativeButton; + } + + // Check selector of UITextInput protocol instead of checking conformsToProtocol + if ([obj respondsToSelector:@selector(textInRange:)]) { + bitmask |= FBCodelessClassBitmaskInput; + } + } else if ([obj isKindOfClass:[UIViewController class]]) { + bitmask |= FBCodelessClassBitmaskUIViewController; + } + + return bitmask; +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wundeclared-selector" ++ (BOOL)isRCTButton:(UIView *)view +{ + if (view == nil) { + return NO; + } + + Class classRCTView = objc_lookUpClass(ReactNativeClassRCTView); + if (classRCTView && [view isKindOfClass:classRCTView] && + [view respondsToSelector:@selector(reactTagAtPoint:)] && + [view respondsToSelector:@selector(reactTag)] && + view.userInteractionEnabled) { + NSNumber *reactTag = [view performSelector:@selector(reactTagAtPoint:) + withObject:[NSValue valueWithCGPoint:view.frame.origin]]; + // We get the reactTag at upper left of the view and thus check with its first subview + UIView *subView = view.subviews.firstObject; + NSNumber *subViewReactTag = [FBSDKViewHierarchy getViewReactTag:subView]; + if (reactTag != nil && subViewReactTag != nil && ![subView isKindOfClass:classRCTView] && [reactTag isEqualToNumber:subViewReactTag]) { + return YES; + } + } + + return NO; +} + ++ (NSNumber *)getViewReactTag:(UIView *)view +{ + if (view != nil && [view respondsToSelector:@selector(reactTag)]) { + NSNumber *reactTag = [view performSelector:@selector(reactTag)]; + if (reactTag != nil && [reactTag isKindOfClass:[NSNumber class]]) { + return reactTag; + } + } + + return nil; +} +#pragma clang diagnostic pop + ++ (BOOL)isView:(NSObject *)obj1 superViewOfView:(UIView *)obj2 +{ if (![obj1 isKindOfClass:[UIView class]] || ![obj2 isKindOfClass:[UIView class]]) { return NO; @@ -347,7 +528,7 @@ UIView *view2 = (UIView *)obj2; UIView *superview = view2; while (superview) { - superview = [superview superview]; + superview = superview.superview; if (superview == view1) { return YES; } @@ -356,11 +537,12 @@ return NO; } -+ (UIViewController *)getParentViewController:(UIView *)view { ++ (UIViewController *)getParentViewController:(UIView *)view +{ UIResponder *parentResponder = view; while (parentResponder) { - parentResponder = [parentResponder nextResponder]; + parentResponder = parentResponder.nextResponder; if ([parentResponder isKindOfClass:[UIViewController class]]) { return (UIViewController *)parentResponder; } @@ -369,26 +551,66 @@ return nil; } -+ (UITableView *)getParentTableView:(UIView *)cell { ++ (UITableView *)getParentTableView:(UIView *)cell +{ UIView *superview = cell.superview; while (superview) { if ([superview isKindOfClass:[UITableView class]]) { return (UITableView *)superview; } - superview = [superview superview]; + superview = superview.superview; } return nil; } -+ (UICollectionView *)getParentCollectionView:(UIView *)cell { ++ (UICollectionView *)getParentCollectionView:(UIView *)cell +{ UIView *superview = cell.superview; while (superview) { if ([superview isKindOfClass:[UICollectionView class]]) { return (UICollectionView *)superview; } - superview = [superview superview]; + superview = superview.superview; } return nil; } ++ (NSInteger)getTag:(NSObject *)obj +{ + if ([obj isKindOfClass:[UIView class]]) { + return ((UIView *)obj).tag; + } else if ([obj isKindOfClass:[UIViewController class]]) { + return ((UIViewController *)obj).view.tag; + } + + return 0; +} + ++ (NSDictionary *)getDimensionOf:(NSObject *)obj +{ + UIView *view = nil; + + if ([obj isKindOfClass:[UIView class]]) { + view = (UIView *)obj; + } else if ([obj isKindOfClass:[UIViewController class]]) { + view = ((UIViewController *)obj).view; + } + + CGRect frame = view.frame; + CGPoint offset = CGPointZero; + + if ([view isKindOfClass:[UIScrollView class]]) + offset = ((UIScrollView *)view).contentOffset; + + return @{ + CODELESS_VIEW_TREE_TOP_KEY: @((int)frame.origin.y), + CODELESS_VIEW_TREE_LEFT_KEY: @((int)frame.origin.x), + CODELESS_VIEW_TREE_WIDTH_KEY: @((int)frame.size.width), + CODELESS_VIEW_TREE_HEIGHT_KEY: @((int)frame.size.height), + CODELESS_VIEW_TREE_OFFSET_X_KEY: @((int)offset.x), + CODELESS_VIEW_TREE_OFFSET_Y_KEY: @((int)offset.y), + CODELESS_VIEW_TREE_VISIBILITY_KEY: view.isHidden ? @4 : @0 + }; +} + @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h index 6e24e06..41ab684 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h @@ -17,7 +17,6 @@ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #import -#import #import "FBSDKAppEventsUtility.h" @@ -25,178 +24,178 @@ // Internally known event names -FBSDK_EXTERN NSString *const FBSDKAppEventNamePurchased; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNamePurchased; /** Use to log that the share dialog was launched */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameShareSheetLaunch; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameShareSheetLaunch; /** Use to log that the share dialog was dismissed */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameShareSheetDismiss; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameShareSheetDismiss; /** Use to log that the permissions UI was launched */ -FBSDK_EXTERN NSString *const FBSDKAppEventNamePermissionsUILaunch; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNamePermissionsUILaunch; /** Use to log that the permissions UI was dismissed */ -FBSDK_EXTERN NSString *const FBSDKAppEventNamePermissionsUIDismiss; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNamePermissionsUIDismiss; /** Use to log that the login view was used */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameLoginViewUsage; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameLoginViewUsage; /*! Use to log that the share tray launched. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameShareTrayDidLaunch; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameShareTrayDidLaunch; /*! Use to log that the person selected a sharing target. */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameShareTrayDidSelectActivity; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameShareTrayDidSelectActivity; // Internally known event parameters /** String parameter specifying the outcome of a dialog invocation */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogOutcome; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterDialogOutcome; /** Parameter key used to specify which application launches this application. */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterLaunchSource; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLaunchSource; /** Use to log the result of a call to FBDialogs presentShareDialogWithParams: */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentShareDialog; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsPresentShareDialog; /** Use to log the result of a call to FBDialogs presentShareDialogWithOpenGraphActionParams: */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentShareDialogOG; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsPresentShareDialogOG; /** Use to log the result of a call to FBDialogs presentLikeDialogWithLikeParams: */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentLikeDialogOG; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsPresentLikeDialogOG; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentShareDialogPhoto; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialog; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialogPhoto; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialogOG; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsPresentShareDialogPhoto; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialog; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialogPhoto; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialogOG; /** Use to log the start of an auth request that cannot be fulfilled by the token cache */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSessionAuthStart; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSessionAuthStart; /** Use to log the end of an auth request that was not fulfilled by the token cache */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSessionAuthEnd; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSessionAuthEnd; /** Use to log the start of a specific auth method as part of an auth request */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSessionAuthMethodStart; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSessionAuthMethodStart; /** Use to log the end of the last tried auth method as part of an auth request */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSessionAuthMethodEnd; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSessionAuthMethodEnd; /** Use to log the timestamp for the transition to the Facebook native login dialog */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsNativeLoginDialogStart; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsNativeLoginDialogStart; /** Use to log the timestamp for the transition back to the app after the Facebook native login dialog */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsNativeLoginDialogEnd; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsNativeLoginDialogEnd; /** Use to log the e2e timestamp metrics for web login */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsWebLoginCompleted; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBDialogsWebLoginCompleted; /** Use to log the result of the App Switch OS AlertView. Only available on OS >= iOS10 */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSessionFASLoginDialogResult; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSessionFASLoginDialogResult; /** Use to log the live streaming events from sdk */ -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingStart; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingStop; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingPause; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingResume; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingError; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingUpdateStatus; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingVideoID; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingMic; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingCamera; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingStart; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingStop; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingPause; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingResume; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingError; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingUpdateStatus; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingVideoID; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingMic; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingCamera; /** Use to log the results of a share dialog */ -FBSDK_EXTERN NSString *const FBSDLAppEventNameFBSDKEventShareDialogResult; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventMessengerShareDialogResult; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventAppInviteShareDialogResult; +FOUNDATION_EXPORT NSString *const FBSDLAppEventNameFBSDKEventShareDialogResult; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKEventMessengerShareDialogResult; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKEventAppInviteShareDialogResult; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventShareDialogShow; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventMessengerShareDialogShow; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventAppInviteShareDialogShow; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKEventShareDialogShow; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKEventMessengerShareDialogShow; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKEventAppInviteShareDialogShow; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogMode; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogShareContentType; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogShareContentUUID; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogShareContentPageID; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterDialogMode; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterDialogShareContentType; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterDialogShareContentUUID; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterDialogShareContentPageID; /*! Use to log parameters for share tray use */ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterShareTrayActivityName; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterShareTrayResult; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterShareTrayActivityName; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterShareTrayResult; /*! Use to log parameters for live streaming*/ -FBSDK_EXTERN NSString *const FBSDKAppEventParameterLiveStreamingPrevStatus; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterLiveStreamingStatus; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterLiveStreamingError; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterLiveStreamingVideoID; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterLiveStreamingMicEnabled; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterLiveStreamingCameraEnabled; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLiveStreamingPrevStatus; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLiveStreamingStatus; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLiveStreamingError; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLiveStreamingVideoID; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLiveStreamingMicEnabled; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLiveStreamingCameraEnabled; // Internally known event parameter values -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogOutcomeValue_Completed; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogOutcomeValue_Cancelled; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogOutcomeValue_Failed; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogOutcomeValue_Completed; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogOutcomeValue_Cancelled; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogOutcomeValue_Failed; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeOpenGraph; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeStatus; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypePhoto; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeVideo; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeCamera; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeMessengerGenericTemplate; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeMessengerMediaTemplate; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeMessengerOpenGraphMusicTemplate; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeUnknown; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareContentTypeOpenGraph; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareContentTypeStatus; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareContentTypePhoto; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareContentTypeVideo; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareContentTypeCamera; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareContentTypeMessengerGenericTemplate; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareContentTypeMessengerMediaTemplate; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareContentTypeMessengerOpenGraphMusicTemplate; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareContentTypeUnknown; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeAutomatic; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeBrowser; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeNative; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeShareSheet; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeWeb; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeFeedBrowser; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeFeedWeb; -FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeUnknown; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareModeAutomatic; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareModeBrowser; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareModeNative; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareModeShareSheet; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareModeWeb; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareModeFeedBrowser; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareModeFeedWeb; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsDialogShareModeUnknown; -FBSDK_EXTERN NSString *const FBSDKAppEventsNativeLoginDialogStartTime; -FBSDK_EXTERN NSString *const FBSDKAppEventsNativeLoginDialogEndTime; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsNativeLoginDialogStartTime; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsNativeLoginDialogEndTime; -FBSDK_EXTERN NSString *const FBSDKAppEventsWebLoginE2E; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWebLoginE2E; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeButtonImpression; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLoginButtonImpression; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKSendButtonImpression; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKShareButtonImpression; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingButtonImpression; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeButtonImpression; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLoginButtonImpression; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKSendButtonImpression; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKShareButtonImpression; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingButtonImpression; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKSmartLoginService; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKSmartLoginService; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeButtonDidTap; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLoginButtonDidTap; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKSendButtonDidTap; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKShareButtonDidTap; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLiveStreamingButtonDidTap; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeButtonDidTap; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLoginButtonDidTap; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKSendButtonDidTap; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKShareButtonDidTap; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLiveStreamingButtonDidTap; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidDisable; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidLike; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidPresentDialog; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidTap; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidUnlike; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlError; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlImpression; -FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlNetworkUnavailable; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeControlDidDisable; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeControlDidLike; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeControlDidPresentDialog; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeControlDidTap; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeControlDidUnlike; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeControlError; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeControlImpression; +FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFBSDKLikeControlNetworkUnavailable; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogErrorMessage; -FBSDK_EXTERN NSString *const FBSDKAppEventParameterLogTime; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterDialogErrorMessage; +FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterLogTime; -FBSDK_EXTERN NSString *const FBSDKAppEventsWKWebViewMessagesHandlerKey; -FBSDK_EXTERN NSString *const FBSDKAppEventsWKWebViewMessagesActionKey; -FBSDK_EXTERN NSString *const FBSDKAppEventsWKWebViewMessagesEventKey; -FBSDK_EXTERN NSString *const FBSDKAppEventsWKWebViewMessagesParamsKey; -FBSDK_EXTERN NSString *const FBSDKAppEventsWKWebViewMessagesPixelTrackKey; -FBSDK_EXTERN NSString *const FBSDKAppEventsWKWebViewMessagesPixelTrackCustomKey; -FBSDK_EXTERN NSString *const FBSDKAppEventsWKWebViewMessagesPixelTrackSingleKey; -FBSDK_EXTERN NSString *const FBSDKAppEventsWKWebViewMessagesPixelTrackSingleCustomKey; -FBSDK_EXTERN NSString *const FBSDKAppEventsWKWebViewMessagesPixelIDKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesHandlerKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesActionKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesEventKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesParamsKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesPixelTrackKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesPixelTrackCustomKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesPixelTrackSingleKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesPixelTrackSingleCustomKey; +FOUNDATION_EXPORT NSString *const FBSDKAppEventsWKWebViewMessagesPixelIDKey; @interface FBSDKAppEvents (Internal) diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m index 7b8b066..2354a24 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m @@ -147,7 +147,7 @@ static const u_int FB_GIGABYTE = 1024 * 1024 * 1024; // bytes _shortVersion = [mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; // Locale stuff - _language = [[NSLocale currentLocale] localeIdentifier]; + _language = [NSLocale currentLocale].localeIdentifier; // Device stuff UIDevice *device = [UIDevice currentDevice]; @@ -165,7 +165,7 @@ static const u_int FB_GIGABYTE = 1024 * 1024 * 1024; // bytes _machine = @(systemInfo.machine); // Disk space stuff - float totalDiskSpace = [[FBSDKAppEventsDeviceInfo _getTotalDiskSpace] floatValue]; + float totalDiskSpace = [FBSDKAppEventsDeviceInfo _getTotalDiskSpace].floatValue; _totalDiskSpaceGB = (unsigned long long)round(totalDiskSpace / FB_GIGABYTE); } @@ -194,7 +194,7 @@ static const u_int FB_GIGABYTE = 1024 * 1024 * 1024; // bytes } // Remaining disk space - float remainingDiskSpace = [[FBSDKAppEventsDeviceInfo _getRemainingDiskSpace] floatValue]; + float remainingDiskSpace = [FBSDKAppEventsDeviceInfo _getRemainingDiskSpace].floatValue; unsigned long long newRemainingDiskSpaceGB = (unsigned long long)round(remainingDiskSpace / FB_GIGABYTE); if (_remainingDiskSpaceGB != newRemainingDiskSpaceGB) { _remainingDiskSpaceGB = newRemainingDiskSpaceGB; @@ -237,14 +237,14 @@ static const u_int FB_GIGABYTE = 1024 * 1024 * 1024; // bytes { NSDictionary *attrs = [[[NSFileManager alloc] init] attributesOfFileSystemForPath:NSHomeDirectory() error:nil]; - return [attrs objectForKey:NSFileSystemSize]; + return attrs[NSFileSystemSize]; } + (NSNumber *)_getRemainingDiskSpace { NSDictionary *attrs = [[[NSFileManager alloc] init] attributesOfFileSystemForPath:NSHomeDirectory() error:nil]; - return [attrs objectForKey:NSFileSystemFreeSize]; + return attrs[NSFileSystemFreeSize]; } + (uint)_coreCount @@ -270,8 +270,8 @@ static const u_int FB_GIGABYTE = 1024 * 1024 * 1024; // bytes #else // Dynamically load class for this so calling app doesn't need to link framework in. CTTelephonyNetworkInfo *networkInfo = [[fbsdkdfl_CTTelephonyNetworkInfoClass() alloc] init]; - CTCarrier *carrier = [networkInfo subscriberCellularProvider]; - return [carrier carrierName] ?: @"NoCarrier"; + CTCarrier *carrier = networkInfo.subscriberCellularProvider; + return carrier.carrierName ?: @"NoCarrier"; #endif } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h index 1e49029..5bb5c2e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h @@ -21,16 +21,18 @@ // this type is not thread safe. @interface FBSDKAppEventsState : NSObject -@property (readonly, copy) NSArray *events; -@property (readonly, assign) NSUInteger numSkipped; -@property (readonly, copy) NSString *tokenString; -@property (readonly, copy) NSString *appID; +@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; +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; - (instancetype)initWithToken:(NSString *)tokenString appID:(NSString *)appID NS_DESIGNATED_INITIALIZER; - (void)addEvent:(NSDictionary *)eventDictionary isImplicit:(BOOL)isImplicit; - (void)addEventsFromAppEventState:(FBSDKAppEventsState *)appEventsState; -- (BOOL)areAllEventsImplicit; - (BOOL)isCompatibleWithAppEventsState:(FBSDKAppEventsState *)appEventsState; - (BOOL)isCompatibleWithTokenString:(NSString *)tokenString appID:(NSString *)appID; - (NSString *)JSONStringForEvents:(BOOL)includeImplicitEvents; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m index c871698..cff1b8a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m @@ -19,7 +19,6 @@ #import "FBSDKAppEventsState.h" #import "FBSDKInternalUtility.h" -#import "FBSDKMacros.h" #define FBSDK_APPEVENTSTATE_ISIMPLICIT_KEY @"isImplicit" @@ -37,12 +36,6 @@ NSMutableArray *_mutableEvents; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithToken:appID:); - return [self initWithToken:nil appID:nil]; -} - - (instancetype)initWithToken:(NSString *)tokenString appID:(NSString *)appID { if ((self = [super init])) { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.m deleted file mode 100644 index 1160bf7..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.m +++ /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 "FBSDKAppEventsUninstall.h" - -#import - -#import -#import - -#import "FBSDKAppEventsUtility.h" -#import "FBSDKGraphRequest.h" -#import "FBSDKLogger.h" -#import "FBSDKServerConfigurationManager.h" -#import "FBSDKSettings.h" -#import "FBSDKSwizzler.h" - -#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" - -@implementation FBSDKAppEventsUninstall - -+ (void)load -{ - [FBSDKAppEventsUninstall installSwizzler]; -} - -+ (NSString *)stringWithDeviceToken:(NSData *)deviceToken { - const char *data = [deviceToken bytes]; - NSMutableString *token = [NSMutableString string]; - - for (NSUInteger i = 0; i < [deviceToken length]; i++) { - [token appendFormat:@"%02.2hhX", data[i]]; - } - - return [token copy]; -} - -+ (void)installSwizzler -{ - Class cls = [[UIApplication sharedApplication].delegate class]; - SEL selector = @selector(application:didRegisterForRemoteNotificationsWithDeviceToken:); - BOOL hasMethod = class_getInstanceMethod(cls, selector) != nil; - void (^block)(id) = ^(NSData *deviceToken) { - NSString *tokenString = [self stringWithDeviceToken:deviceToken]; - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorInformational - logEntry:[NSString stringWithFormat:@"Register token from Swizzling: %@", tokenString]]; - // try upload token immediately after receiving it from swizzling - [self updateAndUploadToken:tokenString]; - }; - - if (!hasMethod) - { - void (^registerBlock)(id, id, id) = ^(id _, id __, NSData *deviceToken) - { - block(deviceToken); - }; - IMP imp = imp_implementationWithBlock(registerBlock); - struct objc_method_description desc = protocol_getMethodDescription(@protocol(UIApplicationDelegate), - selector, NO, YES); - const char *types = desc.types; - class_addMethod(cls, selector, imp, types); - } else - { - void (^registerBlock)(id, SEL, id, id) = ^(id _, SEL __, id ___, NSData *deviceToken) - { - block(deviceToken); - }; - [FBSDKSwizzler swizzleSelector:selector - onClass:cls - withBlock:registerBlock - named:@"map_control"]; - } -} - -// Token is updated when (changed OR not uploaded) -// Token is uploaded when enabled AND (changed OR not uploaded) -+ (void)updateAndUploadToken:(NSString *)tokenString -{ - if (!tokenString) { - return; - } - - [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *error) { - if (serverConfiguration.uninstallTrackingEnabled) { - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] - initWithGraphPath:[NSString stringWithFormat:@"%@/%@", - [FBSDKSettings appID], UNINSTALL_TRACKING_TOKEN_ENDPOINT] - parameters:@{ - UNINSTALL_TRACKING_DEVICE_TOKEN_KEY: tokenString, - UNINSTALL_TRACKING_PLATFORM_KEY: @"ios", - // advertiserID could be 0s if user select limit ad tracking - UNINSTALL_TRACKING_DEVICE_ID_KEY: [FBSDKAppEventsUtility advertiserID]?:@"" - } - HTTPMethod:@"POST"]; - [request startWithCompletionHandler:nil]; - } - }]; -} - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h index 7e9011a..42ec8c7 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h @@ -39,6 +39,9 @@ typedef NS_ENUM(NSUInteger, FBSDKAppEventsFlushReason) @interface FBSDKAppEventsUtility : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + + (NSMutableDictionary *)activityParametersDictionaryForEvent:(NSString *)eventCategory implicitEventsOnly:(BOOL)implicitEventsOnly shouldAccessAdvertisingID:(BOOL)shouldAccessAdvertisingID; @@ -55,5 +58,7 @@ typedef NS_ENUM(NSUInteger, FBSDKAppEventsFlushReason) + (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/Internal/AppEvents/FBSDKAppEventsUtility.m index 9ab45cf..bbd5f5f 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m @@ -30,7 +30,6 @@ #import "FBSDKError.h" #import "FBSDKInternalUtility.h" #import "FBSDKLogger.h" -#import "FBSDKMacros.h" #import "FBSDKSettings.h" #import "FBSDKTimeSpentData.h" @@ -46,8 +45,10 @@ NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; parameters[@"event"] = eventCategory; +#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"]; +#endif if (!implicitEventsOnly && shouldAccessAdvertisingID) { NSString *advertiserID = [[self class] advertiserID]; @@ -59,10 +60,10 @@ FBSDKAdvertisingTrackingStatus advertisingTrackingStatus = [[self class] advertisingTrackingStatus]; if (advertisingTrackingStatus != FBSDKAdvertisingTrackingUnspecified) { BOOL allowed = (advertisingTrackingStatus == FBSDKAdvertisingTrackingAllowed); - parameters[@"advertiser_tracking_enabled"] = [@(allowed) stringValue]; + parameters[@"advertiser_tracking_enabled"] = @(allowed).stringValue; } - parameters[@"application_tracking_enabled"] = [@(!FBSDKSettings.limitEventAndDataUsage) stringValue]; + parameters[@"application_tracking_enabled"] = @(!FBSDKSettings.limitEventAndDataUsage).stringValue; NSString *userID = [FBSDKAppEvents userID]; if (userID) { @@ -81,8 +82,8 @@ dispatch_once(&fetchBundleOnce, ^{ NSBundle *mainBundle = [NSBundle mainBundle]; urlSchemes = [[NSMutableArray alloc] init]; - for (NSDictionary *fields in [mainBundle objectForInfoDictionaryKey:@"CFBundleURLTypes"]) { - NSArray *schemesForType = [fields objectForKey:@"CFBundleURLSchemes"]; + for (NSDictionary *fields in [mainBundle objectForInfoDictionaryKey:@"CFBundleURLTypes"]) { + NSArray *schemesForType = fields[@"CFBundleURLSchemes"]; if (schemesForType) { [urlSchemes addObjectsFromArray:schemesForType]; } @@ -90,8 +91,7 @@ }); if (urlSchemes.count > 0) { - [parameters setObject:[FBSDKInternalUtility JSONStringForObject:urlSchemes error:NULL invalidObjectHandler:NULL] - forKey:@"url_schemes"]; + parameters[@"url_schemes"] = [FBSDKInternalUtility JSONStringForObject:urlSchemes error:NULL invalidObjectHandler:NULL]; } return parameters; @@ -99,12 +99,16 @@ + (NSString *)advertiserID { + if (![[FBSDKSettings advertiserIDCollectionEnabled] boolValue]) { + return nil; + } + NSString *result = nil; Class ASIdentifierManagerClass = fbsdkdfl_ASIdentifierManagerClass(); if ([ASIdentifierManagerClass class]) { ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager]; - result = [[manager advertisingIdentifier] UUIDString]; + result = manager.advertisingIdentifier.UUIDString; } return result; @@ -121,7 +125,7 @@ if ([ASIdentifierManagerClass class]) { ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager]; if (manager) { - status = [manager isAdvertisingTrackingEnabled] ? FBSDKAdvertisingTrackingAllowed : FBSDKAdvertisingTrackingDisallowed; + status = manager.advertisingTrackingEnabled ? FBSDKAdvertisingTrackingAllowed : FBSDKAdvertisingTrackingDisallowed; } } }); @@ -138,7 +142,7 @@ // 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]]; + result = [NSString stringWithFormat:@"XZ%@", [NSUUID UUID].UUIDString]; [self persistAnonymousID:result]; } @@ -150,7 +154,7 @@ #if TARGET_OS_TV return nil; #else - return [[UIPasteboard pasteboardWithName:@"fb_app_attribution" create:NO] string]; + return [UIPasteboard pasteboardWithName:@"fb_app_attribution" create:NO].string; #endif } @@ -214,7 +218,7 @@ } [FBSDKLogger singleShotLogEntry:behaviorToLog logEntry:msg]; - NSError *error = [FBSDKError errorWithCode:FBSDKAppEventsFlushErrorCode message:msg]; + NSError *error = [NSError fbErrorWithCode:FBSDKErrorAppEventsFlush message:msg]; [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKAppEventsLoggingResultNotification object:error]; } @@ -297,7 +301,7 @@ restOfStringCharacterSet:(NSCharacterSet *)restOfStringCharacterSet { NSSearchPathDirectory directory = NSLibraryDirectory; NSArray *paths = NSSearchPathForDirectoriesInDomains(directory, NSUserDomainMask, YES); - NSString *docDirectory = [paths objectAtIndex:0]; + NSString *docDirectory = paths[0]; return [docDirectory stringByAppendingPathComponent:filename]; } @@ -309,7 +313,7 @@ restOfStringCharacterSet:(NSCharacterSet *)restOfStringCharacterSet encoding:NSASCIIStringEncoding error:nil]; NSDictionary *results = [FBSDKInternalUtility objectForJSONString:content error:NULL]; - return [results objectForKey:FBSDK_APPEVENTSUTILITY_ANONYMOUSID_KEY]; + return results[FBSDK_APPEVENTSUTILITY_ANONYMOUSID_KEY]; } // Given a candidate token (which may be nil), find the real token to string to use. @@ -337,11 +341,11 @@ restOfStringCharacterSet:(NSCharacterSet *)restOfStringCharacterSet + (long)unixTimeNow { - return (long)round([[NSDate date] timeIntervalSince1970]); + return (long)round([NSDate date].timeIntervalSince1970); } + (id)getVariable:(NSString *)variableName fromInstance:(NSObject *)instance { - Ivar ivar = class_getInstanceVariable([instance class], [variableName UTF8String]); + Ivar ivar = class_getInstanceVariable([instance class], variableName.UTF8String); if (ivar != NULL) { const char *encoding = ivar_getTypeEncoding(ivar); if (encoding != NULL && encoding[0] == '@') { @@ -376,17 +380,95 @@ restOfStringCharacterSet:(NSCharacterSet *)restOfStringCharacterSet value = [formatter numberFromString:validText]; if (nil == value) { - value = @([validText floatValue]); + value = @(validText.floatValue); } } return value; } -- (instancetype)init ++ (BOOL)isDebugBuild { +#if TARGET_IPHONE_SIMULATOR + return YES; +#else + BOOL isDevelopment = NO; + + // There is no provisioning profile in AppStore Apps. + @try + { + NSData *data = [NSData dataWithContentsOfFile:[NSBundle.mainBundle pathForResource:@"embedded" ofType:@"mobileprovision"]]; + if (data) { + const char *bytes = [data bytes]; + NSMutableString *profile = [[NSMutableString alloc] initWithCapacity:data.length]; + for (NSUInteger i = 0; i < data.length; i++) { + [profile appendFormat:@"%c", bytes[i]]; + } + // Look for debug value, if detected we're in a development build. + NSString *cleared = [[profile componentsSeparatedByCharactersInSet:NSCharacterSet.whitespaceAndNewlineCharacterSet] componentsJoinedByString:@""]; + isDevelopment = ([cleared rangeOfString:@"get-task-allow"].length > 0); + } + + return isDevelopment; + } + @catch(NSException *exception) + { + + } + + return NO; +#endif +} + ++ (BOOL)isSensitiveUserData:(NSString *)text { - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; + if (0 == text.length) { + return NO; + } + + return [self isEmailAddress:text] || [self isCreditCardNumber:text]; +} + ++ (BOOL)isCreditCardNumber:(NSString *)text +{ + text = [[text componentsSeparatedByCharactersInSet:[NSCharacterSet.decimalDigitCharacterSet invertedSet]] componentsJoinedByString:@""]; + + if (text.doubleValue == 0) { + return NO; + } + + if (text.length < 9 || text.length > 21) { + return NO; + } + + const char *chars = [text cStringUsingEncoding:NSUTF8StringEncoding]; + if (NULL == chars) { + return NO; + } + + BOOL isOdd = YES; + int oddSum = 0; + int evenSum = 0; + + for (int i = (int)text.length - 1; i >= 0; i--) { + int digit = chars[i] - '0'; + + if (isOdd) + oddSum += digit; + else + evenSum += digit / 5 + (2 * digit) % 10; + + isOdd = !isOdd; + } + + return ((oddSum + evenSum) % 10 == 0); +} + ++ (BOOL)isEmailAddress:(NSString *)text +{ + NSString *pattern = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; + 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/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m index 9f476d5..3e62dcf 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m @@ -32,7 +32,7 @@ NSString *const FBSDKAppEventsWKWebViewMessagesPixelReferralParamKey = @"_fb_pix if ([message.name isEqualToString:FBSDKAppEventsWKWebViewMessagesHandlerKey]) { NSString *event = message.body[FBSDKAppEventsWKWebViewMessagesEventKey]; - if ([event length] > 0) { + if (event.length > 0) { NSString *stringedParams = message.body[FBSDKAppEventsWKWebViewMessagesParamsKey]; NSMutableDictionary *params = nil; NSError *jsonParseError = nil; @@ -52,7 +52,7 @@ NSString *const FBSDKAppEventsWKWebViewMessagesPixelReferralParamKey = @"_fb_pix params = [[NSMutableDictionary alloc] initWithObjectsAndKeys:pixelID, FBSDKAppEventsWKWebViewMessagesPixelReferralParamKey, nil]; } else { - [params setObject:pixelID forKey: FBSDKAppEventsWKWebViewMessagesPixelReferralParamKey]; + params[FBSDKAppEventsWKWebViewMessagesPixelReferralParamKey] = pixelID; } [FBSDKAppEvents logEvent:event parameters:params]; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m index dc1cbcc..29dd6a5 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m @@ -185,7 +185,7 @@ static NSMutableArray *g_pendingRequestors; return @""; } - return [inputString length] <= FBSDKMaxParameterValueLength ? inputString : [inputString substringToIndex:FBSDKMaxParameterValueLength]; + return inputString.length <= FBSDKMaxParameterValueLength ? inputString : [inputString substringToIndex:FBSDKMaxParameterValueLength]; } - (void)logTransactionEvent:(SKProduct *)product @@ -194,7 +194,7 @@ static NSMutableArray *g_pendingRequestors; NSString *transactionID = nil; NSString *transactionDate = nil; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ssZ"]; + formatter.dateFormat = @"yyyy-MM-dd HH:mm:ssZ"; switch (self.transaction.transactionState) { case SKPaymentTransactionStatePurchasing: eventName = FBSDKAppEventNameInitiatedCheckout; @@ -250,16 +250,16 @@ static NSMutableArray *g_pendingRequestors; case SKProductPeriodUnitYear: unit = @"Y"; break; } NSString *p = [NSString stringWithFormat:@"P%lu%@", (unsigned long)period.numberOfUnits, unit]; - [eventParameters setObject:p forKey:FBSDKAppEventParameterNameSubscriptionPeriod]; - [eventParameters setObject:@"subs" forKey:FBSDKAppEventParameterNameInAppPurchaseType]; + eventParameters[FBSDKAppEventParameterNameSubscriptionPeriod] = p; + eventParameters[FBSDKAppEventParameterNameInAppPurchaseType] = @"subs"; } else { - [eventParameters setObject:@"inapp" forKey:FBSDKAppEventParameterNameInAppPurchaseType]; + eventParameters[FBSDKAppEventParameterNameInAppPurchaseType] = @"inapp"; } } #endif #endif if (transactionID) { - [eventParameters setObject:transactionID forKey:FBSDKAppEventParameterNameTransactionID]; + eventParameters[FBSDKAppEventParameterNameTransactionID] = transactionID; } } @@ -314,7 +314,7 @@ static NSMutableArray *g_pendingRequestors; } } - [eventParameters setObject:@"1" forKey:FBSDKAppEventParameterImplicitlyLoggedPurchase]; + eventParameters[FBSDKAppEventParameterImplicitlyLoggedPurchase] = @"1"; [FBSDKAppEvents logEvent:eventName valueToSum:valueToSum parameters:eventParameters]; @@ -328,7 +328,7 @@ static NSMutableArray *g_pendingRequestors; // Fetch the current receipt for this application. - (NSData*)fetchDeviceReceipt { - NSURL *receiptURL = [[NSBundle bundleForClass:[self class]] appStoreReceiptURL]; + 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/Internal/AppEvents/FBSDKTimeSpentData.h index 12f2f3a..b664af9 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h @@ -18,9 +18,7 @@ #import -#import - -FBSDK_EXTERN NSString *const FBSDKTimeSpentFilename; +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. diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m index 8fb87e3..366c450 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m @@ -192,7 +192,7 @@ static const long INACTIVE_SECONDS_QUANTA[] = if (!content) { // Nothing persisted, so this is the first launch. - _sessionID = [[NSUUID UUID] UUIDString]; + _sessionID = [NSUUID UUID].UUIDString; _secondsSpentInCurrentSession = 0; _numInterruptionsInCurrentSession = 0; _lastSuspendTime = 0; @@ -205,12 +205,12 @@ static const long INACTIVE_SECONDS_QUANTA[] = NSDictionary *results = [FBSDKInternalUtility objectForJSONString:content error:NULL]; - _lastSuspendTime = [[results objectForKey:FBSDKTimeSpentPersistKeyLastSuspendTime] longValue]; + _lastSuspendTime = [results[FBSDKTimeSpentPersistKeyLastSuspendTime] longValue]; _timeSinceLastSuspend = now - _lastSuspendTime; - _secondsSpentInCurrentSession = [[results objectForKey:FBSDKTimeSpentPersistKeySessionSecondsSpent] intValue]; - _sessionID = results[FBSDKTimeSpentPersistKeySessionID] ? : [[NSUUID UUID] UUIDString]; - _numInterruptionsInCurrentSession = [[results objectForKey:FBSDKTimeSpentPersistKeySessionNumInterruptions] intValue]; + _secondsSpentInCurrentSession = [results[FBSDKTimeSpentPersistKeySessionSecondsSpent] intValue]; + _sessionID = results[FBSDKTimeSpentPersistKeySessionID] ? : [NSUUID UUID].UUIDString; + _numInterruptionsInCurrentSession = [results[FBSDKTimeSpentPersistKeySessionNumInterruptions] intValue]; _shouldLogActivateEvent = (_timeSinceLastSuspend > [FBSDKServerConfigurationManager cachedServerConfiguration].sessionTimoutInterval); // Other than the first launch, we always log the last session's deactivate with this session's activate. @@ -237,7 +237,7 @@ static const long INACTIVE_SECONDS_QUANTA[] = // We've logged the session stats, now reset. _secondsSpentInCurrentSession = 0; _numInterruptionsInCurrentSession = 0; - _sessionID = [[NSUUID UUID] UUIDString]; + _sessionID = [NSUUID UUID].UUIDString; } if (_shouldLogActivateEvent) { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h index 9f72f07..dc1ab22 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h @@ -18,8 +18,6 @@ #import -#import - @interface FBSDKUserDataStore : NSObject + (void)initStore; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m index b6528c9..a850342 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m @@ -18,10 +18,9 @@ #import "FBSDKUserDataStore.h" -#import - #import "FBSDKAppEventsUtility.h" #import "FBSDKLogger.h" +#import "FBSDKSettings.h" #import "FBSDKUtility.h" #define USER_DATA_KEY @"com.facebook.appevents.UserDataStore.userData" @@ -144,7 +143,7 @@ static volatile bool initialized = false; return nil; } - NSMutableDictionary *encryptUserData = [NSMutableDictionary dictionaryWithCapacity:[ud count]]; + NSMutableDictionary *encryptUserData = [NSMutableDictionary dictionaryWithCapacity:ud.count]; for (NSString *key in ud){ NSString *const value = ud[key]; @@ -174,7 +173,7 @@ static volatile bool initialized = false; + (NSString *)encryptData:(NSString *)data { - if (data == nil || [data length] == 0){ + if (data == nil || data.length == 0){ return nil; } return [FBSDKUtility SHA256Hash:data]; @@ -186,7 +185,7 @@ static volatile bool initialized = false; || [type isEqualToString:FBSDKLastName] || [type isEqualToString:FBSDKCity] || [type isEqualToString:FBSDKState] || [type isEqualToString:FBSDKCountry]) { normalizedData = [data stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - normalizedData = [normalizedData lowercaseString]; + normalizedData = normalizedData.lowercaseString; } else if ([type isEqualToString:FBSDKPhone]){ NSError *error = nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^0-9]" @@ -195,13 +194,13 @@ static volatile bool initialized = false; ]; normalizedData = [regex stringByReplacingMatchesInString:data options:0 - range:NSMakeRange(0, [data length]) + 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]: @""; + temp = temp.lowercaseString; + normalizedData = temp.length > 0 ? [temp substringToIndex:1]: @""; } return normalizedData; @@ -210,7 +209,7 @@ static volatile bool initialized = false; + (BOOL)maybeSHA256Hashed:(NSString *)data { NSRange range = [data rangeOfString:@"[A-Fa-f0-9]{64}" options:NSRegularExpressionSearch]; - return ([data length] == 64) && (range.location != NSNotFound); + return (data.length == 64) && (range.location != NSNotFound); } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m index 415e029..718e23b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m @@ -21,7 +21,16 @@ #import "FBSDKAppEvents+Internal.h" #import "FBSDKTimeSpentData.h" -static NSString *const BoltsMeasurementEventNotificationName = @"com.parse.bolts.measurement_event"; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +static NSNotificationName const BoltsMeasurementEventNotification = @"com.parse.bolts.measurement_event"; + +#else + +static NSString *const BoltsMeasurementEventNotification = @"com.parse.bolts.measurement_event"; + +#endif + static NSString *const BoltsMeasurementEventName = @"event_name"; static NSString *const BoltsMeasurementEventArgs = @"event_args"; static NSString *const BoltsMeasurementEventPrefix = @"bf_"; @@ -37,7 +46,7 @@ static NSString *const BoltsMeasurementEventPrefix = @"bf_"; NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:defaultListener selector:@selector(logFBAppEventForNotification:) - name:BoltsMeasurementEventNotificationName + name:BoltsMeasurementEventNotification object:nil]; }); return defaultListener; @@ -59,7 +68,7 @@ static NSString *const BoltsMeasurementEventPrefix = @"bf_"; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^0-9a-zA-Z _-]" options:0 error:&error]; NSString *safeKey = [regex stringByReplacingMatchesInString:key options:0 - range:NSMakeRange(0, [key length]) + range:NSMakeRange(0, key.length) withTemplate:@"-"]; safeKey = [safeKey stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" -"]]; logData[safeKey] = eventArgs[key]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m index c509d2e..dd81d5a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m @@ -18,12 +18,7 @@ #import "FBSDKBase64.h" -#import "FBSDKMacros.h" - @implementation FBSDKBase64 -{ - BOOL _optionsEnabled; -} static FBSDKBase64 *_decoder; static FBSDKBase64 *_encoder; @@ -33,11 +28,8 @@ static FBSDKBase64 *_encoder; + (void)initialize { if (self == [FBSDKBase64 class]) { - BOOL optionsEnabled; - optionsEnabled = [NSData instancesRespondToSelector:@selector(initWithBase64EncodedString:options:)]; - _decoder = [[FBSDKBase64 alloc] initWithOptionsEnabled:optionsEnabled]; - optionsEnabled = [NSData instancesRespondToSelector:@selector(base64EncodedStringWithOptions:)]; - _encoder = [[FBSDKBase64 alloc] initWithOptionsEnabled:optionsEnabled]; + _decoder = [[FBSDKBase64 alloc] init]; + _encoder = [[FBSDKBase64 alloc] init]; } } @@ -63,20 +55,6 @@ static FBSDKBase64 *_encoder; #pragma mark - Object Lifecycle -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithOptionsEnabled:); - return nil; -} - -- (instancetype)initWithOptionsEnabled:(BOOL)optionsEnabled -{ - if ((self = [super init])) { - _optionsEnabled = optionsEnabled; - } - return self; -} - #pragma mark - Implementation Methods - (NSData *)decodeAsData:(NSString *)string @@ -91,14 +69,8 @@ static FBSDKBase64 *_encoder; needPadding = 4 - needPadding; string = [string stringByPaddingToLength:string.length+needPadding withString:@"=" startingAtIndex:0]; } - if (_optionsEnabled) { - return [[NSData alloc] initWithBase64EncodedString:string options:NSDataBase64DecodingIgnoreUnknownCharacters]; - } else { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - return [[NSData alloc] initWithBase64Encoding:string]; -#pragma clang diagnostic pop - } + + return [[NSData alloc] initWithBase64EncodedString:string options:NSDataBase64DecodingIgnoreUnknownCharacters]; } - (NSString *)decodeAsString:(NSString *)string @@ -115,14 +87,8 @@ static FBSDKBase64 *_encoder; if (!data) { return nil; } - if (_optionsEnabled) { - return [data base64EncodedStringWithOptions:0]; - } else { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - return [data base64Encoding]; -#pragma clang diagnostic pop - } + + return [data base64EncodedStringWithOptions:0]; } - (NSString *)encodeString:(NSString *)string diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h index 7d488e7..1245f32 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h @@ -22,6 +22,9 @@ @interface FBSDKBridgeAPICrypto : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + + (void)addCipherKeyToQueryParameters:(NSMutableDictionary *)queryParameters; + (NSDictionary *)decryptResponseForRequest:(FBSDKBridgeAPIRequest *)request queryParameters:(NSDictionary *)queryParameters diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m index 29d2eb4..80abc96 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m @@ -23,7 +23,6 @@ #import "FBSDKCrypto.h" #import "FBSDKError.h" #import "FBSDKInternalUtility.h" -#import "FBSDKMacros.h" #import "FBSDKSettings.h" #import "FBSDKUtility.h" @@ -58,7 +57,7 @@ static NSString *g_cipherKey = nil; NSDictionary *userInfo = @{ FBSDKErrorArgumentValueKey: queryParameters, }; - *errorRef = [FBSDKError errorWithCode:FBSDKEncryptionErrorCode + *errorRef = [NSError fbErrorWithCode:FBSDKErrorEncryption userInfo:userInfo message:@"Error decrypting incoming query parameters." underlyingError:nil]; @@ -66,7 +65,7 @@ static NSString *g_cipherKey = nil; return nil; } NSArray *additionalSignedDataArray = @[ - [[NSBundle mainBundle] bundleIdentifier], + [NSBundle mainBundle].bundleIdentifier, [FBSDKSettings appID] ?: @"", @"bridge", request.methodName ?: @"", @@ -88,7 +87,7 @@ static NSString *g_cipherKey = nil; @"version": additionalSignedDataArray[4], }, }; - *errorRef = [FBSDKError errorWithCode:FBSDKEncryptionErrorCode + *errorRef = [NSError fbErrorWithCode:FBSDKErrorEncryption userInfo:userInfo message:@"Error decrypting incoming query parameters." underlyingError:nil]; @@ -107,14 +106,6 @@ static NSString *g_cipherKey = nil; [self _resetCipherKey]; } -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - #pragma mark - Helper Methods + (NSString *)_cipherKey diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h index 679577c..0a5a9b4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h @@ -18,15 +18,13 @@ #import -#import - #import "FBSDKBridgeAPIProtocolType.h" @class FBSDKBridgeAPIRequest; -FBSDK_EXTERN NSString *const FBSDKBridgeAPIAppIDKey; -FBSDK_EXTERN NSString *const FBSDKBridgeAPISchemeSuffixKey; -FBSDK_EXTERN NSString *const FBSDKBridgeAPIVersionKey; +FOUNDATION_EXPORT NSString *const FBSDKBridgeAPIAppIDKey; +FOUNDATION_EXPORT NSString *const FBSDKBridgeAPISchemeSuffixKey; +FOUNDATION_EXPORT NSString *const FBSDKBridgeAPIVersionKey; @protocol FBSDKBridgeAPIProtocol diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h index 01af30c..04689a3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h @@ -24,6 +24,8 @@ @interface FBSDKBridgeAPIRequest : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + (instancetype)bridgeAPIRequestWithProtocolType:(FBSDKBridgeAPIProtocolType)protocolType scheme:(NSString *)scheme methodName:(NSString *)methodName diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m index e51e58b..608bdce 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m @@ -24,7 +24,6 @@ #import "FBSDKBridgeAPIProtocolWebV1.h" #import "FBSDKBridgeAPIProtocolWebV2.h" #import "FBSDKInternalUtility.h" -#import "FBSDKMacros.h" #import "FBSDKSettings.h" #import "FBSDKUtility.h" @@ -94,23 +93,11 @@ NSString *const FBSDKBridgeAPIVersionKey = @"version"; _parameters = [parameters copy]; _userInfo = [userInfo copy]; - _actionID = [[NSUUID UUID] UUIDString]; + _actionID = [NSUUID UUID].UUIDString; } return self; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithProtocol:protocolType:scheme:methodName:methodVersion:parameters:userInfo:); - return [self initWithProtocol:nil - protocolType:FBSDKBridgeAPIProtocolTypeWeb - scheme:nil - methodName:nil - methodVersion:nil - parameters:nil - userInfo:nil]; -} - #pragma mark - Public Methods - (NSURL *)requestURL:(NSError *__autoreleasing *)errorRef diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h index 3da24d3..a04cd90 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h @@ -24,6 +24,9 @@ @interface FBSDKBridgeAPIResponse : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + + (instancetype)bridgeAPIResponseWithRequest:(FBSDKBridgeAPIRequest *)request error:(NSError *)error; + (instancetype)bridgeAPIResponseWithRequest:(FBSDKBridgeAPIRequest *)request responseURL:(NSURL *)responseURL diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m index 2254c95..282d4c3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m @@ -23,7 +23,6 @@ #import "FBSDKBridgeAPIProtocolType.h" #import "FBSDKBridgeAPIRequest+Private.h" #import "FBSDKInternalUtility.h" -#import "FBSDKMacros.h" #import "FBSDKTypeUtility.h" #import "FBSDKUtility.h" @@ -119,12 +118,6 @@ NS_DESIGNATED_INITIALIZER; return self; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithRequest:responseParameters:cancelled:error:); - return [self initWithRequest:nil responseParameters:nil cancelled:NO error:nil]; -} - #pragma mark - NSCopying - (id)copyWithZone:(NSZone *)zone 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 8fd34bd..ba001f0 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h @@ -18,8 +18,6 @@ #import -#import - #import "FBSDKBridgeAPIProtocol.h" typedef struct @@ -28,7 +26,7 @@ typedef struct __unsafe_unretained NSString *methodArgs; __unsafe_unretained NSString *methodVersion; } FBSDKBridgeAPIProtocolNativeV1OutputKeysStruct; -FBSDK_EXTERN const FBSDKBridgeAPIProtocolNativeV1OutputKeysStruct FBSDKBridgeAPIProtocolNativeV1OutputKeys; +FOUNDATION_EXPORT const FBSDKBridgeAPIProtocolNativeV1OutputKeysStruct FBSDKBridgeAPIProtocolNativeV1OutputKeys; typedef struct { @@ -37,24 +35,27 @@ typedef struct __unsafe_unretained NSString *appName; __unsafe_unretained NSString *sdkVersion; } FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeysStruct; -FBSDK_EXTERN const FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeysStruct FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys; +FOUNDATION_EXPORT const FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeysStruct FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys; typedef struct { __unsafe_unretained NSString *bridgeArgs; __unsafe_unretained NSString *methodResults; } FBSDKBridgeAPIProtocolNativeV1InputKeysStruct; -FBSDK_EXTERN const FBSDKBridgeAPIProtocolNativeV1InputKeysStruct FBSDKBridgeAPIProtocolNativeV1InputKeys; +FOUNDATION_EXPORT const FBSDKBridgeAPIProtocolNativeV1InputKeysStruct FBSDKBridgeAPIProtocolNativeV1InputKeys; typedef struct { __unsafe_unretained NSString *actionID; __unsafe_unretained NSString *error; } FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeysStruct; -FBSDK_EXTERN const FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeysStruct FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeys; +FOUNDATION_EXPORT const FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeysStruct FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeys; @interface FBSDKBridgeAPIProtocolNativeV1 : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + - (instancetype)initWithAppScheme:(NSString *)appScheme; - (instancetype)initWithAppScheme:(NSString *)appScheme pasteboard:(UIPasteboard *)pasteboard 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 e961b61..00b1b3c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m @@ -20,8 +20,6 @@ #import -#import - #import "FBSDKApplicationDelegate+Internal.h" #import "FBSDKBase64.h" #import "FBSDKBridgeAPIRequest.h" @@ -125,12 +123,6 @@ static const struct return self; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithAppScheme:); - return [self initWithAppScheme:nil]; -} - #pragma mark - FBSDKBridgeAPIProtocol - (NSURL *)requestURLWithActionID:(NSString *)actionID @@ -140,28 +132,33 @@ static const struct parameters:(NSDictionary *)parameters error:(NSError *__autoreleasing *)errorRef { - NSString *host = @"dialog"; - NSString *path = [@"/" stringByAppendingString:methodName]; + NSString *const host = @"dialog"; + NSString *const path = [@"/" stringByAppendingString:methodName]; - NSMutableDictionary *queryParameters = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *const queryParameters = [[NSMutableDictionary alloc] init]; [FBSDKInternalUtility dictionary:queryParameters setObject:methodVersion forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.methodVersion]; - if ([parameters count]) { - NSString *parametersString = [self _JSONStringForObject:parameters enablePasteboard:YES error:errorRef]; + if (parameters.count) { + NSString *const parametersString = [self _JSONStringForObject:parameters enablePasteboard:YES error:errorRef]; if (!parametersString) { return nil; } + NSString *const escapedParametersString = [parametersString stringByReplacingOccurrencesOfString:@"&" + withString:@"%26" + options:NSCaseInsensitiveSearch + range:NSMakeRange(0, + parametersString.length)]; [FBSDKInternalUtility dictionary:queryParameters - setObject:parametersString + setObject:escapedParametersString forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.methodArgs]; } - NSDictionary *bridgeParameters = [self _bridgeParametersWithActionID:actionID error:errorRef]; + NSDictionary *const bridgeParameters = [self _bridgeParametersWithActionID:actionID error:errorRef]; if (!bridgeParameters) { return nil; } - NSString *bridgeParametersString = [self _JSONStringForObject:bridgeParameters enablePasteboard:NO error:errorRef]; + NSString *const bridgeParametersString = [self _JSONStringForObject:bridgeParameters enablePasteboard:NO error:errorRef]; if (!bridgeParametersString) { return nil; } @@ -194,7 +191,7 @@ static const struct bridgeParameters = [FBSDKTypeUtility dictionaryValue:bridgeParameters]; if (!bridgeParameters) { if (error && (errorRef != NULL)) { - *errorRef = [FBSDKError invalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.bridgeArgs + *errorRef = [NSError fbInvalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.bridgeArgs value:bridgeParametersJSON message:@"Invalid bridge_args." underlyingError:error]; @@ -219,7 +216,7 @@ static const struct NSDictionary *resultParameters = [FBSDKInternalUtility objectForJSONString:resultParametersJSON error:&error]; if (!resultParameters) { if (errorRef != NULL) { - *errorRef = [FBSDKError invalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.methodResults + *errorRef = [NSError fbInvalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.methodResults value:resultParametersJSON message:@"Invalid method_results." underlyingError:error]; @@ -243,7 +240,7 @@ static const struct NSArray *files = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIcons"] [@"CFBundlePrimaryIcon"] [@"CFBundleIconFiles"]; - if (![files count]) { + if (!files.count) { return nil; } return [UIImage imageNamed:files[0]]; @@ -271,7 +268,7 @@ static const struct NSString *domain = [FBSDKTypeUtility stringValue:dictionary[FBSDKBridgeAPIProtocolNativeV1ErrorKeys.domain]] ?: FBSDKErrorDomain; NSInteger code = [FBSDKTypeUtility integerValue:dictionary[FBSDKBridgeAPIProtocolNativeV1ErrorKeys.code]] ?: - FBSDKUnknownErrorCode; + FBSDKErrorUnknown; NSDictionary *userInfo = [FBSDKTypeUtility dictionaryValue:dictionary[FBSDKBridgeAPIProtocolNativeV1ErrorKeys.userInfo]]; return [NSError errorWithDomain:domain code:code userInfo:userInfo]; } @@ -315,7 +312,7 @@ static const struct } return dictionary; } else if ([invalidObject isKindOfClass:[NSURL class]]) { - return [(NSURL *)invalidObject absoluteString]; + return ((NSURL *)invalidObject).absoluteString; } return invalidObject; }]; 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 ebe8710..51af66f 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m @@ -24,7 +24,6 @@ #import "FBSDKBridgeAPIRequest.h" #import "FBSDKError.h" #import "FBSDKInternalUtility.h" -#import "FBSDKMacros.h" #import "FBSDKSettings.h" #import "FBSDKTypeUtility.h" @@ -82,7 +81,7 @@ } default:{ if (errorRef != NULL) { - *errorRef = [FBSDKError errorWithCode:errorCode + *errorRef = [NSError fbErrorWithCode:errorCode message:[FBSDKTypeUtility stringValue:queryParameters[@"error_message"]]]; } return nil; @@ -95,7 +94,7 @@ NSDictionary *bridgeParameters = [FBSDKInternalUtility objectForJSONString:bridgeParametersJSON error:&error]; if (!bridgeParameters) { if (error && (errorRef != NULL)) { - *errorRef = [FBSDKError invalidArgumentErrorWithName:FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_BRIDGE_ARGS_KEY + *errorRef = [NSError fbInvalidArgumentErrorWithName: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.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m index 414543d..36b3bc0 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m @@ -83,7 +83,7 @@ FBSDKDialogConfiguration *dialogConfiguration = [serverConfiguration dialogConfigurationForDialogName:methodName]; if (!dialogConfiguration) { if (errorRef != NULL) { - *errorRef = [FBSDKError errorWithCode:FBSDKDialogUnavailableErrorCode message:nil]; + *errorRef = [NSError fbErrorWithCode:FBSDKErrorDialogUnavailable message:nil]; } return nil; } @@ -98,7 +98,7 @@ } NSMutableDictionary *queryParameters = [[FBSDKUtility dictionaryWithQueryString:requestURL.query] mutableCopy]; - queryParameters[@"ios_bundle_id"] = [[NSBundle mainBundle] bundleIdentifier]; + queryParameters[@"ios_bundle_id"] = [NSBundle mainBundle].bundleIdentifier; NSURL *redirectURL = [self _redirectURLWithActionID:nil methodName:methodName error:errorRef]; if (!redirectURL) { return nil; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m index 9c2a66a..7e17cc4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m @@ -28,7 +28,7 @@ static const uint8_t kFBSDK_CRYPTO_CURRENT_VERSION = 1; static const uint8_t kFBSDK_CRYPTO_CURRENT_MASTER_KEY_LENGTH = 16; -FBSDK_STATIC_INLINE void FBSDKCryptoWriteIntBigEndian(uint8_t *buffer, uint32_t value) +static inline void FBSDKCryptoWriteIntBigEndian(uint8_t *buffer, uint32_t value) { buffer[3] = (uint8_t)(value & 0xff); buffer[2] = (uint8_t)((value >> 8) & 0xff); @@ -36,7 +36,7 @@ FBSDK_STATIC_INLINE void FBSDKCryptoWriteIntBigEndian(uint8_t *buffer, uint32_t buffer[0] = (uint8_t)((value >> 24) & 0xff); } -FBSDK_STATIC_INLINE void FBSDKCryptoBlankData(NSData *data) +static inline void FBSDKCryptoBlankData(NSData *data) { if (!data) { return; @@ -45,7 +45,7 @@ FBSDK_STATIC_INLINE void FBSDKCryptoBlankData(NSData *data) } // Note: the following simple derivation function is NOT suitable for passwords or weak keys -FBSDK_STATIC_INLINE NSData *FBSDKCryptoMakeSubKey(uint8_t *key, size_t len, uint32_t idx) +static inline NSData *FBSDKCryptoMakeSubKey(uint8_t *key, size_t len, uint32_t idx) { if (!key || len < 10) { return nil; @@ -78,7 +78,7 @@ FBSDK_STATIC_INLINE NSData *FBSDKCryptoMakeSubKey(uint8_t *key, size_t len, uint 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]; + uint8_t *first = (uint8_t *)masterKeyData.bytes; *first = kFBSDK_CRYPTO_CURRENT_VERSION; NSString *masterKey = [FBSDKBase64 encodeData:masterKeyData]; @@ -111,8 +111,8 @@ FBSDK_STATIC_INLINE NSData *FBSDKCryptoMakeSubKey(uint8_t *key, size_t len, uint { if ((self = [super init])) { NSData *masterKeyData = [FBSDKBase64 decodeAsData:masterKey]; - NSUInteger len = [masterKeyData length]; - uint8_t *first = (uint8_t *) [masterKeyData bytes]; + 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 diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m index 78b5e87..07aa418 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m @@ -25,9 +25,9 @@ + (instancetype)recoveryAttempterFromConfiguration:(FBSDKErrorRecoveryConfiguration *)configuration { - if (configuration.errorCategory == FBSDKGraphRequestErrorCategoryTransient) { + if (configuration.errorCategory == FBSDKGraphRequestErrorTransient) { return [[_FBSDKTemporaryErrorRecoveryAttempter alloc] init]; - } else if (configuration.errorCategory == FBSDKGraphRequestErrorCategoryOther) { + } else if (configuration.errorCategory == FBSDKGraphRequestErrorOther) { return nil; } if ([configuration.recoveryActionName isEqualToString:@"login"]) { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h index 8d0b14a..b387ca3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h @@ -19,11 +19,18 @@ #import #import -#import #import "FBSDKCoreKit+Internal.h" -FBSDK_EXTERN NSString *const FBSDKApplicationDidBecomeActiveNotification; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + +FOUNDATION_EXPORT NSNotificationName const FBSDKApplicationDidBecomeActiveNotification; + +#else + +FOUNDATION_EXPORT NSString *const FBSDKApplicationDidBecomeActiveNotification; + +#endif @class FBSDKApplicationCall; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m index c7efb3f..b7ea5d7 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m @@ -79,7 +79,7 @@ { NSURL *fileURL = [self _fileURL:errorRef]; - if (![_fileManager fileExistsAtPath:[fileURL path]]) { + if (![_fileManager fileExistsAtPath:fileURL.path]) { NSData *data = [[self class] data]; if (![data writeToURL:fileURL options:NSDataWritingAtomic error:errorRef]) { return NO; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h index 2b007f9..5a3ef84 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h @@ -23,6 +23,7 @@ #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" diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m index 0f83e1d..4bc1bd9 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m @@ -54,9 +54,8 @@ static NSMapTable *g_mdnsAdvertisementServices; struct utsname systemInfo; uname(&systemInfo); NSDictionary *deviceInfo = @{ - FBSDK_DEVICE_INFO_DEVICE: [NSString stringWithCString:systemInfo.machine - encoding:NSUTF8StringEncoding], - FBSDK_DEVICE_INFO_MODEL: [[UIDevice currentDevice] model], + FBSDK_DEVICE_INFO_DEVICE: @(systemInfo.machine), + FBSDK_DEVICE_INFO_MODEL: [UIDevice currentDevice].model, }; NSError *err; NSData *jsonDeviceInfo = [NSJSONSerialization dataWithJSONObject:deviceInfo diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h index ef05fbe..99b4fbc 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h @@ -20,8 +20,6 @@ #import #import -#import - /** This class provides a way to load constants and methods from Apple Frameworks in a dynamic @@ -32,6 +30,9 @@ */ @interface FBSDKDynamicFrameworkLoader : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + #pragma mark - Security Constants /** @@ -130,105 +131,105 @@ #pragma mark - Security APIs // These are local wrappers around the corresponding methods in Security/SecRandom.h -FBSDK_EXTERN int fbsdkdfl_SecRandomCopyBytes(SecRandomRef rnd, size_t count, uint8_t *bytes); +FOUNDATION_EXPORT int fbsdkdfl_SecRandomCopyBytes(SecRandomRef rnd, size_t count, uint8_t *bytes); // These are local wrappers around Keychain API -FBSDK_EXTERN OSStatus fbsdkdfl_SecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate); -FBSDK_EXTERN OSStatus fbsdkdfl_SecItemAdd(CFDictionaryRef attributes, CFTypeRef *result); -FBSDK_EXTERN OSStatus fbsdkdfl_SecItemCopyMatching(CFDictionaryRef query, CFTypeRef *result); -FBSDK_EXTERN OSStatus fbsdkdfl_SecItemDelete(CFDictionaryRef query); +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_SecItemDelete(CFDictionaryRef query); #pragma mark - Social Constants -FBSDK_EXTERN NSString *fbsdkdfl_SLServiceTypeFacebook(void); -FBSDK_EXTERN NSString *fbsdkdfl_SLServiceTypeTwitter(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_SLServiceTypeFacebook(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_SLServiceTypeTwitter(void); #pragma mark - Social Classes -FBSDK_EXTERN Class fbsdkdfl_SLComposeViewControllerClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_SLComposeViewControllerClass(void); #pragma mark - MessageUI Classes -FBSDK_EXTERN Class fbsdkdfl_MFMailComposeViewControllerClass(void); -FBSDK_EXTERN Class fbsdkdfl_MFMessageComposeViewControllerClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_MFMailComposeViewControllerClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_MFMessageComposeViewControllerClass(void); #pragma mark - QuartzCore Classes -FBSDK_EXTERN Class fbsdkdfl_CATransactionClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_CATransactionClass(void); #pragma mark - QuartzCore APIs // These are local wrappers around the corresponding transform methods from QuartzCore.framework/CATransform3D.h -FBSDK_EXTERN CATransform3D fbsdkdfl_CATransform3DMakeScale (CGFloat sx, CGFloat sy, CGFloat sz); -FBSDK_EXTERN CATransform3D fbsdkdfl_CATransform3DMakeTranslation (CGFloat tx, CGFloat ty, CGFloat tz); -FBSDK_EXTERN CATransform3D fbsdkdfl_CATransform3DConcat (CATransform3D a, CATransform3D b); +FOUNDATION_EXPORT CATransform3D fbsdkdfl_CATransform3DMakeScale (CGFloat sx, CGFloat sy, CGFloat sz); +FOUNDATION_EXPORT CATransform3D fbsdkdfl_CATransform3DMakeTranslation (CGFloat tx, CGFloat ty, CGFloat tz); +FOUNDATION_EXPORT CATransform3D fbsdkdfl_CATransform3DConcat (CATransform3D a, CATransform3D b); -FBSDK_EXTERN const CATransform3D fbsdkdfl_CATransform3DIdentity; +FOUNDATION_EXPORT const CATransform3D fbsdkdfl_CATransform3DIdentity; #pragma mark - AudioToolbox APIs // These are local wrappers around the corresponding methods in AudioToolbox/AudioToolbox.h -FBSDK_EXTERN OSStatus fbsdkdfl_AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID); -FBSDK_EXTERN OSStatus fbsdkdfl_AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID); -FBSDK_EXTERN void fbsdkdfl_AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID); +FOUNDATION_EXPORT OSStatus fbsdkdfl_AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID); +FOUNDATION_EXPORT OSStatus fbsdkdfl_AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID); +FOUNDATION_EXPORT void fbsdkdfl_AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID); #pragma mark - AdSupport Classes -FBSDK_EXTERN Class fbsdkdfl_ASIdentifierManagerClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_ASIdentifierManagerClass(void); #pragma mark - SafariServices Classes -FBSDK_EXTERN Class fbsdkdfl_SFSafariViewControllerClass(void); -FBSDK_EXTERN Class fbsdkdfl_SFAuthenticationSessionClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_SFSafariViewControllerClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_SFAuthenticationSessionClass(void); #pragma mark - Accounts Constants -FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAppIdKey(void); -FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAudienceEveryone(void); -FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAudienceFriends(void); -FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAudienceKey(void); -FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAudienceOnlyMe(void); -FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookPermissionsKey(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_ACFacebookAppIdKey(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_ACFacebookAudienceEveryone(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_ACFacebookAudienceFriends(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_ACFacebookAudienceKey(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_ACFacebookAudienceOnlyMe(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_ACFacebookPermissionsKey(void); #pragma mark - Accounts Classes -FBSDK_EXTERN Class fbsdkdfl_ACAccountStoreClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_ACAccountStoreClass(void); #pragma mark - StoreKit classes -FBSDK_EXTERN Class fbsdkdfl_SKPaymentQueueClass(void); -FBSDK_EXTERN Class fbsdkdfl_SKProductsRequestClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_SKPaymentQueueClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_SKProductsRequestClass(void); #pragma mark - AssetsLibrary Classes -FBSDK_EXTERN Class fbsdkdfl_ALAssetsLibraryClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_ALAssetsLibraryClass(void); #pragma mark - CoreTelephony Classes -FBSDK_EXTERN Class fbsdkdfl_CTTelephonyNetworkInfoClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_CTTelephonyNetworkInfoClass(void); #pragma mark - CoreImage -FBSDK_EXTERN Class fbsdkdfl_CIImageClass(void); -FBSDK_EXTERN Class fbsdkdfl_CIFilterClass(void); -FBSDK_EXTERN NSString *fbsdkdfl_kCIInputImageKey(void); -FBSDK_EXTERN NSString *fbsdkdfl_kCIInputRadiusKey(void); -FBSDK_EXTERN NSString *fbsdkdfl_kCIOutputImageKey(void); +FOUNDATION_EXPORT Class fbsdkdfl_CIImageClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_CIFilterClass(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_kCIInputImageKey(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_kCIInputRadiusKey(void); +FOUNDATION_EXPORT NSString *fbsdkdfl_kCIOutputImageKey(void); #pragma mark - Photos.framework -FBSDK_EXTERN Class fbsdkdfl_PHPhotoLibrary(void); -FBSDK_EXTERN Class fbsdkdfl_PHAssetChangeRequest(void); +FOUNDATION_EXPORT Class fbsdkdfl_PHPhotoLibrary(void); +FOUNDATION_EXPORT Class fbsdkdfl_PHAssetChangeRequest(void); #pragma mark - MobileCoreServices -FBSDK_EXTERN CFStringRef fbsdkdfl_UTTypeCopyPreferredTagWithClass(CFStringRef inUTI, +FOUNDATION_EXPORT CFStringRef fbsdkdfl_UTTypeCopyPreferredTagWithClass(CFStringRef inUTI, CFStringRef inTagClass); -FBSDK_EXTERN CFStringRef fbsdkdfl_kUTTagClassMIMEType(void); -FBSDK_EXTERN CFStringRef fbsdkdfl_kUTTypeJPEG(void); -FBSDK_EXTERN CFStringRef fbsdkdfl_kUTTypePNG(void); +FOUNDATION_EXPORT CFStringRef fbsdkdfl_kUTTagClassMIMEType(void); +FOUNDATION_EXPORT CFStringRef fbsdkdfl_kUTTypeJPEG(void); +FOUNDATION_EXPORT CFStringRef fbsdkdfl_kUTTypePNG(void); #pragma mark - WebKit Classes -FBSDK_EXTERN Class fbsdkdfl_WKWebViewClass(void); -FBSDK_EXTERN Class fbsdkdfl_WKUserScriptClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_WKWebViewClass(void); +FOUNDATION_EXPORT Class fbsdkdfl_WKUserScriptClass(void); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h index f37bd86..e6b73f4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h @@ -18,39 +18,76 @@ #import -@interface FBSDKError : NSObject +@interface NSError (FBSDKError) -+ (NSString *)errorDomain; ++ (NSError *)fbErrorWithCode:(NSInteger)code message:(NSString *)message; ++ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain + code:(NSInteger)code + message:(NSString *)message; -+ (BOOL)errorIsNetworkError:(NSError *)error; ++ (NSError *)fbErrorWithCode:(NSInteger)code + message:(NSString *)message + underlyingError:(NSError *)underlyingError; -+ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message; -+ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message underlyingError:(NSError *)underlyingError; -+ (NSError *)errorWithCode:(NSInteger)code - userInfo:(NSDictionary *)userInfo - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain + code:(NSInteger)code + message:(NSString *)message + underlyingError:(NSError *)underlyingError; -+ (NSError *)invalidArgumentErrorWithName:(NSString *)name value:(id)value message:(NSString *)message; -+ (NSError *)invalidArgumentErrorWithName:(NSString *)name - value:(id)value - message:(NSString *)message - underlyingError:(NSError *)underlyingError; -+ (NSError *)invalidCollectionErrorWithName:(NSString *)name - collection:(id)collection - item:(id)item ++ (NSError *)fbErrorWithCode:(NSInteger)code + userInfo:(NSDictionary *)userInfo + message:(NSString *)message + underlyingError:(NSError *)underlyingError; + ++ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain + code:(NSInteger)code + userInfo:(NSDictionary *)userInfo + message:(NSString *)message + underlyingError:(NSError *)underlyingError; + ++ (NSError *)fbInvalidArgumentErrorWithName:(NSString *)name + value:(id)value message:(NSString *)message; -+ (NSError *)invalidCollectionErrorWithName:(NSString *)name - collection:(id)collection - item:(id)item + ++ (NSError *)fbInvalidArgumentErrorWithDomain:(NSErrorDomain)domain + name:(NSString *)name + value:(id)value + message:(NSString *)message; + ++ (NSError *)fbInvalidArgumentErrorWithName:(NSString *)name + value:(id)value message:(NSString *)message underlyingError:(NSError *)underlyingError; -+ (NSError *)requiredArgumentErrorWithName:(NSString *)name message:(NSString *)message; -+ (NSError *)requiredArgumentErrorWithName:(NSString *)name - message:(NSString *)message - underlyingError:(NSError *)underlyingError; ++ (NSError *)fbInvalidArgumentErrorWithDomain:(NSErrorDomain)domain + name:(NSString *)name + value:(id)value + message:(NSString *)message + underlyingError:(NSError *)underlyingError; -+ (NSError *)unknownErrorWithMessage:(NSString *)message; ++ (NSError *)fbInvalidCollectionErrorWithName:(NSString *)name + collection:(id)collection + item:(id)item + message:(NSString *)message; + ++ (NSError *)fbInvalidCollectionErrorWithName:(NSString *)name + collection:(id)collection + item:(id)item + message:(NSString *)message + underlyingError:(NSError *)underlyingError; + ++ (NSError *)fbRequiredArgumentErrorWithName:(NSString *)name message:(NSString *)message; ++ (NSError *)fbRequiredArgumentErrorWithDomain:(NSErrorDomain)domain + name:(NSString *)name + message:(NSString *)message; + ++ (NSError *)fbRequiredArgumentErrorWithName:(NSString *)name + message:(NSString *)message + underlyingError:(NSError *)underlyingError; + ++ (NSError *)fbUnknownErrorWithMessage:(NSString *)message; + +@property (nonatomic, assign, readonly, getter=isNetworkError) BOOL networkError +NS_SWIFT_NAME(isNetworkError); @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m index 0a7b455..bad2aae 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m @@ -22,27 +22,18 @@ #import "FBSDKInternalUtility.h" #import "FBSDKTypeUtility.h" -@implementation FBSDKError +@implementation NSError (FBSDKError) #pragma mark - Class Methods -+ (NSString *)errorDomain +- (BOOL)isNetworkError { - return FBSDKErrorDomain; -} - -+ (BOOL)errorIsNetworkError:(NSError *)error -{ - if (error == nil) { - return NO; - } - - NSError *innerError = error.userInfo[NSUnderlyingErrorKey]; - if ([self errorIsNetworkError:innerError]) { + NSError *innerError = self.userInfo[NSUnderlyingErrorKey]; + if (innerError && innerError.isNetworkError) { return YES; } - switch (error.code) { + switch (self.code) { case NSURLErrorTimedOut: case NSURLErrorCannotFindHost: case NSURLErrorCannotConnectToHost: @@ -58,37 +49,85 @@ } } -+ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message ++ (NSError *)fbErrorWithCode:(NSInteger)code message:(NSString *)message { - return [self errorWithCode:code message:message underlyingError:nil]; + return [self fbErrorWithCode:code message:message underlyingError:nil]; } -+ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message underlyingError:(NSError *)underlyingError ++ (NSError *)fbErrorWithDomain:(NSErrorDomain)domain + code:(NSInteger)code + message:(NSString *)message { - return [self errorWithCode:code userInfo:nil message:message underlyingError:underlyingError]; + return [self fbErrorWithDomain:domain code:code message:message underlyingError:nil]; } -+ (NSError *)errorWithCode:(NSInteger)code - userInfo:(NSDictionary *)userInfo - message:(NSString *)message - underlyingError:(NSError *)underlyingError ++ (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:[self errorDomain] code:code userInfo:userInfo]; + userInfo = fullUserInfo.count ? [fullUserInfo copy] : nil; + return [[NSError alloc] initWithDomain:domain code:code userInfo:userInfo]; } -+ (NSError *)invalidArgumentErrorWithName:(NSString *)name value:(id)value message:(NSString *)message ++ (NSError *)fbInvalidArgumentErrorWithName:(NSString *)name value:(id)value message:(NSString *)message { - return [self invalidArgumentErrorWithName:name value:value message:message underlyingError:nil]; + return [self fbInvalidArgumentErrorWithName:name value:value message:message underlyingError:nil]; } -+ (NSError *)invalidArgumentErrorWithName:(NSString *)name - value:(id)value - message:(NSString *)message - underlyingError:(NSError *)underlyingError ++ (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]; @@ -96,25 +135,26 @@ NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init]; [FBSDKInternalUtility dictionary:userInfo setObject:name forKey:FBSDKErrorArgumentNameKey]; [FBSDKInternalUtility dictionary:userInfo setObject:value forKey:FBSDKErrorArgumentValueKey]; - return [self errorWithCode:FBSDKInvalidArgumentErrorCode - userInfo:userInfo - message:message - underlyingError:underlyingError]; + return [self fbErrorWithDomain:domain + code:FBSDKErrorInvalidArgument + userInfo:userInfo + message:message + underlyingError:underlyingError]; } -+ (NSError *)invalidCollectionErrorWithName:(NSString *)name - collection:(id)collection - item:(id)item - message:(NSString *)message ++ (NSError *)fbInvalidCollectionErrorWithName:(NSString *)name + collection:(id)collection + item:(id)item + message:(NSString *)message { - return [self invalidCollectionErrorWithName:name collection:collection item:item message:message underlyingError:nil]; + return [self fbInvalidCollectionErrorWithName: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 ++ (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]; @@ -123,41 +163,43 @@ [FBSDKInternalUtility dictionary:userInfo setObject:name forKey:FBSDKErrorArgumentNameKey]; [FBSDKInternalUtility dictionary:userInfo setObject:item forKey:FBSDKErrorArgumentValueKey]; [FBSDKInternalUtility dictionary:userInfo setObject:collection forKey:FBSDKErrorArgumentCollectionKey]; - return [self errorWithCode:FBSDKInvalidArgumentErrorCode - userInfo:userInfo - message:message - underlyingError:underlyingError]; + return [self fbErrorWithCode:FBSDKErrorInvalidArgument + userInfo:userInfo + message:message + underlyingError:underlyingError]; } -+ (NSError *)requiredArgumentErrorWithName:(NSString *)name message:(NSString *)message ++ (NSError *)fbRequiredArgumentErrorWithName:(NSString *)name message:(NSString *)message { - return [self requiredArgumentErrorWithName:name message:message underlyingError:nil]; + return [self fbRequiredArgumentErrorWithName:name message:message underlyingError:nil]; } -+ (NSError *)requiredArgumentErrorWithName:(NSString *)name - message:(NSString *)message - underlyingError:(NSError *)underlyingError ++ (NSError *)fbRequiredArgumentErrorWithDomain:(NSErrorDomain)domain + name:(NSString *)name + message:(NSString *)message { if (!message) { message = [[NSString alloc] initWithFormat:@"Value for %@ is required.", name]; } - return [self invalidArgumentErrorWithName:name value:nil message:message underlyingError:underlyingError]; + return [self fbInvalidArgumentErrorWithDomain:domain name:name value:nil message:message underlyingError:nil]; } -+ (NSError *)unknownErrorWithMessage:(NSString *)message ++ (NSError *)fbRequiredArgumentErrorWithName:(NSString *)name + message:(NSString *)message + underlyingError:(NSError *)underlyingError { - return [self errorWithCode:FBSDKUnknownErrorCode - userInfo:nil - message:message - underlyingError:nil]; + if (!message) { + message = [[NSString alloc] initWithFormat:@"Value for %@ is required.", name]; + } + return [self fbInvalidArgumentErrorWithName:name value:nil message:message underlyingError:underlyingError]; } -#pragma mark - Object Lifecycle - -- (instancetype)init ++ (NSError *)fbUnknownErrorWithMessage:(NSString *)message { - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; + return [self fbErrorWithCode:FBSDKErrorUnknown + userInfo:nil + message:message + underlyingError:nil]; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h index 981b651..6a5e0f5 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h @@ -36,6 +36,9 @@ typedef NS_ENUM(int32_t, FBSDKUIKitVersion) @interface FBSDKInternalUtility : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + /** Constructs the scheme for apps that come to the current app through the bridge. */ @@ -344,6 +347,11 @@ setJSONStringForObject:(id)object */ + (BOOL)areAllPermissionsPublishPermissions:(NSSet *)permissions; +/* + Checks if the app is Unity. + */ ++ (BOOL)isUnity; + #pragma mark - FB Apps Installed + (BOOL)isFacebookAppInstalled; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m index 574db4e..71c2fe8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m @@ -24,7 +24,7 @@ #import "FBSDKCoreKit+Internal.h" #import "FBSDKError.h" -#import "FBSDKMacros.h" +#import "FBSDKSettings+Internal.h" #import "FBSDKSettings.h" #import "FBSDKUtility.h" @@ -103,9 +103,9 @@ typedef NS_ENUM(NSUInteger, FBSDKInternalUtilityVersionShift) + (id)convertRequestValue:(id)value { if ([value isKindOfClass:[NSNumber class]]) { - value = [(NSNumber *)value stringValue]; + value = ((NSNumber *)value).stringValue; } else if ([value isKindOfClass:[NSURL class]]) { - value = [(NSURL *)value absoluteString]; + value = ((NSURL *)value).absoluteString; } return value; } @@ -136,7 +136,7 @@ setJSONStringForObject:(id)object + (void)dictionary:(NSMutableDictionary *)dictionary setObject:(id)object forKey:(id)key { if (object && key) { - [dictionary setObject:object forKey:key]; + dictionary[key] = object; } } @@ -177,23 +177,23 @@ setJSONStringForObject:(id)object defaultVersion:(NSString *)defaultVersion error:(NSError *__autoreleasing *)errorRef { - if ([hostPrefix length] && ![hostPrefix hasSuffix:@"."]) { + if (hostPrefix.length && ![hostPrefix hasSuffix:@"."]) { hostPrefix = [hostPrefix stringByAppendingString:@"."]; } NSString *host = @"facebook.com"; NSString *domainPart = [FBSDKSettings facebookDomainPart]; - if ([domainPart length]) { + if (domainPart.length) { host = [[NSString alloc] initWithFormat:@"%@.%@", domainPart, host]; } host = [NSString stringWithFormat:@"%@%@", hostPrefix ?: @"", host ?: @""]; NSString *version = defaultVersion ?: [FBSDKSettings graphAPIVersion]; - if ([version length]) { + if (version.length) { version = [@"/" stringByAppendingString:version]; } - if ([path length]) { + if (path.length) { NSScanner *versionScanner = [[NSScanner alloc] initWithString:path]; if ([versionScanner scanString:@"/v" intoString:NULL] && [versionScanner scanInteger:NULL] && @@ -220,7 +220,7 @@ setJSONStringForObject:(id)object + (BOOL)isBrowserURL:(NSURL *)URL { - NSString *scheme = [URL.scheme lowercaseString]; + NSString *scheme = URL.scheme.lowercaseString; return ([scheme isEqualToString:@"http"] || [scheme isEqualToString:@"https"]); } @@ -247,7 +247,7 @@ setJSONStringForObject:(id)object static dispatch_once_t getVersionOnce; dispatch_once(&getVersionOnce, ^{ int32_t linkTimeVersion = NSVersionOfLinkTimeLibrary("UIKit"); - linkTimeMajorVersion = ((MAX(linkTimeVersion, 0) & FBSDKInternalUtilityMajorVersionMask) >> FBSDKInternalUtilityMajorVersionShift); + linkTimeMajorVersion = [self getMajorVersionFromFullLibraryVersion:linkTimeVersion]; }); return (version <= linkTimeMajorVersion); } @@ -258,11 +258,24 @@ setJSONStringForObject:(id)object static dispatch_once_t getVersionOnce; dispatch_once(&getVersionOnce, ^{ int32_t runTimeVersion = NSVersionOfRunTimeLibrary("UIKit"); - runTimeMajorVersion = ((MAX(runTimeVersion, 0) & FBSDKInternalUtilityMajorVersionMask) >> FBSDKInternalUtilityMajorVersionShift); + runTimeMajorVersion = [self getMajorVersionFromFullLibraryVersion:runTimeVersion]; }); return (version <= runTimeMajorVersion); } ++ (int32_t)getMajorVersionFromFullLibraryVersion:(int32_t)version +{ + // Negative values returned by NSVersionOfRunTimeLibrary/NSVersionOfLinkTimeLibrary + // are still valid version numbers, as long as it's not -1. + // After bitshift by 16, the negatives become valid positive major version number. + // We ran into this first time with iOS 12. + if (version != -1) { + return ((version & FBSDKInternalUtilityMajorVersionMask) >> FBSDKInternalUtilityMajorVersionShift); + } else { + return 0; + } +} + + (NSString *)JSONStringForObject:(id)object error:(NSError *__autoreleasing *)errorRef invalidObjectHandler:(id(^)(id object, BOOL *stop))invalidObjectHandler @@ -271,7 +284,7 @@ setJSONStringForObject:(id)object object = [self _convertObjectToJSONObject:object invalidObjectHandler:invalidObjectHandler stop:NULL]; if (![NSJSONSerialization isValidJSONObject:object]) { if (errorRef != NULL) { - *errorRef = [FBSDKError invalidArgumentErrorWithName:@"object" + *errorRef = [NSError fbInvalidArgumentErrorWithName:@"object" value:object message:@"Invalid object for JSON serialization."]; } @@ -348,7 +361,7 @@ setJSONStringForObject:(id)object NSMutableString *queryString = [[NSMutableString alloc] init]; __block BOOL hasParameters = NO; if (dictionary) { - NSMutableArray *keys = [[dictionary allKeys] mutableCopy]; + 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]]; @@ -379,7 +392,7 @@ setJSONStringForObject:(id)object if (errorRef != NULL) { *errorRef = nil; } - return ([queryString length] ? [queryString copy] : nil); + return (queryString.length ? [queryString copy] : nil); } + (BOOL)shouldManuallyAdjustOrientation @@ -399,13 +412,13 @@ setJSONStringForObject:(id)object } NSString *queryString = nil; - if ([queryParameters count]) { + if (queryParameters.count) { NSError *queryStringError; queryString = [@"?" stringByAppendingString:[FBSDKUtility queryStringWithDictionary:queryParameters error:&queryStringError]]; if (!queryString) { if (errorRef != NULL) { - *errorRef = [FBSDKError invalidArgumentErrorWithName:@"queryParameters" + *errorRef = [NSError fbInvalidArgumentErrorWithName:@"queryParameters" value:queryParameters message:nil underlyingError:queryStringError]; @@ -424,7 +437,7 @@ setJSONStringForObject:(id)object if (URL) { *errorRef = nil; } else { - *errorRef = [FBSDKError unknownErrorWithMessage:@"Unknown error building URL."]; + *errorRef = [NSError fbUnknownErrorWithMessage:@"Unknown error building URL."]; } } return URL; @@ -451,7 +464,7 @@ static NSMapTable *_transientObjects; if (!_transientObjects) { _transientObjects = [[NSMapTable alloc] init]; } - NSUInteger count = [(NSNumber *)[_transientObjects objectForKey:object] unsignedIntegerValue]; + NSUInteger count = ((NSNumber *)[_transientObjects objectForKey:object]).unsignedIntegerValue; [_transientObjects setObject:@(count + 1) forKey:object]; } @@ -461,7 +474,7 @@ static NSMapTable *_transientObjects; return; } NSAssert([NSThread isMainThread], @"Must be called from the main thread!"); - NSUInteger count = [(NSNumber *)[_transientObjects objectForKey:object] unsignedIntegerValue]; + NSUInteger count = ((NSNumber *)[_transientObjects objectForKey:object]).unsignedIntegerValue; if (count == 1) { [_transientObjects removeObjectForKey:object]; } else if (count != 0) { @@ -514,14 +527,6 @@ static NSMapTable *_transientObjects; return [self _canOpenURLScheme:FBSDK_CANOPENURL_MSQRD_PLAYER]; } -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - #pragma mark - Helper Methods + (NSComparisonResult)_compareOperatingSystemVersion:(NSOperatingSystemVersion)version1 @@ -552,7 +557,7 @@ static NSMapTable *_transientObjects; 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]; + object = ((NSURL *)object).absoluteString; } else if ([object isKindOfClass:[NSDictionary class]]) { NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; [(NSDictionary *)object enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *dictionaryStop) { @@ -684,7 +689,7 @@ static NSMapTable *_transientObjects; static NSArray *urlTypes = nil; dispatch_once(&fetchBundleOnce, ^{ - urlTypes = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleURLTypes"]; + urlTypes = [[NSBundle mainBundle].infoDictionary valueForKey:@"CFBundleURLTypes"]; }); for (NSDictionary *urlType in urlTypes) { NSArray *urlSchemes = [urlType valueForKey:@"CFBundleURLSchemes"]; @@ -724,7 +729,7 @@ static NSMapTable *_transientObjects; static NSArray *schemes = nil; dispatch_once(&fetchBundleOnce, ^{ - schemes = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"LSApplicationQueriesSchemes"]; + schemes = [[NSBundle mainBundle].infoDictionary valueForKey:@"LSApplicationQueriesSchemes"]; }); return [schemes containsObject:urlScheme]; @@ -772,4 +777,13 @@ static NSMapTable *_transientObjects; return clazz; } ++ (BOOL)isUnity +{ + NSString *userAgentSuffix = [FBSDKSettings userAgentSuffix]; + if (userAgentSuffix != nil && [userAgentSuffix rangeOfString:@"Unity"].location != NSNotFound) { + return YES; + } + return NO; +} + @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m index 6921fc2..7ffa183 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m @@ -87,7 +87,7 @@ static NSMutableDictionary *g_startTimesWithTags = nil; - (void)appendKey:(NSString *)key value:(NSString *)value { - if (_isActive && [value length]) { + if (_isActive && value.length) { [_internalContents appendFormat:@" %@:\t%@\n", key, value]; } } @@ -98,7 +98,7 @@ static NSMutableDictionary *g_startTimesWithTags = nil; for (NSString *key in [g_stringsToReplace keyEnumerator]) { [_internalContents replaceOccurrencesOfString:key - withString:[g_stringsToReplace objectForKey:key] + withString:g_stringsToReplace[key] options:NSLiteralSearch range:NSMakeRange(0, _internalContents.length)]; } @@ -158,8 +158,8 @@ static NSMutableDictionary *g_startTimesWithTags = nil; // Start time of this "timestampTag" is stashed in the dictionary. // Treat the incoming object tag simply as an address, since it's only used to identify during lifetime. If // we send in as an object, the dictionary will try to copy it. - NSNumber *tagAsNumber = [NSNumber numberWithUnsignedLong:(unsigned long)(__bridge void *)timestampTag]; - NSNumber *startTimeNumber = [g_startTimesWithTags objectForKey:tagAsNumber]; + NSNumber *tagAsNumber = @((unsigned long)(__bridge void *)timestampTag); + NSNumber *startTimeNumber = g_startTimesWithTags[tagAsNumber]; // Only log if there's been an associated start time. if (startTimeNumber) { @@ -193,8 +193,7 @@ static NSMutableDictionary *g_startTimesWithTags = nil; // Treat the incoming object tag simply as an address, since it's only used to identify during lifetime. If // we send in as an object, the dictionary will try to copy it. unsigned long tagAsNumber = (unsigned long)(__bridge void *)timestampTag; - [g_startTimesWithTags setObject:@(currTime) - forKey:[NSNumber numberWithUnsignedLong:tagAsNumber]]; + g_startTimesWithTags[@(tagAsNumber)] = @(currTime); } } @@ -204,7 +203,7 @@ static NSMutableDictionary *g_startTimesWithTags = nil; // Strings sent in here never get cleaned up, but that's OK, don't ever expect too many. - if ([[FBSDKSettings loggingBehavior] count] > 0) { // otherwise there's no logging. + if ([FBSDKSettings loggingBehavior].count > 0) { // otherwise there's no logging. if (!g_stringsToReplace) { g_stringsToReplace = [[NSMutableDictionary alloc] init]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h index e3f9cd5..5414e38 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h @@ -21,6 +21,9 @@ @interface FBSDKMath : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + + (CGPoint)ceilForPoint:(CGPoint)value; + (CGSize)ceilForSize:(CGSize)value; + (CGPoint)floorForPoint:(CGPoint)value; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m index 6ac3fe5..302e80b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m @@ -25,8 +25,6 @@ #import -#import "FBSDKMacros.h" - @implementation FBSDKMath #pragma mark - Class Methods @@ -148,12 +146,4 @@ return hash; } -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m index 1b0f942..069ee5e 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m @@ -191,9 +191,9 @@ static void (*fb_swizzledMethods[MAX_ARGS - MIN_ARGS + 1])() = {fb_swizzledMetho IMP swizzledMethod = (IMP)fb_swizzledMethods[numArgs - 2]; // Check whether the first parameter is integer if (4 == numArgs) { - NSString *firstType = [NSString stringWithUTF8String:method_copyArgumentType(aMethod, 2)]; + NSString *firstType = @(method_copyArgumentType(aMethod, 2)); NSString *integerTypes = @"islq"; - if ([integerTypes containsString:[firstType lowercaseString]]) { + if ([integerTypes containsString:firstType.lowercaseString]) { swizzledMethod = (IMP)fb_swizzleMethod_4_io; } } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h index 104adbe..b547dab 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h @@ -30,6 +30,28 @@ typedef void (^FBSDKGraphRequestAccessToAccountsHandler)(NSString *oauthToken, N */ @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 @@ -51,31 +73,4 @@ typedef void (^FBSDKGraphRequestAccessToAccountsHandler)(NSString *oauthToken, N */ - (void)renewSystemAuthorization:(void(^)(ACAccountCredentialRenewResult result, NSError *error))handler; -/* - s gets the oauth token stored in the account store credential, if available. If not empty, - this implies user has granted access. - */ -- (NSString *)accessTokenString; - -/* - Gets the singleton instance. - */ -+ (FBSDKSystemAccountStoreAdapter *)sharedInstance; - -/* - Sets the singleton instance, typically only for unit tests - */ -+ (void)setSharedInstance:(FBSDKSystemAccountStoreAdapter *)instance; - -/* - 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; - @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m index 9eba369..dc6b8d8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m @@ -99,7 +99,7 @@ static FBSDKSystemAccountStoreAdapter *_singletonInstance = nil; if (self.accountType && self.accountType.accessGranted) { NSArray *fbAccounts = [self.accountStore accountsWithAccountType:self.accountType]; if (fbAccounts.count > 0) { - id account = [fbAccounts objectAtIndex:0]; + id account = fbAccounts[0]; id credential = [account credential]; return [credential oauthToken]; @@ -137,11 +137,9 @@ static FBSDKSystemAccountStoreAdapter *_singletonInstance = nil; } // construct access options - NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: - appID, fbsdkdfl_ACFacebookAppIdKey(), - [permissions allObjects], fbsdkdfl_ACFacebookPermissionsKey(), - defaultAudience, fbsdkdfl_ACFacebookAudienceKey(), // must end on this key/value due to audience possibly being nil - nil]; + NSDictionary *options = @{fbsdkdfl_ACFacebookAppIdKey(): appID, + fbsdkdfl_ACFacebookPermissionsKey(): permissions.allObjects, + fbsdkdfl_ACFacebookAudienceKey(): defaultAudience}; if (self.forceBlockingRenew && [self.accountStore accountsWithAccountType:self.accountType].count > 0) { @@ -171,7 +169,7 @@ static FBSDKSystemAccountStoreAdapter *_singletonInstance = nil; { if (!self.accountType) { if (handler) { - handler(nil, [FBSDKError errorWithCode:FBSDKUnknownErrorCode message:@"Invalid request to account store"]); + handler(nil, [NSError fbErrorWithCode:FBSDKErrorUnknown message:@"Invalid request to account store"]); } return; } @@ -200,7 +198,7 @@ static FBSDKSystemAccountStoreAdapter *_singletonInstance = nil; if (granted) { NSArray *fbAccounts = [self.accountStore accountsWithAccountType:self.accountType]; if (fbAccounts.count > 0) { - account = [fbAccounts objectAtIndex:0]; + account = fbAccounts[0]; id credential = [account credential]; @@ -233,11 +231,11 @@ static FBSDKSystemAccountStoreAdapter *_singletonInstance = nil; if (self.accountStore && self.accountType && self.accountType.accessGranted) { NSArray *fbAccounts = [self.accountStore accountsWithAccountType:self.accountType]; id account; - if (fbAccounts && [fbAccounts count] > 0 && - (account = [fbAccounts objectAtIndex:0])) { + if (fbAccounts && fbAccounts.count > 0 && + (account = fbAccounts[0])) { FBSDKAccessToken *currentToken = [FBSDKAccessToken currentAccessToken]; - if (![currentToken.tokenString isEqualToString:[self accessTokenString]]) { + if (![currentToken.tokenString isEqualToString:self.accessTokenString]) { currentToken = nil; } [self.accountStore renewCredentialsForAccount:account completion:^(ACAccountCredentialRenewResult renewResult, NSError *error) { @@ -252,8 +250,9 @@ static FBSDKSystemAccountStoreAdapter *_singletonInstance = nil; [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] + FBSDKAccessToken *updatedToken = [[FBSDKAccessToken alloc] initWithTokenString:self.accessTokenString + permissions:currentToken.permissions.allObjects + declinedPermissions:currentToken.declinedPermissions.allObjects appID:currentToken.appID userID:currentToken.userID expirationDate:[NSDate distantFuture] diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h index 8fe3e9e..af06684 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h @@ -18,8 +18,6 @@ #import -#import - typedef NS_ENUM(NSInteger, FBSDKTriStateBOOL) { FBSDKTriStateBOOLValueUnknown = -1, @@ -27,6 +25,6 @@ typedef NS_ENUM(NSInteger, FBSDKTriStateBOOL) FBSDKTriStateBOOLValueYES = 1, }; -FBSDK_EXTERN FBSDKTriStateBOOL FBSDKTriStateBOOLFromBOOL(BOOL value); -FBSDK_EXTERN FBSDKTriStateBOOL FBSDKTriStateBOOLFromNSNumber(NSNumber *value); -FBSDK_EXTERN BOOL BOOLFromFBSDKTriStateBOOL(FBSDKTriStateBOOL value, BOOL defaultValue); +FOUNDATION_EXPORT FBSDKTriStateBOOL FBSDKTriStateBOOLFromBOOL(BOOL value); +FOUNDATION_EXPORT FBSDKTriStateBOOL FBSDKTriStateBOOLFromNSNumber(NSNumber *value); +FOUNDATION_EXPORT BOOL BOOLFromFBSDKTriStateBOOL(FBSDKTriStateBOOL value, BOOL defaultValue); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m index c25d365..aafcb39 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m @@ -26,7 +26,7 @@ FBSDKTriStateBOOL FBSDKTriStateBOOLFromBOOL(BOOL value) FBSDKTriStateBOOL FBSDKTriStateBOOLFromNSNumber(NSNumber *value) { return ([value isKindOfClass:[NSNumber class]] ? - FBSDKTriStateBOOLFromBOOL([value boolValue]) : + FBSDKTriStateBOOLFromBOOL(value.boolValue) : FBSDKTriStateBOOLValueUnknown); } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h index 7f02153..425b855 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h @@ -20,6 +20,9 @@ @interface FBSDKTypeUtility : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + + (NSArray *)arrayValue:(id)object; + (BOOL)boolValue:(id)object; + (NSDictionary *)dictionaryValue:(id)object; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m index aa02502..fd6c733 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m @@ -18,8 +18,6 @@ #import "FBSDKTypeUtility.h" -#import "FBSDKMacros.h" - @implementation FBSDKTypeUtility #pragma mark - Class Methods @@ -33,10 +31,10 @@ { if ([object isKindOfClass:[NSNumber class]]) { // @0 or @NO returns NO, otherwise YES - return [(NSNumber *)object boolValue]; + return ((NSNumber *)object).boolValue; } else if ([object isKindOfClass:[NSString class]]) { // Returns YES on encountering one of "Y", "y", "T", "t", or a digit 1-9, otherwise NO - return [(NSString *)object boolValue]; + return ((NSString *)object).boolValue; } else { return ([self objectValue:object] != nil); } @@ -50,9 +48,9 @@ + (NSInteger)integerValue:(id)object { if ([object isKindOfClass:[NSNumber class]]) { - return [(NSNumber *)object integerValue]; + return ((NSNumber *)object).integerValue; } else if ([object isKindOfClass:[NSString class]]) { - return [(NSString *)object integerValue]; + return ((NSString *)object).integerValue; } else { return 0; } @@ -68,9 +66,9 @@ if ([object isKindOfClass:[NSString class]]) { return (NSString *)object; } else if ([object isKindOfClass:[NSNumber class]]) { - return [(NSNumber *)object stringValue]; + return ((NSNumber *)object).stringValue; } else if ([object isKindOfClass:[NSURL class]]) { - return [(NSURL *)object absoluteString]; + return ((NSURL *)object).absoluteString; } else { return nil; } @@ -79,9 +77,9 @@ + (NSTimeInterval)timeIntervalValue:(id)object { if ([object isKindOfClass:[NSNumber class]]) { - return [(NSNumber *)object doubleValue]; + return ((NSNumber *)object).doubleValue; } else if ([object isKindOfClass:[NSString class]]) { - return [(NSString *)object doubleValue]; + return ((NSString *)object).doubleValue; } else { return 0; } @@ -90,7 +88,7 @@ + (NSUInteger)unsignedIntegerValue:(id)object { if ([object isKindOfClass:[NSNumber class]]) { - return [(NSNumber *)object unsignedIntegerValue]; + return ((NSNumber *)object).unsignedIntegerValue; } else { // there is no direct support for strings containing unsigned values > NSIntegerMax - not worth writing ourselves // right now, so just cap unsigned values at NSIntegerMax until we have a need for larger @@ -113,14 +111,6 @@ } } -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - #pragma mark - Helper Methods + (id)_objectValue:(id)object ofClass:(Class)expectedClass 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 7dc3c0f..4d8ba91 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h @@ -46,8 +46,9 @@ typedef NS_OPTIONS(NSUInteger, FBSDKGraphRequestFlags) // out of context of any user action. @property (nonatomic, assign) FBSDKGraphRequestFlags flags; -- (BOOL)isGraphErrorRecoveryDisabled; -- (BOOL)hasAttachments; +@property (nonatomic, readonly, getter=isGraphErrorRecoveryDisabled) BOOL graphErrorRecoveryDisabled; +@property (nonatomic, readonly) BOOL hasAttachments; + + (BOOL)isAttachment:(id)item; + (NSString *)serializeURL:(NSString *)baseUrl params:(NSDictionary *)params diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m index 5aee96f..c454f95 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m @@ -18,22 +18,24 @@ #import "FBSDKGraphRequestBody.h" +#import "FBSDKCrypto.h" #import "FBSDKGraphRequestDataAttachment.h" #import "FBSDKLogger.h" #import "FBSDKSettings.h" -#define kStringBoundary @"3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f" #define kNewline @"\r\n" @implementation FBSDKGraphRequestBody { NSMutableData *_data; NSMutableDictionary *_json; + NSString *_stringBoundary; } - (instancetype)init { if ((self = [super init])) { + _stringBoundary = [FBSDKCrypto randomString:32]; _data = [[NSMutableData alloc] init]; _json = [NSMutableDictionary dictionary]; } @@ -46,14 +48,14 @@ if (_json) { return @"application/json"; } else { - return [NSString stringWithFormat:@"multipart/form-data; boundary=%@",kStringBoundary]; + return [NSString stringWithFormat:@"multipart/form-data; boundary=%@", _stringBoundary]; } } - (void)appendUTF8:(NSString *)utf8 { - if (![_data length]) { - NSString *headerUTF8 = [NSString stringWithFormat:@"--%@%@", kStringBoundary, kNewline]; + if (!_data.length) { + NSString *headerUTF8 = [NSString stringWithFormat:@"--%@%@", _stringBoundary, kNewline]; NSData *headerData = [headerUTF8 dataUsingEncoding:NSUTF8StringEncoding]; [_data appendData:headerData]; } @@ -69,7 +71,7 @@ [self appendUTF8:value]; }]; if (key && value) { - [_json setObject:value forKey:key]; + _json[key] = value; } [logger appendFormat:@"\n %@:\t%@", key, (NSString *)value]; } @@ -83,7 +85,7 @@ [self->_data appendData:data]; }]; _json = nil; - [logger appendFormat:@"\n %@:\t", key, (unsigned long)([data length] / 1024)]; + [logger appendFormat:@"\n %@:\t", key, (unsigned long)(data.length / 1024)]; } - (void)appendWithKey:(NSString *)key @@ -94,7 +96,7 @@ [self->_data appendData:data]; }]; _json = nil; - [logger appendFormat:@"\n %@:\t", key, (unsigned long)([data length] / 1024)]; + [logger appendFormat:@"\n %@:\t", key, (unsigned long)(data.length / 1024)]; } - (void)appendWithKey:(NSString *)key @@ -108,7 +110,7 @@ [self->_data appendData:data]; }]; _json = nil; - [logger appendFormat:@"\n %@:\t", key, (unsigned long)([data length] / 1024)]; + [logger appendFormat:@"\n %@:\t", key, (unsigned long)(data.length / 1024)]; } - (NSData *)data @@ -147,7 +149,7 @@ if (contentBlock != NULL) { contentBlock(); } - [self appendUTF8:[[NSString alloc] initWithFormat:@"%@--%@%@", kNewline, kStringBoundary, kNewline]]; + [self appendUTF8:[[NSString alloc] initWithFormat:@"%@--%@%@", kNewline, _stringBoundary, kNewline]]; } @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h index cd218c4..75aa3dd 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h @@ -29,6 +29,9 @@ @property (nonatomic, copy) FBSDKGraphRequestHandler completionHandler; @property (nonatomic, copy) NSDictionary *batchParameters; +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + - (instancetype)initWithRequest:(FBSDKGraphRequest *)request completionHandler:(FBSDKGraphRequestHandler)handler batchParameters:(NSDictionary *)batchParameters diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m index 3b0ee78..e87f9b4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m @@ -19,7 +19,6 @@ #import "FBSDKGraphRequestMetadata.h" #import "FBSDKGraphRequest.h" -#import "FBSDKMacros.h" @implementation FBSDKGraphRequestMetadata @@ -35,12 +34,6 @@ return self; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithRequest:completionHandler:batchParameters:); - return [self initWithRequest:nil completionHandler:NULL batchParameters:nil]; -} - - (void)invokeCompletionHandlerForConnection:(FBSDKGraphRequestConnection *)connection withResults:(id)results error:(NSError *)error { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m index a9c61d6..bb85741 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m @@ -31,7 +31,7 @@ static int const FBSDKTokenRefreshRetrySeconds = 60 * 60; // hour BOOL safeForPiggyback = YES; for (FBSDKGraphRequestMetadata *metadata in connection.requests) { if (![metadata.request.version isEqualToString:[FBSDKSettings graphAPIVersion]] || - [metadata.request hasAttachments]) { + metadata.request.hasAttachments) { safeForPiggyback = NO; break; } @@ -57,19 +57,19 @@ static int const FBSDKTokenRefreshRetrySeconds = 60 * 60; // hour FBSDKAccessToken *currentToken = [FBSDKAccessToken currentAccessToken]; NSDate *expirationDate = currentToken.expirationDate; if (expirationDateNumber) { - expirationDate = ([expirationDateNumber doubleValue] > 0 ? - [NSDate dateWithTimeIntervalSince1970:[expirationDateNumber doubleValue]] : + expirationDate = (expirationDateNumber.doubleValue > 0 ? + [NSDate dateWithTimeIntervalSince1970:expirationDateNumber.doubleValue] : [NSDate distantFuture]); } NSDate *dataExpirationDate = currentToken.dataAccessExpirationDate; if (dataAccessExpirationDateNumber) { - dataExpirationDate = ([dataAccessExpirationDateNumber doubleValue] > 0 ? - [NSDate dateWithTimeIntervalSince1970:[dataAccessExpirationDateNumber doubleValue]] : + dataExpirationDate = (dataAccessExpirationDateNumber.doubleValue > 0 ? + [NSDate dateWithTimeIntervalSince1970:dataAccessExpirationDateNumber.doubleValue] : [NSDate distantFuture]); } FBSDKAccessToken *refreshedToken = [[FBSDKAccessToken alloc] initWithTokenString:tokenString ?: currentToken.tokenString - permissions:[(permissions ?: currentToken.permissions) allObjects] - declinedPermissions:[(declinedPermissions ?: currentToken.declinedPermissions) allObjects] + permissions:(permissions ?: currentToken.permissions).allObjects + declinedPermissions:(declinedPermissions ?: currentToken.declinedPermissions).allObjects appID:currentToken.appID userID:currentToken.userID expirationDate:expirationDate @@ -135,7 +135,7 @@ static int const FBSDKTokenRefreshRetrySeconds = 60 * 60; // hour + (void)addServerConfigurationPiggyback:(FBSDKGraphRequestConnection *)connection { - if (![[FBSDKServerConfigurationManager cachedServerConfiguration] isDefaults] + if (![FBSDKServerConfigurationManager cachedServerConfiguration].isDefaults && [[NSDate date] timeIntervalSinceDate:[FBSDKServerConfigurationManager cachedServerConfiguration].timestamp] < FBSDK_SERVER_CONFIGURATION_MANAGER_CACHE_TIMEOUT) { return; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h deleted file mode 100644 index 9cc5bc3..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h +++ /dev/null @@ -1,51 +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 - -@class FBSDKURLConnection; - -typedef void (^FBSDKURLConnectionHandler)(FBSDKURLConnection *connection, - NSError *error, - NSURLResponse *response, - NSData *responseData); - -@protocol FBSDKURLConnectionDelegate - -@optional - -- (void)facebookURLConnection:(FBSDKURLConnection *)connection - didSendBodyData:(NSInteger)bytesWritten - totalBytesWritten:(NSInteger)totalBytesWritten - totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; - -@end - -@interface FBSDKURLConnection : NSObject - -- (FBSDKURLConnection *)initWithRequest:(NSURLRequest *)request - completionHandler:(FBSDKURLConnectionHandler)handler -NS_DESIGNATED_INITIALIZER; - -@property (nonatomic, weak) id delegate; - -- (void)cancel; -- (void)start; -- (void)setDelegateQueue:(NSOperationQueue *)queue; - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m deleted file mode 100644 index 4b09427..0000000 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.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 "FBSDKURLConnection.h" - -#import "FBSDKInternalUtility.h" -#import "FBSDKLogger.h" -#import "FBSDKMacros.h" -#import "FBSDKSettings.h" - -@interface FBSDKURLConnection () - -@property (nonatomic, retain) NSURLConnection *connection; -@property (nonatomic, retain) NSMutableData *data; -@property (nonatomic, copy) FBSDKURLConnectionHandler handler; -@property (nonatomic, retain) NSURLResponse *response; -@property (nonatomic, assign) uint64_t requestStartTime; -@property (nonatomic, readonly) NSUInteger loggerSerialNumber; - -@end - -@implementation FBSDKURLConnection - -#pragma mark - Lifecycle - -- (FBSDKURLConnection *)initWithRequest:(NSURLRequest *)request - completionHandler:(FBSDKURLConnectionHandler)handler { - if ((self = [super init])) { - _requestStartTime = [FBSDKInternalUtility currentTimeInMilliseconds]; - _loggerSerialNumber = [FBSDKLogger generateSerialNumber]; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - _connection = [[NSURLConnection alloc] - initWithRequest:request - delegate:self - startImmediately:NO]; -#pragma clang diagnostic pop - _data = [[NSMutableData alloc] init]; - - _handler = [handler copy]; - } - return self; -} - -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithRequest:completionHandler:); - return [self initWithRequest:nil completionHandler:NULL]; -} - -- (void)logAndInvokeHandler:(FBSDKURLConnectionHandler)handler - error:(NSError *)error { - if (error) { - NSString *logEntry = [NSString - stringWithFormat:@"FBSDKURLConnection <#%lu>:\n Error: '%@'\n%@\n", - (unsigned long)self.loggerSerialNumber, - [error localizedDescription], - [error userInfo]]; - - [self logMessage:logEntry]; - } - - [self invokeHandler:handler error:error response:nil responseData:nil]; -} - -- (void)logAndInvokeHandler:(FBSDKURLConnectionHandler)handler - response:(NSURLResponse *)response - responseData:(NSData *)responseData { - // Basic FBSDKURLConnection logging just prints out the URL. FBSDKGraphRequest logging provides more details. - NSString *mimeType = [response MIMEType]; - NSMutableString *mutableLogEntry = [NSMutableString stringWithFormat:@"FBSDKURLConnection <#%lu>:\n Duration: %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:(FBSDKURLConnectionHandler)handler - error:(NSError *)error - response:(NSURLResponse *)response - responseData:(NSData *)responseData { - if (handler != nil) { - handler(self, error, response, responseData); - } -} - -- (void)logMessage:(NSString *)message -{ - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorNetworkRequests formatString:@"%@", message]; -} - -- (void)cancel -{ - [self.connection cancel]; - self.handler = nil; -} - -- (void)connection:(NSURLConnection *)connection -didReceiveResponse:(NSURLResponse *)response -{ - self.response = response; - [self.data setLength:0]; -} - -- (void)connection:(NSURLResponse *)connection - didReceiveData:(NSData *)data { - [self.data appendData:data]; -} - -- (void)connection:(NSURLConnection *)connection - didFailWithError:(NSError *)error { - @try { - if ([error.domain isEqualToString:NSURLErrorDomain] && error.code == kCFURLErrorSecureConnectionFailed) { - NSOperatingSystemVersion iOS9Version = { .majorVersion = 9, .minorVersion = 0, .patchVersion = 0 }; - if ([FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS9Version]) { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors - logEntry:@"WARNING: FBSDK secure network request failed. Please verify you have configured your " - "app for Application Transport Security compatibility described at https://developers.facebook.com/docs/ios/ios9"]; - } - } - [self logAndInvokeHandler:self.handler error:error]; - } @finally { - self.handler = nil; - } -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection -{ - @try { - [self logAndInvokeHandler:self.handler response:self.response responseData:self.data]; - } @finally { - self.handler = nil; - } -} - -- (NSURLRequest *)connection:(NSURLConnection *)connection - willSendRequest:(NSURLRequest *)request - redirectResponse:(NSURLResponse *)redirectResponse { - return request; -} - -- (void) connection:(NSURLConnection *)connection - didSendBodyData:(NSInteger)bytesWritten - totalBytesWritten:(NSInteger)totalBytesWritten -totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite -{ - id delegate = self.delegate; - - if ([delegate respondsToSelector:@selector(facebookURLConnection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:)]) { - [delegate facebookURLConnection:self - didSendBodyData:bytesWritten - totalBytesWritten:totalBytesWritten - totalBytesExpectedToWrite:totalBytesExpectedToWrite]; - } -} - -- (void)start -{ - [_connection start]; -} - -- (void)setDelegateQueue:(NSOperationQueue*)queue -{ - [_connection setDelegateQueue:queue]; -} - -@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h index 7389439..d0f35f7 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h @@ -24,9 +24,12 @@ typedef void (^FBSDKURLSessionTaskHandler)(NSError *error, @interface FBSDKURLSessionTask : NSObject -- (FBSDKURLSessionTask *)initWithRequest:(NSURLRequest *)request - fromSession:(NSURLSession *)session - completionHandler:(FBSDKURLSessionTaskHandler)handler +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +- (instancetype)initWithRequest:(NSURLRequest *)request + fromSession:(NSURLSession *)session + completionHandler:(FBSDKURLSessionTaskHandler)handler NS_DESIGNATED_INITIALIZER; - (void)cancel; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m index 3858c0e..10019c3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m @@ -20,7 +20,6 @@ #import "FBSDKInternalUtility.h" #import "FBSDKLogger.h" -#import "FBSDKMacros.h" #import "FBSDKSettings.h" @interface FBSDKURLSessionTask () @@ -34,9 +33,9 @@ @implementation FBSDKURLSessionTask -- (FBSDKURLSessionTask *)initWithRequest:(NSURLRequest *)request - fromSession:(NSURLSession *)session - completionHandler:(FBSDKURLSessionTaskHandler)handler +- (instancetype)initWithRequest:(NSURLRequest *)request + fromSession:(NSURLSession *)session + completionHandler:(FBSDKURLSessionTaskHandler)handler { if ((self = [super init])) { _requestStartTime = [FBSDKInternalUtility currentTimeInMilliseconds]; @@ -55,14 +54,6 @@ return self; } -- (FBSDKURLSessionTask *)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithRequest:fromSession:completionHandler:); - return [self initWithRequest:nil - fromSession:nil - completionHandler:NULL]; -} - #pragma mark - Logging and Completion - (void)logAndInvokeHandler:(FBSDKURLSessionTaskHandler)handler @@ -71,8 +62,8 @@ NSString *logEntry = [NSString stringWithFormat:@"FBSDKURLSessionTask <#%lu>:\n Error: '%@'\n%@\n", (unsigned long)self.loggerSerialNumber, - [error localizedDescription], - [error userInfo]]; + error.localizedDescription, + error.userInfo]; [self logMessage:logEntry]; } @@ -84,11 +75,11 @@ response:(NSURLResponse *)response responseData:(NSData *)responseData { // Basic FBSDKURLSessionTask logging just prints out the URL. FBSDKGraphRequest logging provides more details. - NSString *mimeType = [response MIMEType]; + 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, + (unsigned long)responseData.length / 1024, mimeType]; if ([mimeType isEqualToString:@"text/javascript"]) { diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h index 8913cc0..f329594 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h @@ -22,6 +22,9 @@ @interface FBSDKDialogConfiguration : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + - (instancetype)initWithName:(NSString *)name URL:(NSURL *)URL appVersions:(NSArray *)appVersions diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m index a8986c0..9010fb9 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m @@ -18,8 +18,6 @@ #import "FBSDKDialogConfiguration.h" -#import "FBSDKMacros.h" - #define FBSDK_DIALOG_CONFIGURATION_APP_VERSIONS_KEY @"appVersions" #define FBSDK_DIALOG_CONFIGURATION_NAME_KEY @"name" #define FBSDK_DIALOG_CONFIGURATION_URL_KEY @"url" @@ -38,12 +36,6 @@ return self; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithName:URL:appVersions:); - return [self initWithName:nil URL:nil appVersions:nil]; -} - #pragma mark NSCoding + (BOOL)supportsSecureCoding diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h index ae8bce7..0c75bb8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h @@ -23,6 +23,9 @@ // maps codes and subcodes pairs to FBSDKErrorRecoveryConfiguration instances. @interface FBSDKErrorConfiguration : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + // initialize from optional dictionary of existing configurations. If not supplied a fallback will be created. - (instancetype)initWithDictionary:(NSDictionary *)dictionary NS_DESIGNATED_INITIALIZER; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m index d941779..2846e31 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m @@ -32,12 +32,6 @@ static NSString *const kErrorCategoryLogin = @"login"; NSMutableDictionary *_configurationDictionary; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithDictionary:); - return [self initWithDictionary:nil]; -} - - (instancetype)initWithDictionary:(NSDictionary *)dictionary { if ((self = [super init])) { @@ -93,7 +87,7 @@ static NSString *const kErrorCategoryLogin = @"login"; _configurationDictionary[code][@"*"] ?: _configurationDictionary[@"*"][subcode] ?: _configurationDictionary[@"*"][@"*"]); - if (configuration.errorCategory == FBSDKGraphRequestErrorCategoryRecoverable && + if (configuration.errorCategory == FBSDKGraphRequestErrorRecoverable && [FBSDKSettings clientToken] && [request.parameters[@"access_token"] hasSuffix:[FBSDKSettings clientToken]]) { // do not attempt to recovery client tokens. @@ -106,14 +100,14 @@ static NSString *const kErrorCategoryLogin = @"login"; { for (NSDictionary *dictionary in array) { [dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) { - FBSDKGraphRequestErrorCategory category; + FBSDKGraphRequestError category; NSString *action = dictionary[@"name"]; if ([action isEqualToString:kErrorCategoryOther]) { - category = FBSDKGraphRequestErrorCategoryOther; + category = FBSDKGraphRequestErrorOther; } else if ([action isEqualToString:kErrorCategoryTransient]) { - category = FBSDKGraphRequestErrorCategoryTransient; + category = FBSDKGraphRequestErrorTransient; } else { - category = FBSDKGraphRequestErrorCategoryRecoverable; + category = FBSDKGraphRequestErrorRecoverable; } NSString *suggestion = dictionary[@"recovery_message"]; NSArray *options = dictionary[@"recovery_options"]; @@ -129,18 +123,18 @@ static NSString *const kErrorCategoryLogin = @"login"; NSArray *subcodes = codeSubcodesDictionary[@"subcodes"]; if (subcodes.count > 0) { for (NSNumber *subcodeNumber in subcodes) { - currentSubcodes[[subcodeNumber stringValue]] = [[FBSDKErrorRecoveryConfiguration alloc] - initWithRecoveryDescription:suggestion - optionDescriptions:options - category:category - recoveryActionName:action]; - } - } else { - currentSubcodes[@"*"] = [[FBSDKErrorRecoveryConfiguration alloc] + currentSubcodes[subcodeNumber.stringValue] = [[FBSDKErrorRecoveryConfiguration alloc] initWithRecoveryDescription:suggestion optionDescriptions:options category:category recoveryActionName:action]; + } + } else { + currentSubcodes[@"*"] = [[FBSDKErrorRecoveryConfiguration alloc] + initWithRecoveryDescription:suggestion + optionDescriptions:options + category:category + recoveryActionName:action]; } } }]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h index 105618f..9785985 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h @@ -25,11 +25,14 @@ @property (nonatomic, readonly) NSString *localizedRecoveryDescription; @property (nonatomic, readonly) NSArray *localizedRecoveryOptionDescriptions; -@property (nonatomic, readonly) FBSDKGraphRequestErrorCategory errorCategory; +@property (nonatomic, readonly) FBSDKGraphRequestError errorCategory; @property (nonatomic, readonly) NSString *recoveryActionName; +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + - (instancetype)initWithRecoveryDescription:(NSString *)description optionDescriptions:(NSArray *)optionDescriptions - category:(FBSDKGraphRequestErrorCategory)category + category:(FBSDKGraphRequestError)category recoveryActionName:(NSString *)recoveryActionName NS_DESIGNATED_INITIALIZER; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m index 3c0642d..97eb061 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m @@ -25,18 +25,9 @@ @implementation FBSDKErrorRecoveryConfiguration -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithRecoveryDescription:optionDescriptions:category:recoveryActionName:); - return [self initWithRecoveryDescription:nil - optionDescriptions:nil - category:0 - recoveryActionName:nil]; -} - - (instancetype)initWithRecoveryDescription:(NSString *)description optionDescriptions:(NSArray *)optionDescriptions - category:(FBSDKGraphRequestErrorCategory)category + category:(FBSDKGraphRequestError)category recoveryActionName:(NSString *)recoveryActionName { if ((self = [super init])) { _localizedRecoveryDescription = [description copy]; @@ -63,7 +54,7 @@ return [self initWithRecoveryDescription:description optionDescriptions:options - category:[category unsignedIntegerValue] + category:category.unsignedIntegerValue recoveryActionName:action]; } diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginManagerResult+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h similarity index 74% rename from Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginManagerResult+Internal.h rename to Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h index cc9e4ae..e2a9228 100644 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginManagerResult+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h @@ -18,21 +18,25 @@ #import -#import - -#import "FBSDKDeviceLoginManagerResult.h" +#define FBSDK_GATEKEEPER_MANAGER_CACHE_TIMEOUT (60 * 60) NS_ASSUME_NONNULL_BEGIN -@interface FBSDKDeviceLoginManagerResult () +@interface FBSDKGateKeeperManager : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; -/*! - @abstract Initializes a new instance - @param token The token - @param cancelled Indicates if the flow was cancelled. +/** + Returns the locally cached configuration. */ -- (instancetype)initWithToken:(nullable FBSDKAccessToken *)token - isCancelled:(BOOL)cancelled NS_DESIGNATED_INITIALIZER; ++ (BOOL)boolForKey:(NSString *)key + appID:(NSString *)appID + defaultValue:(BOOL)defaultValue; + +/** + Load the gate keeper configurations from server + */ ++ (void)loadGateKeepers; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m new file mode 100644 index 0000000..5366d56 --- /dev/null +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m @@ -0,0 +1,178 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#import "FBSDKGateKeeperManager.h" + +#import + +#import + +#import "FBSDKAppEventsUtility.h" +#import "FBSDKGraphRequest+Internal.h" +#import "FBSDKGraphRequest.h" +#import "FBSDKSettings.h" +#import "FBSDKTypeUtility.h" + +#define FBSDK_GATEKEEPER_USER_DEFAULTS_KEY @"com.facebook.sdk:gateKeeper%@" + +#define FBSDK_GATEKEEPER_APP_GATEKEEPER_EDGE @"mobile_sdk_gk" +#define FBSDK_GATEKEEPER_APP_GATEKEEPER_FIELDS @"gatekeepers" + +@implementation FBSDKGateKeeperManager + +static NSMutableDictionary *_gateKeepers; +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 +{ + [self loadGateKeepers]; + if (appID == nil || _gateKeepers == nil || _gateKeepers[appID] == nil) { + return defaultValue; + } + NSDictionary *gateKeeper = [FBSDKTypeUtility dictionaryValue:_gateKeepers[appID]]; + return gateKeeper[key] == nil ? defaultValue : [gateKeeper[key] boolValue]; +} + ++ (void)loadGateKeepers +{ + NSString *appID = [FBSDKSettings appID]; + @synchronized(self) { + if (_gateKeepers == nil) { + _gateKeepers = [[NSMutableDictionary alloc] init]; + } + // 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; + } + } + + // Query the server when the requery is not finished for app start or the timestamp is not valid + if (![self _gateKeeperIsValid]) { + if (!_loadingGateKeepers) { + _loadingGateKeepers = YES; + FBSDKGraphRequest *request = [[self class] requestToLoadGateKeepers:appID]; + + // start request with specified timeout instead of the default 180s + FBSDKGraphRequestConnection *requestConnection = [[FBSDKGraphRequestConnection alloc] init]; + requestConnection.timeout = kTimeout; + [requestConnection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + _requeryFinishedForAppStart = YES; + [self processLoadRequestResponse:result error:error appID:appID]; + }]; + [requestConnection start]; + } + } + } +} + +#pragma mark - Internal Class Methods + ++ (FBSDKGraphRequest *)requestToLoadGateKeepers:(NSString *)appID +{ + NSString *sdkVersion = [FBSDKSettings sdkVersion]; + NSString *advertiserID = [FBSDKAppEventsUtility advertiserID] ?: @""; + + NSDictionary *parameters = @{ @"platform": @"ios" , + @"device_id": advertiserID, + @"sdk_version": sdkVersion, + @"fields": FBSDK_GATEKEEPER_APP_GATEKEEPER_FIELDS}; + + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/%@", + appID, FBSDK_GATEKEEPER_APP_GATEKEEPER_EDGE] + parameters:parameters + tokenString:nil + HTTPMethod:nil + flags:FBSDKGraphRequestFlagSkipClientToken | FBSDKGraphRequestFlagDisableErrorRecovery]; + return request; +} + +#pragma mark - Helper Class Methods + ++ (void)processLoadRequestResponse:(id)result error:(NSError *)error appID:(NSString *)appID +{ + @synchronized(self) { + _loadingGateKeepers = NO; + + if (error) { + return; + } + + // 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; + } + } + _gateKeepers[appID] = gateKeeper; + } + + // 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]; + } +} + ++ (BOOL)_gateKeeperTimestampIsValid:(NSDate *)timestamp +{ + if (timestamp == nil) { + return NO; + } + return ([[NSDate date] timeIntervalSinceDate:timestamp] < FBSDK_GATEKEEPER_MANAGER_CACHE_TIMEOUT); +} + ++ (BOOL)_gateKeeperIsValid +{ + if (_requeryFinishedForAppStart && (_timestamp && [self _gateKeeperTimestampIsValid:_timestamp])) { + return YES; + } + return NO; +} + +@end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h index 5096c03..2e71d7b 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h @@ -18,8 +18,8 @@ #import -extern NSString *const FBSDKDialogConfigurationNameDefault; -extern NSString *const FBSDKDialogConfigurationNameSharing; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationNameDefault; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationNameSharing; -extern NSString *const FBSDKDialogConfigurationFeatureUseNativeFlow; -extern NSString *const FBSDKDialogConfigurationFeatureUseSafariViewController; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationFeatureUseNativeFlow; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationFeatureUseSafariViewController; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h index bba4508..55cb9c9 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h @@ -24,17 +24,17 @@ #import "FBSDKErrorConfiguration.h" // login kit -extern NSString *const FBSDKDialogConfigurationNameLogin; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationNameLogin; // share kit -extern NSString *const FBSDKDialogConfigurationNameAppInvite; -extern NSString *const FBSDKDialogConfigurationNameGameRequest; -extern NSString *const FBSDKDialogConfigurationNameGroup; -extern NSString *const FBSDKDialogConfigurationNameLike; -extern NSString *const FBSDKDialogConfigurationNameMessage; -extern NSString *const FBSDKDialogConfigurationNameShare; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationNameAppInvite; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationNameGameRequest; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationNameGroup; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationNameLike; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationNameMessage; +FOUNDATION_EXPORT NSString *const FBSDKDialogConfigurationNameShare; -extern const NSInteger FBSDKServerConfigurationVersion; +FOUNDATION_EXPORT const NSInteger FBSDKServerConfigurationVersion; typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationSmartLoginOptions) { @@ -45,6 +45,9 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationSmartLoginOptions) @interface FBSDKServerConfiguration : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + - (instancetype)initWithAppID:(NSString *)appID appName:(NSString *)appName loginTooltipEnabled:(BOOL)loginTooltipEnabled diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m index adb08e8..172f62a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m @@ -20,7 +20,6 @@ #import "FBSDKServerConfiguration+Internal.h" #import "FBSDKInternalUtility.h" -#import "FBSDKMacros.h" #define FBSDK_SERVER_CONFIGURATION_ADVERTISING_ID_ENABLED_KEY @"advertisingIDEnabled" #define FBSDK_SERVER_CONFIGURATION_APP_ID_KEY @"appID" @@ -79,11 +78,6 @@ const NSInteger FBSDKServerConfigurationVersion = 2; #pragma mark - Object Lifecycle -- (instancetype)init NS_UNAVAILABLE -{ - assert(0); -} - - (instancetype)initWithAppID:(NSString *)appID appName:(NSString *)appName loginTooltipEnabled:(BOOL)loginTooltipEnabled @@ -163,12 +157,12 @@ implicitPurchaseLoggingEnabled:(BOOL)implicitPurchaseLoggingEnabled - (BOOL)_useFeatureWithKey:(NSString *)key dialogName:(NSString *)dialogName { if ([dialogName isEqualToString:FBSDKDialogConfigurationNameLogin]) { - return [(NSNumber *)(_dialogFlows[dialogName][key] ?: - _dialogFlows[FBSDKDialogConfigurationNameDefault][key]) boolValue]; + return ((NSNumber *)(_dialogFlows[dialogName][key] ?: + _dialogFlows[FBSDKDialogConfigurationNameDefault][key])).boolValue; } else { - return [(NSNumber *)(_dialogFlows[dialogName][key] ?: + return ((NSNumber *)(_dialogFlows[dialogName][key] ?: _dialogFlows[FBSDKDialogConfigurationNameSharing][key] ?: - _dialogFlows[FBSDKDialogConfigurationNameDefault][key]) boolValue]; + _dialogFlows[FBSDKDialogConfigurationNameDefault][key])).boolValue; } } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m index 2ef2d0b..dcf26df 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m @@ -21,6 +21,7 @@ #import #import "FBSDKAppEventsUtility.h" +#import "FBSDKGateKeeperManager.h" #import "FBSDKGraphRequest+Internal.h" #import "FBSDKGraphRequest.h" #import "FBSDKImageDownloader.h" @@ -168,6 +169,9 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) if (loadBlock != NULL) { loadBlock(); } + + // Fetch app gatekeepers + [FBSDKGateKeeperManager loadGateKeepers]; } #pragma mark - Internal Class Methods @@ -285,15 +289,10 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) FBSDK_SERVER_CONFIGURATION_SMART_LOGIN_MENU_ICON_URL_FIELD #endif ]; - NSDictionary *parameters = @{ @"fields": [fields componentsJoinedByString:@","] }; - if (objc_lookUpClass("FBSDKAutoLog") != nil) { - NSString *advertiserID = [FBSDKAppEventsUtility advertiserID]; - - if (advertiserID) { - parameters = @{ @"fields": [fields componentsJoinedByString:@","], - @"advertiser_id": advertiserID }; - } - } + NSString *advertiserID = [FBSDKAppEventsUtility advertiserID] ?: @""; + NSDictionary *parameters = @{ @"fields": [fields componentsJoinedByString:@","], + @"advertiser_id": advertiserID + }; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:appID parameters:parameters @@ -383,7 +382,7 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) #ifdef DEBUG NSString *updateMessage = _serverConfiguration.updateMessage; - if (updateMessage && [updateMessage length] > 0 && !_printedUpdateMessage) { + if (updateMessage && updateMessage.length > 0 && !_printedUpdateMessage) { _printedUpdateMessage = YES; NSLog(@"%@", updateMessage); } @@ -420,7 +419,7 @@ typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) NSDictionary *dialogConfigurationDictionary = [FBSDKTypeUtility dictionaryValue:dialogConfiguration]; if (dialogConfigurationDictionary) { NSString *name = [FBSDKTypeUtility stringValue:dialogConfigurationDictionary[@"name"]]; - if ([name length]) { + if (name.length) { NSURL *URL = [FBSDKTypeUtility URLValue:dialogConfigurationDictionary[@"url"]]; NSArray *appVersions = [FBSDKTypeUtility arrayValue:dialogConfigurationDictionary[@"versions"]]; dialogConfigurations[name] = [[FBSDKDialogConfiguration alloc] initWithName:name diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m index aeb1103..b9acabb 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m @@ -27,9 +27,9 @@ static BOOL g_tryDeprecatedCaches = YES; @implementation FBSDKAccessTokenCache -- (FBSDKAccessToken*)fetchAccessToken +- (FBSDKAccessToken*)accessToken { - FBSDKAccessToken *token = [[[FBSDKAccessTokenCacheV4 alloc] init] fetchAccessToken]; + FBSDKAccessToken *token = [[FBSDKAccessTokenCacheV4 alloc] init].accessToken; if (token || !g_tryDeprecatedCaches) { return token; } @@ -39,21 +39,21 @@ static BOOL g_tryDeprecatedCaches = YES; __block FBSDKAccessToken *oldToken = nil; [oldCacheClasses enumerateObjectsUsingBlock:^(Class obj, NSUInteger idx, BOOL *stop) { id cache = [[obj alloc] init]; - oldToken = [cache fetchAccessToken]; + oldToken = cache.accessToken; if (oldToken) { *stop = YES; [cache clearCache]; } }]; if (oldToken) { - [self cacheAccessToken:oldToken]; + self.accessToken = oldToken; } return oldToken; } -- (void)cacheAccessToken:(FBSDKAccessToken *)token +- (void)setAccessToken:(FBSDKAccessToken *)token { - [[[FBSDKAccessTokenCacheV4 alloc] init] cacheAccessToken:token]; + [[FBSDKAccessTokenCacheV4 alloc] init].accessToken = token; if (g_tryDeprecatedCaches) { g_tryDeprecatedCaches = NO; NSArray *oldCacheClasses = [[self class] deprecatedCacheClasses]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h index 28134a0..3815831 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h @@ -19,9 +19,8 @@ #import #import "FBSDKAccessTokenCaching.h" -#import "FBSDKMacros.h" -FBSDK_EXTERN NSString *const FBSDKTokenInformationUUIDKey; +FOUNDATION_EXPORT NSString *const FBSDKTokenInformationUUIDKey; @interface FBSDKAccessTokenCacheV3 : NSObject diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m index 4add7a3..f118b00 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m @@ -35,7 +35,7 @@ NSString *const FBSDKTokenInformationUUIDKey = @"com.facebook.sdk:TokenInformati @implementation FBSDKAccessTokenCacheV3 -- (FBSDKAccessToken *)fetchAccessToken +- (FBSDKAccessToken *)accessToken { // Check NSUserDefaults ( <= v3.16 ) NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; @@ -50,7 +50,7 @@ NSString *const FBSDKTokenInformationUUIDKey = @"com.facebook.sdk:TokenInformati [defaults synchronize]; } -- (void)cacheAccessToken:(FBSDKAccessToken *)token +- (void)setAccessToken:(FBSDKAccessToken *)token { //no-op. NSAssert(NO, @"deprecated cache FBSDKAccessTokenCacheV3 should not be used to cache a token"); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m index 18626e5..83f2cce 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m @@ -36,7 +36,7 @@ } return self; } -- (FBSDKAccessToken *)fetchAccessToken +- (FBSDKAccessToken *)accessToken { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *uuidKey = [[FBSDKSettings legacyUserDefaultTokenInformationKeyName] stringByAppendingString:@"UUID"]; @@ -54,7 +54,7 @@ [_keychainStore setDictionary:nil forKey:[FBSDKSettings legacyUserDefaultTokenInformationKeyName] accessibility:nil]; } -- (void)cacheAccessToken:(FBSDKAccessToken *)token +- (void)setAccessToken:(FBSDKAccessToken *)token { //no-op. NSAssert(NO, @"deprecated cache FBSDKAccessTokenCacheV3_17 should not be used to cache a token"); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m index 845138b..6b25f0a 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m @@ -32,13 +32,13 @@ - (instancetype)init { if ((self = [super init])) { - NSString *keyChainServiceIdentifier = [NSString stringWithFormat:@"com.facebook.sdk.tokencache.%@", [[NSBundle mainBundle] bundleIdentifier]]; + NSString *keyChainServiceIdentifier = [NSString stringWithFormat:@"com.facebook.sdk.tokencache.%@", [NSBundle mainBundle].bundleIdentifier]; _keychainStore = [[FBSDKKeychainStore alloc] initWithService:keyChainServiceIdentifier accessGroup:nil]; } return self; } -- (FBSDKAccessToken *)fetchAccessToken +- (FBSDKAccessToken *)accessToken { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *uuidKey = [[FBSDKSettings legacyUserDefaultTokenInformationKeyName] stringByAppendingString:@"UUID"]; @@ -56,7 +56,7 @@ [_keychainStore setDictionary:nil forKey:[FBSDKSettings legacyUserDefaultTokenInformationKeyName] accessibility:nil]; } -- (void)cacheAccessToken:(FBSDKAccessToken *)token +- (void)setAccessToken:(FBSDKAccessToken *)token { //no-op. NSAssert(NO, @"deprecated cache FBSDKAccessTokenCacheV3_21 should not be used to cache a token"); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m index 05aea0a..0de90e4 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m @@ -35,13 +35,13 @@ static NSString *const kFBSDKAccessTokenEncodedKey = @"tokenEncoded"; - (instancetype)init { if ((self = [super init])) { - NSString *keyChainServiceIdentifier = [NSString stringWithFormat:@"com.facebook.sdk.tokencache.%@", [[NSBundle mainBundle] bundleIdentifier]]; + NSString *keyChainServiceIdentifier = [NSString stringWithFormat:@"com.facebook.sdk.tokencache.%@", [NSBundle mainBundle].bundleIdentifier]; _keychainStore = [[FBSDKKeychainStore alloc] initWithService:keyChainServiceIdentifier accessGroup:nil]; } return self; } -- (FBSDKAccessToken *)fetchAccessToken +- (FBSDKAccessToken *)accessToken { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *uuid = [defaults objectForKey:kFBSDKAccessTokenUserDefaultsKey]; @@ -63,7 +63,7 @@ static NSString *const kFBSDKAccessTokenEncodedKey = @"tokenEncoded"; return nil; } -- (void)cacheAccessToken:(FBSDKAccessToken *)token +- (void)setAccessToken:(FBSDKAccessToken *)token { if (!token) { [self clearCache]; @@ -72,7 +72,7 @@ static NSString *const kFBSDKAccessTokenEncodedKey = @"tokenEncoded"; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *uuid = [defaults objectForKey:kFBSDKAccessTokenUserDefaultsKey]; if (!uuid) { - uuid = [[NSUUID UUID] UUIDString]; + uuid = [NSUUID UUID].UUIDString; [defaults setObject:uuid forKey:kFBSDKAccessTokenUserDefaultsKey]; [defaults synchronize]; } diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h index 8562245..ae780e3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h @@ -22,9 +22,7 @@ @protocol FBSDKAccessTokenCaching -- (FBSDKAccessToken *)fetchAccessToken; - -- (void)cacheAccessToken:(FBSDKAccessToken *)token; +@property (nonatomic, copy) FBSDKAccessToken *accessToken; - (void)clearCache; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m index 413a8b5..2744439 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m @@ -52,7 +52,7 @@ if (accessToken == nil || accessToken.isExpired) { return; } - _timer = [NSTimer scheduledTimerWithTimeInterval:[accessToken.expirationDate timeIntervalSinceNow] target:self selector:@selector(_timerDidFire) userInfo:nil repeats:NO]; + _timer = [NSTimer scheduledTimerWithTimeInterval:accessToken.expirationDate.timeIntervalSinceNow target:self selector:@selector(_timerDidFire) userInfo:nil repeats:NO]; } - (void)_timerDidFire @@ -61,7 +61,7 @@ NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; [FBSDKInternalUtility dictionary:userInfo setObject:accessToken forKey:FBSDKAccessTokenChangeNewKey]; [FBSDKInternalUtility dictionary:userInfo setObject:accessToken forKey:FBSDKAccessTokenChangeOldKey]; - userInfo[FBSDKAccessTokenDidExpire] = @YES; + userInfo[FBSDKAccessTokenDidExpireKey] = @YES; [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKAccessTokenDidChangeNotification object:[FBSDKAccessToken class] diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h index f603635..a99d5b3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h @@ -23,6 +23,8 @@ @property (nonatomic, readonly, copy) NSString *service; @property (nonatomic, readonly, copy) NSString *accessGroup; +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; - (instancetype)initWithService:(NSString *)service accessGroup:(NSString *)accessGroup NS_DESIGNATED_INITIALIZER; - (BOOL)setDictionary:(NSDictionary *)value forKey:(NSString *)key accessibility:(CFTypeRef)accessibility; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m index 11ab73e..81141ad 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m @@ -25,14 +25,13 @@ #import "FBSDKKeychainStore.h" #import "FBSDKDynamicFrameworkLoader.h" -#import "FBSDKMacros.h" @implementation FBSDKKeychainStore - (instancetype)initWithService:(NSString *)service accessGroup:(NSString *)accessGroup { if ((self = [super init])) { - _service = service ? [service copy] : [[NSBundle mainBundle] bundleIdentifier]; + _service = service ? [service copy] : [NSBundle mainBundle].bundleIdentifier; _accessGroup = [accessGroup copy]; NSAssert(_service, @"Keychain must be initialized with service"); } @@ -40,12 +39,6 @@ return self; } -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithService:accessGroup:); - return [self initWithService:nil accessGroup:nil]; -} - - (BOOL)setDictionary:(NSDictionary *)value forKey:(NSString *)key accessibility:(CFTypeRef)accessibility { NSData *data = value == nil ? nil : [NSKeyedArchiver archivedDataWithRootObject:value]; @@ -104,14 +97,16 @@ status = fbsdkdfl_SecItemUpdate((__bridge CFDictionaryRef)query, (__bridge CFDictionaryRef)attributesToUpdate); if (status == errSecItemNotFound) { -#if TARGET_OS_IPHONE || (defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9) +#if !TARGET_OS_TV + if (@available(macOS 10.9, iOS 8, *)) { if (accessibility) { - [query setObject:(__bridge id)(accessibility) forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessible]]; + [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); + status = fbsdkdfl_SecItemAdd((__bridge CFDictionaryRef)query, NULL); } } else { status = fbsdkdfl_SecItemDelete((__bridge CFDictionaryRef)query); diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m index d36335c..78ed26f 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m @@ -25,7 +25,7 @@ - (instancetype)init { - return [super initWithService:[[NSBundle mainBundle] bundleIdentifier] accessGroup:nil]; + return [super initWithService:[NSBundle mainBundle].bundleIdentifier accessGroup:nil]; } - (instancetype)initWithService:(NSString *)service accessGroup:(NSString *)accessGroup 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 17e0c65..cd5afc8 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h @@ -24,14 +24,16 @@ @protocol FBSDKButtonImpressionTracking -- (NSDictionary *)analyticsParameters; -- (NSString *)impressionTrackingEventName; -- (NSString *)impressionTrackingIdentifier; +@property (nonatomic, readonly, copy) NSDictionary *analyticsParameters; +@property (nonatomic, readonly, copy) NSString *impressionTrackingEventName; +@property (nonatomic, readonly, copy) NSString *impressionTrackingIdentifier; @end @interface FBSDKButton () +@property (nonatomic, readonly, getter=isImplicitlyDisabled) BOOL implicitlyDisabled; + - (void)logTapEventWithEventName:(NSString *)eventName parameters:(NSDictionary *)parameters; - (void)checkImplicitlyDisabled; @@ -54,7 +56,6 @@ - (UIColor *)defaultHighlightedColor; - (FBSDKIcon *)defaultIcon; - (UIColor *)defaultSelectedColor; -- (BOOL)isImplicitlyDisabled; - (CGSize)sizeThatFits:(CGSize)size title:(NSString *)title; @end diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m index 1bbb746..93b3ee1 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m @@ -18,8 +18,6 @@ #import "FBSDKCloseIcon.h" -#import "FBSDKMacros.h" - @implementation FBSDKCloseIcon #pragma mark - Public API diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m index 06b778e..b46a8d6 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m @@ -18,8 +18,6 @@ #import "FBSDKIcon.h" -#import "FBSDKMacros.h" - @implementation FBSDKIcon #pragma mark - Object Lifecycle diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h index 2480616..29e2912 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h @@ -18,14 +18,12 @@ #import -#import - #import "../FBSDKMath.h" /** Insets a CGSize with the insets in a UIEdgeInsets. */ -FBSDK_STATIC_INLINE CGSize FBSDKEdgeInsetsInsetSize(CGSize size, UIEdgeInsets insets) +static inline CGSize FBSDKEdgeInsetsInsetSize(CGSize size, UIEdgeInsets insets) { CGRect rect = CGRectZero; rect.size = size; @@ -35,7 +33,7 @@ FBSDK_STATIC_INLINE CGSize FBSDKEdgeInsetsInsetSize(CGSize size, UIEdgeInsets in /** Outsets a CGSize with the insets in a UIEdgeInsets. */ -FBSDK_STATIC_INLINE CGSize FBSDKEdgeInsetsOutsetSize(CGSize size, UIEdgeInsets insets) +static inline CGSize FBSDKEdgeInsetsOutsetSize(CGSize size, UIEdgeInsets insets) { return CGSizeMake(insets.left + size.width + insets.right, insets.top + size.height + insets.bottom); @@ -49,17 +47,17 @@ FBSDK_STATIC_INLINE CGSize FBSDKEdgeInsetsOutsetSize(CGSize size, UIEdgeInsets i you may get back values of *.5 to correspond to pixels. */ typedef float (*FBSDKLimitFunctionType)(float); -FBSDK_STATIC_INLINE CGFloat FBSDKPointsForScreenPixels(FBSDKLimitFunctionType limitFunction, - CGFloat screenScale, - CGFloat pointValue) +static inline CGFloat FBSDKPointsForScreenPixels(FBSDKLimitFunctionType limitFunction, + CGFloat screenScale, + CGFloat pointValue) { return limitFunction(pointValue * screenScale) / screenScale; } -FBSDK_STATIC_INLINE CGSize FBSDKTextSize(NSString *text, - UIFont *font, - CGSize constrainedSize, - NSLineBreakMode lineBreakMode) +static inline CGSize FBSDKTextSize(NSString *text, + UIFont *font, + CGSize constrainedSize, + NSLineBreakMode lineBreakMode) { if (!text) { return CGSizeZero; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m index 6340b99..e0d47be 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m @@ -90,10 +90,7 @@ static FBSDKWebDialog *g_currentDialog = nil; return NO; } -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - _dialogView = [[FBSDKWebDialogView alloc] initWithFrame:window.screen.applicationFrame]; -#pragma clang diagnostic pop + _dialogView = [[FBSDKWebDialogView alloc] initWithFrame:window.screen.bounds]; _dialogView.delegate = self; [_dialogView loadURL:URL]; @@ -282,10 +279,7 @@ static FBSDKWebDialog *g_currentDialog = nil; - (CGRect)_applicationFrameForOrientation { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - CGRect applicationFrame = _dialogView.window.screen.applicationFrame; -#pragma clang diagnostic pop + CGRect applicationFrame = _dialogView.window.screen.bounds; if ([FBSDKInternalUtility shouldManuallyAdjustOrientation]) { switch ([UIApplication sharedApplication].statusBarOrientation) { case UIInterfaceOrientationLandscapeLeft: @@ -318,10 +312,7 @@ static FBSDKWebDialog *g_currentDialog = nil; void(^updateBlock)(void) = ^{ self->_dialogView.transform = transform; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - CGRect mainFrame = self->_dialogView.window.screen.applicationFrame; -#pragma clang diagnostic pop + CGRect mainFrame = self->_dialogView.window.screen.bounds; self->_dialogView.center = CGPointMake(CGRectGetMidX(mainFrame), CGRectGetMidY(mainFrame)); self->_backgroundView.alpha = alpha; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m index 81d7182..278c8e3 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m @@ -162,7 +162,7 @@ shouldStartLoadWithRequest:(NSURLRequest *)request NSInteger errorCode = [FBSDKTypeUtility integerValue:parameters[@"error_code"]]; if (errorCode) { NSString *errorMessage = [FBSDKTypeUtility stringValue:parameters[@"error_msg"]]; - NSError *error = [FBSDKError errorWithCode:errorCode message:errorMessage]; + NSError *error = [NSError fbErrorWithCode:errorCode message:errorMessage]; [_delegate webDialogView:self didFailWithError:error]; } else { [_delegate webDialogViewDidCancel:self]; diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal_NoARC/FBSDKDynamicFrameworkLoader.m b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal_NoARC/FBSDKDynamicFrameworkLoader.m index 522efff..dee617c 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal_NoARC/FBSDKDynamicFrameworkLoader.m +++ b/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal_NoARC/FBSDKDynamicFrameworkLoader.m @@ -55,7 +55,7 @@ static void *fbsdkdfl_load_library_once(const char *path) static void *fbsdkdfl_load_framework_once(NSString *framework) { NSString *path = [NSString stringWithFormat:g_frameworkPathTemplate, framework, framework]; - return fbsdkdfl_load_library_once([path fileSystemRepresentation]); + return fbsdkdfl_load_library_once(path.fileSystemRepresentation); } // Implements the callback for dispatch_once() that loads the handle for specified framework name @@ -184,14 +184,6 @@ _fbsdkdfl_handle_get_impl_(Security) _fbsdkdfl_Security_get_and_return_k(kSecClass); } -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - @end #pragma mark - Security APIs diff --git a/Example/Pods/FBSDKCoreKit/README.md b/Example/Pods/FBSDKCoreKit/README.md index 1f9c74e..5449cbf 100644 --- a/Example/Pods/FBSDKCoreKit/README.md +++ b/Example/Pods/FBSDKCoreKit/README.md @@ -1,5 +1,7 @@ # Facebook SDK for iOS +[![Build Status](https://travis-ci.org/facebook/facebook-objc-sdk.svg?branch=master)](https://travis-ci.org/facebook/facebook-objc-sdk) + This open-source library allows you to integrate Facebook into your iOS app. Learn more about the provided samples, documentation, integrating the SDK into your app, accessing source code, and more at https://developers.facebook.com/docs/ios diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h deleted file mode 100644 index 52c1de7..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h +++ /dev/null @@ -1,62 +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 - -NS_ASSUME_NONNULL_BEGIN - -/*! - @abstract Describes the initial response when starting the device login flow. - @discussion This is used by `FBSDKDeviceLoginManager`. - */ -@interface FBSDKDeviceLoginCodeInfo : NSObject - -/*! - @abstract There is no public initializer. - */ -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; - -/*! - @abstract the unique id for this login flow. -*/ -@property (nonatomic, copy, readonly) NSString *identifier; - -/*! - @abstract the short "user_code" that should be presented to the user. -*/ -@property (nonatomic, copy, readonly) NSString *loginCode; - -/*! - @abstract the verification URL. -*/ -@property (nonatomic, copy, readonly) NSURL *verificationURL; - -/*! - @abstract the expiration date. -*/ -@property (nonatomic, copy, readonly) NSDate *expirationDate; - -/*! - @abstract the polling interval -*/ -@property (nonatomic, assign, readonly) NSUInteger pollingInterval; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m deleted file mode 100644 index edb94b3..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m +++ /dev/null @@ -1,38 +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 "FBSDKDeviceLoginCodeInfo+Internal.h" - -@implementation FBSDKDeviceLoginCodeInfo - -- (instancetype) initWithIdentifier:(NSString *)identifier - loginCode:(NSString *)loginCode - verificationURL:(NSURL *)verificationURL - expirationDate:(NSDate *)expirationDate - pollingInterval:(NSUInteger)pollingInterval -{ - if ((self = [super init])) { - _identifier = [identifier copy]; - _loginCode = [loginCode copy]; - _verificationURL = [verificationURL copy]; - _expirationDate = [expirationDate copy]; - _pollingInterval = pollingInterval; - } - return self; -} -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h deleted file mode 100644 index 3f6f036..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h +++ /dev/null @@ -1,105 +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_ASSUME_NONNULL_BEGIN - -@class FBSDKDeviceLoginManager; - -/*! - @abstract A delegate for `FBSDKDeviceLoginManager`. - */ -@protocol FBSDKDeviceLoginManagerDelegate - -/*! - @abstract Indicates the device login flow has started. You should parse `codeInfo` to - present the code to the user to enter. - @param loginManager the login manager instance. - @param codeInfo the code info data. - */ -- (void)deviceLoginManager:(FBSDKDeviceLoginManager *)loginManager startedWithCodeInfo:(FBSDKDeviceLoginCodeInfo *)codeInfo; - -/*! - @abstract Indicates the device login flow has finished. - @param loginManager the login manager instance. - @param result the results of the login flow. - @param error the error, if available. - @discussion The flow can be finished if the user completed the flow, cancelled, or if the code has expired. - */ -- (void)deviceLoginManager:(FBSDKDeviceLoginManager *)loginManager - completedWithResult:(nullable FBSDKDeviceLoginManagerResult *)result - error:(nullable NSError *)error; - -@end - -/*! - @abstract Use this class to perform a device login flow. - @discussion The device login flow starts by requesting a code from the device login API. - This class informs the delegate when this code is received. You should then present the - code to the user to enter. In the meantime, this class polls the device login API - periodically and informs the delegate of the results. - - See [Facebook Device Login](https://developers.facebook.com/docs/facebook-login/for-devices). - */ -@interface FBSDKDeviceLoginManager : NSObject - -/*! - @abstract Initializes a new instance. - @param permissions permissions to request. - */ -- (instancetype)initWithPermissions:(nullable NSArray *)permissions - enableSmartLogin:(BOOL)enableSmartLogin -NS_DESIGNATED_INITIALIZER; - -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; - -/*! - @abstract the delegate. - */ -@property (nonatomic, weak) id delegate; - -/*! - @abstract the requested permissions. - */ -@property (nullable, nonatomic, copy, readonly) NSArray *permissions; - -/*! - @abstract the optional URL to redirect the user to after they complete the login. - @discussion the URL must be configured in your App Settings -> Advanced -> OAuth Redirect URIs - */ -@property (nullable, nonatomic, copy) NSURL *redirectURL; - -/*! - @abstract Starts the device login flow - @discussion This instance will retain self until the flow is finished or cancelled. - */ -- (void)start; - -/*! - @abstract Attempts to cancel the device login flow. - */ -- (void)cancel; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m deleted file mode 100644 index 65a7441..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m +++ /dev/null @@ -1,233 +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 "FBSDKDeviceLoginManager.h" -#import "FBSDKDeviceLoginManagerResult+Internal.h" - -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKDeviceLoginCodeInfo+Internal.h" -#import "FBSDKDeviceLoginError.h" -#import "FBSDKLoginConstants.h" - -static NSMutableArray *g_loginManagerInstances; - -@implementation FBSDKDeviceLoginManager { - FBSDKDeviceLoginCodeInfo *_codeInfo; - BOOL _isCancelled; - NSNetService * _loginAdvertisementService; - BOOL _isSmartLoginEnabled; -} - -+ (void)initialize -{ - if (self == [FBSDKDeviceLoginManager class]) { - g_loginManagerInstances = [NSMutableArray array]; - } -} - -- (instancetype)initWithPermissions:(NSArray *)permissions enableSmartLogin:(BOOL)enableSmartLogin -{ - if ((self = [super init])) { - _permissions = [permissions copy]; - _isSmartLoginEnabled = enableSmartLogin; - } - return self; -} - -- (void)start -{ - [FBSDKInternalUtility validateAppID]; - [g_loginManagerInstances addObject:self]; - - NSDictionary *parameters = @{ - @"scope": [self.permissions componentsJoinedByString:@","] ?: @"", - @"redirect_uri": self.redirectURL.absoluteString ?: @"", - FBSDK_DEVICE_INFO_PARAM: [FBSDKDeviceRequestsHelper getDeviceInfo], - }; - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"device/login" - parameters:parameters - tokenString:[FBSDKInternalUtility validateRequiredClientAccessToken] - HTTPMethod:@"POST" - flags:FBSDKGraphRequestFlagNone]; - [request setGraphErrorRecoveryDisabled:YES]; - [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { - if (error) { - [self _processError:error]; - return; - } - - self->_codeInfo = [[FBSDKDeviceLoginCodeInfo alloc] - initWithIdentifier:result[@"code"] - loginCode:result[@"user_code"] - verificationURL:[NSURL URLWithString:result[@"verification_uri"]] - expirationDate:[[NSDate date] dateByAddingTimeInterval:[result[@"expires_in"] doubleValue]] - pollingInterval:[result[@"interval"] integerValue]]; - - if (self->_isSmartLoginEnabled) { - [FBSDKDeviceRequestsHelper startAdvertisementService:self->_codeInfo.loginCode - withDelegate:self - ]; - } - - [self.delegate deviceLoginManager:self startedWithCodeInfo:self->_codeInfo]; - [self _schedulePoll:self->_codeInfo.pollingInterval]; - }]; - } - -- (void)cancel -{ - [FBSDKDeviceRequestsHelper cleanUpAdvertisementService:self]; - _isCancelled = YES; - [g_loginManagerInstances removeObject:self]; -} - -#pragma mark - Private impl - -- (void)_notifyError:(NSError *)error -{ - [FBSDKDeviceRequestsHelper cleanUpAdvertisementService:self]; - [self.delegate deviceLoginManager:self - completedWithResult:nil - error:error]; - [g_loginManagerInstances removeObject:self]; -} - -- (void)_notifyToken:(NSString *)tokenString -{ - [FBSDKDeviceRequestsHelper cleanUpAdvertisementService:self]; - void(^completeWithResult)(FBSDKDeviceLoginManagerResult *) = ^(FBSDKDeviceLoginManagerResult *result) { - [self.delegate deviceLoginManager:self completedWithResult:result error:nil]; - [g_loginManagerInstances removeObject:self]; - }; - - if (tokenString) { - FBSDKGraphRequest *permissionsRequest = - [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" - parameters:@{@"fields": @"id,permissions"} - tokenString:tokenString - HTTPMethod:@"GET" - flags:FBSDKGraphRequestFlagDisableErrorRecovery]; - [permissionsRequest startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id permissionRawResult, NSError *error) { - NSString *userID = permissionRawResult[@"id"]; - NSDictionary *permissionResult = permissionRawResult[@"permissions"]; - if (error || - !userID || - !permissionResult) { -#if TARGET_TV_OS - NSError *wrappedError = [FBSDKTVOSError errorWithCode:FBSDKTVOSUnknownErrorCode - message:@"Unable to fetch permissions for token" - underlyingError:error]; -#else - NSError *wrappedError = [FBSDKDeviceLoginError errorWithCode:FBSDKUnknownErrorCode - message:@"Unable to fetch permissions for token" - underlyingError:error]; -#endif - [self _notifyError:wrappedError]; - } else { - NSMutableSet *permissions = [NSMutableSet set]; - NSMutableSet *declinedPermissions = [NSMutableSet set]; - - [FBSDKInternalUtility extractPermissionsFromResponse:permissionResult - grantedPermissions:permissions - declinedPermissions:declinedPermissions]; - FBSDKAccessToken *accessToken = [[FBSDKAccessToken alloc] initWithTokenString:tokenString - permissions:permissions.allObjects - declinedPermissions:declinedPermissions.allObjects - appID:[FBSDKSettings appID] - userID:userID - expirationDate:nil - refreshDate:nil - dataAccessExpirationDate:nil]; - FBSDKDeviceLoginManagerResult *result = [[FBSDKDeviceLoginManagerResult alloc] initWithToken:accessToken - isCancelled:NO]; - completeWithResult(result); - } - }]; - } else { - _isCancelled = YES; - FBSDKDeviceLoginManagerResult *result = [[FBSDKDeviceLoginManagerResult alloc] initWithToken:nil isCancelled:YES]; - completeWithResult(result); - } -} - -- (void)_processError:(NSError *)error -{ - FBSDKDeviceLoginErrorSubcode code = [error.userInfo[FBSDKGraphRequestErrorGraphErrorSubcode] unsignedIntegerValue]; - switch (code) { - case FBSDKDeviceLoginAuthorizationPendingErrorSubcode: - [self _schedulePoll:_codeInfo.pollingInterval]; - break; - case FBSDKDeviceLoginCodeExpiredErrorSubcode: - case FBSDKDeviceLoginAuthorizationDeclinedErrorSubcode: - [self _notifyToken:nil]; - break; - case FBSDKDeviceLoginExcessivePollingErrorSubcode: - [self _schedulePoll:_codeInfo.pollingInterval * 2]; - default: - [self _notifyError:error]; - break; - } -} - -- (void)_schedulePoll:(NSUInteger)interval -{ - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(interval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - if (self->_isCancelled) { - return; - } - - NSDictionary *parameters = @{ @"code": self->_codeInfo.identifier }; - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"device/login_status" - parameters:parameters - tokenString:[FBSDKInternalUtility validateRequiredClientAccessToken] - HTTPMethod:@"POST" - flags:FBSDKGraphRequestFlagNone]; - [request setGraphErrorRecoveryDisabled:YES]; - [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { - if (self->_isCancelled) { - return; - } - if (error) { - [self _processError:error]; - } else { - NSString *tokenString = result[@"access_token"]; - if (tokenString) { - [self _notifyToken:tokenString]; - } else { - NSError *unknownError = [FBSDKDeviceLoginError errorWithCode:FBSDKUnknownErrorCode - message:@"Device Login poll failed. No token nor error was found."]; - [self _notifyError:unknownError]; - } - } - }]; - }); -} - -- (void)netService:(NSNetService *)sender - didNotPublish:(NSDictionary *)errorDict -{ - // Only cleanup if the publish error is from our advertising service - if ([FBSDKDeviceRequestsHelper isDelegate:self forAdvertisementService:sender]) - { - [FBSDKDeviceRequestsHelper cleanUpAdvertisementService:self]; - } -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h deleted file mode 100644 index ccce552..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h +++ /dev/null @@ -1,50 +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 - -NS_ASSUME_NONNULL_BEGIN - -/*! - @abstract Represents the results of the a device login flow. - @discussion This is used by `FBSDKDeviceLoginManager`. - */ -@interface FBSDKDeviceLoginManagerResult : NSObject - -/*! - @abstract There is no public initializer. - */ -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; - -/*! - @abstract The token. - */ -@property (nullable, nonatomic, strong, readonly) FBSDKAccessToken *accessToken; - -/*! - @abstract Indicates if the login was cancelled by the user, or if the device - login code has expired. - */ -@property (nonatomic, assign, readonly, getter=isCancelled) BOOL cancelled; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.m deleted file mode 100644 index a95f1cf..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.m +++ /dev/null @@ -1,33 +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 "FBSDKDeviceLoginManagerResult+Internal.h" - -@implementation FBSDKDeviceLoginManagerResult - -- (instancetype)initWithToken:(FBSDKAccessToken *)token - isCancelled:(BOOL)cancelled -{ - if ((self = [super init])) { - _accessToken = token; - _cancelled = cancelled; - } - return self; -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h deleted file mode 100644 index 1b8ed29..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h +++ /dev/null @@ -1,131 +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 "FBSDKTooltipView.h" - -@protocol FBSDKLoginButtonDelegate; - -/** - NS_ENUM(NSUInteger, FBSDKLoginButtonTooltipBehavior) - Indicates the desired login tooltip behavior. - */ -typedef NS_ENUM(NSUInteger, FBSDKLoginButtonTooltipBehavior) -{ - /** The default behavior. The tooltip will only be displayed if - the app is eligible (determined by possible server round trip) */ - FBSDKLoginButtonTooltipBehaviorAutomatic = 0, - /** Force display of the tooltip (typically for UI testing) */ - FBSDKLoginButtonTooltipBehaviorForceDisplay = 1, - /** Force disable. In this case you can still exert more refined - control by manually constructing a `FBSDKLoginTooltipView` instance. */ - FBSDKLoginButtonTooltipBehaviorDisable = 2 -}; - -/** - A button that initiates a log in or log out flow upon tapping. - - `FBSDKLoginButton` works with `[FBSDKAccessToken currentAccessToken]` to - determine what to display, and automatically starts authentication when tapped (i.e., - you do not need to manually subscribe action targets). - - Like `FBSDKLoginManager`, you should make sure your app delegate is connected to - `FBSDKApplicationDelegate` in order for the button's delegate to receive messages. - - `FBSDKLoginButton` has a fixed height of @c 30 pixels, but you may change the width. `initWithFrame:CGRectZero` - will size the button to its minimum frame. -*/ -@interface FBSDKLoginButton : FBSDKButton - -/** - The default audience to use, if publish permissions are requested at login time. - */ -@property (assign, nonatomic) FBSDKDefaultAudience defaultAudience; -/** - Gets or sets the delegate. - */ -@property (weak, nonatomic) IBOutlet id delegate; -/** - Gets or sets the login behavior to use - */ -@property (assign, nonatomic) FBSDKLoginBehavior loginBehavior; -/** - The publish permissions to request. - - - 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. - */ -@property (copy, nonatomic) NSArray *readPermissions; -/** - Gets or sets the desired tooltip behavior. - */ -@property (assign, nonatomic) FBSDKLoginButtonTooltipBehavior tooltipBehavior; -/** - Gets or sets the desired tooltip color style. - */ -@property (assign, nonatomic) FBSDKTooltipColorStyle tooltipColorStyle; - -@end - -/** - @protocol - A delegate for `FBSDKLoginButton` - */ -@protocol FBSDKLoginButtonDelegate - -@required -/** - Sent to the delegate when the button was used to login. - @param loginButton the sender - @param result The results of the login - @param error The error (if any) from the login - */ -- (void)loginButton:(FBSDKLoginButton *)loginButton -didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result - error:(NSError *)error; - -/** - Sent to the delegate when the button was used to logout. - @param loginButton The button that was clicked. -*/ -- (void)loginButtonDidLogOut:(FBSDKLoginButton *)loginButton; - -@optional -/** - Sent to the delegate when the button is about to login. - @param loginButton the sender - @return YES if the login should be allowed to proceed, NO otherwise - */ -- (BOOL) loginButtonWillLogin:(FBSDKLoginButton *)loginButton; - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m deleted file mode 100644 index 8f662c0..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m +++ /dev/null @@ -1,359 +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 "FBSDKLoginButton.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKLoginTooltipView.h" - -static const CGFloat kFBLogoSize = 16.0; -static const CGFloat kFBLogoLeftMargin = 6.0; -static const CGFloat kButtonHeight = 28.0; -static const CGFloat kRightMargin = 8.0; -static const CGFloat kPaddingBetweenLogoTitle = 8.0; - -@interface FBSDKLoginButton() -@end - -@implementation FBSDKLoginButton -{ - BOOL _hasShownTooltipBubble; - FBSDKLoginManager *_loginManager; - NSString *_userID; - NSString *_userName; -} - -#pragma mark - Object Lifecycle - -- (void)dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -#pragma mark - Properties - -- (FBSDKDefaultAudience)defaultAudience -{ - return _loginManager.defaultAudience; -} - -- (void)setDefaultAudience:(FBSDKDefaultAudience)defaultAudience -{ - _loginManager.defaultAudience = defaultAudience; -} - -- (FBSDKLoginBehavior)loginBehavior -{ - return _loginManager.loginBehavior; -} - -- (void)setLoginBehavior:(FBSDKLoginBehavior)loginBehavior -{ - _loginManager.loginBehavior = loginBehavior; -} - -- (UIFont *)defaultFont -{ - return [UIFont systemFontOfSize:13]; -} - -- (UIColor *)backgroundColor -{ - return [UIColor colorWithRed:66.0/255.0 green:103.0/255.0 blue:178.0/255.0 alpha:1.0]; -} - -#pragma mark - UIView - -- (void)didMoveToWindow -{ - [super didMoveToWindow]; - - if (self.window && - ((self.tooltipBehavior == FBSDKLoginButtonTooltipBehaviorForceDisplay) || !_hasShownTooltipBubble)) { - [self performSelector:@selector(_showTooltipIfNeeded) withObject:nil afterDelay:0]; - _hasShownTooltipBubble = YES; - } -} - -#pragma mark - Layout - -- (CGRect)imageRectForContentRect:(CGRect)contentRect -{ - CGFloat centerY = CGRectGetMidY(contentRect); - CGFloat y = centerY - (kFBLogoSize / 2.0); - return CGRectMake(kFBLogoLeftMargin, y, kFBLogoSize, kFBLogoSize); -} - -- (CGRect)titleRectForContentRect:(CGRect)contentRect -{ - if (self.hidden || CGRectIsEmpty(self.bounds)) { - return CGRectZero; - } - CGRect imageRect = [self imageRectForContentRect:contentRect]; - CGFloat titleX = CGRectGetMaxX(imageRect) + kPaddingBetweenLogoTitle; - CGRect titleRect = CGRectMake(titleX, 0, CGRectGetWidth(contentRect) - titleX - kRightMargin, CGRectGetHeight(contentRect)); - - return titleRect; -} - -- (void)layoutSubviews -{ - CGSize size = self.bounds.size; - CGSize longTitleSize = [self sizeThatFits:size title:[self _longLogInTitle]]; - NSString *title = (longTitleSize.width <= size.width ? - [self _longLogInTitle] : - [self _shortLogInTitle]); - if (![title isEqualToString:[self titleForState:UIControlStateNormal]]) { - [self setTitle:title forState:UIControlStateNormal]; - } - - [super layoutSubviews]; -} - -- (CGSize)sizeThatFits:(CGSize)size -{ - if ([self isHidden]) { - return CGSizeZero; - } - UIFont *font = self.titleLabel.font; - - CGSize selectedSize = FBSDKTextSize([self _logOutTitle], font, size, self.titleLabel.lineBreakMode); - CGSize normalSize = FBSDKTextSize([self _longLogInTitle], font, size, self.titleLabel.lineBreakMode); - if (normalSize.width > size.width) { - normalSize = FBSDKTextSize([self _shortLogInTitle], font, size, self.titleLabel.lineBreakMode); - } - - CGFloat titleWidth = MAX(normalSize.width, selectedSize.width); - CGFloat buttonWidth = kFBLogoLeftMargin + kFBLogoSize + kPaddingBetweenLogoTitle + titleWidth + kRightMargin; - return CGSizeMake(buttonWidth, kButtonHeight); -} - -#pragma mark - UIActionSheetDelegate - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" -- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex -{ - if (buttonIndex == 0) { - [_loginManager logOut]; - [self.delegate loginButtonDidLogOut:self]; - } -} -#pragma clang diagnostic pop - -#pragma mark - FBSDKButtonImpressionTracking - -- (NSDictionary *)analyticsParameters -{ - return nil; -} - -- (NSString *)impressionTrackingEventName -{ - return FBSDKAppEventNameFBSDKLoginButtonImpression; -} - -- (NSString *)impressionTrackingIdentifier -{ - return @"login"; -} - -#pragma mark - FBSDKButton - -- (void)configureButton -{ - _loginManager = [[FBSDKLoginManager alloc] init]; - - NSString *logInTitle = [self _shortLogInTitle]; - NSString *logOutTitle = [self _logOutTitle]; - - [self configureWithIcon:nil - title:logInTitle - backgroundColor:[self backgroundColor] - highlightedColor:nil - selectedTitle:logOutTitle - selectedIcon:nil - selectedColor:[self backgroundColor] - selectedHighlightedColor:nil]; - self.titleLabel.textAlignment = NSTextAlignmentCenter; - [self addConstraint:[NSLayoutConstraint constraintWithItem:self - attribute:NSLayoutAttributeHeight - relatedBy:NSLayoutRelationEqual - toItem:nil - attribute:NSLayoutAttributeNotAnAttribute - multiplier:1 - constant:28]]; - [self _updateContent]; - - [self addTarget:self action:@selector(_buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(_accessTokenDidChangeNotification:) - name:FBSDKAccessTokenDidChangeNotification - object:nil]; -} - -#pragma mark - Helper Methods - -- (void)_accessTokenDidChangeNotification:(NSNotification *)notification -{ - if (notification.userInfo[FBSDKAccessTokenDidChangeUserID] || notification.userInfo[FBSDKAccessTokenDidExpire]) { - [self _updateContent]; - } -} - -- (void)_buttonPressed:(id)sender -{ - [self logTapEventWithEventName:FBSDKAppEventNameFBSDKLoginButtonDidTap parameters:[self analyticsParameters]]; - if ([FBSDKAccessToken currentAccessTokenIsActive]) { - NSString *title = nil; - - if (_userName) { - NSString *localizedFormatString = - NSLocalizedStringWithDefaultValue(@"LoginButton.LoggedInAs", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Logged in as %@", - @"The format string for the FBSDKLoginButton label when the user is logged in"); - title = [NSString localizedStringWithFormat:localizedFormatString, _userName]; - } else { - NSString *localizedLoggedIn = - NSLocalizedStringWithDefaultValue(@"LoginButton.LoggedIn", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Logged in using Facebook", - @"The fallback string for the FBSDKLoginButton label when the user name is not available yet"); - title = localizedLoggedIn; - } - NSString *cancelTitle = - NSLocalizedStringWithDefaultValue(@"LoginButton.CancelLogout", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Cancel", - @"The label for the FBSDKLoginButton action sheet to cancel logging out"); - NSString *logOutTitle = - NSLocalizedStringWithDefaultValue(@"LoginButton.ConfirmLogOut", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Log Out", - @"The label for the FBSDKLoginButton action sheet to confirm logging out"); - if ([UIAlertController class]) { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title - message:nil - preferredStyle:UIAlertControllerStyleActionSheet]; - alertController.popoverPresentationController.sourceView = self; - alertController.popoverPresentationController.sourceRect = self.bounds; - UIAlertAction *cancel = [UIAlertAction actionWithTitle:cancelTitle - style:UIAlertActionStyleCancel - handler:nil]; - UIAlertAction *logout = [UIAlertAction actionWithTitle:logOutTitle - style:UIAlertActionStyleDestructive - handler:^(UIAlertAction * _Nonnull action) { - [self->_loginManager logOut]; - [self.delegate loginButtonDidLogOut:self]; - }]; - [alertController addAction:cancel]; - [alertController addAction:logout]; - UIViewController *topMostViewController = [FBSDKInternalUtility topMostViewController]; - [topMostViewController presentViewController:alertController - animated:YES - completion:nil]; - } else { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:title - delegate:self - cancelButtonTitle:cancelTitle - destructiveButtonTitle:logOutTitle - otherButtonTitles:nil]; - [sheet showInView:self]; -#pragma clang diagnostic pop - } - } else { - if ([self.delegate respondsToSelector:@selector(loginButtonWillLogin:)]) { - if (![self.delegate loginButtonWillLogin:self]) { - return; - } - } - - FBSDKLoginManagerRequestTokenHandler handler = ^(FBSDKLoginManagerLoginResult *result, NSError *error) { - if ([self.delegate respondsToSelector:@selector(loginButton:didCompleteWithResult:error:)]) { - [self.delegate loginButton:self didCompleteWithResult:result error:error]; - } - }; - - if (self.publishPermissions.count > 0) { - [_loginManager logInWithPublishPermissions:self.publishPermissions - fromViewController:[FBSDKInternalUtility viewControllerForView:self] - handler:handler]; - } else { - [_loginManager logInWithReadPermissions:self.readPermissions - fromViewController:[FBSDKInternalUtility viewControllerForView:self] - handler:handler]; - } - } -} - -- (NSString *)_logOutTitle -{ - return NSLocalizedStringWithDefaultValue(@"LoginButton.LogOut", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Log out", - @"The label for the FBSDKLoginButton when the user is currently logged in"); - ; -} - -- (NSString *)_longLogInTitle -{ - return NSLocalizedStringWithDefaultValue(@"LoginButton.LogInContinue", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Continue with Facebook", - @"The long label for the FBSDKLoginButton when the user is currently logged out"); -} - -- (NSString *)_shortLogInTitle -{ - return NSLocalizedStringWithDefaultValue(@"LoginButton.LogIn", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Log in", - @"The short label for the FBSDKLoginButton when the user is currently logged out"); -} - -- (void)_showTooltipIfNeeded -{ - if ([FBSDKAccessToken currentAccessToken] || self.tooltipBehavior == FBSDKLoginButtonTooltipBehaviorDisable) { - return; - } else { - FBSDKLoginTooltipView *tooltipView = [[FBSDKLoginTooltipView alloc] init]; - tooltipView.colorStyle = self.tooltipColorStyle; - if (self.tooltipBehavior == FBSDKLoginButtonTooltipBehaviorForceDisplay) { - tooltipView.forceDisplay = YES; - } - [tooltipView presentFromView:self]; - } -} - -- (void)_updateContent -{ - BOOL accessTokenIsValid = [FBSDKAccessToken currentAccessTokenIsActive]; - self.selected = accessTokenIsValid; - if (accessTokenIsValid) { - if (![[FBSDKAccessToken currentAccessToken].userID isEqualToString:_userID]) { - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me?fields=id,name" - parameters:nil - flags:FBSDKGraphRequestFlagDisableErrorRecovery]; - [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { - NSString *userID = [FBSDKTypeUtility stringValue:result[@"id"]]; - if (!error && [[FBSDKAccessToken currentAccessToken].userID isEqualToString:userID]) { - self->_userName = [FBSDKTypeUtility stringValue:result[@"name"]]; - self->_userID = userID; - } - }]; - } - } -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h deleted file mode 100644 index dcb1930..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h +++ /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 - -#import - -/** - The error domain for all errors from FBSDKLoginKit - - Error codes from the SDK in the range 300-399 are reserved for this domain. - */ -FBSDK_EXTERN NSString *const FBSDKLoginErrorDomain; - -/** - NS_ENUM(NSInteger, FBSDKLoginErrorCode) - Error codes for FBSDKLoginErrorDomain. - */ -typedef NS_ENUM(NSInteger, FBSDKLoginErrorCode) -{ - /** - Reserved. - */ - FBSDKLoginReservedErrorCode = 300, - /** - The error code for unknown errors. - */ - FBSDKLoginUnknownErrorCode, - - /** - The user's password has changed and must log in again - */ - FBSDKLoginPasswordChangedErrorCode, - /** - The user must log in to their account on www.facebook.com to restore access - */ - FBSDKLoginUserCheckpointedErrorCode, - /** - Indicates a failure to request new permissions because the user has changed. - */ - FBSDKLoginUserMismatchErrorCode, - /** - The user must confirm their account with Facebook before logging in - */ - FBSDKLoginUnconfirmedUserErrorCode, - - /** - The Accounts framework failed without returning an error, indicating the - app's slider in the iOS Facebook Settings (device Settings -> Facebook -> App Name) has - been disabled. - */ - FBSDKLoginSystemAccountAppDisabledErrorCode, - /** - An error occurred related to Facebook system Account store - */ - FBSDKLoginSystemAccountUnavailableErrorCode, - /** - The login response was missing a valid challenge string. - */ - FBSDKLoginBadChallengeString, -}; - -/** - NS_ENUM(NSInteger, FBSDKDeviceLoginErrorCode) - Error codes for FBSDKDeviceLoginErrorDomain. - */ -typedef NS_ENUM(NSUInteger, FBSDKDeviceLoginErrorSubcode) { - /** - Your device is polling too frequently. - */ - FBSDKDeviceLoginExcessivePollingErrorSubcode = 1349172, - /** - User has declined to authorize your application. - */ - FBSDKDeviceLoginAuthorizationDeclinedErrorSubcode = 1349173, - /** - User has not yet authorized your application. Continue polling. - */ - FBSDKDeviceLoginAuthorizationPendingErrorSubcode = 1349174, - /** - The code you entered has expired. - */ - FBSDKDeviceLoginCodeExpiredErrorSubcode = 1349152 -}; diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m deleted file mode 100644 index 1897305..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m +++ /dev/null @@ -1,21 +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 "FBSDKLoginConstants.h" - -NSString *const FBSDKLoginErrorDomain = @"com.facebook.sdk.login"; diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h deleted file mode 100644 index aafc577..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h +++ /dev/null @@ -1,31 +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 -#import - -#if !TARGET_TV_OS -#import -#import -#import -#import -#endif diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h deleted file mode 100644 index c33ffcb..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h +++ /dev/null @@ -1,212 +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 - -@class FBSDKLoginManagerLoginResult; - -/** - 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); - - -/** - FBSDKDefaultAudience enum - - Passed to open to indicate which default audience to use for sessions that post data to Facebook. - - - - Certain operations such as publishing a status or publishing a photo require an audience. When the user - grants an application permission to perform a publish operation, a default audience is selected as the - publication ceiling for the application. This enumerated value allows the application to select which - audience to ask the user to grant publish permission for. - */ -typedef NS_ENUM(NSUInteger, FBSDKDefaultAudience) -{ - /** Indicates that the user's friends are able to see posts made by the application */ - FBSDKDefaultAudienceFriends = 0, - /** Indicates that only the user is able to see posts made by the application */ - FBSDKDefaultAudienceOnlyMe, - /** Indicates that all Facebook users are able to see posts made by the application */ - FBSDKDefaultAudienceEveryone, -}; - -/** - FBSDKLoginBehavior enum - - Passed to the \c FBSDKLoginManager to indicate how Facebook Login should be attempted. - - - - Facebook Login authorizes the application to act on behalf of the user, using the user's - Facebook account. Usually a Facebook Login will rely on an account maintained outside of - the application, by the native Facebook application, the browser, or perhaps the device - itself. This avoids the need for a user to enter their username and password directly, and - provides the most secure and lowest friction way for a user to authorize the application to - interact with Facebook. - - The \c FBSDKLoginBehavior enum specifies which log-in methods may be used. The SDK - will determine the best behavior based on the current device (such as iOS version). - */ -typedef NS_ENUM(NSUInteger, FBSDKLoginBehavior) -{ - /** - This is the default behavior, and indicates logging in through the native - Facebook app may be used. The SDK may still use Safari instead. - */ - FBSDKLoginBehaviorNative = 0, - /** - 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, -}; - -/** - `FBSDKLoginManager` provides methods for logging the user in and out. - - `FBSDKLoginManager` works directly with `[FBSDKAccessToken currentAccessToken]` and - sets the "currentAccessToken" upon successful authorizations (or sets `nil` in case of `logOut`). - - You should check `[FBSDKAccessToken currentAccessToken]` before calling logIn* to see if there is - a cached token available (typically in your viewDidLoad). - - If you are managing your own token instances outside of "currentAccessToken", you will need to set - "currentAccessToken" before calling logIn* to authorize further permissions on your tokens. - */ -@interface FBSDKLoginManager : NSObject - -/** - Auth type - */ -@property (strong, nonatomic) NSString *authType; -/** - the default audience. - - you should set this if you intend to ask for publish permissions. - */ -@property (assign, nonatomic) FBSDKDefaultAudience defaultAudience; - -/** - the login behavior - */ -@property (assign, nonatomic) FBSDKLoginBehavior loginBehavior; - -/** - -@warning use logInWithReadPermissions:fromViewController:handler: instead - */ -- (void)logInWithReadPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler -__attribute__ ((deprecated("use logInWithReadPermissions:fromViewController:handler: instead"))); - -/** - -@warning use logInWithPublishPermissions:fromViewController:handler: instead - */ -- (void)logInWithPublishPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler -__attribute__ ((deprecated("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. - @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 - 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)logInWithPublishPermissions:(NSArray *)permissions - fromViewController:(UIViewController *)fromViewController - handler:(FBSDKLoginManagerRequestTokenHandler)handler; - -/** - Logs the user out - - This calls [FBSDKAccessToken setCurrentAccessToken:nil] and [FBSDKProfile setCurrentProfile:nil]. - */ -- (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 diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m deleted file mode 100644 index f002464..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m +++ /dev/null @@ -1,859 +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 "FBSDKLoginManager+Internal.h" -#import "FBSDKLoginManagerLoginResult+Internal.h" - -#import -#import - -#import "_FBSDKLoginRecoveryAttempter.h" -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKLoginCompletion.h" -#import "FBSDKLoginConstants.h" -#import "FBSDKLoginError.h" -#import "FBSDKLoginManagerLogger.h" -#import "FBSDKLoginUtility.h" - -static int const FBClientStateChallengeLength = 20; -static NSString *const FBSDKExpectedChallengeKey = @"expected_login_challenge"; -static NSString *const FBSDKOauthPath = @"/dialog/oauth"; -static NSString *const SFVCCanceledLogin = @"com.apple.SafariServices.Authentication"; - -typedef NS_ENUM(NSInteger, FBSDKLoginManagerState) { - FBSDKLoginManagerStateIdle, - // We received a call to start login. - FBSDKLoginManagerStateStart, - // We're calling out to the Facebook app or Safari to perform a log in - FBSDKLoginManagerStatePerformingLogin, -}; - -@implementation FBSDKLoginManager -{ - FBSDKLoginManagerRequestTokenHandler _handler; - FBSDKLoginManagerLogger *_logger; - FBSDKLoginManagerState _state; - FBSDKKeychainStore *_keychainStore; - BOOL _usedSFAuthSession; -} - -+ (void)initialize -{ - if (self == [FBSDKLoginManager class]) { - [_FBSDKLoginRecoveryAttempter class]; - [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; - } -} - -- (instancetype)init -{ - self = [super init]; - if (self) { - self.authType = @"rerequest"; - 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 -{ - 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; - [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)logOut -{ - [FBSDKAccessToken setCurrentAccessToken:nil]; - [FBSDKProfile setCurrentProfile:nil]; -} - -+ (void)renewSystemCredentials:(void (^)(ACAccountCredentialRenewResult result, NSError *error))handler -{ - FBSDKSystemAccountStoreAdapter *adapter = [FBSDKSystemAccountStoreAdapter sharedInstance]; - - if (!adapter.accountType) { - handler(ACAccountCredentialRenewResultFailed, [FBSDKLoginError errorForFailedLoginWithCode:FBSDKLoginSystemAccountUnavailableErrorCode]); - } else if (!adapter.accountType.accessGranted) { - handler(ACAccountCredentialRenewResultFailed, [FBSDKLoginError errorForFailedLoginWithCode:FBSDKLoginSystemAccountAppDisabledErrorCode]); - } else { - [[FBSDKSystemAccountStoreAdapter sharedInstance] renewSystemAuthorization:handler]; - } -} - -#pragma mark - Private - -- (void)raiseLoginException:(NSException *)exception -{ - _state = FBSDKLoginManagerStateIdle; - [exception raise]; -} - -- (void)handleImplicitCancelOfLogIn -{ - FBSDKLoginManagerLoginResult *result = [[FBSDKLoginManagerLoginResult alloc] initWithToken:nil - isCancelled:YES - grantedPermissions:nil - declinedPermissions:nil]; - [result addLoggingExtra:@YES forKey:@"implicit_cancel"]; - [self invokeHandler:result error:nil]; -} - -- (BOOL)validateLoginStartState -{ - switch (_state) { - case FBSDKLoginManagerStateStart: { - if (self->_usedSFAuthSession) { - // Using SFAuthenticationSession makes an interestitial dialog that blocks the app, but in certain situations such as - // screen lock it can be dismissed and have the control returned to the app without invoking the completionHandler. - // In this case, the viewcontroller has the control back and tried to reinvoke the login. This is acceptable behavior - // and we should pop up the dialog again - return YES; - } - - NSString *errorStr = @"** WARNING: You are trying to start a login while a previous login has not finished yet." - "This is unsupported behavior. You should wait until the previous login handler gets called to start a new login."; - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors - formatString:@"%@", errorStr]; - return NO; - } - case FBSDKLoginManagerStatePerformingLogin:{ - [self handleImplicitCancelOfLogIn]; - return YES; - } - case FBSDKLoginManagerStateIdle: - _state = FBSDKLoginManagerStateStart; - return YES; - } -} - -- (BOOL)isPerformingLogin -{ - return _state == FBSDKLoginManagerStatePerformingLogin; -} - -- (void)assertPermissions:(NSArray *)permissions -{ - for (NSString *permission in permissions) { - if (![permission isKindOfClass:[NSString class]]) { - [self raiseLoginException:[NSException exceptionWithName:NSInvalidArgumentException - reason:@"Permissions must be string values." - userInfo:nil]]; - } - if ([permission rangeOfString:@","].location != NSNotFound) { - [self raiseLoginException:[NSException exceptionWithName:NSInvalidArgumentException - reason:@"Permissions should each be specified in separate string values in the array." - userInfo:nil]]; - } - } -} - -- (void)completeAuthentication:(FBSDKLoginCompletionParameters *)parameters expectChallenge:(BOOL)expectChallenge -{ - NSSet *recentlyGrantedPermissions = nil; - NSSet *recentlyDeclinedPermissions = nil; - FBSDKLoginManagerLoginResult *result = nil; - NSError *error = parameters.error; - - NSString *tokenString = parameters.accessTokenString; - BOOL cancelled = (tokenString == nil); - - BOOL challengePassed = YES; - if (expectChallenge) { - // Perform this check early so we be sure to clear expected challenge in all cases. - NSString *challengeReceived = parameters.challenge; - NSString *challengeExpected = [self loadExpectedChallenge]; - if (![challengeExpected isEqualToString:challengeReceived]) { - challengePassed = NO; - } - - // Don't overwrite an existing error, if any. - if (!error && !cancelled && !challengePassed) { - error = [FBSDKLoginError errorForFailedLoginWithCode:FBSDKLoginBadChallengeString]; - } - } - - [self storeExpectedChallenge:nil]; - - if (!error) { - if (!cancelled) { - NSSet *grantedPermissions = parameters.permissions; - NSSet *declinedPermissions = parameters.declinedPermissions; - - [self determineRecentlyGrantedPermissions:&recentlyGrantedPermissions - recentlyDeclinedPermissions:&recentlyDeclinedPermissions - forGrantedPermission:grantedPermissions - declinedPermissions:declinedPermissions]; - - if (recentlyGrantedPermissions.count > 0) { - FBSDKAccessToken *token = [[FBSDKAccessToken alloc] initWithTokenString:tokenString - permissions:[grantedPermissions allObjects] - declinedPermissions:[declinedPermissions allObjects] - appID:parameters.appID - userID:parameters.userID - expirationDate:parameters.expirationDate - refreshDate:[NSDate date] - dataAccessExpirationDate:parameters.dataAccessExpirationDate]; - result = [[FBSDKLoginManagerLoginResult alloc] initWithToken:token - isCancelled:NO - grantedPermissions:recentlyGrantedPermissions - declinedPermissions:recentlyDeclinedPermissions]; - - if ([FBSDKAccessToken currentAccessToken]) { - [self validateReauthentication:[FBSDKAccessToken currentAccessToken] withResult:result]; - // in a reauth, short circuit and let the login handler be called when the validation finishes. - return; - } - } - } - - 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; - } - } - - result = [[FBSDKLoginManagerLoginResult alloc] initWithToken:nil - isCancelled:cancelled - grantedPermissions:nil - declinedPermissions:declinedPermissions]; - } - } - - if (result.token) { - [FBSDKAccessToken setCurrentAccessToken:result.token]; - } - - [self invokeHandler:result error:error]; -} - -- (void)determineRecentlyGrantedPermissions:(NSSet **)recentlyGrantedPermissionsRef - recentlyDeclinedPermissions:(NSSet **)recentlyDeclinedPermissionsRef - forGrantedPermission:(NSSet *)grantedPermissions - declinedPermissions:(NSSet *)declinedPermissions -{ - NSMutableSet *recentlyGrantedPermissions = [grantedPermissions mutableCopy]; - NSSet *previouslyGrantedPermissions = ([FBSDKAccessToken currentAccessToken] ? - [FBSDKAccessToken currentAccessToken].permissions : - nil); - if (previouslyGrantedPermissions.count > 0) { - // If there were no requested permissions for this auth - treat all permissions as granted. - // Otherwise this is a reauth, so recentlyGranted should be a subset of what was requested. - if (_requestedPermissions.count != 0) { - [recentlyGrantedPermissions intersectSet:_requestedPermissions]; - } - } - - NSMutableSet *recentlyDeclinedPermissions = [_requestedPermissions mutableCopy]; - [recentlyDeclinedPermissions intersectSet:declinedPermissions]; - - if (recentlyGrantedPermissionsRef != NULL) { - *recentlyGrantedPermissionsRef = [recentlyGrantedPermissions copy]; - } - if (recentlyDeclinedPermissionsRef != NULL) { - *recentlyDeclinedPermissionsRef = [recentlyDeclinedPermissions copy]; - } -} - -- (void)invokeHandler:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error -{ - [_logger endLoginWithResult:result error:error]; - [_logger endSession]; - _logger = nil; - _state = FBSDKLoginManagerStateIdle; - - if (_handler) { - FBSDKLoginManagerRequestTokenHandler handler = _handler; - _handler(result, error); - if (handler == _handler) { - _handler = nil; - } else { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors - formatString:@"** WARNING: You are requesting permissions inside the completion block of an existing login." - "This is unsupported behavior. You should request additional permissions only when they are needed, such as requesting for publish_actions" - "when the user performs a sharing action."]; - } - } -} - -- (NSString *)loadExpectedChallenge -{ - return [_keychainStore stringForKey:FBSDKExpectedChallengeKey]; -} - -- (NSDictionary *)logInParametersWithPermissions:(NSSet *)permissions serverConfiguration:(FBSDKServerConfiguration *)serverConfiguration -{ - [FBSDKInternalUtility validateURLSchemes]; - - NSMutableDictionary *loginParams = [NSMutableDictionary dictionary]; - loginParams[@"client_id"] = [FBSDKSettings appID]; - loginParams[@"response_type"] = @"token,signed_request"; - loginParams[@"redirect_uri"] = @"fbconnect://success"; - loginParams[@"display"] = @"touch"; - loginParams[@"sdk"] = @"ios"; - loginParams[@"return_scopes"] = @"true"; - loginParams[@"sdk_version"] = FBSDK_VERSION_STRING; - loginParams[@"fbapp_pres"] = @([FBSDKInternalUtility isFacebookAppInstalled]); - 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"]; - - NSString *expectedChallenge = [FBSDKLoginManager stringForChallenge]; - NSDictionary *state = @{@"challenge": [FBSDKUtility URLEncode:expectedChallenge]}; - loginParams[@"state"] = [FBSDKInternalUtility JSONStringForObject:state error:NULL invalidObjectHandler:nil]; - - [self storeExpectedChallenge:expectedChallenge]; - - return loginParams; -} - -- (void)logInWithPermissions:(NSSet *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler -{ - FBSDKServerConfiguration *serverConfiguration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - _logger = [[FBSDKLoginManagerLogger alloc] initWithLoggingToken:serverConfiguration.loggingToken]; - - _handler = [handler copy]; - _requestedPermissions = permissions; - - [_logger startSessionForLoginManager:self]; - - [self logInWithBehavior:self.loginBehavior]; -} - -- (void)logInWithBehavior:(FBSDKLoginBehavior)loginBehavior -{ - FBSDKServerConfiguration *serverConfiguration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - NSDictionary *loginParams = [self logInParametersWithPermissions:_requestedPermissions serverConfiguration:serverConfiguration]; - self->_usedSFAuthSession = NO; - - void(^completion)(BOOL, NSString *, NSError *) = ^void(BOOL didPerformLogIn, NSString *authMethod, NSError *error) { - if (didPerformLogIn) { - [self->_logger startAuthMethod:authMethod]; - self->_state = FBSDKLoginManagerStatePerformingLogin; - } else if (error && [error.domain isEqualToString:SFVCCanceledLogin]) { - [self handleImplicitCancelOfLogIn]; - } else { - if (!error) { - error = [NSError errorWithDomain:FBSDKLoginErrorDomain code:FBSDKLoginUnknownErrorCode userInfo:nil]; - } - [self invokeHandler:nil error:error]; - } - }; - - 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; - } -} - -- (void)storeExpectedChallenge:(NSString *)challengeExpected -{ - [_keychainStore setString:challengeExpected - forKey:FBSDKExpectedChallengeKey - accessibility:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly]]; -} - -+ (NSString *)stringForChallenge { - return [FBSDKCrypto randomString:FBClientStateChallengeLength]; -} - -- (void)validateReauthentication:(FBSDKAccessToken *)currentToken withResult:(FBSDKLoginManagerLoginResult *)loginResult -{ - FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" - parameters:@{@"fields":@""} - tokenString:loginResult.token.tokenString - HTTPMethod:nil - flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; - [requestMe startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { - NSString *actualID = result[@"id"]; - if ([currentToken.userID isEqualToString:actualID]) { - [FBSDKAccessToken setCurrentAccessToken:loginResult.token]; - [self invokeHandler:loginResult error:nil]; - } else { - NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:userInfo setObject:error forKey:NSUnderlyingErrorKey]; - NSError *resultError = [NSError errorWithDomain:FBSDKLoginErrorDomain - code:FBSDKLoginUserMismatchErrorCode - userInfo:userInfo]; - [self invokeHandler:nil error:resultError]; - } - }]; -} - -#pragma mark - Test Methods - -- (void)setHandler:(FBSDKLoginManagerRequestTokenHandler)handler -{ - _handler = [handler copy]; -} - -- (void)setRequestedPermissions:(NSSet *)requestedPermissions -{ - _requestedPermissions = [requestedPermissions copy]; -} - -@end - -#pragma mark - - -@implementation FBSDKLoginManager (Native) - -- (void)performNativeLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSError*))handler -{ - [_logger willAttemptAppSwitchingBehavior]; - loginParams = [_logger parametersWithTimeStampAndClientState:loginParams forAuthMethod:FBSDKLoginManagerLoggerAuthMethod_Native]; - - NSString *scheme = ([FBSDKSettings appURLSchemeSuffix] ? @"fbauth2" : @"fbauth"); - NSMutableDictionary *mutableParams = [NSMutableDictionary dictionaryWithDictionary:loginParams]; - mutableParams[@"legacy_override"] = FBSDK_TARGET_PLATFORM_VERSION; - NSError *error; - NSURL *authURL = [FBSDKInternalUtility URLWithScheme:scheme host:@"authorize" path:@"" queryParameters:mutableParams error:&error]; - - 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 -{ - [_logger willAttemptAppSwitchingBehavior]; - - FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - BOOL useSafariViewController = [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameLogin]; - NSString *authMethod = (useSafariViewController ? FBSDKLoginManagerLoggerAuthMethod_SFVC : FBSDKLoginManagerLoggerAuthMethod_Browser); - - loginParams = [_logger parametersWithTimeStampAndClientState:loginParams forAuthMethod:authMethod]; - - NSURL *authURL = nil; - NSError *error; - NSURL *redirectURL = [FBSDKInternalUtility appURLWithHost:@"authorize" path:nil queryParameters:nil error:&error]; - if (!error) { - NSMutableDictionary *browserParams = [loginParams mutableCopy]; - [FBSDKInternalUtility dictionary:browserParams - setObject:redirectURL - forKey:@"redirect_uri"]; - authURL = [FBSDKInternalUtility facebookURLWithHostPrefix:@"m." - path:FBSDKOauthPath - queryParameters:browserParams - error:&error]; - } - if (authURL) { - void(^handlerWrapper)(BOOL, NSError*) = ^(BOOL didOpen, NSError *anError) { - if (handler) { - handler(didOpen, authMethod, anError); - } - }; - - 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 - sender:self - fromViewController:self.fromViewController - handler:handlerWrapper]; - } else { - [[FBSDKApplicationDelegate sharedInstance] openURL:authURL sender:self handler:handlerWrapper]; - } - } else { - error = error ?: [FBSDKError errorWithCode:FBSDKLoginUnknownErrorCode message:@"Failed to construct oauth browser url"]; - if (handler) { - handler(NO, nil, error); - } - } -} - -- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation -{ - BOOL isFacebookURL = [self canOpenURL:url forApplication:application sourceApplication:sourceApplication annotation:annotation]; - - if (!isFacebookURL && [self isPerformingLogin]) { - [self handleImplicitCancelOfLogIn]; - } - - if (isFacebookURL) { - NSDictionary *urlParameters = [FBSDKLoginUtility queryParamsFromLoginURL:url]; - id completer = [[FBSDKLoginURLCompleter alloc] initWithURLParameters:urlParameters appID:[FBSDKSettings appID]]; - - if (_logger == nil) { - _logger = [FBSDKLoginManagerLogger loggerFromParameters:urlParameters]; - } - - // any necessary strong reference is maintained by the FBSDKLoginURLCompleter handler - [completer completeLogIn:self withHandler:^(FBSDKLoginCompletionParameters *parameters) { - [self completeAuthentication:parameters expectChallenge:YES]; - }]; - } - - return isFacebookURL; -} - -- (BOOL)canOpenURL:(NSURL *)url - forApplication:(UIApplication *)application - sourceApplication:(NSString *)sourceApplication - annotation:(id)annotation -{ - // verify the URL is intended as a callback for the SDK's log in - BOOL isFacebookURL = [[url scheme] hasPrefix:[NSString stringWithFormat:@"fb%@", [FBSDKSettings appID]]] && - [[url host] isEqualToString:@"authorize"]; - - BOOL isExpectedSourceApplication = [sourceApplication hasPrefix:@"com.facebook"] || [sourceApplication hasPrefix:@"com.apple"] || [sourceApplication hasPrefix:@"com.burbn"]; - - return isFacebookURL && isExpectedSourceApplication; -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - if ([self isPerformingLogin]) { - [self handleImplicitCancelOfLogIn]; - } -} - -- (BOOL)isAuthenticationURL:(NSURL *)url -{ - return [url.path hasSuffix:FBSDKOauthPath]; -} - -@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 = [FBSDKLoginError errorForSystemPasswordChange:accountStoreError]; - } - if (!oauthToken && !accountStoreError) { - // This means iOS did not give an error nor granted, even after a renew. In order to - // surface this to users, stuff in our own error that can be inspected. - accountStoreError = [FBSDKLoginError errorForFailedLoginWithCode:FBSDKLoginSystemAccountAppDisabledErrorCode]; - } - - FBSDKLoginManagerSystemAccountState *state = [[FBSDKLoginManagerSystemAccountState alloc] init]; - state.didShowDialog = didShowDialog; - state.reauthorize = isReauthorize; - state.unTOSedDevice = isUnTOSedDevice; - - [self continueSystemLogInWithTokenString:oauthToken error:accountStoreError state:state]; - }]; -} - -- (void)continueSystemLogInWithTokenString:(NSString *)oauthToken error:(NSError *)accountStoreError state:(FBSDKLoginManagerSystemAccountState *)state -{ - id completer = nil; - - if (!oauthToken && accountStoreError.code == ACErrorAccountNotFound) { - // Even with the Accounts framework we use the Facebook app or Safari to log in if - // the user has not signed in. This condition can only be detected by attempting to - // log in because the framework does not otherwise indicate whether a Facebook account - // exists on the device unless the user has granted the app permissions. - - // Do this asynchronously so the logger correctly notes the system account was skipped - dispatch_async(dispatch_get_main_queue(), ^{ - [self fallbackToNativeBehavior]; - }); - } else if (oauthToken) { - completer = [[FBSDKLoginSystemAccountCompleter alloc] initWithTokenString:oauthToken appID:[FBSDKSettings appID]]; - } else { - completer = [[FBSDKLoginSystemAccountErrorCompleter alloc] initWithError:accountStoreError permissions:_requestedPermissions]; - } - - // any necessary strong reference is maintained by the FBSDKLoginSystemAccount[Error]Completer handler - [completer completeLogIn:self withHandler:^(FBSDKLoginCompletionParameters *parameters) { - NSString *eventName = [NSString stringWithFormat:@"%@ %@", - (state.isReauthorize ? @"Reauthorization" : @"Authorization"), - (parameters.error ? @"Error" : (parameters.accessTokenString ? @"succeeded" : @"cancelled")) - ]; - - [self completeAuthentication:parameters expectChallenge:NO]; - - if (eventName != nil) { - NSString *sortedPermissions = (parameters.permissions.count == 0) - ? @"" - : [[parameters.permissions.allObjects sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)] componentsJoinedByString:@","]; - - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNamePermissionsUILaunch - valueToSum:nil - parameters:@{ @"ui_dialog_type" : @"iOS integrated auth", - @"permissions_requested" : sortedPermissions } - accessToken:nil]; - - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNamePermissionsUIDismiss - valueToSum:nil - parameters:@{ @"ui_dialog_type" : @"iOS integrated auth", - FBSDKAppEventParameterDialogOutcome : eventName, - @"permissions_requested" : sortedPermissions } - accessToken:nil]; - } - }]; -} - -- (void)fallbackToNativeBehavior -{ - FBSDKLoginManagerLoginResult *skippedResult = [[FBSDKLoginManagerLoginResult alloc] initWithToken:nil - isCancelled:NO - grantedPermissions:nil - declinedPermissions:nil]; - skippedResult.isSkipped = YES; - [_logger endLoginWithResult:skippedResult error:nil]; - // any necessary strong reference will be maintained by the mechanism that is used - [self logInWithBehavior:FBSDKLoginBehaviorNative]; -} - -@end - -@implementation FBSDKLoginManager (WebDialog) - -- (void)performWebLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSError*))handler -{ - [FBSDKInternalUtility registerTransientObject:self]; - [FBSDKInternalUtility deleteFacebookCookies]; - NSMutableDictionary *parameters = [[NSMutableDictionary alloc] initWithDictionary:loginParams]; - parameters[@"title"] = NSLocalizedStringWithDefaultValue(@"LoginWeb.LogInTitle", - @"FacebookSDK", - [FBSDKInternalUtility bundleForStrings], - @"Log In", - @"Title of the web dialog that prompts the user to log in to Facebook."); - [FBSDKWebDialog showWithName:@"oauth" parameters: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 deleted file mode 100644 index edd7be6..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h +++ /dev/null @@ -1,64 +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 - -@class FBSDKAccessToken; - -/** - Describes the result of a login attempt. - */ -@interface FBSDKLoginManagerLoginResult : NSObject - -/** - the access token. - */ -@property (copy, nonatomic) FBSDKAccessToken *token; - -/** - whether the login was cancelled by the user. - */ -@property (readonly, nonatomic) BOOL isCancelled; - -/** - the set of permissions granted by the user in the associated request. - - inspect the token's permissions set for a complete list. - */ -@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; - -/** - Initializes a new instance. - @param token the access token - @param isCancelled whether the login was cancelled by the user - @param grantedPermissions the set of granted permissions - @param declinedPermissions the set of declined permissions - */ -- (instancetype)initWithToken:(FBSDKAccessToken *)token - isCancelled:(BOOL)isCancelled - grantedPermissions:(NSSet *)grantedPermissions - declinedPermissions:(NSSet *)declinedPermissions -NS_DESIGNATED_INITIALIZER; -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m deleted file mode 100644 index d03b022..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m +++ /dev/null @@ -1,56 +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 "FBSDKLoginManagerLoginResult+Internal.h" - -#import "FBSDKCoreKit+Internal.h" - -@implementation FBSDKLoginManagerLoginResult { - NSMutableDictionary *_mutableLoggingExtras; -} - -- (instancetype)init NS_UNAVAILABLE -{ - assert(0); -} - -- (instancetype)initWithToken:(FBSDKAccessToken *)token - isCancelled:(BOOL)isCancelled - grantedPermissions:(NSSet *)grantedPermissions - declinedPermissions:(NSSet *)declinedPermissions { - if ((self = [super init])) { - _mutableLoggingExtras = [NSMutableDictionary dictionary]; - _token = [token copy]; - _isCancelled = isCancelled; - _grantedPermissions = [grantedPermissions copy]; - _declinedPermissions = [declinedPermissions copy]; - }; - return self; -} - -- (void)addLoggingExtra:(id)object forKey:(id)key -{ - [FBSDKInternalUtility dictionary:_mutableLoggingExtras setObject:object forKey:key]; -} - -- (NSDictionary *)loggingExtras -{ - return [_mutableLoggingExtras copy]; -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h deleted file mode 100644 index 1792197..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h +++ /dev/null @@ -1,90 +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 FBSDKLoginTooltipViewDelegate; - -/** - - Represents a tooltip to be displayed next to a Facebook login button - to highlight features for new users. - - - The `FBSDKLoginButton` may display this view automatically. If you do - not use the `FBSDKLoginButton`, you can manually call one of the `present*` methods - as appropriate and customize behavior via `FBSDKLoginTooltipViewDelegate` delegate. - - By default, the `FBSDKLoginTooltipView` is not added to the superview until it is - determined the app has migrated to the new login experience. You can override this - (e.g., to test the UI layout) by implementing the delegate or setting `forceDisplay` to YES. - - */ -@interface FBSDKLoginTooltipView : FBSDKTooltipView - -/** the delegate */ -@property (nonatomic, weak) id delegate; - -/** if set to YES, the view will always be displayed and the delegate's - `loginTooltipView:shouldAppear:` will NOT be called. */ -@property (nonatomic, assign) BOOL forceDisplay; - -@end - -/** - @protocol - - The `FBSDKLoginTooltipViewDelegate` protocol defines the methods used to receive event - notifications from `FBSDKLoginTooltipView` objects. - */ -@protocol FBSDKLoginTooltipViewDelegate - -@optional - -/** - Asks the delegate if the tooltip view should appear - - @param view The tooltip view. - @param appIsEligible The value fetched from the server identifying if the app - is eligible for the new login experience. - - - Use this method to customize display behavior. - */ -- (BOOL)loginTooltipView:(FBSDKLoginTooltipView *)view shouldAppear:(BOOL)appIsEligible; - -/** - Tells the delegate the tooltip view will appear, specifically after it's been - added to the super view but before the fade in animation. - - @param view The tooltip view. - */ -- (void)loginTooltipViewWillAppear:(FBSDKLoginTooltipView *)view; - -/** - Tells the delegate the tooltip view will not appear (i.e., was not - added to the super view). - - @param view The tooltip view. - */ -- (void)loginTooltipViewWillNotAppear:(FBSDKLoginTooltipView *)view; - - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m deleted file mode 100644 index e1a17d4..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m +++ /dev/null @@ -1,62 +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 "FBSDKLoginTooltipView.h" - -#import "FBSDKCoreKit+Internal.h" - -@interface FBSDKLoginTooltipView () -@end - -@implementation FBSDKLoginTooltipView - -- (instancetype)init -{ - NSString *tooltipMessage = - NSLocalizedStringWithDefaultValue(@"LoginTooltip.Message", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"You're in control - choose what info you want to share with apps.", - @"The message of the FBSDKLoginTooltipView"); - return [super initWithTagline:nil message:tooltipMessage colorStyle:FBSDKTooltipColorStyleFriendlyBlue]; -} - -- (void)presentInView:(UIView *)view withArrowPosition:(CGPoint)arrowPosition direction:(FBSDKTooltipViewArrowDirection)arrowDirection -{ - if (self.forceDisplay) { - [super presentInView:view withArrowPosition:arrowPosition direction:arrowDirection]; - } else { - - [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *error) { - self.message = serverConfiguration.loginTooltipText; - BOOL shouldDisplay = serverConfiguration.loginTooltipEnabled; - if ([self.delegate respondsToSelector:@selector(loginTooltipView:shouldAppear:)]) { - shouldDisplay = [self.delegate loginTooltipView:self shouldAppear:shouldDisplay]; - } - if (shouldDisplay) { - [super presentInView:view withArrowPosition:arrowPosition direction:arrowDirection]; - if ([self.delegate respondsToSelector:@selector(loginTooltipViewWillAppear:)]) { - [self.delegate loginTooltipViewWillAppear:self]; - } - } else { - if ([self.delegate respondsToSelector:@selector(loginTooltipViewWillNotAppear:)]) { - [self.delegate loginTooltipViewWillNotAppear:self]; - } - } - }]; - } -} -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h deleted file mode 100644 index d77392c..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h +++ /dev/null @@ -1,136 +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 - -/** - FBSDKTooltipViewArrowDirection enum - - Passed on construction to determine arrow orientation. - */ -typedef NS_ENUM(NSUInteger, FBSDKTooltipViewArrowDirection) -{ - /** View is located above given point, arrow is pointing down. */ - FBSDKTooltipViewArrowDirectionDown = 0, - /** View is located below given point, arrow is pointing up. */ - FBSDKTooltipViewArrowDirectionUp = 1, -}; - -/** - FBSDKTooltipColorStyle enum - - Passed on construction to determine color styling. - */ -typedef NS_ENUM(NSUInteger, FBSDKTooltipColorStyle) -{ - /** Light blue background, white text, faded blue close button. */ - FBSDKTooltipColorStyleFriendlyBlue = 0, - /** Dark gray background, white text, light gray close button. */ - FBSDKTooltipColorStyleNeutralGray = 1, -}; - -/** - - Tooltip bubble with text in it used to display tips for UI elements, - with a pointed arrow (to refer to the UI element). - - - - The tooltip fades in and will automatically fade out. See `displayDuration`. - */ -@interface FBSDKTooltipView : UIView - -/** - Gets or sets the amount of time in seconds the tooltip should be displayed. - Set this to zero to make the display permanent until explicitly dismissed. - Defaults to six seconds. - */ -@property (nonatomic, assign) CFTimeInterval displayDuration; - -/** - Gets or sets the color style after initialization. - Defaults to value passed to -initWithTagline:message:colorStyle:. - */ -@property (nonatomic, assign) FBSDKTooltipColorStyle colorStyle; - -/** - Gets or sets the message. - */ -@property (nonatomic, copy) 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; - -/** - Designated initializer. - - @param tagline First part of the label, that will be highlighted with different color. Can be nil. - - @param message Main message to display. - - @param colorStyle Color style to use for tooltip. - - - - If you need to show a tooltip for login, consider using the `FBSDKLoginTooltipView` view. - - - @see FBSDKLoginTooltipView - */ -- (instancetype)initWithTagline:(NSString *)tagline message:(NSString *)message colorStyle:(FBSDKTooltipColorStyle)colorStyle; - -/** - Show tooltip at the top or at the bottom of given view. - Tooltip will be added to anchorView.window.rootViewController.view - - @param anchorView view to show at, must be already added to window view hierarchy, in order to decide - where tooltip will be shown. (If there's not enough space at the top of the anchorView in window bounds - - tooltip will be shown at the bottom of it) - - - - Use this method to present the tooltip with automatic positioning or - use -presentInView:withArrowPosition:direction: for manual positioning - If anchorView is nil or has no window - this method does nothing. - */ -- (void)presentFromView:(UIView *)anchorView; - -/** - Adds tooltip to given view, with given position and arrow direction. - - @param view View to be used as superview. - - @param arrowPosition Point in view's cordinates, where arrow will be pointing - - @param arrowDirection whenever arrow should be pointing up (message bubble is below the arrow) or - down (message bubble is above the arrow). - */ -- (void)presentInView:(UIView *)view withArrowPosition:(CGPoint)arrowPosition direction:(FBSDKTooltipViewArrowDirection)arrowDirection; - -/** - Remove tooltip manually. - - - - Calling this method isn't necessary - tooltip will dismiss itself automatically after the `displayDuration`. - */ -- (void)dismiss; - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m deleted file mode 100644 index 0b1d5e9..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m +++ /dev/null @@ -1,603 +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 "FBSDKTooltipView.h" - -#import - -#import "FBSDKCoreKit+Internal.h" - -static const CGFloat kTransitionDuration = 0.3; -static const CGFloat kZoomOutScale = 0.001f; -static const CGFloat kZoomInScale = 1.1f; -static const CGFloat kZoomBounceScale = 0.98f; - -static const CGFloat kNUXRectInset = 6; -static const CGFloat kNUXBubbleMargin = 17 - kNUXRectInset; -static const CGFloat kNUXPointMargin = -3; -static const CGFloat kNUXCornerRadius = 4; -static const CGFloat kNUXStrokeLineWidth = 0.5f; -static const CGFloat kNUXSideCap = 6; -static const CGFloat kNUXFontSize = 10; -static const CGFloat kNUXCrossGlyphSize = 11; - -static CGMutablePathRef _fbsdkCreateUpPointingBubbleWithRect(CGRect rect, CGFloat arrowMidpoint, CGFloat arrowHeight, CGFloat radius); -static CGMutablePathRef _fbsdkCreateDownPointingBubbleWithRect(CGRect rect, CGFloat arrowMidpoint, CGFloat arrowHeight, CGFloat radius); - -#pragma mark - - -@implementation FBSDKTooltipView -{ - CGPoint _positionInView; - CFAbsoluteTime _displayTime; - CFTimeInterval _minimumDisplayDuration; - UILabel *_textLabel; - UITapGestureRecognizer *_insideTapGestureRecognizer; - CGFloat _leftWidth; - CGFloat _rightWidth; - CGFloat _arrowMidpoint; - BOOL _pointingUp; - BOOL _isFadingOut; - // style - UIColor *_innerStrokeColor; - CGFloat _arrowHeight; - CGFloat _textPadding; - CGFloat _maximumTextWidth; - CGFloat _verticalTextOffset; - CGFloat _verticalCrossOffset; - FBSDKTooltipColorStyle _colorStyle; - NSArray *_gradientColors; - UIColor *_crossCloseGlyphColor; -} - -- (instancetype)initWithTagline:(NSString *)tagline message:(NSString *)message colorStyle:(FBSDKTooltipColorStyle)colorStyle -{ - self = [super initWithFrame:CGRectZero]; - if (self) { - // Define style - _textLabel = [[UILabel alloc] initWithFrame:CGRectZero]; - _textLabel.backgroundColor = [UIColor clearColor]; - _textLabel.autoresizingMask = UIViewAutoresizingFlexibleRightMargin; - _textLabel.numberOfLines = 0; - _textLabel.font = [UIFont boldSystemFontOfSize: kNUXFontSize]; - _textLabel.textAlignment = NSTextAlignmentLeft; - _arrowHeight = 7; - _textPadding = 10; - _maximumTextWidth = 185; - _verticalCrossOffset = - 2.5f; - _verticalTextOffset = 0; - _displayDuration = 6.0; - [self setColorStyle:colorStyle]; - - _message = [message copy]; - _tagline = [tagline copy]; - [self setMessage:message tagline:tagline]; - [self addSubview:_textLabel]; - - _insideTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapInTooltip:)]; - [self addGestureRecognizer:_insideTapGestureRecognizer]; - - self.opaque = NO; - self.backgroundColor = [UIColor clearColor]; - self.layer.needsDisplayOnBoundsChange = YES; - self.layer.shadowColor = [UIColor blackColor].CGColor; - self.layer.shadowOpacity = 0.5f; - self.layer.shadowOffset = CGSizeMake(0.0f, 2.0f); - self.layer.shadowRadius = 5.0f; - self.layer.masksToBounds = NO; - } - return self; -} - -- (void)dealloc -{ - [_insideTapGestureRecognizer removeTarget:self action:NULL]; -} - -#pragma mark - Public Methods - -- (void)setMessage:(NSString *)message -{ - if (![message isEqualToString:_message]) { - _message = [message copy]; - [self setMessage:_message tagline:self.tagline]; - } -} - -- (void)setTagline:(NSString *)tagline -{ - if (![tagline isEqualToString:_tagline]) { - _tagline = [tagline copy]; - [self setMessage:self.message tagline:_tagline]; - } -} - -#pragma mark Presentation - -- (void)presentFromView:(UIView *)anchorView -{ - UIView *superview = anchorView.window.rootViewController.view; - if (!superview) { - return; - } - - // By default - attach to the top, pointing down - CGPoint position = CGPointMake(CGRectGetMidX(anchorView.bounds), CGRectGetMinY(anchorView.bounds)); - CGPoint positionInSuperview = [superview convertPoint:position fromView:anchorView]; - FBSDKTooltipViewArrowDirection direction = FBSDKTooltipViewArrowDirectionDown; - - // If not enough space to point up from top of anchor view - point up to it's bottom - CGFloat bubbleHeight = CGRectGetHeight(_textLabel.bounds) + _verticalTextOffset + _textPadding * 2; - if (positionInSuperview.y - bubbleHeight - kNUXBubbleMargin < CGRectGetMinY(superview.bounds)) { - direction = FBSDKTooltipViewArrowDirectionUp; - position = CGPointMake(CGRectGetMidX(anchorView.bounds), CGRectGetMaxY(anchorView.bounds)); - positionInSuperview = [superview convertPoint:position fromView:anchorView]; - } - - [self presentInView:superview withArrowPosition:positionInSuperview direction:direction]; -} - -- (void)presentInView:(UIView *)view withArrowPosition:(CGPoint)arrowPosition direction:(FBSDKTooltipViewArrowDirection)arrowDirection -{ - _pointingUp = arrowDirection == FBSDKTooltipViewArrowDirectionUp; - _positionInView = arrowPosition; - self.frame = [self layoutSubviewsAndDetermineFrame]; - - // Add to view, while invisible. - self.hidden = YES; - if ([self superview]) { - [self removeFromSuperview]; - } - [view addSubview:self]; - - // Layout & schedule dismissal. - _displayTime = CFAbsoluteTimeGetCurrent(); - _isFadingOut = NO; - [self scheduleAutomaticFadeout]; - [self layoutSubviews]; - - [self animateFadeIn]; -} - -- (void)dismiss -{ - if (_isFadingOut) { - return; - } - _isFadingOut = YES; - - [self animateFadeOutWithCompletion:^{ - [self removeFromSuperview]; - [self cancelAllScheduledFadeOutMethods]; - self->_isFadingOut = NO; - }]; -} - -#pragma mark Style - -- (FBSDKTooltipColorStyle)colorStyle -{ - return _colorStyle; -} - -- (void)setColorStyle:(FBSDKTooltipColorStyle)colorStyle -{ - _colorStyle = colorStyle; - switch (colorStyle) { - case FBSDKTooltipColorStyleNeutralGray: - _gradientColors = @[ - (id)(FBSDKUIColorWithRGB(0x51, 0x50, 0x4f).CGColor), - (id)(FBSDKUIColorWithRGB(0x2d, 0x2c, 0x2c).CGColor) - ]; - _innerStrokeColor = [UIColor colorWithWhite:0.13f alpha:1.0f]; - _crossCloseGlyphColor = [UIColor colorWithWhite:0.69f alpha:1.0f]; - break; - - case FBSDKTooltipColorStyleFriendlyBlue: - default: - _gradientColors = @[ - (id)(FBSDKUIColorWithRGB(0x6e, 0x9c, 0xf5).CGColor), - (id)(FBSDKUIColorWithRGB(0x49, 0x74, 0xc6).CGColor) - ]; - _innerStrokeColor = [UIColor colorWithRed:0.12f green:0.26f blue:0.55f alpha:1.0f]; - _crossCloseGlyphColor = [UIColor colorWithRed:0.60f green:0.73f blue:1.0f alpha:1.0f]; - break; - } - - _textLabel.textColor = [UIColor whiteColor]; -} - -#pragma mark - Private Methods -#pragma mark Animation - -- (void)animateFadeIn -{ - // Prepare Animation: Zoom in with bounce. Keep the arrow point in place. - // Set initial transform (zoomed out) & become visible. - CGFloat centerPos = self.bounds.size.width / 2.0; - CGFloat zoomOffsetX = (centerPos - _arrowMidpoint) * (kZoomOutScale - 1.0f); - CGFloat zoomOffsetY = -0.5f * self.bounds.size.height * (kZoomOutScale - 1.0f); - if (_pointingUp) { - zoomOffsetY = -zoomOffsetY; - } - self.layer.transform = fbsdkdfl_CATransform3DConcat(fbsdkdfl_CATransform3DMakeScale(kZoomOutScale, kZoomOutScale, kZoomOutScale), - fbsdkdfl_CATransform3DMakeTranslation(zoomOffsetX, zoomOffsetY, 0)); - self.hidden = NO; - - // Prepare animation steps - // 1st Step. - void (^zoomIn)(void) = ^{ - self.alpha = 1.0; - - CGFloat newZoomOffsetX = (centerPos - self->_arrowMidpoint) * (kZoomInScale - 1.0f); - CGFloat newZoomOffsetY = -0.5f * self.bounds.size.height * (kZoomInScale - 1.0f); - if (self->_pointingUp) { - newZoomOffsetY = -newZoomOffsetY; - } - - CATransform3D scale = fbsdkdfl_CATransform3DMakeScale(kZoomInScale, kZoomInScale, kZoomInScale); - CATransform3D translate =fbsdkdfl_CATransform3DMakeTranslation(newZoomOffsetX, newZoomOffsetY, 0); - self.layer.transform = fbsdkdfl_CATransform3DConcat(scale, translate); - }; - - // 2nd Step. - void (^bounceZoom)(void) = ^{ - CGFloat centerPos2 = self.bounds.size.width / 2.0; - CGFloat zoomOffsetX2 = (centerPos2 - self->_arrowMidpoint) * (kZoomBounceScale - 1.0f); - CGFloat zoomOffsetY2 = -0.5f * self.bounds.size.height * (kZoomBounceScale - 1.0f); - if (self->_pointingUp) { - zoomOffsetY2 = -zoomOffsetY2; - } - self.layer.transform = fbsdkdfl_CATransform3DConcat(fbsdkdfl_CATransform3DMakeScale(kZoomBounceScale, kZoomBounceScale, kZoomBounceScale), - fbsdkdfl_CATransform3DMakeTranslation(zoomOffsetX2, zoomOffsetY2, 0)); - }; - - // 3rd Step. - void (^normalizeZoom)(void) = ^{ - self.layer.transform = fbsdkdfl_CATransform3DIdentity; - }; - - // Animate 3 steps sequentially - [UIView animateWithDuration:kTransitionDuration/1.5 - delay:0 - options:UIViewAnimationOptionCurveEaseInOut - animations:zoomIn - completion:^(BOOL finished) { - [UIView animateWithDuration:kTransitionDuration/2.2 - animations:bounceZoom - completion:^(BOOL innerFinished) { - [UIView animateWithDuration:kTransitionDuration/5 - animations:normalizeZoom]; - }]; - }]; -} - -- (void) animateFadeOutWithCompletion: (void(^)(void)) completionHandler -{ - [UIView animateWithDuration:0.3 - delay:0 - options:UIViewAnimationOptionCurveEaseInOut - animations:^{ - self.alpha = 0.0; - } - completion:^(BOOL complete) { - if(completionHandler) - completionHandler(); - }]; -} - -#pragma mark Gestures - -- (void)onTapInTooltip:(UIGestureRecognizer*)sender -{ - // ignore incomplete tap gestures - if (sender.state != UIGestureRecognizerStateEnded) { - return; - } - - // fade out the tooltip view right away - [self dismiss]; -} - -#pragma mark Drawing - -CGMutablePathRef _fbsdkCreateUpPointingBubbleWithRect(CGRect rect, CGFloat arrowMidpoint, CGFloat arrowHeight, CGFloat radius) -{ - CGMutablePathRef path = CGPathCreateMutable(); - CGFloat arrowHalfWidth = arrowHeight; - // start with arrow - CGPathMoveToPoint(path, NULL, arrowMidpoint - arrowHalfWidth, CGRectGetMinY(rect)); - CGPathAddLineToPoint(path, NULL, arrowMidpoint, CGRectGetMinY(rect) - arrowHeight); - CGPathAddLineToPoint(path, NULL, arrowMidpoint + arrowHalfWidth, CGRectGetMinY(rect)); - - // rest of curved rectangle - CGPathAddArcToPoint(path, NULL, CGRectGetMaxX(rect), CGRectGetMinY(rect), CGRectGetMaxX(rect), CGRectGetMaxY(rect), radius); - CGPathAddArcToPoint(path, NULL, CGRectGetMaxX(rect), CGRectGetMaxY(rect), CGRectGetMinX(rect), CGRectGetMaxY(rect), radius); - CGPathAddArcToPoint(path, NULL, CGRectGetMinX(rect), CGRectGetMaxY(rect), CGRectGetMinX(rect), CGRectGetMinY(rect), radius); - CGPathAddArcToPoint(path, NULL, CGRectGetMinX(rect), CGRectGetMinY(rect), CGRectGetMaxX(rect), CGRectGetMinY(rect), radius); - CGPathCloseSubpath(path); - return path; -} - -CGMutablePathRef _fbsdkCreateDownPointingBubbleWithRect(CGRect rect, CGFloat arrowMidpoint, CGFloat arrowHeight, CGFloat radius) -{ - CGMutablePathRef path = CGPathCreateMutable(); - CGFloat arrowHalfWidth = arrowHeight; - - // start with arrow - CGPathMoveToPoint(path, NULL, arrowMidpoint + arrowHalfWidth, CGRectGetMaxY(rect)); - CGPathAddLineToPoint(path, NULL, arrowMidpoint, CGRectGetMaxY(rect) + arrowHeight); - CGPathAddLineToPoint(path, NULL, arrowMidpoint - arrowHalfWidth, CGRectGetMaxY(rect)); - - // rest of curved rectangle - CGPathAddArcToPoint(path, NULL, CGRectGetMinX(rect), CGRectGetMaxY(rect), CGRectGetMinX(rect), CGRectGetMinY(rect), radius); - CGPathAddArcToPoint(path, NULL, CGRectGetMinX(rect), CGRectGetMinY(rect), CGRectGetMaxX(rect), CGRectGetMinY(rect), radius); - CGPathAddArcToPoint(path, NULL, CGRectGetMaxX(rect), CGRectGetMinY(rect), CGRectGetMaxX(rect), CGRectGetMaxY(rect), radius); - CGPathAddArcToPoint(path, NULL, CGRectGetMaxX(rect), CGRectGetMaxY(rect), CGRectGetMinX(rect), CGRectGetMaxY(rect), radius); - CGPathCloseSubpath(path); - return path; -} - -static CGMutablePathRef _createCloseCrossGlyphWithRect(CGRect rect) -{ - CGFloat lineThickness = 0.20f * CGRectGetHeight(rect); - - // One rectangle - CGMutablePathRef path1 = CGPathCreateMutable(); - CGPathMoveToPoint(path1, NULL, CGRectGetMinX(rect), CGRectGetMinY(rect) + lineThickness); - CGPathAddLineToPoint(path1, NULL, CGRectGetMinX(rect) + lineThickness, CGRectGetMinY(rect)); - CGPathAddLineToPoint(path1, NULL, CGRectGetMaxX(rect), CGRectGetMaxY(rect) - lineThickness); - CGPathAddLineToPoint(path1, NULL, CGRectGetMaxX(rect) - lineThickness, CGRectGetMaxY(rect)); - CGPathCloseSubpath(path1); - - // 2nd rectangle - mirrored horizontally - CGMutablePathRef path2 = CGPathCreateMutable(); - CGPathMoveToPoint(path2, NULL, CGRectGetMinX(rect), CGRectGetMaxY(rect) - lineThickness); - CGPathAddLineToPoint(path2, NULL, CGRectGetMaxX(rect) - lineThickness, CGRectGetMinY(rect)); - CGPathAddLineToPoint(path2, NULL, CGRectGetMaxX(rect), CGRectGetMinY(rect) + lineThickness); - CGPathAddLineToPoint(path2, NULL, CGRectGetMinX(rect) + lineThickness, CGRectGetMaxY(rect)); - CGPathCloseSubpath(path2); - - CGMutablePathRef groupedPath = CGPathCreateMutable(); - CGPathAddPath(groupedPath, NULL, path1); - CGPathAddPath(groupedPath, NULL, path2); - CFRelease(path1); - CFRelease(path2); - - return groupedPath; -} - -- (void)drawRect:(CGRect)rect -{ - // Ignore dirty rect and just redraw the entire nux bubble - CGFloat arrowSideMargin = 1 + 0.5f * MAX(kNUXRectInset, _arrowHeight); - CGFloat arrowYMarginOffset = _pointingUp ? arrowSideMargin : kNUXRectInset; - CGFloat halfStroke = kNUXStrokeLineWidth / 2.0; - CGRect outerRect = CGRectMake(kNUXRectInset + halfStroke, - arrowYMarginOffset + halfStroke, - self.bounds.size.width - 2 * kNUXRectInset - kNUXStrokeLineWidth, - self.bounds.size.height - kNUXRectInset - arrowSideMargin - kNUXStrokeLineWidth); - outerRect = CGRectInset(outerRect, 5, 5); - CGRect innerRect = CGRectInset(outerRect, kNUXStrokeLineWidth, kNUXStrokeLineWidth); - CGRect fillRect = CGRectInset(innerRect, kNUXStrokeLineWidth/2.0, kNUXStrokeLineWidth/2.0); - CGFloat closeCrossGlyphPositionY = MIN(CGRectGetMinY(fillRect) + _textPadding + _verticalCrossOffset, - CGRectGetMidY(fillRect) - 0.5f * kNUXCrossGlyphSize); - CGRect closeCrossGlyphRect = CGRectMake(CGRectGetMaxX(fillRect) - 2 * kNUXFontSize, closeCrossGlyphPositionY, - kNUXCrossGlyphSize, kNUXCrossGlyphSize); - - // setup and get paths - CGContextRef context = UIGraphicsGetCurrentContext(); - CGMutablePathRef outerPath; - CGMutablePathRef innerPath; - CGMutablePathRef fillPath; - CGMutablePathRef crossCloseGlyphPath = _createCloseCrossGlyphWithRect(closeCrossGlyphRect); - CGRect gradientRect = fillRect; - if (_pointingUp) { - outerPath = _fbsdkCreateUpPointingBubbleWithRect(outerRect, - _arrowMidpoint, _arrowHeight, - kNUXCornerRadius + kNUXStrokeLineWidth); - innerPath = _fbsdkCreateUpPointingBubbleWithRect(innerRect, - _arrowMidpoint, _arrowHeight, - kNUXCornerRadius); - fillPath = _fbsdkCreateUpPointingBubbleWithRect(fillRect, - _arrowMidpoint, _arrowHeight, - kNUXCornerRadius - kNUXStrokeLineWidth); - gradientRect.origin.y -= _arrowHeight; - gradientRect.size.height += _arrowHeight; - } else { - outerPath = _fbsdkCreateDownPointingBubbleWithRect(outerRect, - _arrowMidpoint, _arrowHeight, - kNUXCornerRadius + kNUXStrokeLineWidth); - innerPath = _fbsdkCreateDownPointingBubbleWithRect(innerRect, - _arrowMidpoint, _arrowHeight, - kNUXCornerRadius); - fillPath = _fbsdkCreateDownPointingBubbleWithRect(fillRect, - _arrowMidpoint, _arrowHeight, - kNUXCornerRadius - kNUXStrokeLineWidth); - gradientRect.size.height += _arrowHeight; - } - self.layer.shadowPath = outerPath; - - // This tooltip has two borders, so draw two strokes and a fill. - CGColorRef strokeColor = _innerStrokeColor.CGColor; - CGContextSaveGState(context); - CGContextSetStrokeColorWithColor(context, strokeColor); - CGContextSetLineWidth(context, kNUXStrokeLineWidth); - CGContextAddPath(context, innerPath); - CGContextStrokePath(context); - CGContextAddPath(context, fillPath); - CGContextClip(context); - CGColorSpaceRef rgbColorspace = CGColorSpaceCreateDeviceRGB(); - CGGradientRef gradient = CGGradientCreateWithColors(rgbColorspace, (CFArrayRef)_gradientColors, nil); - CGColorSpaceRelease(rgbColorspace); - CGPoint start = CGPointMake(gradientRect.origin.x, gradientRect.origin.y); - CGPoint end = CGPointMake(gradientRect.origin.x, CGRectGetMaxY(gradientRect)); - CGContextDrawLinearGradient(context, gradient, start, end, 0); - CGContextAddPath(context, crossCloseGlyphPath); - CGContextSetFillColorWithColor(context, _crossCloseGlyphColor.CGColor); - CGContextFillPath(context); - CGGradientRelease(gradient); - CGContextRestoreGState(context); - CFRelease(outerPath); - CFRelease(innerPath); - CFRelease(fillPath); - CFRelease(crossCloseGlyphPath); -} - -#pragma mark Layout - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - // We won't set the frame in layoutSubviews to avoid potential infinite loops. - // Frame is set in -presentInView:withArrowPosition:direction: method. - [self layoutSubviewsAndDetermineFrame]; -} - -- (CGRect)layoutSubviewsAndDetermineFrame -{ - // Compute the positioning of the arrow. - CGRect screenBounds = [[UIScreen mainScreen] bounds]; - UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; - if (!UIInterfaceOrientationIsPortrait(orientation)) { - screenBounds = CGRectMake(0, 0, screenBounds.size.height, screenBounds.size.width); - } - CGFloat arrowHalfWidth = _arrowHeight; - CGFloat arrowXPos = _positionInView.x - arrowHalfWidth; - arrowXPos = MAX(arrowXPos, kNUXSideCap + kNUXBubbleMargin); - arrowXPos = MIN(arrowXPos, screenBounds.size.width - kNUXBubbleMargin - kNUXSideCap - 2 * arrowHalfWidth); - _positionInView = CGPointMake(arrowXPos + arrowHalfWidth, _positionInView.y); - - CGFloat arrowYMarginOffset = _pointingUp ? MAX(kNUXRectInset, _arrowHeight) : kNUXRectInset; - - // Set the lock image frame. - CGFloat xPos = kNUXRectInset + _textPadding + kNUXStrokeLineWidth; - CGFloat yPos = arrowYMarginOffset + kNUXStrokeLineWidth + _textPadding; - - // Set the text label frame. - _textLabel.frame = CGRectMake(xPos, - yPos + _verticalTextOffset, // sizing function may not return desired height exactly - CGRectGetWidth(_textLabel.bounds), - CGRectGetHeight(_textLabel.bounds)); - - // Determine the size of the nux bubble. - CGFloat bubbleHeight = CGRectGetHeight(_textLabel.bounds) + _verticalTextOffset + _textPadding * 2; - CGFloat crossGlyphWidth = 2 * kNUXFontSize; - CGFloat bubbleWidth = CGRectGetWidth(_textLabel.bounds) + _textPadding * 2 + kNUXStrokeLineWidth * 2 + crossGlyphWidth; - - // Compute the widths to the left and right of the arrow. - _leftWidth = roundf(0.5f * (bubbleWidth - 2 * arrowHalfWidth)); - _rightWidth = _leftWidth; - CGFloat originX = arrowXPos - _leftWidth; - if (originX < kNUXBubbleMargin) { - CGFloat xShift = kNUXBubbleMargin - originX; - originX += xShift; - _leftWidth -= xShift; - _rightWidth += xShift; - } else if (originX + bubbleWidth > screenBounds.size.width - kNUXBubbleMargin) { - CGFloat xShift = originX + bubbleWidth - (screenBounds.size.width - kNUXBubbleMargin); - originX -= xShift; - _leftWidth += xShift; - _rightWidth -= xShift; - } - - _arrowMidpoint = _positionInView.x - originX + kNUXRectInset; - - // Set the frame for the view. - CGFloat nuxWidth = bubbleWidth + 2 * kNUXRectInset; - CGFloat nuxHeight = bubbleHeight + kNUXRectInset + MAX(kNUXRectInset, _arrowHeight) + 2 * kNUXStrokeLineWidth; - CGFloat yOrigin = 0; - if (_pointingUp) { - yOrigin = _positionInView.y + kNUXPointMargin - MAX(0, kNUXRectInset - _arrowHeight); - } else { - yOrigin = _positionInView.y - nuxHeight - kNUXPointMargin + MAX(0, kNUXRectInset - _arrowHeight); - } - - return CGRectMake(originX - kNUXRectInset, - yOrigin, - nuxWidth, - nuxHeight); -} - -#pragma mark Message & Tagline - -- (void)setMessage:(NSString *)message tagline:(NSString *)tagline -{ - message = message ?: @""; - // Ensure tagline is empty string or ends with space - tagline = tagline ?: @""; - if ([tagline length] && ![tagline hasSuffix:@" "]) - tagline = [tagline stringByAppendingString:@" "]; - - // Concatenate tagline & main message - message = [tagline stringByAppendingString:message]; - - NSRange fullRange = NSMakeRange(0, message.length); - NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString: message]; - - UIFont *font=[UIFont boldSystemFontOfSize:kNUXFontSize]; - [attrString addAttribute:NSFontAttributeName value:font range:fullRange]; - [attrString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:fullRange]; - if ([tagline length]) { - [attrString addAttribute:NSForegroundColorAttributeName value: FBSDKUIColorWithRGB(0x6D, 0x87, 0xC7) range:NSMakeRange(0, [tagline length])]; - } - - _textLabel.attributedText = attrString; - - CGSize textLabelSize = [_textLabel sizeThatFits:CGSizeMake(_maximumTextWidth, MAXFLOAT)]; - _textLabel.bounds = CGRectMake(0, 0, textLabelSize.width, textLabelSize.height); - self.frame = [self layoutSubviewsAndDetermineFrame]; - [self setNeedsDisplay]; -} - -#pragma mark Auto Dismiss Timeout - -- (void)scheduleAutomaticFadeout -{ - [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(scheduleFadeoutRespectingMinimumDisplayDuration) object:nil]; - - if (_displayDuration > 0.0 && [self superview]) { - CFTimeInterval intervalAlreadyDisplaying = CFAbsoluteTimeGetCurrent() - _displayTime; - CFTimeInterval timeRemainingBeforeAutomaticFadeout = _displayDuration - intervalAlreadyDisplaying; - if (timeRemainingBeforeAutomaticFadeout > 0.0) { - [self performSelector:@selector(scheduleFadeoutRespectingMinimumDisplayDuration) withObject:nil afterDelay:timeRemainingBeforeAutomaticFadeout]; - } else { - [self scheduleFadeoutRespectingMinimumDisplayDuration]; - } - } -} - -- (void)scheduleFadeoutRespectingMinimumDisplayDuration -{ - CFTimeInterval intervalAlreadyDisplaying = CFAbsoluteTimeGetCurrent() - _displayTime; - CFTimeInterval remainingDisplayTime = _minimumDisplayDuration - intervalAlreadyDisplaying; - if (remainingDisplayTime > 0.0) { - [self performSelector:@selector(dismiss) withObject:nil afterDelay:remainingDisplayTime]; - } else { - [self dismiss]; - } -} - -- (void)cancelAllScheduledFadeOutMethods -{ - [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(scheduleFadeoutRespectingMinimumDisplayDuration) object:nil]; - [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(dismiss) object:nil]; -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginCodeInfo+Internal.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginCodeInfo+Internal.h deleted file mode 100644 index cf021e1..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginCodeInfo+Internal.h +++ /dev/null @@ -1,43 +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 "FBSDKDeviceLoginCodeInfo.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface FBSDKDeviceLoginCodeInfo () - -/*! - @abstract Initializes a new instance - @param identifier the unique id for this login flow instance. - @param loginCode the short "user_code". - @param verificationURL the verification URL. - @param expirationDate expiration date. - @param pollingInterval time between polling. - */ -- (instancetype)initWithIdentifier:(NSString *)identifier - loginCode:(NSString *)loginCode - verificationURL:(NSURL *)verificationURL - expirationDate:(NSDate *)expirationDate - pollingInterval:(NSUInteger)pollingInterval NS_DESIGNATED_INITIALIZER; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.h deleted file mode 100644 index 4fc0a2d..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.h +++ /dev/null @@ -1,29 +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" - -NS_ASSUME_NONNULL_BEGIN - -@interface FBSDKDeviceLoginError : FBSDKError - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.m deleted file mode 100644 index 7654ab4..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.m +++ /dev/null @@ -1,30 +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 "FBSDKDeviceLoginError.h" - -#import "FBSDKLoginConstants.h" - -@implementation FBSDKDeviceLoginError - -+ (NSString *)errorDomain -{ - return FBSDKLoginErrorDomain; -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h deleted file mode 100644 index 6d0238d..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h +++ /dev/null @@ -1,39 +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 "FBSDKLoginCompletion.h" - -@interface FBSDKLoginCompletionParameters () - -@property (nonatomic, copy, readwrite) NSString *accessTokenString; - -@property (nonatomic, copy, readwrite) NSSet *permissions; -@property (nonatomic, copy, readwrite) NSSet *declinedPermissions; - -@property (nonatomic, copy, readwrite) NSString *appID; -@property (nonatomic, copy, readwrite) NSString *userID; - -@property (nonatomic, copy, readwrite) NSError *error; - -@property (nonatomic, readwrite, getter=isSystemAccount) BOOL systemAccount; -@property (nonatomic, copy, readwrite) NSDate *expirationDate; -@property (nonatomic, copy, readwrite) NSDate *dataAccessExpirationDate; - -@property (nonatomic, copy, readwrite) NSString *challenge; - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h deleted file mode 100644 index 448f75e..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h +++ /dev/null @@ -1,98 +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 - -@class FBSDKLoginManager; - -/** - Structured interface for accessing the parameters used to complete a log in request. - If \c accessTokenString is non-nil, the authentication succeeded. If \c error is - non-nil the request failed. If both are \c nil, the request was cancelled. - */ -@interface FBSDKLoginCompletionParameters : NSObject - -- (instancetype)init NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithError:(NSError *)error; - -@property (nonatomic, copy, readonly) NSString *accessTokenString; - -@property (nonatomic, copy, readonly) NSSet *permissions; -@property (nonatomic, copy, readonly) NSSet *declinedPermissions; - -@property (nonatomic, copy, readonly) NSString *appID; -@property (nonatomic, copy, readonly) NSString *userID; - -@property (nonatomic, copy, readonly) NSError *error; - -@property (nonatomic, readonly, getter=isSystemAccount) BOOL systemAccount; -@property (nonatomic, copy, readonly) NSDate *expirationDate; -@property (nonatomic, copy, readonly) NSDate *dataAccessExpirationDate; - -@property (nonatomic, copy, readonly) NSString *challenge; -@end - -@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; - -@end - -#pragma mark - Completers - -/** - Extracts the log in completion parameters from the \p parameters dictionary, - which must contain the parsed result of the return URL query string. - - The \c user_id key is first used to derive the User ID. If that fails, \c signed_request - is used. - - Completion occurs synchronously. - */ -@interface FBSDKLoginURLCompleter : NSObject - -- (instancetype)initWithURLParameters:(NSDictionary *)parameters appID:(NSString *)appID NS_DESIGNATED_INITIALIZER; - -@end - -/** - Requests the User ID, granted permissions and declined permissions from the server - using the given access token, which must occur before authentication can be completed. - - Completion occurs asynchronously. - */ -@interface FBSDKLoginSystemAccountCompleter : NSObject - -- (instancetype)initWithTokenString:(NSString *)tokenString appID:(NSString *)appID NS_DESIGNATED_INITIALIZER; - -@end - -/** - Converts an Accounts framework error in to an error or cancellation result - - Completion occurs synchronously. - */ -@interface FBSDKLoginSystemAccountErrorCompleter : NSObject - -- (instancetype)initWithError:(NSError *)accountStoreError permissions:(NSSet *)permissions NS_DESIGNATED_INITIALIZER; - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m deleted file mode 100644 index 7c0624d..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m +++ /dev/null @@ -1,332 +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 "FBSDKLoginCompletion+Internal.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKLoginConstants.h" -#import "FBSDKLoginError.h" -#import "FBSDKLoginManager+Internal.h" -#import "FBSDKLoginUtility.h" - -static void FBSDKLoginRequestMeAndPermissions(FBSDKLoginCompletionParameters *parameters, void(^completionBlock)(void)) -{ - __block NSUInteger pendingCount = 1; - void(^didCompleteBlock)(void) = ^{ - if (--pendingCount == 0) { - completionBlock(); - } - }; - - NSString *tokenString = parameters.accessTokenString; - FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; - - pendingCount++; - FBSDKGraphRequest *userIDRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" - parameters:@{ @"fields" : @"id" } - tokenString:tokenString - HTTPMethod:nil - flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; - - [connection addRequest:userIDRequest completionHandler:^(FBSDKGraphRequestConnection *requestConnection, - id result, - NSError *error) { - parameters.userID = [result objectForKey:@"id"]; - if (error) { - parameters.error = error; - } - didCompleteBlock(); - }]; - - pendingCount++; - FBSDKGraphRequest *permissionsRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions" - parameters:@{@"fields":@""} - tokenString:tokenString - HTTPMethod:nil - flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; - - [connection addRequest:permissionsRequest completionHandler:^(FBSDKGraphRequestConnection *requestConnection, - id result, - NSError *error) { - NSMutableSet *grantedPermissions = [NSMutableSet set]; - NSMutableSet *declinedPermissions = [NSMutableSet set]; - - [FBSDKInternalUtility extractPermissionsFromResponse:result - grantedPermissions:grantedPermissions - declinedPermissions:declinedPermissions]; - - parameters.permissions = [grantedPermissions copy]; - parameters.declinedPermissions = [declinedPermissions copy]; - if (error) { - parameters.error = error; - } - didCompleteBlock(); - }]; - - [connection start]; - didCompleteBlock(); -} - -@implementation FBSDKLoginCompletionParameters - -- (instancetype)init -{ - return [super init]; -} - -- (instancetype)initWithError:(NSError *)error -{ - if ((self = [self init]) != nil) { - self.error = error; - } - return self; -} - -@end - -#pragma mark - Completers - -@implementation FBSDKLoginURLCompleter -{ - FBSDKLoginCompletionParameters *_parameters; - id _observer - ; BOOL _performExplicitFallback; -} - -- (instancetype)init NS_UNAVAILABLE -{ - assert(0); -} - -- (instancetype)initWithURLParameters:(NSDictionary *)parameters appID:(NSString *)appID -{ - if ((self = [super init]) != nil) { - _parameters = [[FBSDKLoginCompletionParameters alloc] init]; - - _parameters.accessTokenString = parameters[@"access_token"]; - - if (_parameters.accessTokenString.length > 0) { - [self setParametersWithDictionary:parameters appID:appID]; - } else { - _parameters.accessTokenString = nil; - [self setErrorWithDictionary:parameters]; - } - } - return self; -} - -- (void)completeLogIn:(FBSDKLoginManager *)loginManager withHandler:(void(^)(FBSDKLoginCompletionParameters *parameters))handler -{ - if (_performExplicitFallback && loginManager.loginBehavior == FBSDKLoginBehaviorNative) { - // UIKit and iOS don't like an application opening a URL during a URL open callback, so - // we need to wait until *at least* the next turn of the run loop to open the URL to - // perform the browser log in behavior. However we also need to wait for the application - // to become active so FBSDKApplicationDelegate doesn't erroneously call back the URL - // opener before the URL has been opened. - if ([FBSDKApplicationDelegate sharedInstance].isActive) { - // The application is active so there's no need to wait. - [loginManager logInWithBehavior:FBSDKLoginBehaviorBrowser]; - } else { - // use the block version to guarantee there's a strong reference to self - _observer = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^ (NSNotification *notification) { - [self attemptBrowserLogIn:loginManager]; - }]; - } - return; - } - - if (_parameters.accessTokenString && !_parameters.userID) { - void(^handlerCopy)(FBSDKLoginCompletionParameters *) = [handler copy]; - FBSDKLoginRequestMeAndPermissions(_parameters, ^{ - handlerCopy(self->_parameters); - }); - return; - } - - handler(_parameters); -} - -- (void)setParametersWithDictionary:(NSDictionary *)parameters appID:(NSString *)appID -{ - NSString *grantedPermissionsString = parameters[@"granted_scopes"]; - NSString *declinedPermissionsString = parameters[@"denied_scopes"]; - - NSString *signedRequest = parameters[@"signed_request"]; - NSString *userID = parameters[@"user_id"]; - - // check the string length so that we assign an empty set rather than a set with an empty string - _parameters.permissions = (grantedPermissionsString.length > 0) - ? [NSSet setWithArray:[grantedPermissionsString componentsSeparatedByString:@","]] - : [NSSet set]; - _parameters.declinedPermissions = (declinedPermissionsString.length > 0) - ? [NSSet setWithArray:[declinedPermissionsString componentsSeparatedByString:@","]] - : [NSSet set]; - - _parameters.appID = appID; - - if (userID.length == 0 && signedRequest.length > 0) { - _parameters.userID = [FBSDKLoginUtility userIDFromSignedRequest:signedRequest]; - } else { - _parameters.userID = userID; - } - - NSString *expirationDateString = parameters[@"expires"] ?: parameters[@"expires_at"]; - NSDate *expirationDate = [NSDate distantFuture]; - if (expirationDateString && [expirationDateString doubleValue] > 0) { - expirationDate = [NSDate dateWithTimeIntervalSince1970:[expirationDateString doubleValue]]; - } else if (parameters[@"expires_in"] && [parameters[@"expires_in"] integerValue] > 0) { - expirationDate = [NSDate dateWithTimeIntervalSinceNow:[parameters[@"expires_in"] integerValue]]; - } - _parameters.expirationDate = expirationDate; - - NSDate *dataAccessExpirationDate = [NSDate distantFuture]; - if (parameters[@"data_access_expiration_time"] && [parameters[@"data_access_expiration_time"] integerValue] > 0) { - dataAccessExpirationDate = [NSDate dateWithTimeIntervalSince1970:[parameters[@"data_access_expiration_time"] integerValue]]; - } - _parameters.dataAccessExpirationDate = dataAccessExpirationDate; - - NSError *error = nil; - NSDictionary *state = [FBSDKInternalUtility objectForJSONString:parameters[@"state"] error:&error]; - _parameters.challenge = [FBSDKUtility URLDecode:state[@"challenge"]]; -} - -- (void)setErrorWithDictionary:(NSDictionary *)parameters -{ - NSString *legacyErrorReason = parameters[@"error"]; - - if ([legacyErrorReason isEqualToString:@"service_disabled_use_browser"] || - [legacyErrorReason isEqualToString:@"service_disabled"]) { - _performExplicitFallback = YES; - } - - // if error is nil, then this should be processed as a cancellation unless - // _performExplicitFallback is set to YES and the log in behavior is Native. - _parameters.error = [FBSDKLoginError errorFromReturnURLParameters:parameters]; -} - -- (void)attemptBrowserLogIn:(FBSDKLoginManager *)loginManager { - if (_observer != nil) { - [[NSNotificationCenter defaultCenter] removeObserver:_observer]; - _observer = nil; - } - - if ([FBSDKApplicationDelegate sharedInstance].isActive) { - [loginManager logInWithBehavior:FBSDKLoginBehaviorBrowser]; - } else { - // The application is active but due to notification ordering the FBSDKApplicationDelegate - // doesn't know it yet. Wait one more turn of the run loop. - dispatch_async(dispatch_get_main_queue(), ^{ - [self attemptBrowserLogIn:loginManager]; - }); - } -} - -@end - -@implementation FBSDKLoginSystemAccountCompleter -{ - FBSDKLoginCompletionParameters *_parameters; -} - -- (instancetype)init NS_UNAVAILABLE -{ - assert(0); -} - -- (instancetype)initWithTokenString:(NSString *)tokenString appID:(NSString *)appID -{ - if ((self = [super init]) != nil) { - _parameters = [[FBSDKLoginCompletionParameters alloc] init]; - - _parameters.accessTokenString = tokenString; - _parameters.appID = appID; - - _parameters.systemAccount = YES; - } - return self; -} - -- (void)completeLogIn:(FBSDKLoginManager *)loginManager withHandler:(void(^)(FBSDKLoginCompletionParameters *parameters))handler -{ - void(^handlerCopy)(FBSDKLoginCompletionParameters *) = [handler copy]; - FBSDKLoginRequestMeAndPermissions(_parameters, ^{ - // Transform the FBSDKCoreKit error in to an FBSDKLoginKit error, if necessary. This specializes - // the graph errors in to User Checkpointed, Password Changed or Unconfirmed User. - // - // It's possible the graph error has a value set for NSRecoveryAttempterErrorKey but we don't - // have any login-specific attempter to provide since system auth succeeded and the error is a - // graph API error. - NSError *serverError = self->_parameters.error; - NSError *error = [FBSDKLoginError errorFromServerError:serverError]; - if (error != nil) { - // In the event the user's password changed the Accounts framework will still return - // an access token but API calls will fail. Clear the access token from the result - // and use the special-case System Password changed error, which has different text - // to display to the user. - if (error.code == FBSDKLoginPasswordChangedErrorCode) { - [FBSDKSystemAccountStoreAdapter sharedInstance].forceBlockingRenew = YES; - - self->_parameters.accessTokenString = nil; - self->_parameters.appID = nil; - - error = [FBSDKLoginError errorForSystemPasswordChange:serverError]; - } - - self->_parameters.error = error; - } - - handlerCopy(self->_parameters); - }); -} - -@end - -@implementation FBSDKLoginSystemAccountErrorCompleter -{ - FBSDKLoginCompletionParameters *_parameters; -} - -- (instancetype)init NS_UNAVAILABLE -{ - assert(0); -} - -- (instancetype)initWithError:(NSError *)accountStoreError permissions:(NSSet *)permissions -{ - if ((self = [super init]) != nil) { - _parameters = [[FBSDKLoginCompletionParameters alloc] init]; - - NSError *error = [FBSDKLoginError errorForSystemAccountStoreError:accountStoreError]; - if (error != nil) { - _parameters.error = error; - } else { - // The lack of an error indicates the user declined permissions - _parameters.declinedPermissions = permissions; - } - - _parameters.systemAccount = YES; - } - return self; -} - -- (void)completeLogIn:(FBSDKLoginManager *)loginManager withHandler:(void(^)(FBSDKLoginCompletionParameters *parameters))handler -{ - handler(_parameters); -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h deleted file mode 100644 index 34b6647..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h +++ /dev/null @@ -1,35 +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 - -@interface FBSDKLoginError : NSObject - -+ (NSString *)errorDomain; - -+ (NSError *)errorForFailedLoginWithCode:(FBSDKLoginErrorCode)code; - -+ (NSError *)errorForSystemAccountStoreError:(NSError *)accountStoreError; -+ (NSError *)errorForSystemPasswordChange:(NSError *)innerError; - -+ (NSError *)errorFromReturnURLParameters:(NSDictionary *)parameters; -+ (NSError *)errorFromServerError:(NSError *)serverError; - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m deleted file mode 100644 index 856b7f9..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m +++ /dev/null @@ -1,252 +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 "FBSDKLoginError.h" - -#import "FBSDKCoreKit+Internal.h" - -typedef NS_ENUM(NSUInteger, FBSDKLoginErrorSubcode) -{ - FBSDKLoginUserCheckpointedErrorSubcode = 459, - FBSDKLoginPasswordChangedErrorSubcode = 460, - FBSDKLoginUnconfirmedUserErrorSubcode = 464, -}; - -@implementation FBSDKLoginError - -+ (NSString *)errorDomain -{ - return FBSDKLoginErrorDomain; -} - -+ (NSError *)errorForFailedLoginWithCode:(FBSDKLoginErrorCode)code; -{ - return [self errorForFailedLoginWithCode:code innerError:nil]; -} - -+ (NSError *)errorForFailedLoginWithCode:(FBSDKLoginErrorCode)code - innerError:(NSError *)innerError -{ - NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - - [FBSDKInternalUtility dictionary:userInfo setObject:innerError forKey:NSUnderlyingErrorKey]; - - NSString *errorDomain = [self errorDomain]; - NSString *localizedDescription = nil; - - switch ((NSInteger)code) { - case FBSDKNetworkErrorCode: - errorDomain = FBSDKErrorDomain; - localizedDescription = - NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.Network", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Unable to connect to Facebook. Check your network connection and try again.", - @"The user facing error message when the Accounts framework encounters a network error."); - break; - case FBSDKLoginUserCheckpointedErrorCode: - localizedDescription = - NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.UserCheckpointed", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"You cannot log in to apps at this time. Please log in to www.facebook.com and follow the instructions given.", - @"The user facing error message when the Facebook account signed in to the Accounts framework has been checkpointed."); - break; - case FBSDKLoginUnconfirmedUserErrorCode: - localizedDescription = - NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.UnconfirmedUser", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Your account is not confirmed. Please log in to www.facebook.com and follow the instructions given.", - @"The user facing error message when the Facebook account signed in to the Accounts framework becomes unconfirmed."); - break; - case FBSDKLoginSystemAccountAppDisabledErrorCode: - localizedDescription = - NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.Disabled", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Access has not been granted to the Facebook account. Verify device settings.", - @"The user facing error message when the app slider has been disabled and login fails."); - break; - case FBSDKLoginSystemAccountUnavailableErrorCode: - localizedDescription = - NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.Unavailable", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"The Facebook account has not been configured on the device.", - @"The user facing error message when the device Facebook account is unavailable and login fails."); - break; - default: - break; - } - - [FBSDKInternalUtility dictionary:userInfo setObject:localizedDescription forKey:NSLocalizedDescriptionKey]; - [FBSDKInternalUtility dictionary:userInfo setObject:localizedDescription forKey:FBSDKErrorLocalizedDescriptionKey]; - - return [NSError errorWithDomain:errorDomain - code:code - userInfo:userInfo]; -} - -+ (NSError *)errorForSystemAccountStoreError:(NSError *)accountStoreError -{ - NSError *err = nil; - BOOL cancellation = NO; - - if ([accountStoreError.domain isEqualToString:[self errorDomain]] || - [accountStoreError.domain isEqualToString:[FBSDKError errorDomain]]) { - // If the requestAccess call results in a Facebook error, surface it as a top-level - // error. This implies it is not the typical user "disallows" case. - err = accountStoreError; - } else if ([accountStoreError.domain isEqualToString:@"com.apple.accounts"] && accountStoreError.code == 7) { - err = [self errorWithSystemAccountStoreDeniedError:accountStoreError isCancellation:&cancellation]; - } - - if (err == nil && !cancellation) { - // create an error object with additional info regarding failed login - NSInteger errorCode = FBSDKLoginSystemAccountUnavailableErrorCode; - - NSString *errorDomain = accountStoreError.domain; - if ([errorDomain isEqualToString:NSURLErrorDomain] || - [errorDomain isEqualToString:@"kCFErrorDomainCFNetwork"]) { - errorCode = FBSDKNetworkErrorCode; - } - - err = [self errorForFailedLoginWithCode:errorCode - innerError:accountStoreError]; - } - - return err; -} - -+ (NSError *)errorForSystemPasswordChange:(NSError *)innerError -{ - NSString *failureReasonAndDescription = - NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.PasswordChange", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Your Facebook password has changed. To confirm your password, open Settings > Facebook and tap your name.", - @"The user facing error message when the device Facebook account password is incorrect and login fails."); - NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys: - failureReasonAndDescription, FBSDKErrorLocalizedDescriptionKey, - failureReasonAndDescription, NSLocalizedDescriptionKey, - nil]; - - [FBSDKInternalUtility dictionary:userInfo setObject:innerError forKey:NSUnderlyingErrorKey]; - - return [NSError errorWithDomain:[self errorDomain] - code:FBSDKLoginPasswordChangedErrorCode - userInfo:userInfo]; -} - -+ (NSError *)errorFromReturnURLParameters:(NSDictionary *)parameters -{ - NSError *error = nil; - - NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error_message"] forKey:FBSDKErrorDeveloperMessageKey]; - - if (userInfo.count > 0) { - [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error"] forKey:FBSDKErrorDeveloperMessageKey]; - [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error_code"] forKey:FBSDKGraphRequestErrorGraphErrorCode]; - - if (!userInfo[FBSDKErrorDeveloperMessageKey]) { - [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error_reason"] forKey:FBSDKErrorDeveloperMessageKey]; - } - - userInfo[FBSDKGraphRequestErrorCategoryKey] = @(FBSDKGraphRequestErrorCategoryOther); - - error = [NSError errorWithDomain:FBSDKErrorDomain - code:FBSDKGraphRequestGraphAPIErrorCode - userInfo:userInfo]; - } - - return error; -} - -+ (NSError *)errorFromServerError:(NSError *)serverError -{ - NSError *loginError = nil; - - if ([serverError.domain isEqualToString:FBSDKErrorDomain]) { - NSDictionary *response = [FBSDKTypeUtility dictionaryValue:serverError.userInfo[FBSDKGraphRequestErrorParsedJSONResponseKey]]; - NSDictionary *body = [FBSDKTypeUtility dictionaryValue:response[@"body"]]; - NSDictionary *error = [FBSDKTypeUtility dictionaryValue:body[@"error"]]; - NSInteger subcode = [FBSDKTypeUtility integerValue:error[@"error_subcode"]]; - - switch (subcode) { - case FBSDKLoginUserCheckpointedErrorSubcode: - loginError = [self errorForFailedLoginWithCode:FBSDKLoginUserCheckpointedErrorCode - innerError:serverError]; - break; - case FBSDKLoginPasswordChangedErrorSubcode: - loginError = [self errorForFailedLoginWithCode:FBSDKLoginPasswordChangedErrorCode - innerError:serverError]; - break; - case FBSDKLoginUnconfirmedUserErrorSubcode: - loginError = [self errorForFailedLoginWithCode:FBSDKLoginUnconfirmedUserErrorCode - innerError:serverError]; - break; - } - } - - return loginError; -} - -+ (NSError *)errorWithSystemAccountStoreDeniedError:(NSError *)accountStoreError isCancellation:(BOOL *)cancellation -{ - // The Accounts framework returns an ACErrorPermissionDenied error for both user denied errors, - // Facebook denied errors, and other things. Unfortunately examining the contents of the - // description is the only means available to determine the reason for the error. - NSString *description = accountStoreError.userInfo[NSLocalizedDescriptionKey]; - NSError *err = nil; - - if (description) { - // If a parenthetical error code exists, map it ot a Facebook server error - FBSDKLoginErrorCode errorCode = FBSDKLoginReservedErrorCode; - if ([description rangeOfString:@"(459)"].location != NSNotFound) { - // The Facebook server could not fulfill this access request: Error validating access token: - // You cannot access the app till you log in to www.facebook.com and follow the instructions given. (459) - - // The OAuth endpoint directs people to www.facebook.com when an account has been - // checkpointed. If the web address is present, assume it's due to a checkpoint. - errorCode = FBSDKLoginUserCheckpointedErrorCode; - } else if ([description rangeOfString:@"(452)"].location != NSNotFound || - [description rangeOfString:@"(460)"].location != NSNotFound) { - // The Facebook server could not fulfill this access request: Error validating access token: - // Session does not match current stored session. This may be because the user changed the password since - // the time the session was created or Facebook has changed the session for security reasons. (452)or(460) - - // If the login failed due to the session changing, maybe it's due to the password - // changing. Direct the user to update the password in the Settings > Facebook. - err = [self errorForSystemPasswordChange:accountStoreError]; - } else if ([description rangeOfString:@"(464)"].location != NSNotFound) { - // The Facebook server could not fulfill this access request: Error validating access token: - // Sessions for the user are not allowed because the user is not a confirmed user. (464) - errorCode = FBSDKLoginUnconfirmedUserErrorCode; - } - - if (errorCode != FBSDKLoginReservedErrorCode) { - err = [self errorForFailedLoginWithCode:errorCode]; - } - } else { - // If there is no description, assume this is a user cancellation. No error object is - // returned for a cancellation. - if (cancellation != NULL) { - *cancellation = YES; - } - } - - return err; -} - -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h deleted file mode 100644 index 74b6597..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.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 "FBSDKLoginCompletion+Internal.h" -#import "FBSDKLoginError.h" -#import "FBSDKLoginManager+Internal.h" -#import "FBSDKLoginUtility.h" diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h deleted file mode 100644 index 7608b40..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h +++ /dev/null @@ -1,81 +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 "FBSDKCoreKit+Internal.h" - -@class FBSDKAccessToken; -@class FBSDKLoginCompletionParameters; - -@interface FBSDKLoginManagerSystemAccountState : NSObject -@property (nonatomic) BOOL didShowDialog; -@property (nonatomic, getter=isReauthorize) BOOL reauthorize; -@property (nonatomic, getter=isUnTOSedDevice) BOOL unTOSedDevice; -@end - -@interface FBSDKLoginManager () -@property (nonatomic, weak) UIViewController *fromViewController; -@property (nonatomic, readonly) NSSet *requestedPermissions; - -- (void)completeAuthentication:(FBSDKLoginCompletionParameters *)parameters expectChallenge:(BOOL)expectChallenge; - -// available to internal types to trigger login without checking read/publish mixtures. -- (void)logInWithPermissions:(NSSet *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler; -- (void)logInWithBehavior:(FBSDKLoginBehavior)loginBehavior; - -// made available for testing only -- (NSDictionary *)logInParametersWithPermissions:(NSSet *)permissions serverConfiguration:(FBSDKServerConfiguration *)serverConfiguration; -// made available for testing only -- (void)validateReauthentication:(FBSDKAccessToken *)currentToken withResult:(FBSDKLoginManagerLoginResult *)loginResult; - -// for testing only -- (void)setHandler:(FBSDKLoginManagerRequestTokenHandler)handler; -// for testing only -- (void)setRequestedPermissions:(NSSet *)requestedPermissions; -// for testing only -- (NSString *)loadExpectedChallenge; -@end - -// the category is made available for testing only -@interface FBSDKLoginManager (Native) - -- (void)performNativeLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSError*))handler; -- (void)performBrowserLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSString *,NSError*))handler; - -@end - -// the category is made available for testing only -@interface FBSDKLoginManager (Accounts) - -- (void)beginSystemLogIn; -- (void)performSystemLogIn; -- (void)continueSystemLogInWithTokenString:(NSString *)oauthToken error:(NSError *)accountStoreError state:(FBSDKLoginManagerSystemAccountState *)state; - -- (void)fallbackToNativeBehavior; - -@end - -// the category is made available for testing only -@interface FBSDKLoginManager (WebDialog) - -- (void)performWebLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSError*))handler; - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h deleted file mode 100644 index b07ac0e..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h +++ /dev/null @@ -1,48 +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 "FBSDKLoginManager+Internal.h" - -extern NSString *const FBSDKLoginManagerLoggerAuthMethod_Native; -extern NSString *const FBSDKLoginManagerLoggerAuthMethod_Browser; -extern NSString *const FBSDKLoginManagerLoggerAuthMethod_System; -extern NSString *const FBSDKLoginManagerLoggerAuthMethod_Webview; -extern NSString *const FBSDKLoginManagerLoggerAuthMethod_SFVC; - - -@interface FBSDKLoginManagerLogger : NSObject -+ (FBSDKLoginManagerLogger *)loggerFromParameters:(NSDictionary *)parameters; - -- (instancetype)init NS_UNAVAILABLE; -- (instancetype)new NS_UNAVAILABLE; - -- (instancetype)initWithLoggingToken:(NSString *)loggingToken; - -// this must not retain loginManager - only used to conveniently grab various properties to log. -- (void)startSessionForLoginManager:(FBSDKLoginManager *)loginManager; -- (void)endSession; - -- (void)startAuthMethod:(NSString *)authMethod; -- (void)endLoginWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error; - -- (NSDictionary *)parametersWithTimeStampAndClientState:(NSDictionary *)loginParams forAuthMethod:(NSString *)authMethod; -- (void)willAttemptAppSwitchingBehavior; -- (void)systemAuthDidShowDialog:(BOOL)didShowDialog isUnTOSedDevice:(BOOL)isUnTOSedDevice; - -- (void)logNativeAppDialogResult:(BOOL)result dialogDuration:(NSTimeInterval)dialogDuration; -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m deleted file mode 100644 index bb05354..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m +++ /dev/null @@ -1,309 +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 "FBSDKLoginManagerLogger.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKLoginError.h" -#import "FBSDKLoginManagerLoginResult+Internal.h" -#import "FBSDKLoginUtility.h" - -NSString *const FBSDKLoginManagerLoggerAuthMethod_Native = @"fb_application_web_auth"; -NSString *const FBSDKLoginManagerLoggerAuthMethod_Browser = @"browser_auth"; -NSString *const FBSDKLoginManagerLoggerAuthMethod_System = @"integrated_auth"; -NSString *const FBSDKLoginManagerLoggerAuthMethod_Webview = @"fallback_auth"; -NSString *const FBSDKLoginManagerLoggerAuthMethod_SFVC = @"sfvc_auth"; - -static NSString *const FBSDKLoginManagerLoggingClientStateKey = @"state"; -static NSString *const FBSDKLoginManagerLoggingClientStateIsClientState = @"com.facebook.sdk_client_state"; - -static NSString *const FBSDKLoginManagerLoggerParamIdentifierKey = @"0_auth_logger_id"; -static NSString *const FBSDKLoginManagerLoggerParamTimestampKey = @"1_timestamp_ms"; -static NSString *const FBSDKLoginManagerLoggerParamResultKey = @"2_result"; -static NSString *const FBSDKLoginManagerLoggerParamAuthMethodKey = @"3_method"; -static NSString *const FBSDKLoginManagerLoggerParamErrorCodeKey = @"4_error_code"; -static NSString *const FBSDKLoginManagerLoggerParamErrorMessageKey = @"5_error_message"; -static NSString *const FBSDKLoginManagerLoggerParamExtrasKey = @"6_extras"; -static NSString *const FBSDKLoginManagerLoggerParamLoggingTokenKey = @"7_logging_token"; - -static NSString *const FBSDKLoginManagerLoggerValueEmpty = @""; - -static NSString *const FBSDKLoginManagerLoggerResultSuccessString = @"success"; -static NSString *const FBSDKLoginManagerLoggerResultCancelString = @"cancelled"; -static NSString *const FBSDKLoginManagerLoggerResultErrorString = @"error"; -static NSString *const FBSDKLoginManagerLoggerResultSkippedString = @"skipped"; - -static NSString *const FBSDKLoginManagerLoggerTryNative = @"tryFBAppAuth"; -static NSString *const FBSDKLoginManagerLoggerTryBrowser = @"trySafariAuth"; -static NSString *const FBSDKLoginManagerLoggerTrySystemAccount = @"tryIntegratedAuth"; -static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; - -@implementation FBSDKLoginManagerLogger -{ -@private - NSString *_identifier; - NSMutableDictionary *_extras; - - NSString *_lastResult; - NSError *_lastError; - - NSString *_authMethod; - NSString *_loggingToken; -} - -+ (FBSDKLoginManagerLogger *)loggerFromParameters:(NSDictionary *)parameters -{ - NSDictionary *clientState = [FBSDKInternalUtility objectForJSONString:parameters[FBSDKLoginManagerLoggingClientStateKey] error:NULL]; - - id isClientState = clientState[FBSDKLoginManagerLoggingClientStateIsClientState]; - if ([isClientState isKindOfClass:[NSNumber class]] && [isClientState boolValue]) { - FBSDKLoginManagerLogger *logger = [[self alloc] initWithLoggingToken:nil]; - if (logger != nil) { - logger->_identifier = clientState[FBSDKLoginManagerLoggerParamIdentifierKey]; - logger->_authMethod = clientState[FBSDKLoginManagerLoggerParamAuthMethodKey]; - logger->_loggingToken = clientState[FBSDKLoginManagerLoggerParamLoggingTokenKey]; - return logger; - } - } - return nil; -} - -- (instancetype)initWithLoggingToken:(NSString *)loggingToken -{ - if ((self = [super init]) != nil) { - _identifier = [[NSUUID UUID] UUIDString]; - _extras = [NSMutableDictionary dictionary]; - _loggingToken = [loggingToken copy]; - } - return self; -} - -- (void)startSessionForLoginManager:(FBSDKLoginManager *)loginManager -{ - BOOL isReauthorize = ([FBSDKAccessToken currentAccessToken] != nil); - BOOL willTryNative = NO; - BOOL willTryBrowser = NO; - BOOL willTrySystemAccount = NO; - BOOL willTryWebView = NO; - NSString *behaviorString = nil; - - switch (loginManager.loginBehavior) { - case FBSDKLoginBehaviorNative: - willTryNative = YES; - willTryBrowser = YES; - behaviorString = @"FBSDKLoginBehaviorNative"; - break; - case FBSDKLoginBehaviorBrowser: - willTryBrowser = YES; - behaviorString = @"FBSDKLoginBehaviorBrowser"; - break; - case FBSDKLoginBehaviorSystemAccount: - willTryNative = YES; - willTryBrowser = YES; - willTrySystemAccount = YES; - behaviorString = @"FBSDKLoginBehaviorSystemAccount"; - break; - case FBSDKLoginBehaviorWeb: - willTryWebView = YES; - behaviorString = @"FBSDKLoginBehaviorWeb"; - break; - } - - [_extras addEntriesFromDictionary:@{ - FBSDKLoginManagerLoggerTryNative : @(willTryNative), - FBSDKLoginManagerLoggerTryBrowser : @(willTryBrowser), - FBSDKLoginManagerLoggerTrySystemAccount : @(willTrySystemAccount), - FBSDKLoginManagerLoggerTryWebView : @(willTryWebView), - @"isReauthorize" : @(isReauthorize), - @"login_behavior" : behaviorString, - @"default_audience" : [FBSDKLoginUtility stringForAudience:loginManager.defaultAudience], - @"permissions" : [[loginManager.requestedPermissions allObjects] componentsJoinedByString:@","] ?: @"" - }]; - - [self logEvent:FBSDKAppEventNameFBSessionAuthStart params:[self _parametersForNewEvent]]; -} - -- (void)endSession -{ - [self logEvent:FBSDKAppEventNameFBSessionAuthEnd result:_lastResult error:_lastError]; -} - -- (void)startAuthMethod:(NSString *)authMethod -{ - _authMethod = [authMethod copy]; - [self logEvent:FBSDKAppEventNameFBSessionAuthMethodStart params:[self _parametersForNewEvent]]; -} - -- (void)endLoginWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error -{ - NSString *resultString = @""; - - if (error != nil) { - resultString = FBSDKLoginManagerLoggerResultErrorString; - } else if (result.isCancelled) { - resultString = FBSDKLoginManagerLoggerResultCancelString; - } else if (result.isSkipped) { - resultString = FBSDKLoginManagerLoggerResultSkippedString; - } else if (result.token) { - resultString = FBSDKLoginManagerLoggerResultSuccessString; - if (result.declinedPermissions.count) { - _extras[@"declined_permissions"] = [[result.declinedPermissions allObjects] componentsJoinedByString:@","]; - } - } - - _lastResult = resultString; - _lastError = error; - [_extras addEntriesFromDictionary:result.loggingExtras]; - - [self logEvent:FBSDKAppEventNameFBSessionAuthMethodEnd result:resultString error:error]; -} - -- (NSDictionary *)parametersWithTimeStampAndClientState:(NSDictionary *)loginParams forAuthMethod:(NSString *)authMethod -{ - NSMutableDictionary *params = [loginParams mutableCopy]; - - NSTimeInterval timeValue = (NSTimeInterval)FBSDKMonotonicTimeGetCurrentSeconds(); - NSString *e2eTimestampString = [FBSDKInternalUtility JSONStringForObject:@{ @"init" : @(timeValue) } - error:NULL - invalidObjectHandler:NULL]; - params[@"e2e"] = e2eTimestampString; - - NSDictionary *existingState = [FBSDKInternalUtility objectForJSONString:params[FBSDKLoginManagerLoggingClientStateKey] error:NULL]; - params[FBSDKLoginManagerLoggingClientStateKey] = [self clientStateForAuthMethod:authMethod andExistingState:existingState]; - - return params; -} - -- (void)willAttemptAppSwitchingBehavior -{ - NSString *defaultUrlScheme = [NSString stringWithFormat:@"fb%@%@", [FBSDKSettings appID], [FBSDKSettings appURLSchemeSuffix] ?: @""]; - BOOL isURLSchemeRegistered = [FBSDKInternalUtility isRegisteredURLScheme:defaultUrlScheme]; - - BOOL isFacebookAppCanOpenURLSchemeRegistered = [FBSDKInternalUtility isRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK]; - BOOL isMessengerAppCanOpenURLSchemeRegistered = [FBSDKInternalUtility isRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_MESSENGER]; - - [_extras addEntriesFromDictionary:@{ - @"isURLSchemeRegistered" : @(isURLSchemeRegistered), - @"isFacebookAppCanOpenURLSchemeRegistered" : @(isFacebookAppCanOpenURLSchemeRegistered), - @"isMessengerAppCanOpenURLSchemeRegistered" : @(isMessengerAppCanOpenURLSchemeRegistered), - }]; -} - -- (void)systemAuthDidShowDialog:(BOOL)didShowDialog isUnTOSedDevice:(BOOL)isUnTOSedDevice -{ - [_extras addEntriesFromDictionary:@{ - @"isUntosedDevice" : @(isUnTOSedDevice), - @"dialogShown" : @(didShowDialog), - }]; -} - -- (void)logNativeAppDialogResult:(BOOL)result dialogDuration:(NSTimeInterval)dialogDuration -{ - NSOperatingSystemVersion iOS10Version = { .majorVersion = 10, .minorVersion = 0, .patchVersion = 0 }; - if ([FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS10Version]) { - _extras[@"native_app_login_dialog_duration"] = @(dialogDuration); - _extras[@"native_app_login_dialog_result"] = @(result); - [self logEvent:FBSDKAppEventNameFBSessionFASLoginDialogResult params:[self _parametersForNewEvent]]; - } -} - -#pragma mark - Private - -- (NSString *)clientStateForAuthMethod:(NSString *)authMethod andExistingState:(NSDictionary *)existingState -{ - NSDictionary *clientState = @{ - FBSDKLoginManagerLoggerParamAuthMethodKey: authMethod ?: @"", - FBSDKLoginManagerLoggerParamIdentifierKey: _identifier, - FBSDKLoginManagerLoggingClientStateIsClientState: @YES, - }; - - if (existingState) { - NSMutableDictionary *mutableState = [clientState mutableCopy]; - [mutableState addEntriesFromDictionary:existingState]; - clientState = mutableState; - } - - return [FBSDKInternalUtility JSONStringForObject:clientState error:NULL invalidObjectHandler:NULL]; -} - -- (NSMutableDictionary *)_parametersForNewEvent -{ - NSMutableDictionary *eventParameters = [[NSMutableDictionary alloc] init]; - - // NOTE: We ALWAYS add all params to each event, to ensure predictable mapping on the backend. - eventParameters[FBSDKLoginManagerLoggerParamIdentifierKey] = _identifier ?: FBSDKLoginManagerLoggerValueEmpty; - eventParameters[FBSDKLoginManagerLoggerParamTimestampKey] = [NSNumber numberWithDouble:round(1000 * [[NSDate date] timeIntervalSince1970])]; - eventParameters[FBSDKLoginManagerLoggerParamResultKey] = FBSDKLoginManagerLoggerValueEmpty; - [FBSDKInternalUtility dictionary:eventParameters setObject:_authMethod forKey:FBSDKLoginManagerLoggerParamAuthMethodKey]; - eventParameters[FBSDKLoginManagerLoggerParamErrorCodeKey] = FBSDKLoginManagerLoggerValueEmpty; - eventParameters[FBSDKLoginManagerLoggerParamErrorMessageKey] = FBSDKLoginManagerLoggerValueEmpty; - eventParameters[FBSDKLoginManagerLoggerParamExtrasKey] = FBSDKLoginManagerLoggerValueEmpty; - eventParameters[FBSDKLoginManagerLoggerParamLoggingTokenKey] = _loggingToken ?: FBSDKLoginManagerLoggerValueEmpty; - - return eventParameters; -} - -- (void)logEvent:(NSString *)eventName params:(NSMutableDictionary *)params -{ - if (_identifier) { - NSString *extrasJSONString = [FBSDKInternalUtility JSONStringForObject:_extras - error:NULL - invalidObjectHandler:NULL]; - if (extrasJSONString) { - params[FBSDKLoginManagerLoggerParamExtrasKey] = extrasJSONString; - } - [_extras removeAllObjects]; - - [FBSDKAppEvents logImplicitEvent:eventName valueToSum:nil parameters:params accessToken:nil]; - } -} - -- (void)logEvent:(NSString *)eventName result:(NSString *)result error:(NSError *)error -{ - NSMutableDictionary *params = [self _parametersForNewEvent]; - - params[FBSDKLoginManagerLoggerParamResultKey] = result; - - if ([error.domain isEqualToString:FBSDKErrorDomain] || [error.domain isEqualToString:FBSDKLoginErrorDomain]) { - // tease apart the structure. - - // first see if there is an explicit message in the error's userInfo. If not, default to the reason, - // which is less useful. - NSString *value = error.userInfo[@"error_message"] ?: error.userInfo[FBSDKErrorLocalizedDescriptionKey]; - [FBSDKInternalUtility dictionary:params setObject:value forKey:FBSDKLoginManagerLoggerParamErrorMessageKey]; - - value = error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] ?: [NSString stringWithFormat:@"%ld", (long)error.code]; - [FBSDKInternalUtility dictionary:params setObject:value forKey:FBSDKLoginManagerLoggerParamErrorCodeKey]; - - NSError *innerError = error.userInfo[NSUnderlyingErrorKey]; - if (innerError != nil) { - value = innerError.userInfo[@"error_message"] ?: innerError.userInfo[NSLocalizedDescriptionKey]; - [FBSDKInternalUtility dictionary:_extras setObject:value forKey:@"inner_error_message"]; - - value = innerError.userInfo[FBSDKGraphRequestErrorGraphErrorCode] ?: [NSString stringWithFormat:@"%ld", (long)innerError.code]; - [FBSDKInternalUtility dictionary:_extras setObject:value forKey:@"inner_error_code"]; - } - } else if (error) { - params[FBSDKLoginManagerLoggerParamErrorCodeKey] = @(error.code); - params[FBSDKLoginManagerLoggerParamErrorMessageKey] = error.localizedDescription; - } - - [self logEvent:eventName params:params]; -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h deleted file mode 100644 index 3191aa9..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h +++ /dev/null @@ -1,32 +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 - -@interface FBSDKLoginManagerLoginResult() - -@property (nonatomic, readonly) NSDictionary *loggingExtras; - -// legacy flag indicating this is an intermediary result only for logging purposes. -@property (nonatomic) BOOL isSkipped; - -// adds additional logging entry to extras - only sent as part of `endLoginWithResult:` --(void)addLoggingExtra:(id)object forKey:(id)key; -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h deleted file mode 100644 index 9cc7e2b..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h +++ /dev/null @@ -1,30 +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 - -@interface FBSDKLoginUtility : NSObject - -+ (NSString *)stringForAudience:(FBSDKDefaultAudience)audience; -+ (NSDictionary *)queryParamsFromLoginURL:(NSURL *)url; - -+ (NSString *)userIDFromSignedRequest:(NSString *)signedRequest; - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m deleted file mode 100644 index 91908ab..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m +++ /dev/null @@ -1,86 +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 "FBSDKLoginUtility.h" - -#import -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKLoginConstants.h" - -@implementation FBSDKLoginUtility - -+ (NSString *)stringForAudience:(FBSDKDefaultAudience)audience -{ - switch (audience) { - case FBSDKDefaultAudienceOnlyMe: - return @"only_me"; - case FBSDKDefaultAudienceFriends: - return @"friends"; - case FBSDKDefaultAudienceEveryone: - return @"everyone"; - } -} - -+ (NSDictionary *)queryParamsFromLoginURL:(NSURL *)url -{ - NSString *expectedUrlPrefix = [FBSDKInternalUtility appURLWithHost:@"authorize" path:nil queryParameters:nil error:NULL].absoluteString; - if (![[url absoluteString] hasPrefix:expectedUrlPrefix]) { - // Don't have an App ID, just verify path. - NSString *host = url.host; - if (![host isEqualToString:@"authorize"]) { - return nil; - } - } - NSMutableDictionary *params = [NSMutableDictionary dictionaryWithDictionary:[FBSDKInternalUtility dictionaryFromFBURL:url]]; - - NSString *userID = [[self class] userIDFromSignedRequest:params[@"signed_request"]]; - if (userID) { - params[@"user_id"] = userID; - } - - return params; -} - -+ (NSString *)userIDFromSignedRequest:(NSString *)signedRequest -{ - if (!signedRequest) { - return nil; - } - - NSArray *signatureAndPayload = [signedRequest componentsSeparatedByString:@"."]; - NSString *userID = nil; - - if (signatureAndPayload.count == 2) { - NSData *data = [FBSDKBase64 decodeAsData:signatureAndPayload[1]]; - if (data) { - NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - userID = dictionary[@"user_id"]; - } - } - return userID; -} - -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h deleted file mode 100644 index b979138..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.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 "FBSDKCoreKit+Internal.h" - -@interface _FBSDKLoginRecoveryAttempter : FBSDKErrorRecoveryAttempter - -@end diff --git a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m b/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m deleted file mode 100644 index 3152cef..0000000 --- a/Example/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m +++ /dev/null @@ -1,47 +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 "_FBSDKLoginRecoveryAttempter.h" - -#import "FBSDKLoginKit+Internal.h" - -@implementation _FBSDKLoginRecoveryAttempter - -- (void)attemptRecoveryFromError:(NSError *)error - optionIndex:(NSUInteger)recoveryOptionIndex - delegate:(id)delegate - didRecoverSelector:(SEL)didRecoverSelector - contextInfo:(void *)contextInfo { - - void(^handler)(BOOL) = ^(BOOL didRecover) { - [super completeRecovery:didRecover delegate:delegate didRecoverSelector:didRecoverSelector contextInfo:contextInfo]; - }; - NSSet *currentPermissions = [FBSDKAccessToken currentAccessToken].permissions; - if (recoveryOptionIndex == 0 && currentPermissions.count > 0) { - FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; - [login logInWithPermissions:currentPermissions handler:^(FBSDKLoginManagerLoginResult *result, NSError *loginError) { - // we can only consider a recovery successful if there are no declines - // (note this could still set an updated currentAccessToken). - handler(!loginError && !result.isCancelled && result.declinedPermissions.count == 0); - }]; - } else { - handler(NO); - } -} - -@end diff --git a/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/FBSDKMarketingKit b/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/FBSDKMarketingKit new file mode 100644 index 0000000000000000000000000000000000000000..154afac1897ccc9cbf065a462a9e90a3a339dcfd GIT binary patch literal 487840 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 z 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%0D4*j`X;2Ua4r z#sRHGYn-z?4{eH`>#D|&kG5jAkcfagtS(N z5dkwSx9G`hWp*T;B!0E+&tySM?;WzSp6j|i>^$0d+(nt@KW8x`ID+6C;!AkiMU<^T z6R-Ftl^u?DgKRU9gFgoXn5yH$1g%r`jvcCy!z|{a zE>16`c#V#cOUcikHIaTkkUD#7)!bnef=PH>Qc6jU=(;+ z7bd}y?6hWWv>2v|c`e?aXw4RsR&J|5=)JvnC{bDpW8{kv=ZW2IloXz?2X zvw+SStnulMkr=syr4_=ergPpk9J>}vS?SZrN(XhHN2{IAdAha!D;2Z2XyNojt$o@9 z>-`K2c4}8_S9)z!mcp{;?9j$jrPgz_O^3nYi$vHp!kHz5Wms%r8eWWiOSJ5Q`KSYa z1%qYi;_T3(Q)Sk3YMNRMRYY`^G^kSXQWcS@N`>{Dx~6l~v~u${EK}X5veB|l7Z@OM z>g#|x8kS)N66e~|5_gbT*a<}k^M_49TRdREXBL1WhkzTDST(;Zk}S0At}%6Zbpk_>BJRHSuSFiN7c zJhp>)Ry=o#K$&tFz?LFs)~K6fnmoK7jzNCt>4AAf8F~-*ej9Z2<^=f!YM~(Zx#TMh z4#!}d=k1okkGbV~*k)O&;C%ygf+6?4A2CC&?Kc+MGPDn~MzPYlqnY>%>?MER!Ty1v z=Od+V4odg|Eel~;qr_wbU>nJ}7Al|s;MR!?kyejFsmVqG_=7cLgi9^v7Fj%s|22u`|W~@ zaLEmd2=onzydmCWYNLR$k@6oHG9k6s8_7eICxG$|*`>H$@=9=;6UH2rxb(t`vWnk+ z3ULCB7MlY*w*_imnOD0SM&!P3IbO;~BT8{UU4Xaj>YR&_1k@=$|X>JcB=gHd{)O z6kTt~MQx(K)~IdPVc7s`&FzIfUjAmpPI~|07~;86sCPf|9=CfOOcw7^8v^xAVLcLV zv?1_0&Y2({W8}P&^M#4?H_ef_T3#+%3P{N7JGmB!+24500cLj+!0aw}dnBp6;jn@p z_6Emt?O-Ou!@mFr_YFoD9o-8=rtjhOqy1Oo3|BpMlV<%hK(jfHl15u+qcjRUmWx=c zLE(TZ3wfn0O54${t#^6&FQW(DJU067z@RIqnGL#?|IWd4&tcH?eu>IrWL*=%;Gw8gPW4l-!y}hN`DWrHYGL3xcREEJ(&Gf(+Y3mE%Wh zC~J3=^<^3EWv~7e%eO{?AhACKNoqSO(SEry2)j&4ttNIURF%|%`(MTx!E1=%t^s1n z0tLv1P89y#U_%?0)JX-LY*DIsCsZ)h)tc&7Oc=2@MojVpfd|mD;pSiQv(rfB?ZGx4 zW$8^@OkS@QQp`i*i%)EM$B)t~q+(+GhiWTODKIgxO@Sf*4)#Un9p{xI-=5kFN`<|k z2DBGMpml8}+6ziXn>=;Mw|^h`_JPQ^cSg4k(OwWn?Qb_z``bdaza38PZ)c$WZG{c0 zUZ+B}#r}m3h$@Xy;sMh1L{rP@CZ+(PlVF zZHCvOmT_ma=;%hk>*k}D1$=~LvjilFH=9T^+b%OIe<2v1X8~F2bOM^cjj{Ny%%lCGk zJCNlKH!8pn!2<7M*dlu}1^FS$IUFp>0e7VGM@pRhmyV#em6e&6wHcQ4VVjs49N0ZQ z@J@(?$b}8!9@sMWFUTw+9lDYKZ8W*hcYFSd*1#{`@BXRN6W#CLDFHu%zH{_^=xfhz zWx))%?TOBUP$L8XhLqtRm>D=%U98PHA2qQ*}4N2>tZqTWPz#f=tK zlkj#a_XddQUP>t@`*kqf$`^qJ-7aJ*@zMe`V|5L6L_0K_p_N7At+Cb-MR{J^@~xONUKyBn+2M%*f{m$6 z9G+{_pYfGq*Db*P|JLk5jd0_G8YrI;nC9h>AB>g-;b>X#UO4Oq!Lr~)9cxbU+K(xR z{nB`F*!{aej#cp3o5cxu#%Z{{Z?2cM_DvuM5&^^35&5Zc>*!KC+(-)e-U9jf%D~%F zr%XFg+p@{Ud4-(Xq>XU9Ngnesu+Ki|VMq|fz58i*kORvbR>{SIQv~NzP-4;)0e3q* zK@tq!`ug|5TW2Lr5%i=U1aH0kbq7}CF}TnFn56IXa~jco{ss^8`~2O=w7_h%Q_+{cS(dh(o)~n4zz;WQF=$iv#wE?o z){BrB!Y*YN$@@IMBv_$f2mW7qZv!7ib?%SP?q-uE2_YmQ1bK0JQBX<9CL59{tAPXw z5FjL=*g}(#-H>QPVqOp|YJ{j!qs2-sDz}X-^@o+VXz_}QH7d5z(l#o#X^U-Cv?)@J zmiAKR*8lf8=Q*>pli8)*4|;n)|AC$FJTK=t&w0+7nKN@v=BSf+NREu8B*V{zgG(j| zP1$X&duPfeN$9p7EXn+n{ZLXoj+Vs#*}e@c;-E9XwBVS1+bMY{dK_}bOSGIfBg?&a zWY5V<(UbR?&#Srae*zPEVC z5k%9IeCR37znJdPuO=U+e#=koTPn4&m2P@7*Hq}9U5VT7iK53ddS<>jHwykOoA4)l z;soK}s^UM{OYs&1nz)H$q`7;+^r*{!yHRyLU3b2#UYsS4c*D^3yzQBnM|=N44;}lf zn&fka9X-4Io}WR_88h#0vAIUkh3$oz`*HYf)fLBJckHF2EB;ShNWlRP96m5m)e;s6<)X(sOG>X~lz5 z!JY2~eg3`C=U2zwn|l@Y*=6Rhy?rqVOnvsd?DV>S&-^qR#H*Z%NfozT81*Z(tw)51^`006_5u;(FZVtFls2tQ z&0T?N%VROaW_gVG2%c(57tp)T$~*IEgv)&uJRADXsJq)!I+x=wtBpUirJB=p1IC9mS?dUswl=>sETVK4e68Dd$jiuMDi+4R)xfN&4 z$j$;W$>GQ2hqSiKG1rBL55B^z6YjQRVy)kOB03(o!Tp`Lv|yr3<;}4O(RiAPqUYxl za~(Dmp1bdtd6aQUw+WljA$TSX5cdHLsk`4f9>K-q5v}$$wA%jp>GAUlo_JBe zM^1VEGI7J~7SmlGy6gi8UrcxzF_`xV4U60+9uw1h#6^WBkMw@+%CxQSGaaBIY zRGz!?u`%bMll|)#sGW3IqBe@(zUdCMd7Ze=NKlVkm;40HY|$Om#s}9@Wr}7t&oQ>c zJ=T14_srv)JDSEc&pgcApgX-JUc%_@ShOG9>2ZxJNSb;uT9jJM3OVR{HY8;$dL4(7 z(u@j!A%(?FxTcA@Azj&Zn0Z*iv!eoy;;l=*=L?3@*ee}9TTY!-6NDYk@EARTimgQIxEYm zr&}uKh?G$0b?b%Hd2PCdy5@Tm(IbB-mFB4&nMWS3p`PyEIO;>+IGF}$^TbpY(bN4C z^>l3$$>H79)4jEgdb&NL5B)ppLvOu=ls5|HkEst`HHn6M`-JlKq+BVw#X~~*QtEK` zqr*)%R%}&njBf(f`+h%;MSmpWUr zcla7*Z9kv^wsvIrDHCyTVs zHB1(n1cTRNtO}p3$5avwWY65G8kb_kWxFt@FRK zZ*k&L)T8LP9v1!9=E-+Hi+(HSBF(RxASNrl?Unu3<>$P9df_rQ>m~d;Br)+~Pa0d%)c>--q7ljp&WK zbLP5>U|ZGf6vw$I9}>@a+x2(F?yL{5J@;zSx0Ah!&aSWa-$tYQn?}dJi_yv%(KLzl zt2blb&d*DuaN~Sz?1HDX?R5V>Sh4wCd*AO9sgIPS_ffx7gFfnuc)8m@sw3@Naz&8ykA89xF9obKl)7odyqdedvpyqo0ygzM>s{Nur7~)*x`S)ulW!h<`2I|-R}LrV+)8n!hwOpb zKP_-Qj$8C=q8s|9LW+*a><(`l^+2|iiaw}(!*pbc2i=j&OI6)&JNRaiUNjJ^jYJcO znR7j*qf_l~#r4qB&M|tAjE>iDT(1OQ9zKXSroHHGxUlvO&sl0$^E2r^)mD0De~X^k zGwX2k*-LMDR@1%iQkq>^MR(4J;)%JFZnL+}rkmk_cvbZWahsh$x7lqDdPmek_qUr9 z=>B#XQ!(j+g6u2aCQgv2QwhipHdkv36#V9V>atut3m96Gk;*S6O)HclM+U`xO4 z*sL8Bhw!~w+v}eF6Ne^kJz_hMH8|0IWir-$ye*nA(m;(GBunjn69Co~s9&P8O%DGK1Cds(b zGSZqG@2J2Z4f!9yPXrR*HB-~@r<)qhNBRJKx*iMuG)*f5e=6utz^Ac$#cyN%2?&l+ ze+&2*KyL>47qUL(`zZJcpv%Cge3YH1z`q1^1^5>;pY%_FPj>GIA2)GbUmL5@v=40; z_!I-OL;7RD#}pln<~-t1=cj`pe|`nN(Vr{8r+ohbzA@i>*be@pEX2+u;L|(1Mc|)f zuzwJIgh}&*f1ZIq2!1-~+rg*Kj_xO%r1VdMPt~U4FbjOL-v>Tk(dhb%z$f}R_#{{Q zHQ-ad#2^@yzp{Tj_&K020^e)k{{;Mrpew+qo2AnKJ@_=#egpVaKf*rR!!hv5Pug@p zqwv>dASgZYl%H4_NLvO5Oo+S@Qeh_wHtqzU{4U0i(vW@9{~ZWau~vm2r4#<3K@NdW zb~oUsmlyfQ!x=Yt_u!}eCp$C2N2tXgttmT{Zz1?p-h=olJEUI;K9%>6_^I;JiO|S) z{sO+y&aG_6ZVR>ZUGORX6T#Qd3;6j{@ZI2F2ENhH_t^d#@QwEWo9#D)Z}jsV5LB+a zO!^-1$?kW+4~akclfnN9_->%6NBGkOK3!A(06s{)UcL!Fnw0i7_&BxodN}|-E=$@8 z@adhls4v9xCGg3gPr=vyM?8$wneDsa*d!E&XnNO5 z*Itn?>|X{xve)Xtr}m=!xe|Pe!xr$3acBd9kZRuoU$r-~|26Q*{*xyAd%-9Bzc$(L z1)uC6H`#v=eDcrbka87gCmI{sKOcOf|L22G_UD6d^#4-u$^MtYhe^G>tHCF|>%doW zBmbM(ewWGqz2H-QJqo@t{yV{^`g+`8huZ&-!ABKnKLelQr2PLS+keYs|3mP}e`-8N z|6|}h`JW2D(f{+nB!9BNH~NzSKKYXmzA6{_Gar1iztm)Z4fy!4`Azn}%KGgl{d-ye zK9l}qtpB)4|7F(iHR=C}^^cnLKV$t*O!^a1*;L+CJTe%|dp`J7-ihEF%j*N5%9{ng zF`g^IM;2N!_{Mm)u)g1z4k1VzQqDK9x5W7a^nm64svyzOlU5fKPhG;H!M8{of2e`MCysgKNq-INe{9lkV|`kk&{*Dk!KZqh z20oIAxKV~X!KeDZ2z+Dz;W6+j?w5kEuIC`NpR=7S4R$CFhry?Keg%Bhe&{;$KKN9w z796WMlfGlBjKl5V8~vONz8m`A17D9n>SYD^2&s0^$j5OT_+pPBS;Vf{Bv`rieg;`R^l-9UBUImrBRcsHTP8L@ho?dO4S^#8xv z{!;Lb{*OOT#^-AAjq#ZVKE>x+@Qv}g1bnKmTTS-M!Ke7p-(4B)U(5FQo9tiD_MbD^ zzXyD1r`}2yz2O{|EZ-gHPwf zbnvNsf)B${=gT-=3O;V#y8cw~N&m|x{W+}PY|{TS>wnFp-^%(AoAmDmpUV3p_{Q@7 z2l!OppM!5K?-Q*5mP!9P*8j6f|2N=^^B;U;d56HKc9V*SMPqqKO_%xMyBT`DQ#{WD zpW=x>@e7IP0`SQ`{`eroekJ&1|0a|Dn^=FRNq-0H|JbDeB>2?+`@nYtRr~J;pZpmz z@acN>3EQVvea7-8&yfC12j5uUEb!?%Sp>d_6EdLkmVi(8*MRQ^s`j%UeA2tYWdAm{ zzujd2Veskvc?^7dZczR|!}eb?*?*JmziYDpcea1ZWPi*B(w}j7C^MEf1AK~qCiuqk zE@Ay8CjA=L_nY)@Vf~v;`rl&x9VY!}!Ke261o-N@LGgSYe2V8Q;Jbk;o_}Ne$4vGU zE|mV;@X%@WKOKBJUnYU?Qg(2n?=-x!}-@F_m!Ci}O69}9ky z$^Jdyll_e*`;V~x-6s7Xv;KW1{hzb`9+UnXtiR8s{}ATnoO)htH$E z;8VTd3_i(Ky}t%N)yqTR8~uDAd`iC`e50SSGo}6;CjF`4lm2m&{yf$nftPkh`(I{# zH~2>T*Mm>}VITPTub-z~;8XdRf@!=yJPba?YaRINyrzD|0q{xhtKb{+eFJrBgarut{<|NmCp&Q`wv zZg$Qz{-3x0*^1BS-44&x{=b|4nbzaks+Tj(_e}M}^%KI`IfnNLR?o#}i+>9q#_4^A z+9-~+h2w|oZ-mpIi1z|k&-*oD_z#0WQo5k6!TW=~ad`jW*xvFic+2K3Dy%3hnOk07 zF|9&hg#oKw1_dPx%U4vC&A)tp+5Dx2^GQ$0mdsyKTye$RvWlg1m&}(eEXOgwaK*AR zqqgPZph4rtT*c@4f}-L1W_T=e&d3r>tGqL^Lsu`gO6?7wI!B09aKyKM^`-H672}|W zg}1Y<^2-gMU!IkIet3OPW<^Ee&9V? zlIj{zSOBboxEUUgg}{>~W!Y9T8L5zP6k>(edMsJSA3qkZ3I&U3cw{(3n@xsC2FbGa zJTg`)N8=*7k#n*Pq$ffovoeDQ(IQ1v8<%VgN-YYOW!)+xG|Q~)ph0m0$hr$Mt#a{- zs>#Z+sG2MpL=`CEzFM$0vQZgfQ=MeV_*vFTR=#i}JJZ6AY|B7oM+ii=41_8F>#wg5G)HXoIhG9~CqjeBks(y)m%e~e#B65E2%AbYTgKM1M6+dt z%_(I2u}&dlYfcd%YO`h3%qe6@tnzEzXRw`>ym5t>B4yx!$oUGMVc z)!UP4b@}#W8k_O73iU;^h^6&pTArAm%m`7?~ z-{NHRcrwMA=&|nYd92IjiBv9+@p4X&49mo-d65GcrtcTA^T)kE)0N8OiEy3va33$& ztQVCpTUs7yuB)oAyI!n29NACq2b%Nb9-igp(UT>EsPYt-r+?+?z{9=3VVTJQhsjJf zAC=kC@_*r(iF=2`@`=={xC=NeO@vE|C)@J6>ET|Xb$PgRXwHZGg<;Z|TcG?9NaUKe z?l*cObsRm}@+#xWwz|xCvSlpHu6tz^tX=ndA8N;6oHvSq67LKKG;cX;1S*^&W?WT#~Ay!j>SRg|zSIZKxbz?(Q9s2nhZ7l)6&GPTA#X3wv*}ryOhChJyVw(e^z8YHAl?T?#C0~cF?dvxz z?klu;&0p(GtQMj`M(fvQply?LVLzX3l``Z*1DrW6J$wdht6IBh`K|77i)&aa%Qa%v z;u^!3dd--fA7-`JjND9Xr{q_i3hV2tuL<}sUSq8k?hCd2@!3VC^B0r_nrMaE^{wLm zZf!<>*i3}9%5oiN>tvzdrTU+IF2dTb`X+$hJU3L;w*}Bw!@sKLhS}b9l)FBVUf0-? zN4!}pu?la?tm;Pprq=7Q@Nnb$Sv6~08rzzy12~{!&4Oxri~pKgkOrF9SJlrFr{WS? z%DNTr{1(@>T5v*@Lr(3ChVW-qh3+?>R`NQ?=anQPo>)qyK2X&Xu*}Eu^e~-S;To`I z+K>hua&B2JTujS24_~?1(pAgzCG2@`sU6~+)!8miFKeH0ep$L@I=w7)!kt}sEE3;# z9)5aRnvrLhtW@jM%QBhy?D`*kjm6TgI=h0+RGeP&?iaiH}6e7apj7R#T%mky}DtsjwV*F%(t2dFCjH$B4*r z$naPeE+Z>~-xz=i9f7en;f-V>C)8zeT{92EaC%X>!)q{Owsp3-k+RLRPLm%g4GqYg zW<;h$jJ{M+nyS%!DgsZPC)#5|1PZ?P%td{kah2RR0vNJ6` z$_^8r?1UPgX}OZE<0k2%MMfS?1<&gR^|3um)jer+}?=g_J%39 zH)6THVan}|SZ*)MEo#n-f?BjCuR3i^?I8yR7IkCU9&*BzJ11hfF+^l|pAZ})Vh?jv z@#PKL;=U>Fyp}gkTy$j*D)NGW% ztJ;Iv6LmIPdXg8WzVlR=tW%-BMKtpe9*d~tg{j#*6)kJ4DrTk<Yjt)D@z3o zV41HMvN@h62pGd+4U@kZ#bSY_!x+a3mreyBOga^ZVfjUDBpA=)7K;%r>j-!d8PTRO zsue~fTv0%qUAAFjQut$Z$93zi9Rjgy{G2JtkmJb`}I-Sc|VJ;^g zy|Zhbbyikr^Ai_D9_~7Ao+|q0;%2Ef7A8;ABOs4@oi@90El}?UhsjO_f0&yQFH{)+ zVvo$}^bWFhetJK7SUMH2FzJT1Ryh!My10bvLt`+ElZMGpUAr(KW_{jKkJ+kE@1Y)a z_ztCqdeZWYroOYqWzj>uX4bI29AkJ)*FZ5WZRq}o=?-IWW#i_}{jIa+3Mc7+U=v4i2B@GxK&t_YFOF}+)CZiG3J8%4NIFNV${Ryn%8@`ajV z^h|F%!-mg{r4A0Dg(<1t1J;Wo#=!JMky@hMt)D-qDTxePvZ8PVl2G)iJTnW7O zvOuRFa5MEGt7%3rCx#y!jWA>ohE?&qeoc_j1giJhu(IOlXUwv8* z+JzcgUte9{65fz}ZyPeiCk7l)WmVL@7Bkt?>1`_(aJL#R(b5AAb*<@eT1)rWwa{DM zbh41%gm<@r7A?KCs(D?YHN9$Wo#wA<#)wK&HMq-KgyjP4@qV#B;4Ue-Vu_pA7jetc z8TSk^2$7ENStee*WnfS~>jLe6WqjuBV|CDtx)Y+H|5*EO!!rlc1wEw7kYvaE1% z1^!H6e%XqJm{a5POmRaZF6zrliYkg0mY2?5QCM72TDEM(GCBpyeVJ3VSro~-YGJ8m z)<%qA1uF2Cv}SDv#vW$TlP(7CT4ogmHU#P$n*zegav!KPW4H{&h)b&bu}w9EiRZ+U>0435FNNuSk|__ zwXPumYUM&Sp>=^~t-f*nI(OUpmb!K81AaFKL?8^#W|VOVd2pAe0@bZjR@m4az$mHJ zS*03Ou$8W&hK%;ujEMM)a7`LMxSC!axO&soSFgLSu6e`NEw$DDYc|z1_-oes*ZHez zX3cA>tM|_;ZEp0pRipiv;jbt#6q;VwL~Xti4R#)yIJ;zMvVv`Vb1i*WuYa|b3q=wB zJx)5|jM@3Z#->eZy;_mD?*6YeCaq9wY4uYpnOj|rYh7#07wby+OO^7+5IAZFqSEVd zoBB7oq8fcNxGFD4O-=JR&~;s%S?JDG5jnTbU)Q*zv9W$_X^ zVG&GGUk>w~TD0cCwQZQOqh*)}f=~p>QjgglaM1U`zNWrvU5iHdfQky5LDr0WISwyx zTVGv@Rm|)BGH*CVodim=w0wSZGrSP3t{M*@I~WBt@FG`c^FNA!v2En8NiRm{V6 zRd+^}HVa(>>Sbd*NrQ2LdSeoGp<#`8*&u1fMHG>HsD{21R(^*W*%URg_B%*1K}a*L z{*K2fJfETCMS$ro+|q?*+2~uCC029Pg3CD~k$iil@dMYeqGaowV5F)1s6qHGSJYuB z#lkw;tPNGovuYaa{WNv%+N)>PU*lctZ?4#wQ`3@Py`lPQ@73!z&h|7kY?@t@ceQ_3 z;jG5ybs6G8Q#|5fj%jeV-4gWE>H~#UxJu2+DqH9+&sseH$`!>c%MDK!=~=~|RVAwy z&0Sueoxduhsk-5da>3A7OwY=@{BqC26_+nqmA@e83v@zs_R_PwOENv4+y(hr`76H2 z++}Yvec8eVMN7QPuFPLplKlmiU3J;g3q6HiPtL;fm03$XUts>mzF7JddHIX-bH8*& z>Abv>FVF{LH!8i0GS*5u}Max&>-NhH^!7}|ZIo*@% z&78e*;gu_wUw(O(a6!CX!VX{A6q`*eRfn5(R<%0p)LEr`Gz{Fj%5t+zrQWBjl&Zrn zyX4ul>YaSp9b|7Rw$J!s8VjudmrbitU0wNEqbck z?6p(tAhtPmJQpfOFWfL6dRWvSR8fbk@Fh~(P|xxpxL2u8>Zyi>#LuZW>sCrT_;65X z`GY3q(ePBul>u5bgEq8!c@W&24TlNGNw%OlWm20q%xf2myt+#196l_;2UTgaXdx<9 zo}TJoFkGhc2&NiVu;GTwl{*75%AH}&dTQpuv) z@G5?e$3{Ia!>lNkc3ovydr&G}x=NV{f?=mb+jW&;869SkYlKW^QD~(Sud596MX3a> zl&QmDs$qG1+29=AaOrA3tk+roRzB>~3+}r))o$I;ul3+QSV`NOMpvS?d)mAx!dJ|Pr`m~}Xqs-F)h@K>d5 z+B$P|Y@==GB_ul?35n6;6W+Qh{@t76M%$8bkGFd@N5aD7i{mbd!xFWcW0bZK-`b3t zWOF3kyg8wLbHbL*37Y0)S`g96NJ1fqiLxzBZisgz#Klp1e7$}KB;>`2RG4ujNN(&j za4(IEgF;-g?f6Z4g7}SxL?-y)ImJhrNmE%%mdJJ- zEXB%9&!I!*!FWliq!U!qpw|nNg@K7mB8_rsCK;2HN9Ud|YQ`-ii!Ws-ql#4Er;LP` zvKI4Vvk=v(_$IzKZH#R?Ql94&DbJS)@U1neOfjEfOoy+jkJdt3$z$_k_Rd4~Yu|!N z*>`e@eqo|Ei(ADoltqCY_yA*rUur0fs@-dKoq9ueSO3LkYI5#Y5L zc|^dDJ%AiX;J|j#2uI>f9AIRpp&G%?`NBL>Gu+=QC?AsC~VVj+hgLm|fHxDT1e*7^#ZrX_sez)M((zKc>w$j1#^CyI^4Be+K@ ziSq>m5lsY){=vXY_|QOTBW+`zhf5=Esc!(H_H*t(0SXs?ZYXm!5r{*Qv0{h-Z?cg` z1Q~TEmm~Hgon!VA6+MO)GmKixWvT;G7Ey1T7^7(IGAfSJK-!q(epnjyK1)t;+L5m0 zkBNUbdPbDuK_J;2IU+e0K^_^K{2@_sV@?4^UCA-?1BF(6awfD!**PG%*fD=hF{K_k zW(2vPkeo^|YRrWMiDPmBiKtJpbu!u-9z>E)VZoMevyCQhJ(~MM+?Q>m7lPUXYAsP( zqDrG4j%*FTLE7;o^dfD2NZKciX_NXv-A|`c{$)^4`V=Is^kci^9uzQX5_XRfdD#X? zwM3P{ewe4t)^G#r^(xA!&}K`X3-zZ+z3{8VO1Td7MyldMy6dDo0CKA!V~Fend50h` z1UcrfAgP45CD((rr4At~wC&)$l00D0UDP(e2-Z_)Fki{X(#kxx1vkJ9wlwA90p)7r zcJgV7ZJe$29Xc9kTP{#bQ!45S&DQt`DHQ6eTA~uEXDwSpK3dH4q*jUuuYha8+PMRi zp>|Z7A%u!HTf=sw{fyEsN6>x%Z4tEPv^141y6Cost6*k5nOTGQRC6I@>%HG-D21XgOsyePDIbG;lZwBFYBFgCO8F-uE2z?w z7K1!aWR+;H>p{{&O14^BGdR`!Y?X8mfYL*ratM@&MVE-hhag3EcTsj)qOz(#BQ(4T>%S)JUq>BK zy#_7kfC^e(1!^G`?d#&Sr>oxzBJUL$9Rn#cdPtOOB&@C`>BFK9GC|f7xjTiTR1R`8 zk&g)J29V+k@~F6iOjORPF1fAIg;chEHrpgysW=VxjU&c*+j4Q`*hg0mG&XVF*hklm z@wRet)!0W@4Q+xlq&g+I_Tif8BO6cI$bH-B`{6^d+W zpQ8qqM2iYOPUQ1KdNatUhv^bypO6;zM6$d@yMPElA zxv#ID}eW*L5979Mk&2}C|_dJT~c_NyQskr!z zNCF*2XH}tNEDq0)!Lc?y8G9-cbwC^ksiVMg8yXLm>Q=Un^su-Q5;Z~^=_8q8FC(O2T;H#&6PcA*@kfkd1%btTO^~-Eq4*d7` z3l`1)W-0ns!>v;1{s>g5b8oBM{j={pecRnHzee4#;_|u0R2Qf@u}~Hos@RBU6H9NS z!QdF76AQhO9_dgI4{J(^MJ{MDD_T^m{gI28--+#NTjT~YXr zXI^!5|Mwr4b-Pmjv3Yu2?oBoODsS8I+*^N~I$_(WfoHF1e`3UszW&6r`yO?6f6q2K z_4tFY|1;TpOZo$w-+pDu?|!l3M-z{2xZ&z3IFy3lH2l2y72&r6KRYdzkd7%@jHoMJX+5L{AS`e2fq^hR^vxw1)}2v|M4s=HhPFc677T}wF){3ar{@7 zi_0d(_o~ zOWGk+!uQyR&%h&{E12%%G%Alzm{vZ_XMNR?q&^|p{4dz-V;iF93*Ka^Y;3gHCgq{Z zDei5ctGV2%Y*Up(^s^vWaS~m2&??XOaZL6y@uN+(J>t>Ns_p%*V{p<;$i!14kn$pX z6f4SyVnk)8aw0-(tbMo-G?ri*co^KpTF<b{`uNX-=#7h z`}=3D&n!I||32_Ie(~GJ{KvDKb3Pq}EqaVeK!7IWM{R!reqX|`0l#+q?#1t6{GP(^ z5PpBe?_>O&s9?H5;!xairvb6ijfq(Fh|Vl}QYRL5QfWCoY~q#)q}wU8=v&5FA zb;IP{bY77hiLK=7bl`-nEz{8c0JSx2;p9Cm-vu2U4$EIXp>>6kt4FSI_SJJ%IJtVr zqSFT3F#pxl(`q<}H6e%l$Cr;LB({q0VV1kYq*tBpu>PTfX`2%!{zI^D*P3wF+H9ZV zdCGiF3{@4v$MVkd$QoB4hQ#S;@eX;z5-*)K&bRG$aK6mg!TdsgjQO`i|xS(Kh&MkKqqR*pKxT<(ltm;W0p;l|C|^iTttK@)JiQ`F}9wIRI^4B zTv%ih)pW|_)KG|U(Ga2~jq4ln4ZXVR75EzxLlQYDpJ#KGV{T_)uD_}Y^GgjnOE9$% zBswm_lzti+T~JN`I^MS>IwdBZ`7su@K1^UsT?Q+cQTyQ=?sboYSNK?sP=kGn1UQXh)puXtd+;n_R7qUuxLVkyDFy zyr?a5o*QeQmh2o6?P~qlc|r8zXvZ@*A$6kTCCK8Uw?;qhoE5zo8M}@;CqghX+V!q8 zelbLgoX+THosO+=xYap5*0I6nM3U*T0LREhPDd=fni9RmS-i#RhX%?ZX}O(T?)%{oc`F6WYP&>WQCplbA3LL>m%{KO=QJ|zK>lg2AAs>O z6_2u|7>t55sn0|^?!D<_XM*D|u;E4&9ABrb5*#0Z9ud9OnF`i6~y*|I7h&4DuQ~u(ETr^+bMKUhUz-V2c&V9patY^bvkc$M&rmCy(Rh? zr_J?4j4IAaaVEvWxxe0ss)%#kWn1KoMZs-Ug&LB^#FEOWl4!@V8(l{o_d%YBN*aY~ zh(;uwD0>R%7!)~)+SMPS1v?KxF9uFeSn3>)AfQ5A8=@WkHzNEa9lIeMi=d$9_c$jb zw`}<7T`Zd0OnYXEbJ;V_nIAcqA8^iWcP{;#bEfMpYKEiG4DHjB5MIX!WC9n*L_1!- z(cXl5jCSmUQAccwQ(FR`Q5omLndgz8<2l+{HkumArbL<}G_$Tm4@i!p7onM2eltGEUqs%`7ECQdV zF#vsiz?0DLW%)rMF7PEZ`2*3nh$m#7d z(ANsQ6m*kBUp;4d`7GeLH}7 zek$26(bokGfbNv&YX?$(8-bKx6L2Er^%8x4pdWOlMBi#4mK-lxCDB(3r1Zr=N?!!T zy6`0h5`A-kxF(e3N%YafdK&1NK+>NEOa<+h=t~2Vy+oGB1FIo-N%Tbl*Min0`c9%t zK>GAzp6ne5RzW@}(MJOSm7oVC`uc&ScL-Pkey>E|LFOL-js<_eMBhFj`MX!5Zx@jA z+X*B)UBD|L@09540A2x_UL*j08-b)p0~hCmPxIA)K6;@`d_V9j;8#lY(Vz#qTqP@5 zUJ9h^LWx9QG0Tf2`tpF}PbQG;O#`lmzFVSi0`SYA(H$)_r&nBLcMp*4(xA;%u+uHkw-dMu^bU!>Z9vlR1d{${AjO5IE&_e6K#EI~L|-M4 z@|nZvWt_=44M=tpfh&+MUZT&%{8I=L#p$F(-w7b;9|e|!KOoU}1h^b@zeL|*U>WE> ziN0PSr8^+yCHp1%_5#Vj-HhFg+ZnqUJAjnF6<7+pO%i?dTAkvtn&m5in4wZqD$z&t zMo3-&{0nddw`eVM?8pl3?-%>a_#1Yj}vX%c-Yzy+XbsxZ*!0#Y0_AnBi?2PVi*O7ziS z$$Zd55`D*kq&EPh`{@yhzJ6d7XnHkG@?Kye=z|h{JuE*U(YFsM+69pE?*>x3oxpiW zw?m?@3pf{ar$k=|kgmh+5`7zil%C!WQF=eH0P;$SzEvzQWqC1>?$1RMeFZ?eKhKfq z^8%@!qJU)Y6bh9OIlV&z`i=w1?|vZ3=@mc8ds*JYd>ZS|1AnhX-yUEt=-m>1JAq_p zJCOYE0+PK>;B4s8{CJ>`rqYu?B`lu<%z->lqR$KTg3graqX`Sypr=XnO#o(rPLt?M z1g3+Im*|TEen?#hiEBGZ-xaF55O7yvaRR2*D*Jwb>kA~m~j{_;6Bfv>WM?-W# zAI+X3KWNyFa_V8%X*SfYg6XljutUCV@_r=yL(7{}?6FhqU54bwZ-=IB*o?gA#oMK(gNt zB>RVf7~n4Hlju7HL|4A#Aj^AzBS9aK=-Uq@`96uh-9TzbyCkmZ0FvESpbL6U5`FbR ziiaPFTVY8hBlR|LeRv7|tvZw`>`d4W;j~rE)byo2}temMIg1m z7l73Mo(EF9dk#qL?P*{oa6gdR+mk?QZ~qA_20j6#c85Akp!W7-U?%W!;0)knKx%J$ zfz-}^1f=%02j~Jm3e{2mao&~^a_fZql71HS|819k&@f!_x90Cxi6 zqqYNxytHoucLVPOb_2fwgiPBG+y=ZC*a^HF*bcl4xDj|KunBkvuoiebuo8G1a24=Y zU@7nxU@@=*SODAt%mcOqGl4e&X8>;mx`D7Q>f<_KBIpf37qATo(3*jCJ^Tr<05}B9 z1U?I->mAW_eLDc8#zpiH;`R)107!Hn@F`#q(|dtG1l`T_HsB9Hw=>-Yd<1kQ)1|=O zpbMDJ1U?Mf&2%F0AQaVC6@LNFAC%Fqa2n1-q1ycJz2n0_%1RMYo z-2=P^xF7fma4(SB@owOkfZf1e;11xAfZKp8ft^6oZwGb*Hv)aYCg97!S|HMhc+LT? z0!?;Gfpi`e12cdHz@Gv0fOi8kfpNeY%y$E+eWn3X1W`WHcY%Hh2oTpJh0j6&z33+x z>lyuwKZ}v_=NRi4s~B?`XEDYweikj$z0CMLV;XY^H)A_vC1U}jn^9vNQ0W=F8QU2v84DQQi~uqbeFMkAZf|O}+lxzV z_JU%&y`ac$Pn%$~C#Ko$i79sb0b7qP%CXC~+qTDMx9`KBC&buyNA1CWXH<8T&Au&a zXOtcL?NKg!M^q<{`yEFdG4=zF9_;rz_Bm|!-HyEuJNA39-{#m3PN!oVjyoM)IBs`z z;<(+>f&GyEgxzKz1lqAbj{O094>C)JA*{_Iu*@V!tDPC-~dqw_|@Y?o^!3J`{HnX@}xYV1FcT z0Q+4dcaKEDWF|EL3_Q1--aiLf*36pjZ*9UX-- zjvBym|EME4?i`x}1N<{97Ct+bI@kC;j<=aNVShYn2>Z_Du4J^H^sMFVShYjC?&=|ka9EyB}*B=8PT6|1pA(pgW&8>>A~^-lmpmzr|g1eXG#~2 z+fzEQA518J-ok~M2(oW*M z8%jHY{h_oz?02N?#J+pnF6i`(JBa<@xZ~LOk2`{g4cfM);-ZZcT5a?m#YjJa^E?69 zqT-QK<4Z*2w-=p%+O9_01f)@akJd=`pkK=RAK;;Z^!Ky=rL3?1_UrmlQr^Sz-=Kq> zfIdtfr~ek&GtmE}{9&V0X0QDadX(QP)~CtTlwU8~n}8b?(S1zMr}Vh@)KW(rTLIZ1l6ez7bMRQ}Sth6Ax!3A7FVJ$D@hmcW^ugS^h1` z5B4{*d=uFR-Olv6@Qv&Zv3@b9KgslaV<3mlAp1K9>4@%S`scVKQ+hEM7O)ie9g1H! zVoDoLzfM5R2H+=c-;J001;~fC0xqwM>GyE|C3}fXk79q)nBK?!xPY|X&iT7pZex2h zn0|un!QUCI-$v%Vb8_Sb8UVb2LHRKO$Btnlinp#W#HF5fADlf`Y%;mX0S;|XUew5q$ zDyFaIcvmw0KGKrCTBeK0Ka^L^i91T=1Fh!3{ff_5>W|R2j%hW=?Paou^6cR9yhQ0? ze!9^6#^M+n9cs?d@RtO|(18ubcDpas73(d^X2xH`8xG zkMir}{5~Q7LGNbz3bGHnm+75se>dCzjLsjFXD{2ko9uz!&-BN1euC~{+CkR?*c)Vf z*N{EXF62Yo&)8ls>yPL2e=q0v9d5sUEWZ?K$$mf6-{AOD|CY9=xjpUY^cPWn&>vv^ zbwG+&56h47`7+3I>d#VrA7*>wsC>}xWqtZHAF?;Z`rG*WbCT(gxqijaI{aD8<#T~g z+iuDa_WIbKo6DET^6iKd*{8oCr|lQ&eC2rko$4396*Jw$?Z1}kL8@=aJDFa|_S|f5 zC)?Z2a(aJB=T{}4Uw82Nr{+{X#_>>phqRCKN1A^2KbPY-gY7@e?Jbk(HGID3F&z)2 z^u;PY*+ZTKOn)0?H_|)!{8jhAUqR1!|9g(=7wM03`g7UdF{VGI_(J|qrnewAM5n=T z+UU=I65wM2`*$WgzmM7%^jEQbFSReouVQ%;r~eAeuc7t@eQF0{C4F;)3AXoprYDj;=-}+-RFa?HlwYrXS?`pTYDbPM^#4T~wdY{}R(_ zlpg;5l>MW6C4XLK|9YTD^53z1Ime@!)1RX9qm8u#X&X=Xcho^5_xCPBTFUQ1*8hy_ z@4HN|CV!#xXSV+ruD?fEzLNcYf$1c+_nM-~U)X<>>2Cqa-urBC9Q!-S@@|ShAFSRVQSB?_X+D)l0DEPP>-~|#plx$rmtgr^irF)xqN;^GfnpiNr18`Vgo8l<5r4KOS+W?LCgiRHn-) zf0TbL`&-ZLIfLcDr1(Of#q#N}OY}UZUm$y+uVC88_SQ0;&-NCvz5B@?>a>8{i-YXJ z{}z_t&i>uObS%f`8%)z+1hvmsxP4CH@_vuy7gPLUqmS)xp!3T>S5p3<`&oW7(h>a* z)2~o{gZ_wVKgvPvnFdE_dz7w^2D*UTdoRl$p?Kq*TgC0an%b9v?xFG`k4lzbPI3dC zLit0diRCm7Xr$@yb`#)p;*j*`4U!w^2dRC)hZ>guh~hU9{atz?gN?r0K!4_|&ey*) zy_?HRT2fP}Yn>pB^s6TMQj@$6@i6M2XVS+z)et$}8Hdo~uNT2n+gcnL?d>z!$2-pu zd4Y-k$VA7R{B1=1jQ0P-WdENgda5b?uTAm-lf6|Y`gOE*V}7Y7`QJ?P9us}5NuT=N zMteUq$v-mr_g#}*vsfHQpMcGi#;tU$MOI(B4b32A0fA7Fm@yr)Fpnu?-Mai}Z)j?@ z)I%s&*fdV%4rj6)D@lYVRST6dJGf}fG^|S`KT3(O=T_7AYx$GXEhY;ha~KxO$U;|s z2U=+tSGCk);gou@29s6FLac{SkMD`|M1N?Cl|fFw^o^CVklFqgMKVlRH{};`g&XBm zFgjtD!m;wHoYw$FXe^g>GNsW!mu#-5VGFfs;TK!iH5D~gb@UNv(>Jf>(o*0rEk~+q7z`K|sS4o-7iKkOsDH0pI%U1idx*z#+vray z#KIQ-GJJZydHoet^=$!NM@Ud9@|(*I{`$K00YwHH)&~6kfIp)_e0h18FZ``&lr+ru zCRpI5R6R|*o{2;pc6na^pCeR#MUyW!Pt9Kn% zCBQez>8~;>8d}zs;|uYmP>nB&SJVdTv49Sjk+{}h#;>=VR_negS?GdTifdS# zRk3tMv4*eWhFP%8`eX4{m1nJKRaMrSatQ;=&+~_T^L~wW@~Uv30iRP zl&&=`6;O|bjPnshiv{iSi7zg*p&`%63n$3Uw{9&Nv-K2KO(4UQ6Im|A79L_jJ!{v) z@jcm*GYX1LMfPMxPIwxz$D=1V8zzBVc`!4a4*000Jf)aVN1|RVgPEs`!<-Wtxw?j> zf!Vs)>}yUqi4e$Acu7Yb29L0yqjK3~GAOWg#gi2-Aqfx^PdK?JC;d)8*=7Q@Yu@z%rdDN0)~ywa~CUm-M8TroEBHp6tl-px9I* zPnMoAoXey^b*(E}I*4@vBGyGvZ1x~iPiT_Jd}k}OCTYGdu=FQS7n{=M>H^Djvvsj4 zohL_^SSA!=J_&VAlMQb;0TyQsQ_P?sT>W^mD6K`CB0g1IIMbf+5l|yx@`-PGYYUSgH(Y|*y1?4e99?dz2_dkE85WvVzFArfio=!MlO5T@X~do^N-o+F z9Z~)1_QGcQFR187Oo8xZ>JrNWOCP+-r+hlHh+CenkxNIRm8&nAsw9><%^sdm^fA#t z(TxX>Jl=5XL4jp9p6qZ5!wNiEdXjKeKpIq6x}tU7LT(Yh)1}MQ?V74jW}6)`u=ykw zEh>*z*|B`U&B)bl=sBor8!nOcGFumfiwf2&j_8>XTZSWYIfP`5vWVN}opp5y{+eDxTTlBte07q;m9xmh#hxv97yyAO%144xrA?Fe$Qi zM@+@{Wa*M{p(72dRZ^5q&Uk3;p(pdSW~J3kt-i2yVNQia4`GC7zx>GJyv(rgZ8CE8 zq{g$>Gdq-BvaozbMcMqz=aH;P{SO$96hZ`5?0{xQW6nFaTNY3*ORSl uiX)*Ju7*5Wx+j+HjKoxfq-A+tMouo$$(qm9H7(aESCtpC3c41H?f(Pg5xlhk literal 0 HcmV?d00001 diff --git a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.h b/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKAutoLog.h similarity index 96% rename from Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.h rename to Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKAutoLog.h index 2e208ed..91c4185 100644 --- a/Example/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.h +++ b/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKAutoLog.h @@ -18,7 +18,6 @@ #import - -@interface FBSDKAppEventsUninstall : NSObject +@interface FBSDKAutoLog : NSObject @end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h b/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKMarketingKit.h similarity index 80% rename from Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h rename to Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKMarketingKit.h index 06fde34..90975b4 100644 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h +++ b/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKMarketingKit.h @@ -18,8 +18,10 @@ #import -#import "FBSDKCoreKit+Internal.h" +//! Project version number for FBSDKMarketingKit. +FOUNDATION_EXPORT double FBSDKMarketingKitVersionNumber; -@interface FBSDKCheckmarkIcon : FBSDKIcon +//! Project version string for FBSDKMarketingKit. +FOUNDATION_EXPORT const unsigned char FBSDKMarketingKitVersionString[]; -@end +#import diff --git a/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Info.plist b/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..91b0dd054d539c983410bddb8d3ecda1179f8c06 GIT binary patch literal 734 zcmZWm&2G~`5Z+xV6bQs=3Z;dXQhv)}Wj8bm;*``x3Q^jqHfcantc|@%maM&&?NkI_ zfEy3M365M45=S0@GcUjsAjE|O;=nq!l}hYo=9~GxPcySUpR+Jh)$ht8L?=$pojN^# z=Ipu5`3qSkw~$}FcxmbK^3uwct83TRuWzj1xOwaL9ZShq#*8}+Vh@=|_lzmBl;xdj zW$Zbe>hzFu;k(p}_UV8L&r%lB-lG@P9!I3d>9JzXkyO@aG_aJ_lv(roLT7d)^(2_I zXb{S*lXiEBD;@GFY!Z7!2GpGRvbvI1jiCslL}^3;^9IM8W8ar;>NGit`XX>cOUb6n zMD$EIcZBOR9#59l&6GObxI4o~)8uA_ncmRrQ}$Eclxa*n(9O0j9NI}@az3TOJm!ww zJtGl!pVZ_fnN6$2Wqi`oO69@>ZJ)|>=BgEG)*!)%MslkPH(rvnTh&exWvCWA$z?!ADv|_nX zEVh{+Yei^kTUhO+C8}Jc)0pGw+n1O3> z6F!8GVHYwO!dLJ$d<#FoPw+GR3V*;~@HhMe|DrjRK^iKdGO8j2wULEv)JH=weFz>! La4(5TK+pdHWKZA9 literal 0 HcmV?d00001 diff --git a/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Modules/module.modulemap b/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Modules/module.modulemap new file mode 100644 index 0000000..3ddf3eb --- /dev/null +++ b/Example/Pods/FBSDKMarketingKit/FBSDKMarketingKit.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module FBSDKMarketingKit { + umbrella header "FBSDKMarketingKit.h" + + export * + module * { export * } +} diff --git a/Example/Pods/FBSDKLoginKit/LICENSE b/Example/Pods/FBSDKMarketingKit/LICENSE.txt similarity index 100% rename from Example/Pods/FBSDKLoginKit/LICENSE rename to Example/Pods/FBSDKMarketingKit/LICENSE.txt diff --git a/Example/Pods/FBSDKMarketingKit/README.txt b/Example/Pods/FBSDKMarketingKit/README.txt new file mode 100644 index 0000000..12038f4 --- /dev/null +++ b/Example/Pods/FBSDKMarketingKit/README.txt @@ -0,0 +1,46 @@ +Facebook SDK for iOS +==================== + +This library allows you to integrate Facebook into your iOS app. + +Learn more about the provided samples, documentation, integrating the SDK into your app, accessing source code, and more at https://developers.facebook.com/docs/ios + +NOTE: It is suggested you install the Facebook SDK to ~/Documents/FacebookSDK + +TRY IT OUT +---------- +1. Download the SDK at https://developers.facebook.com/docs/ios or via CocoaPods by adding the 'FBSDKCoreKit', 'FBSDKLoginKit', and 'FBSDKShareKit' pods. +2. Test your install: build and run the project at ~/Documents/FacebookSDK/Samples/Scrumptious/Scrumptious.xcodeproj +3. Check-out the tutorials available online at: https://developers.facebook.com/docs/ios/getting-started +4. Start coding! Visit https://developers.facebook.com/docs/ios for tutorials and reference documentation. + +FEATURES +-------- +* Login - https://developers.facebook.com/docs/facebook-login +* Sharing - https://developers.facebook.com/docs/sharing +* App Links - https://developers.facebook.com/docs/applinks +* Graph API - https://developers.facebook.com/docs/ios/graph +* Analytics - https://developers.facebook.com/docs/analytics + +GIVE FEEDBACK +------------- +Please report bugs or issues to https://developers.facebook.com/bugs/ + +You can also join the Facebook Developers Group on Facebook (https://www.facebook.com/groups/fbdevelopers/) or ask questions on Stack Overflow (http://facebook.stackoverflow.com) + +LICENSE +------- +See the LICENSE file. + +DEVELOPER TERMS +--------------- + +- By enabling Facebook integrations, including through this SDK, you can share information with Facebook, including information about people’s use of your app. Facebook will use information received in accordance with our Data Use Policy [https://www.facebook.com/about/privacy/], including to provide you with insights about the effectiveness of your ads and the use of your app. These integrations also enable us and our partners to serve ads on and off Facebook. + +- You may limit your sharing of information with us by updating the Insights control in the developer tool [https://developers.facebook.com/apps/{app_id}/settings/advanced]. + +- If you use a Facebook integration, including to share information with us, you agree and confirm that you have provided appropriate and sufficiently prominent notice to and obtained the appropriate consent from your users regarding such collection, use, and disclosure (including, at a minimum, through your privacy policy). You further agree that you will not share information with us about children under the age of 13. + +- You agree to comply with all applicable laws and regulations and also agree to our Terms , including our Platform Policies .and Advertising Guidelines, as applicable . + +By using the Facebook SDK for iOS you agree to these terms. diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h deleted file mode 100644 index a0ee634..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h +++ /dev/null @@ -1,96 +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. - */ -__attribute__ ((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 __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)canShow __attribute__ ((deprecated)); - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)show __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -@end - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -__attribute__ ((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 __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m deleted file mode 100644 index 805ccef..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m +++ /dev/null @@ -1,185 +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 "FBSDKShareError.h" -#import "FBSDKShareUtility.h" - -@interface FBSDKAppGroupAddDialog () -@end - -@implementation FBSDKAppGroupAddDialog -{ - FBSDKWebDialog *_webDialog; -} - -#define FBSDK_APP_GROUP_CREATE_METHOD_NAME @"game_group_create" - -#pragma mark - Class Methods - -+ (instancetype)showWithContent:(FBSDKAppGroupContent *)content - delegate:(id)delegate -{ - FBSDKAppGroupAddDialog *dialog = [[self alloc] init]; - dialog.content = content; - dialog.delegate = delegate; - [dialog show]; - return dialog; -} - -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - if ((self = [super init])) { - _webDialog = [[FBSDKWebDialog alloc] init]; - _webDialog.delegate = self; - _webDialog.name = FBSDK_APP_GROUP_CREATE_METHOD_NAME; - } - return self; -} - -- (void)dealloc -{ - _webDialog.delegate = nil; -} - -#pragma mark - Public Methods - -- (BOOL)canShow -{ - return YES; -} - -- (BOOL)show -{ - NSError *error; - if (![self canShow]) { - error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode - message:@"App group create dialog is not available."]; - [_delegate appGroupAddDialog:self didFailWithError:error]; - return NO; - } - if (![self validateWithError:&error]) { - [_delegate appGroupAddDialog:self didFailWithError:error]; - return NO; - } - - FBSDKAppGroupContent *content = self.content; - NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:parameters setObject:content.name forKey:@"name"]; - [FBSDKInternalUtility dictionary:parameters setObject:content.groupDescription forKey:@"description"]; - [FBSDKInternalUtility dictionary:parameters - setObject:NSStringFromFBSDKAppGroupPrivacy(content.privacy) - forKey:@"privacy"]; - - _webDialog.parameters = parameters; - [_webDialog show]; - [FBSDKInternalUtility registerTransientObject:self]; - return YES; -} - -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef -{ - FBSDKAppGroupContent *content = self.content; - if (!content) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"content" message:nil]; - } - return NO; - } - if (![content.name length]) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"name" message:nil]; - } - return NO; - } - if (![content.groupDescription length]) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"groupDescription" message:nil]; - } - return NO; - } - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; -} - -#pragma mark - FBSDKWebDialogDelegate - -- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results -{ - if (_webDialog != webDialog) { - return; - } - NSError *error = [FBSDKShareError errorWithCode:[FBSDKTypeUtility unsignedIntegerValue:results[@"error_code"]] - message:[FBSDKTypeUtility stringValue:results[@"error_message"]]]; - [self _handleCompletionWithDialogResults:results error:error]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error -{ - if (_webDialog != webDialog) { - return; - } - [self _handleCompletionWithDialogResults:nil error:error]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog -{ - if (_webDialog != webDialog) { - return; - } - [_delegate appGroupAddDialogDidCancel:self]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -#pragma mark - Helper Methods - -- (void)_handleCompletionWithDialogResults:(NSDictionary *)results error:(NSError *)error -{ - if (!_delegate) { - return; - } - switch (error.code) { - case 0:{ - [_delegate appGroupAddDialog:self didCompleteWithResults:results]; - break; - } - case 4201:{ - [_delegate appGroupAddDialogDidCancel:self]; - break; - } - default:{ - [_delegate appGroupAddDialog:self didFailWithError:error]; - break; - } - } - if (error) { - return; - } else { - } -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h deleted file mode 100644 index abf91aa..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h +++ /dev/null @@ -1,68 +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, FBSDKAppGroupPrivacy) - Specifies the privacy of a group. - */ -typedef NS_ENUM(NSUInteger, FBSDKAppGroupPrivacy) -{ - /** Anyone can see the group, who's in it and what members post. */ - FBSDKAppGroupPrivacyOpen = 0, - /** Anyone can see the group and who's in it, but only members can see posts. */ - FBSDKAppGroupPrivacyClosed, -}; - -/** - Converts an FBSDKAppGroupPrivacy to an NSString. - */ -FBSDK_EXTERN NSString *NSStringFromFBSDKAppGroupPrivacy(FBSDKAppGroupPrivacy privacy); - -/** - A model for creating an app group. - */ -@interface FBSDKAppGroupContent : NSObject - -/** - The description of the group. - */ -@property (nonatomic, copy) NSString *groupDescription; - -/** - The name of the group. - */ -@property (nonatomic, copy) NSString *name; - -/** - The privacy for the group. - */ -@property (nonatomic, assign) FBSDKAppGroupPrivacy privacy; - -/** - Compares the receiver to another app group content. - @param content The other content - @return YES if the receiver's values are equal to the other content's values; otherwise NO - */ -- (BOOL)isEqualToAppGroupContent:(FBSDKAppGroupContent *)content; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m deleted file mode 100644 index d3f429f..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m +++ /dev/null @@ -1,109 +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 "FBSDKAppGroupContent.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareUtility.h" - -#define FBSDK_APP_GROUP_CONTENT_GROUP_DESCRIPTION_KEY @"groupDescription" -#define FBSDK_APP_GROUP_CONTENT_NAME_KEY @"name" -#define FBSDK_APP_GROUP_CONTENT_PRIVACY_KEY @"privacy" - -NSString *NSStringFromFBSDKAppGroupPrivacy(FBSDKAppGroupPrivacy privacy) -{ - switch (privacy) { - case FBSDKAppGroupPrivacyClosed:{ - return @"closed"; - } - case FBSDKAppGroupPrivacyOpen:{ - return @"open"; - } - } -} - -@implementation FBSDKAppGroupContent - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [_groupDescription hash], - [_name hash], - _privacy, - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKAppGroupContent class]]) { - return NO; - } - return [self isEqualToAppGroupContent:(FBSDKAppGroupContent *)object]; -} - -- (BOOL)isEqualToAppGroupContent:(FBSDKAppGroupContent *)content -{ - return (content && - (_privacy == content.privacy) && - [FBSDKInternalUtility object:_name isEqualToObject:content.name] && - [FBSDKInternalUtility object:_groupDescription isEqualToObject:content.groupDescription]); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _groupDescription = [decoder decodeObjectOfClass:[NSString class] - forKey:FBSDK_APP_GROUP_CONTENT_GROUP_DESCRIPTION_KEY]; - _name = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_GROUP_CONTENT_PRIVACY_KEY]; - _privacy = [decoder decodeIntegerForKey:FBSDK_APP_GROUP_CONTENT_PRIVACY_KEY]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_groupDescription forKey:FBSDK_APP_GROUP_CONTENT_GROUP_DESCRIPTION_KEY]; - [encoder encodeObject:_name forKey:FBSDK_APP_GROUP_CONTENT_NAME_KEY]; - [encoder encodeInteger:_privacy forKey:FBSDK_APP_GROUP_CONTENT_PRIVACY_KEY]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKAppGroupContent *copy = [[FBSDKAppGroupContent alloc] init]; - copy->_groupDescription = [_groupDescription copy]; - copy->_name = [_name copy]; - copy->_privacy = _privacy; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h deleted file mode 100644 index ecb6d04..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. - */ -__attribute__ ((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 __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)canShow __attribute__ ((deprecated)); - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -- (BOOL)show __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -@end - -/** - -@warning App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. - */ -__attribute__ ((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 __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -/** - -@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 __attribute__ ((deprecated)); - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m deleted file mode 100644 index dd7a11a..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m +++ /dev/null @@ -1,167 +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 "FBSDKShareError.h" -#import "FBSDKShareUtility.h" - -@interface FBSDKAppGroupJoinDialog () -@end - -@implementation FBSDKAppGroupJoinDialog -{ - FBSDKWebDialog *_webDialog; -} - -#define FBSDK_APP_GROUP_JOIN_METHOD_NAME @"game_group_join" - -#pragma mark - Class Methods - -+ (instancetype)showWithGroupID:(NSString *)groupID - delegate:(id)delegate -{ - FBSDKAppGroupJoinDialog *dialog = [[self alloc] init]; - dialog.groupID = groupID; - dialog.delegate = delegate; - [dialog show]; - return dialog; -} - -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - if ((self = [super init])) { - _webDialog = [[FBSDKWebDialog alloc] init]; - _webDialog.delegate = self; - _webDialog.name = FBSDK_APP_GROUP_JOIN_METHOD_NAME; - } - return self; -} - -- (void)dealloc -{ - _webDialog.delegate = nil; -} - -#pragma mark - Public Methods - -- (BOOL)canShow -{ - return YES; -} - -- (BOOL)show -{ - NSError *error; - if (![self canShow]) { - error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode - message:@"App group join dialog is not available."]; - [_delegate appGroupJoinDialog:self didFailWithError:error]; - return NO; - } - if (![self validateWithError:&error]) { - [_delegate appGroupJoinDialog:self didFailWithError:error]; - return NO; - } - - NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:parameters setObject:self.groupID forKey:@"id"]; - - _webDialog.parameters = parameters; - [_webDialog show]; - [FBSDKInternalUtility registerTransientObject:self]; - return YES; -} - -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef -{ - if (![self.groupID length]) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"groupID" message:nil]; - } - return NO; - } - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; -} - -#pragma mark - FBSDKWebDialogDelegate - -- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results -{ - if (_webDialog != webDialog) { - return; - } - NSError *error = [FBSDKShareError errorWithCode:[FBSDKTypeUtility unsignedIntegerValue:results[@"error_code"]] - message:[FBSDKTypeUtility stringValue:results[@"error_message"]]]; - [self _handleCompletionWithDialogResults:results error:error]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error -{ - if (_webDialog != webDialog) { - return; - } - [self _handleCompletionWithDialogResults:nil error:error]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog -{ - if (_webDialog != webDialog) { - return; - } - [_delegate appGroupJoinDialogDidCancel:self]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -#pragma mark - Helper Methods - -- (void)_handleCompletionWithDialogResults:(NSDictionary *)results error:(NSError *)error -{ - if (!_delegate) { - return; - } - switch (error.code) { - case 0:{ - [_delegate appGroupJoinDialog:self didCompleteWithResults:results]; - break; - } - case 4201:{ - [_delegate appGroupJoinDialogDidCancel:self]; - break; - } - default:{ - [_delegate appGroupJoinDialog:self didFailWithError:error]; - break; - } - } - if (error) { - return; - } else { - } -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h deleted file mode 100644 index b57d923..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h +++ /dev/null @@ -1,96 +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, FBSDKAppInviteDestination) - Specifies the privacy of a group. - */ -typedef NS_ENUM(NSUInteger, FBSDKAppInviteDestination) -{ - /** Deliver to Facebook. */ - FBSDKAppInviteDestinationFacebook = 0, - /** Deliver to Messenger. */ - FBSDKAppInviteDestinationMessenger, -}; - -/** - A model for app invite. - */ -@interface FBSDKAppInviteContent : NSObject - -/** - A URL to a preview image that will be displayed with the app invite - - - This is optional. If you don't include it a fallback image will be used. -*/ -@property (nonatomic, copy) NSURL *appInvitePreviewImageURL; - -/** - An app link target that will be used as a target when the user accept the invite. - - - This is a requirement. - */ -@property (nonatomic, copy) NSURL *appLinkURL; - -/** - -@warning Use `appInvitePreviewImageURL` instead. - */ -@property (nonatomic, copy) NSURL *previewImageURL __attribute__ ((deprecated("use appInvitePreviewImageURL instead"))); - -/** - Promotional code to be displayed while sending and receiving the invite. - - - 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; - -/** - Promotional text to be displayed while sending and receiving the invite. - - - This is optional. This can be between 0 and 80 characters long and can contain - alphanumeric and spaces only. - */ -@property (nonatomic, copy) NSString *promotionText; - -/** - Destination for the app invite. - - - This is optional and for declaring destination of the invite. - */ -@property FBSDKAppInviteDestination destination; - -/** - Compares the receiver to another app invite content. - @param content The other content - @return YES if the receiver's values are equal to the other content's values; otherwise NO - */ -- (BOOL)isEqualToAppInviteContent:(FBSDKAppInviteContent *)content; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m deleted file mode 100644 index 05c54d7..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m +++ /dev/null @@ -1,177 +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 "FBSDKAppInviteContent.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareUtility.h" - -#define FBSDK_APP_INVITE_CONTENT_APP_LINK_URL_KEY @"appLinkURL" -#define FBSDK_APP_INVITE_CONTENT_PREVIEW_IMAGE_KEY @"previewImage" -#define FBSDK_APP_INVITE_CONTENT_PROMO_CODE_KEY @"promoCode" -#define FBSDK_APP_INVITE_CONTENT_PROMO_TEXT_KEY @"promoText" -#define FBSDK_APP_INVITE_CONTENT_DESTINATION_KEY @"destination" - - -@implementation FBSDKAppInviteContent - -- (NSURL *)previewImageURL -{ - return self.appInvitePreviewImageURL; -} - -- (void)setPreviewImageURL:(NSURL *)previewImageURL -{ - self.appInvitePreviewImageURL = previewImageURL; -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - return ([FBSDKShareUtility validateRequiredValue:_appLinkURL name:@"appLinkURL" error:errorRef] && - [FBSDKShareUtility validateNetworkURL:_appLinkURL name:@"appLinkURL" error:errorRef] && - [FBSDKShareUtility validateNetworkURL:_appInvitePreviewImageURL name:@"appInvitePreviewImageURL" error:errorRef] && - [self _validatePromoCodeWithError:errorRef]); -} - -- (BOOL)_validatePromoCodeWithError:(NSError *__autoreleasing *)errorRef -{ - if ([_promotionText length] > 0 || [_promotionCode length] > 0) { - NSMutableCharacterSet *alphanumericWithSpaces = [NSMutableCharacterSet alphanumericCharacterSet]; - [alphanumericWithSpaces formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]]; - - // Check for validity of promo text and promo code. - if (!([_promotionText length] > 0 && [_promotionText length] <= 80)) { - if (errorRef != NULL) { - *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 = [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 = [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 = [FBSDKError invalidArgumentErrorWithName:@"promotionCode" value:_promotionCode message:@"Invalid value for promotionCode, promotionCode can contain only alphanumeric characters and spaces."]; - } - return NO; - } - - } - - if (errorRef != NULL) { - *errorRef = nil; - } - - return YES; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [_appLinkURL hash], - [_appInvitePreviewImageURL hash], - [_promotionCode hash], - [_promotionText hash], - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKAppInviteContent class]]) { - return NO; - } - return [self isEqualToAppInviteContent:(FBSDKAppInviteContent *)object]; -} - -- (BOOL)isEqualToAppInviteContent:(FBSDKAppInviteContent *)content -{ - return (content && - [FBSDKInternalUtility object:_appLinkURL isEqualToObject:content.appLinkURL] && - [FBSDKInternalUtility object:_appInvitePreviewImageURL isEqualToObject:content.appInvitePreviewImageURL] && - [FBSDKInternalUtility object:_promotionText isEqualToObject:content.promotionText] && - [FBSDKInternalUtility object:_promotionCode isEqualToObject:content.promotionText] && - _destination == content.destination - ); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _appLinkURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_APP_INVITE_CONTENT_APP_LINK_URL_KEY]; - _appInvitePreviewImageURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_APP_INVITE_CONTENT_PREVIEW_IMAGE_KEY]; - _promotionCode = [decoder decodeObjectOfClass:[NSString class] forKey: - FBSDK_APP_INVITE_CONTENT_PROMO_CODE_KEY]; - _promotionText = [decoder decodeObjectOfClass:[NSString class] forKey: - FBSDK_APP_INVITE_CONTENT_PROMO_TEXT_KEY]; - _destination = [decoder decodeIntegerForKey: - FBSDK_APP_INVITE_CONTENT_DESTINATION_KEY]; - - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_appLinkURL forKey:FBSDK_APP_INVITE_CONTENT_APP_LINK_URL_KEY]; - [encoder encodeObject:_appInvitePreviewImageURL forKey:FBSDK_APP_INVITE_CONTENT_PREVIEW_IMAGE_KEY]; - [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]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKAppInviteContent *copy = [[FBSDKAppInviteContent alloc] init]; - copy->_appLinkURL = [_appLinkURL copy]; - copy->_appInvitePreviewImageURL = [_appInvitePreviewImageURL copy]; - copy->_promotionText = [_promotionText copy]; - copy->_promotionCode = [_promotionCode copy]; - copy->_destination = _destination; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h deleted file mode 100644 index c340ec8..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 -__attribute__ ((deprecated("App Invites no longer supported"))); - - -/** - - @warning use showFromViewController:withContent:delegate: instead - */ -+ (instancetype)showWithContent:(FBSDKAppInviteContent *)content delegate:(id)delegate -__attribute__ ((deprecated("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. - */ -- (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 9b882b0..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m +++ /dev/null @@ -1,83 +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 "FBSDKShareError.h" -#import "FBSDKShareUtility.h" - -@implementation FBSDKAppInviteDialog - -#define FBSDK_APP_INVITE_METHOD_MIN_VERSION @"20140410" -#define FBSDK_APP_INVITE_METHOD_NAME @"appinvites" - -+ (void)initialize -{ - if ([FBSDKAppInviteDialog class] == self) { - [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK]; - // ensure that we have updated the dialog configs if we haven't already - [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; - } -} - -#pragma mark - Class Methods - - -+ (instancetype)showWithContent:(FBSDKAppInviteContent *)content delegate:(id)delegate -{ - return [self showFromViewController:nil withContent:content delegate:delegate]; -} - - -+ (instancetype)showFromViewController:(UIViewController *)viewController - withContent:(FBSDKAppInviteContent *)content - delegate:(id)delegate; -{ - 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 = [FBSDKShareError invalidArgumentErrorWithName:@"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 deleted file mode 100644 index 6306f47..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h +++ /dev/null @@ -1,57 +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 - -/** - * A container of arguments for a camera effect. - * An argument is a NSString identified by a NSString key. - */ -@interface FBSDKCameraEffectArguments : NSObject - -/** - Sets a string argument in the container. - @param string The argument - @param key The key for the argument - */ -- (void)setString:(NSString *)string forKey:(NSString *)key; - -/** - Gets a string argument from the container. - @param key The key for the argument - @return The string value or nil - */ -- (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; - -/** - Gets an array argument from the container. - @param key The key for the argument - @return The array argument - */ -- (NSArray *)arrayForKey:(NSString *)key; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m deleted file mode 100644 index 9df7891..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m +++ /dev/null @@ -1,177 +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 "FBSDKCameraEffectArguments.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareUtility.h" - -static NSString *const FBSDKCameraEffectArgumentsArgumentsKey = @"arguments"; - -@implementation FBSDKCameraEffectArguments -{ - NSMutableDictionary *_arguments; -} - -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - if ((self = [super init])) { - _arguments = [NSMutableDictionary new]; - } - return self; -} - -- (void)setString:(NSString *)string forKey:(NSString *)key -{ - [self _setValue:[string copy] forKey:key]; -} - -- (NSString *)stringForKey:(NSString *)key -{ - return [self _valueOfClass:[NSString class] forKey:key]; -} - -- (void)setArray:(NSArray *)array forKey:(NSString *)key -{ - [self _setValue:[array copy] forKey:key]; -} - -- (NSArray *)arrayForKey:(NSString *)key -{ - return [self _valueOfClass:[NSArray class] forKey:key]; -} - -- (NSDictionary *)allArguments -{ - return _arguments; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - return [_arguments hash]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKCameraEffectArguments class]]) { - return NO; - } - return [self isEqualToCameraEffectArguments:(FBSDKCameraEffectArguments *)object]; -} - -- (BOOL)isEqualToCameraEffectArguments:(FBSDKCameraEffectArguments *)object -{ - return [FBSDKInternalUtility object:_arguments isEqualToObject:[object allArguments]]; -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _arguments = [decoder decodeObjectOfClass:[NSMutableDictionary class] - forKey:FBSDKCameraEffectArgumentsArgumentsKey]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_arguments forKey:FBSDKCameraEffectArgumentsArgumentsKey]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKCameraEffectArguments *copy = [FBSDKCameraEffectArguments new]; - copy->_arguments = [_arguments copy]; - return copy; -} - - -#pragma mark - Helper Methods - -- (void)_setValue:(id)value forKey:(NSString *)key -{ - [FBSDKCameraEffectArguments assertKey:key]; - if (value) { - [FBSDKCameraEffectArguments assertValue:value]; - _arguments[key] = value; - } else { - [_arguments removeObjectForKey:key]; - } -} - -- (id)_valueForKey:(NSString *)key -{ - key = [FBSDKTypeUtility stringValue:key]; - return (key ? [FBSDKTypeUtility objectValue:_arguments[key]] : nil); -} - -- (id)_valueOfClass:(__unsafe_unretained Class)cls forKey:(NSString *)key -{ - id value = [self _valueForKey:key]; - return ([value isKindOfClass:cls] ? value : nil); -} - -+ (void)assertKey:(id)key -{ - if ([key isKindOfClass:[NSString class]]) { - return; - } - NSString *reason = [NSString stringWithFormat:@"Invalid key found in CameraEffectArguments: %@", key]; - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; -} - -+ (void)assertValue:(id)value -{ - BOOL isInvalid = NO; - if ([value isKindOfClass:[NSString class]]) { - // Strings are always valid. - } else if ([value isKindOfClass:[NSArray class]]) { - // Allow only string arrays. - for (id subValue in (NSArray *)value) { - if (![subValue isKindOfClass:[NSString class]]) { - isInvalid = YES; - break; - } - } - } else { - isInvalid = YES; - } - - if (isInvalid) { - NSString *reason = [NSString stringWithFormat:@"Invalid value found in CameraEffectArguments: %@", value]; - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; - } -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h deleted file mode 100644 index 9639b50..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h +++ /dev/null @@ -1,43 +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 - -/** - * A container of textures for a camera effect. - * A texture for a camera effect is an UIImages identified by a NSString key. - */ -@interface FBSDKCameraEffectTextures : NSObject - -/** - Sets the image for a texture key. - @param image The UIImage for the texture - @param key The key for the texture - */ -- (void)setImage:(UIImage *)image forKey:(NSString *)key; - -/** - Gets the image for a texture key. - @param key The key for the texture - @return The texture UIImage or nil - */ -- (UIImage *)imageForKey:(NSString *)key; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m deleted file mode 100644 index 9da5c06..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m +++ /dev/null @@ -1,132 +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 "FBSDKCameraEffectTextures.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareUtility.h" - -static NSString *const FBSDKCameraEffectTexturesTexturesKey = @"textures"; - -@implementation FBSDKCameraEffectTextures -{ - NSMutableDictionary *_textures; -} - -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - if ((self = [super init])) { - _textures = [NSMutableDictionary new]; - } - return self; -} - -- (void)setImage:(UIImage *)image forKey:(NSString *)key -{ - [self _setValue:image forKey:key]; -} - -- (UIImage *)imageForKey:(NSString *)key -{ - return [self _valueOfClass:[UIImage class] forKey:key]; -} - -- (NSDictionary *)allTextures -{ - return _textures; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - return [_textures hash]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKCameraEffectTextures class]]) { - return NO; - } - return [self isEqualToCameraEffectTextures:(FBSDKCameraEffectTextures *)object]; -} - -- (BOOL)isEqualToCameraEffectTextures:(FBSDKCameraEffectTextures *)object -{ - return [FBSDKInternalUtility object:_textures isEqualToObject:[object allTextures]]; -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _textures = [decoder decodeObjectOfClass:[NSMutableDictionary class] - forKey:FBSDKCameraEffectTexturesTexturesKey]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_textures forKey:FBSDKCameraEffectTexturesTexturesKey]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKCameraEffectTextures *copy = [FBSDKCameraEffectTextures new]; - copy->_textures = [_textures copy]; - return copy; -} - -#pragma mark - Helper Methods - -- (void)_setValue:(id)value forKey:(NSString *)key -{ - if (value) { - _textures[key] = value; - } else { - [_textures removeObjectForKey:key]; - } -} - -- (id)_valueForKey:(NSString *)key -{ - key = [FBSDKTypeUtility stringValue:key]; - return (key ? [FBSDKTypeUtility objectValue:_textures[key]] : nil); -} - -- (id)_valueOfClass:(__unsafe_unretained Class)cls forKey:(NSString *)key -{ - id value = [self _valueForKey:key]; - return ([value isKindOfClass:cls] ? value : nil); -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h deleted file mode 100644 index 01d9480..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h +++ /dev/null @@ -1,140 +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, FBSDKGameRequestActionType) - Additional context about the nature of the request. - */ -typedef NS_ENUM(NSUInteger, FBSDKGameRequestActionType) -{ - /** No action type */ - FBSDKGameRequestActionTypeNone = 0, - /** Send action type: The user is sending an object to the friends. */ - FBSDKGameRequestActionTypeSend, - /** Ask For action type: The user is asking for an object from friends. */ - FBSDKGameRequestActionTypeAskFor, - /** Turn action type: It is the turn of the friends to play against the user in a match. (no object) */ - FBSDKGameRequestActionTypeTurn, -}; - -/** - NS_ENUM(NSUInteger, FBSDKGameRequestFilters) - Filter for who can be displayed in the multi-friend selector. - */ -typedef NS_ENUM(NSUInteger, FBSDKGameRequestFilter) -{ - /** No filter, all friends can be displayed. */ - FBSDKGameRequestFilterNone = 0, - /** Friends using the app can be displayed. */ - FBSDKGameRequestFilterAppUsers, - /** Friends not using the app can be displayed. */ - FBSDKGameRequestFilterAppNonUsers, -}; - -/** - A model for a game request. - */ -@interface FBSDKGameRequestContent : NSObject - -/** - Used when defining additional context about the nature of the request. - - The parameter 'objectID' is required if the action type is either - 'FBSDKGameRequestSendActionType' or 'FBSDKGameRequestAskForActionType'. - -- SeeAlso:objectID - */ -@property (nonatomic, assign) FBSDKGameRequestActionType actionType; - -/** - Compares the receiver to another game request content. - @param content The other content - @return YES if the receiver's values are equal to the other content's values; otherwise NO - */ -- (BOOL)isEqualToGameRequestContent:(FBSDKGameRequestContent *)content; - -/** - 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; - -/** - This controls the set of friends someone sees if a multi-friend selector is shown. - It is FBSDKGameRequestNoFilter by default, meaning that all friends can be shown. - If specify as FBSDKGameRequestAppUsersFilter, only friends who use the app will be shown. - On the other hands, use FBSDKGameRequestAppNonUsersFilter to filter only friends who do not use the app. - - The parameter name is preserved to be consistent with the counter part on desktop. - */ -@property (nonatomic, assign) FBSDKGameRequestFilter filters; - -/** - A plain-text message to be sent as part of the request. This text will surface in the App Center view - of the request, but not on the notification jewel. Required parameter. - */ -@property (nonatomic, copy) NSString *message; - -/** - The Open Graph object ID of the object being sent. - -- SeeAlso:actionType - */ -@property (nonatomic, copy) NSString *objectID; - -/** - An array of user IDs, usernames or invite tokens (NSString) of people to send request. - - These may or may not be a friend of the sender. If this is specified by the app, - the sender will not have a choice of recipients. If not, the sender will see a multi-friend selector - - This is equivalent to the "to" parameter when using the web game request dialog. - */ -@property (nonatomic, copy) NSArray *recipients; - -/** - An array of user IDs that will be included in the dialog as the first suggested friends. - Cannot be used together with filters. - - 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 __attribute__ ((deprecated("use recipientSuggestions instead"))); - -/** - The title for the dialog. - */ -@property (nonatomic, copy) NSString *title; - -/** - -@warning Use `recipients` instead. - */ -@property (nonatomic, copy) NSArray *to __attribute__ ((deprecated("use recipients instead"))); - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m deleted file mode 100644 index 2c4d246..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m +++ /dev/null @@ -1,235 +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 "FBSDKGameRequestContent.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareError.h" -#import "FBSDKShareUtility.h" - -#define FBSDK_APP_REQUEST_CONTENT_TO_KEY @"to" -#define FBSDK_APP_REQUEST_CONTENT_MESSAGE_KEY @"message" -#define FBSDK_APP_REQUEST_CONTENT_ACTION_TYPE_KEY @"actionType" -#define FBSDK_APP_REQUEST_CONTENT_OBJECT_ID_KEY @"objectID" -#define FBSDK_APP_REQUEST_CONTENT_FILTERS_KEY @"filters" -#define FBSDK_APP_REQUEST_CONTENT_SUGGESTIONS_KEY @"suggestions" -#define FBSDK_APP_REQUEST_CONTENT_DATA_KEY @"data" -#define FBSDK_APP_REQUEST_CONTENT_TITLE_KEY @"title" - -@implementation FBSDKGameRequestContent - -#pragma mark - Properties - --(void)setRecipients:(NSArray *)recipients -{ - [FBSDKShareUtility assertCollection:recipients ofClass:[NSString class] name:@"recipients"]; - if (![_recipients isEqual:recipients]) { - _recipients = [recipients copy]; - } -} - -- (void)setRecipientSuggestions:(NSArray *)recipientSuggestions -{ - [FBSDKShareUtility assertCollection:recipientSuggestions ofClass:[NSString class] name:@"recipientSuggestions"]; - if (![_recipientSuggestions isEqual:recipientSuggestions]) { - _recipientSuggestions = [recipientSuggestions copy]; - } -} - -- (NSArray *)suggestions -{ - return self.recipientSuggestions; -} - -- (void)setSuggestions:(NSArray *)suggestions -{ - self.recipientSuggestions = suggestions; -} - -- (NSArray *)to -{ - return self.recipients; -} - -- (void)setTo:(NSArray *)to -{ - self.recipients = to; -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - if (![FBSDKShareUtility validateRequiredValue:_message name:@"message" error:errorRef]) { - return NO; - } - BOOL mustHaveobjectID = _actionType == FBSDKGameRequestActionTypeSend - || _actionType == FBSDKGameRequestActionTypeAskFor; - BOOL hasobjectID = [_objectID length] > 0; - if (mustHaveobjectID ^ hasobjectID) { - if (errorRef != NULL) { - NSString *message = @"The objectID is required when the actionType is either send or askfor."; - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"objectID" message:message]; - } - return NO; - } - BOOL hasTo = [_recipients count] > 0; - BOOL hasFilters = _filters != FBSDKGameRequestFilterNone; - BOOL hasSuggestions = [_recipientSuggestions count] > 0; - if (hasTo && hasFilters) { - if (errorRef != NULL) { - NSString *message = @"Cannot specify to and filters at the same time."; - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"recipients" value:_recipients message:message]; - } - return NO; - } - if (hasTo && hasSuggestions) { - if (errorRef != NULL) { - NSString *message = @"Cannot specify to and suggestions at the same time."; - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"recipients" value:_recipients message:message]; - } - return NO; - } - - if (hasFilters && hasSuggestions) { - if (errorRef != NULL) { - NSString *message = @"Cannot specify filters and suggestions at the same time."; - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"recipientSuggestions" value:_recipientSuggestions message:message]; - } - return NO; - } - - if ([_data length] > 255) { - if (errorRef != NULL) { - NSString *message = @"The data cannot be longer than 255 characters"; - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"data" value:_data message:message]; - } - return NO; - } - - if (errorRef != NULL) { - *errorRef = nil; - } - - return [FBSDKShareUtility validateArgumentWithName:@"actionType" - value:_actionType - isIn:@[@(FBSDKGameRequestActionTypeNone), - @(FBSDKGameRequestActionTypeSend), - @(FBSDKGameRequestActionTypeAskFor), - @(FBSDKGameRequestActionTypeTurn)] - error:errorRef] - && [FBSDKShareUtility validateArgumentWithName:@"filters" - value:_filters - isIn:@[@(FBSDKGameRequestFilterNone), - @(FBSDKGameRequestFilterAppUsers), - @(FBSDKGameRequestFilterAppNonUsers)] - error:errorRef]; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [FBSDKMath hashWithInteger:_actionType], - [_data hash], - [FBSDKMath hashWithInteger:_filters], - [_message hash], - [_objectID hash], - [_recipientSuggestions hash], - [_title hash], - [_recipients hash], - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKGameRequestContent class]]) { - return NO; - } - return [self isEqualToGameRequestContent:(FBSDKGameRequestContent *)object]; -} - -- (BOOL)isEqualToGameRequestContent:(FBSDKGameRequestContent *)content -{ - return (content && - _actionType == content.actionType && - _filters == content.filters && - [FBSDKInternalUtility object:_data isEqualToObject:content.data] && - [FBSDKInternalUtility object:_message isEqualToObject:content.message] && - [FBSDKInternalUtility object:_objectID isEqualToObject:content.objectID] && - [FBSDKInternalUtility object:_recipientSuggestions isEqualToObject:content.recipientSuggestions] && - [FBSDKInternalUtility object:_title isEqualToObject:content.title] && - [FBSDKInternalUtility object:_recipients isEqualToObject:content.recipients]); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _actionType = [decoder decodeIntegerForKey:FBSDK_APP_REQUEST_CONTENT_ACTION_TYPE_KEY]; - _data = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_REQUEST_CONTENT_DATA_KEY]; - _filters = [decoder decodeIntegerForKey:FBSDK_APP_REQUEST_CONTENT_FILTERS_KEY]; - _message = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_REQUEST_CONTENT_MESSAGE_KEY]; - _objectID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_REQUEST_CONTENT_OBJECT_ID_KEY]; - _recipientSuggestions = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_APP_REQUEST_CONTENT_SUGGESTIONS_KEY]; - _title = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_REQUEST_CONTENT_TITLE_KEY]; - _recipients = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_APP_REQUEST_CONTENT_TO_KEY]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeInteger:_actionType forKey:FBSDK_APP_REQUEST_CONTENT_ACTION_TYPE_KEY]; - [encoder encodeObject:_data forKey:FBSDK_APP_REQUEST_CONTENT_DATA_KEY]; - [encoder encodeInteger:_filters forKey:FBSDK_APP_REQUEST_CONTENT_FILTERS_KEY]; - [encoder encodeObject:_message forKey:FBSDK_APP_REQUEST_CONTENT_MESSAGE_KEY]; - [encoder encodeObject:_objectID forKey:FBSDK_APP_REQUEST_CONTENT_OBJECT_ID_KEY]; - [encoder encodeObject:_recipientSuggestions forKey:FBSDK_APP_REQUEST_CONTENT_SUGGESTIONS_KEY]; - [encoder encodeObject:_title forKey:FBSDK_APP_REQUEST_CONTENT_TITLE_KEY]; - [encoder encodeObject:_recipients forKey:FBSDK_APP_REQUEST_CONTENT_TO_KEY]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKGameRequestContent *copy = [[FBSDKGameRequestContent alloc] init]; - copy->_actionType = _actionType; - copy->_data = [_data copy]; - copy->_filters = _filters; - copy->_message = [_message copy]; - copy->_objectID = [_objectID copy]; - copy->_recipientSuggestions = [_recipientSuggestions copy]; - copy->_title = [_title copy]; - copy->_recipients = [_recipients copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h deleted file mode 100644 index 0a48afa..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h +++ /dev/null @@ -1,108 +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 FBSDKGameRequestDialogDelegate; - -/** - A dialog for sending game requests. - */ -@interface FBSDKGameRequestDialog : NSObject - -/** - 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; - -/** - The receiver's delegate or nil if it doesn't have a delegate. - */ -@property (nonatomic, weak) id delegate; - -/** - The content for game request. - */ -@property (nonatomic, copy) FBSDKGameRequestContent *content; - -/** - Specifies whether frictionless requests are enabled. - */ -@property (nonatomic, assign) BOOL frictionlessRequestsEnabled; - -/** - A Boolean value that indicates whether the receiver can initiate a game request. - - 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 share, otherwise NO. - */ -- (BOOL)canShow; - -/** - Begins the game request 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 FBSDKGameRequestDialog. - - The delegate is notified with the results of the game request as long as the application has permissions to - receive the information. For example, if the person is not signed into the containing app, the shower may not be able - to distinguish between completion of a game request and cancellation. - */ -@protocol FBSDKGameRequestDialogDelegate - -/** - Sent to the delegate when the game request completes without error. - @param gameRequestDialog The FBSDKGameRequestDialog that completed. - @param results The results from the dialog. This may be nil or empty. - */ -- (void)gameRequestDialog:(FBSDKGameRequestDialog *)gameRequestDialog didCompleteWithResults:(NSDictionary *)results; - -/** - Sent to the delegate when the game request encounters an error. - @param gameRequestDialog The FBSDKGameRequestDialog that completed. - @param error The error. - */ -- (void)gameRequestDialog:(FBSDKGameRequestDialog *)gameRequestDialog didFailWithError:(NSError *)error; - -/** - Sent to the delegate when the game request dialog is cancelled. - @param gameRequestDialog The FBSDKGameRequestDialog that completed. - */ -- (void)gameRequestDialogDidCancel:(FBSDKGameRequestDialog *)gameRequestDialog; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m deleted file mode 100644 index fba8347..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m +++ /dev/null @@ -1,274 +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 "FBSDKGameRequestDialog.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKGameRequestFrictionlessRecipientCache.h" -#import "FBSDKShareConstants.h" -#import "FBSDKShareError.h" -#import "FBSDKShareUtility.h" - -@interface FBSDKGameRequestDialog () -@end - -@implementation FBSDKGameRequestDialog -{ - BOOL _dialogIsFrictionless; - FBSDKWebDialog *_webDialog; -} - -#define FBSDK_APP_REQUEST_METHOD_NAME @"apprequests" - -#pragma mark - Class Methods - -static FBSDKGameRequestFrictionlessRecipientCache *_recipientCache = nil; - -+ (void)initialize -{ - if (self == [FBSDKGameRequestDialog class]) { - _recipientCache = [[FBSDKGameRequestFrictionlessRecipientCache alloc] init]; - } -} - -+ (instancetype)showWithContent:(FBSDKGameRequestContent *)content delegate:(id)delegate -{ - FBSDKGameRequestDialog *dialog = [[self alloc] init]; - dialog.content = content; - dialog.delegate = delegate; - [dialog show]; - return dialog; -} - -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - if ((self = [super init])) { - _webDialog = [[FBSDKWebDialog alloc] init]; - _webDialog.delegate = self; - _webDialog.name = FBSDK_APP_REQUEST_METHOD_NAME; - } - return self; -} - -- (void)dealloc -{ - _webDialog.delegate = nil; -} - -#pragma mark - Public Methods - -- (BOOL)canShow -{ - return YES; -} - -- (BOOL)show -{ - NSError *error; - if (![self canShow]) { - error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode - message:@"Game request dialog is not available."]; - [_delegate gameRequestDialog:self didFailWithError:error]; - return NO; - } - if (![self validateWithError:&error]) { - [_delegate gameRequestDialog:self didFailWithError:error]; - return NO; - } - - FBSDKGameRequestContent *content = self.content; - - if (error) { - return NO; - } - - NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:parameters setObject:[content.recipients componentsJoinedByString:@","] forKey:@"to"]; - [FBSDKInternalUtility dictionary:parameters setObject:content.message forKey:@"message"]; - [FBSDKInternalUtility dictionary:parameters setObject:[self _actionTypeNameForActionType:content.actionType] forKey:@"action_type"]; - [FBSDKInternalUtility dictionary:parameters setObject:content.objectID forKey:@"object_id"]; - [FBSDKInternalUtility dictionary:parameters setObject:[self _filtersNameForFilters:content.filters] forKey:@"filters"]; - [FBSDKInternalUtility dictionary:parameters setObject:[content.recipientSuggestions componentsJoinedByString:@","] forKey:@"suggestions"]; - [FBSDKInternalUtility dictionary:parameters setObject:content.data forKey:@"data"]; - [FBSDKInternalUtility dictionary:parameters setObject:content.title forKey:@"title"]; - - // check if we are sending to a specific set of recipients. if we are and they are all frictionless recipients, we - // can perform this action without displaying the web dialog - _webDialog.deferVisibility = NO; - NSArray *recipients = content.recipients; - if (_frictionlessRequestsEnabled && recipients) { - // specify these parameters to get the frictionless recipients from the dialog when it is presented - parameters[@"frictionless"] = @YES; - parameters[@"get_frictionless_recipients"] = @YES; - - _dialogIsFrictionless = YES; - if ([_recipientCache recipientsAreFrictionless:recipients]) { - _webDialog.deferVisibility = YES; - } - } - - _webDialog.parameters = parameters; - [_webDialog show]; - [FBSDKInternalUtility registerTransientObject:self]; - return YES; -} - -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef -{ - if (![FBSDKShareUtility validateRequiredValue:self.content name:@"content" error:errorRef]) { - return NO; - } - if ([self.content respondsToSelector:@selector(validateWithOptions:error:)]) { - return [self.content validateWithOptions:FBSDKShareBridgeOptionsDefault error:errorRef]; - } - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"content" value:self.content message:nil]; - } - return NO; -} - -#pragma mark - FBSDKWebDialogDelegate - -- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results -{ - if (_webDialog != webDialog) { - return; - } - if (_dialogIsFrictionless && results) { - [_recipientCache updateWithResults:results]; - } - [self _cleanUp]; - - NSError *error = [FBSDKShareError errorWithCode:[FBSDKTypeUtility unsignedIntegerValue:results[@"error_code"]] - message:[FBSDKTypeUtility stringValue:results[@"error_message"]]]; - if (!error.code) { - // reformat "to[x]" keys into an array. - int counter = 0; - NSMutableArray *toArray = [NSMutableArray array]; - while (true) { - NSString *key = [NSString stringWithFormat:@"to[%d]", counter++]; - if (results[key]) { - [toArray addObject:results[key]]; - } else { - break; - } - } - if (toArray.count) { - NSMutableDictionary *mutableResults = [results mutableCopy]; - mutableResults[@"to"] = toArray; - results = mutableResults; - } - } - [self _handleCompletionWithDialogResults:results error:error]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error -{ - if (_webDialog != webDialog) { - return; - } - [self _cleanUp]; - [self _handleCompletionWithDialogResults:nil error:error]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog -{ - if (_webDialog != webDialog) { - return; - } - [self _cleanUp]; - [_delegate gameRequestDialogDidCancel:self]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -#pragma mark - Helper Methods - -- (void)_cleanUp -{ - _dialogIsFrictionless = NO; -} - -- (void)_handleCompletionWithDialogResults:(NSDictionary *)results error:(NSError *)error -{ - if (!_delegate) { - return; - } - switch (error.code) { - case 0:{ - [_delegate gameRequestDialog:self didCompleteWithResults:results]; - break; - } - case 4201:{ - [_delegate gameRequestDialogDidCancel:self]; - break; - } - default:{ - [_delegate gameRequestDialog:self didFailWithError:error]; - break; - } - } - if (error) { - return; - } else { - } -} - -- (NSString *)_actionTypeNameForActionType:(FBSDKGameRequestActionType)actionType -{ - switch (actionType) { - case FBSDKGameRequestActionTypeNone:{ - return nil; - } - case FBSDKGameRequestActionTypeSend:{ - return @"send"; - } - case FBSDKGameRequestActionTypeAskFor:{ - return @"askfor"; - } - case FBSDKGameRequestActionTypeTurn:{ - return @"turn"; - } - default:{ - return nil; - } - } -} - -- (NSString *)_filtersNameForFilters:(FBSDKGameRequestFilter)filters -{ - switch (filters) { - case FBSDKGameRequestFilterNone:{ - return nil; - } - case FBSDKGameRequestFilterAppUsers:{ - return @"app_users"; - } - case FBSDKGameRequestFilterAppNonUsers:{ - return @"app_non_users"; - } - default:{ - return nil; - } - } -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h deleted file mode 100644 index 552880c..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h +++ /dev/null @@ -1,61 +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 - -/** - Represents a single hashtag that can be used with the share dialog. - */ -@interface FBSDKHashtag : NSObject - -/** - Convenience method to build a new hashtag with a string identifier. Equivalent to setting the - `stringRepresentation` property. - @param hashtagString The hashtag string. - */ -+ (instancetype)hashtagWithString:(NSString *)hashtagString; - -/** - The hashtag string. - - You are responsible for making sure that `stringRepresentation` is a valid hashtag (a single '#' followed - by one or more word characters). Invalid hashtags are ignored when sharing content. You can check validity with the - `valid` property. - @return The hashtag string. - */ -@property (nonatomic, readwrite, copy) NSString *stringRepresentation; - -/** - Tests if a hashtag is valid. - - A valid hashtag matches the regular expression "#\w+": A single '#' followed by one or more - word characters. - @return YES if the hashtag is valid, NO otherwise. - */ -@property (nonatomic, readonly, assign, getter=isValid) BOOL valid; - -/** - Compares the receiver to another hashtag. - @param hashtag The other hashtag - @return YES if the receiver is equal to the other hashtag; otherwise NO - */ -- (BOOL)isEqualToHashtag:(FBSDKHashtag *)hashtag; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m deleted file mode 100644 index ad1b6f4..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m +++ /dev/null @@ -1,123 +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 "FBSDKHashtag.h" - -#import "FBSDKCoreKit+Internal.h" - -#define FBSDK_HASHTAG_STRING_KEY @"hashtag" - -static NSRegularExpression *HashtagRegularExpression() -{ - static NSRegularExpression *hashtagRegularExpression = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - hashtagRegularExpression = [[NSRegularExpression alloc] initWithPattern:@"^#\\w+$" options:0 error:NULL]; - }); - return hashtagRegularExpression; -} - -@implementation FBSDKHashtag - -#pragma mark - Class Methods - -+ (instancetype)hashtagWithString:(NSString *)hashtagString -{ - FBSDKHashtag *hashtag = [[self alloc] init]; - hashtag.stringRepresentation = hashtagString; - return hashtag; -} - -#pragma mark - Properties - -- (NSString *)description -{ - if (self.valid) { - return _stringRepresentation; - } else { - return [NSString stringWithFormat:@"Invalid hashtag '%@'", _stringRepresentation]; - } -} - -- (BOOL)isValid -{ - if (_stringRepresentation == nil) { - return NO; - } - NSRange fullString = NSMakeRange(0, _stringRepresentation.length); - NSRegularExpression *hashtagRegularExpression = HashtagRegularExpression(); - NSUInteger numberOfMatches = [hashtagRegularExpression numberOfMatchesInString:_stringRepresentation - options:0 - range:fullString]; - return numberOfMatches > 0; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - return [_stringRepresentation hash]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKHashtag class]]) { - return NO; - } - return [self isEqualToHashtag:(FBSDKHashtag *)object]; -} - -- (BOOL)isEqualToHashtag:(FBSDKHashtag *)hashtag -{ - return (hashtag && - [FBSDKInternalUtility object:_stringRepresentation isEqualToObject:hashtag.stringRepresentation]); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)aDecoder -{ - if ((self = [self init])) { - _stringRepresentation = [aDecoder decodeObjectOfClass:[NSString class] forKey:FBSDK_HASHTAG_STRING_KEY]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)aCoder -{ - [aCoder encodeObject:_stringRepresentation forKey:FBSDK_HASHTAG_STRING_KEY]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKHashtag *copy = [[FBSDKHashtag alloc] init]; - copy.stringRepresentation = [_stringRepresentation copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h deleted file mode 100644 index 191c033..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. - */ -__attribute__ ((deprecated)) -@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 fb91227..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 ea942e8..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h +++ /dev/null @@ -1,144 +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 - -/** - 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. - */ -FBSDK_EXTERN 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. - */ -FBSDK_EXTERN 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. - */ -FBSDK_EXTERN 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. - */ -__attribute__ ((deprecated)) -@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 30be0d4..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; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [super initWithCoder:decoder])) { - [self _initializeContent]; - } - return self; -} - -- (void)dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [_likeButton removeObserver:self forKeyPath:@"likeActionController"]; -} - -#pragma mark - Properties - -- (void)setBackgroundColor:(UIColor *)backgroundColor -{ - [super setBackgroundColor:backgroundColor]; - _likeButtonContainer.backgroundColor = backgroundColor; -} - -- (void)setForegroundColor:(UIColor *)foregroundColor -{ - if (![_foregroundColor isEqual:foregroundColor]) { - _foregroundColor = foregroundColor; - [_likeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _socialSentenceLabel.textColor = foregroundColor; - } -} - -- (void)setEnabled:(BOOL)enabled -{ - _isExplicitlyDisabled = !enabled; - [self _updateEnabled]; -} - -- (void)setLikeControlAuxiliaryPosition:(FBSDKLikeControlAuxiliaryPosition)likeControlAuxiliaryPosition -{ - if (_likeControlAuxiliaryPosition != likeControlAuxiliaryPosition) { - _likeControlAuxiliaryPosition = likeControlAuxiliaryPosition; - [self _updateLikeBoxCaretPosition]; - [self setNeedsLayout]; - [self setNeedsUpdateConstraints]; - [self invalidateIntrinsicContentSize]; - } -} - -- (void)setLikeControlHorizontalAlignment:(FBSDKLikeControlHorizontalAlignment)likeControlHorizontalAlignment -{ - if (_likeControlHorizontalAlignment != likeControlHorizontalAlignment) { - _likeControlHorizontalAlignment = likeControlHorizontalAlignment; - [self _updateLikeBoxCaretPosition]; - [self setNeedsLayout]; - [self setNeedsUpdateConstraints]; - [self invalidateIntrinsicContentSize]; - } -} - -- (void)setLikeControlStyle:(FBSDKLikeControlStyle)likeControlStyle -{ - if (_likeControlStyle != likeControlStyle) { - _likeControlStyle = likeControlStyle; - [self _updateLikeBoxCaretPosition]; - [self setNeedsLayout]; - [self setNeedsUpdateConstraints]; - [self invalidateIntrinsicContentSize]; - } -} - -- (NSString *)objectID -{ - return _likeButton.objectID; -} - -- (void)setObjectID:(NSString *)objectID -{ - if (![_likeButton.objectID isEqualToString:objectID]) { - _likeButton.objectID = objectID; - [self _updateEnabled]; - [self setNeedsLayout]; - } -} - -- (FBSDKLikeObjectType)objectType -{ - return _likeButton.objectType; -} - -- (void)setObjectType:(FBSDKLikeObjectType)objectType -{ - if (_likeButton.objectType != objectType) { - _likeButton.objectType = objectType; - [self setNeedsLayout]; - } -} - -- (void)setOpaque:(BOOL)opaque -{ - [super setOpaque:opaque]; - _likeButtonContainer.opaque = opaque; -} - -- (BOOL)isSoundEnabled -{ - return _likeButton.soundEnabled; -} - -- (void)setSoundEnabled:(BOOL)soundEnabled -{ - _likeButton.soundEnabled = soundEnabled; -} - -#pragma mark - Layout - -- (CGSize)intrinsicContentSize -{ - CGFloat width = self.preferredMaxLayoutWidth; - if (width == 0) { - width = CGFLOAT_MAX; - } - CGRect bounds = CGRectMake(0.0, 0.0, width, CGFLOAT_MAX); - return [self _layoutWithBounds:bounds subviewSizingBlock:^CGSize(UIView *subview, CGSize constrainedSize) { - if ([subview respondsToSelector:@selector(setPreferredMaxLayoutWidth:)]) { - [(id)subview setPreferredMaxLayoutWidth:constrainedSize.width]; - } - return subview.intrinsicContentSize; - }].contentSize; -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - NSString *objectID = self.objectID; - if (objectID) { - FBSDKViewImpressionTracker *impressionTracker = - [FBSDKViewImpressionTracker impressionTrackerWithEventName:FBSDKAppEventNameFBSDKLikeControlImpression]; - [impressionTracker logImpressionWithIdentifier:objectID parameters:[self analyticsParameters]]; - } - - [self _ensureLikeActionController]; - - CGRect bounds = self.bounds; - CGSize(^sizingBlock)(UIView *, CGSize) = ^CGSize(UIView *subview, CGSize constrainedSize) { - return [subview sizeThatFits:constrainedSize]; - }; - FBSDKLikeControlLayout layout = [self _layoutWithBounds:bounds subviewSizingBlock:sizingBlock]; - - UIView *auxiliaryView = [self _auxiliaryView]; - _likeBoxView.hidden = (_likeBoxView != auxiliaryView); - _socialSentenceLabel.hidden = (_socialSentenceLabel != auxiliaryView); - - _likeButtonContainer.frame = layout.likeButtonFrame; - _likeButton.frame = _likeButtonContainer.bounds; - auxiliaryView.frame = layout.auxiliaryViewFrame; -} - -- (CGSize)sizeThatFits:(CGSize)size -{ - switch (self.likeControlAuxiliaryPosition) { - case FBSDKLikeControlAuxiliaryPositionInline:{ - size.height = MAX(size.height, CGRectGetHeight(self.bounds)); - break; - } - case FBSDKLikeControlAuxiliaryPositionTop: - case FBSDKLikeControlAuxiliaryPositionBottom:{ - size.width = MAX(size.width, CGRectGetWidth(self.bounds)); - break; - } - } - - CGRect bounds = CGRectMake(0.0, 0.0, size.width, size.height); - return [self _layoutWithBounds:bounds subviewSizingBlock:^CGSize(UIView *subview, CGSize constrainedSize) { - return [subview sizeThatFits:constrainedSize]; - }].contentSize; -} - -#pragma mark - Internal Methods - -- (NSDictionary *)analyticsParameters -{ - return @{ - @"auxiliary_position": NSStringFromFBSDKLikeControlAuxiliaryPosition(self.likeControlAuxiliaryPosition), - @"horizontal_alignment": NSStringFromFBSDKLikeControlHorizontalAlignment(self.likeControlHorizontalAlignment), - @"object_id": (self.objectID ?: [NSNull null]), - @"object_type": (NSStringFromFBSDKLikeObjectType(self.objectType) ?: [NSNull null]), - @"sound_enabled": @(self.soundEnabled), - @"style": NSStringFromFBSDKLikeControlStyle(self.likeControlStyle), - }; -} - -#pragma mark - Helper Methods - -- (UIView *)_auxiliaryView -{ - [self _ensureLikeActionController]; - switch (_likeControlStyle) { - case FBSDKLikeControlStyleStandard:{ - return (_socialSentenceLabel.text.length == 0 ? nil : _socialSentenceLabel); - } - case FBSDKLikeControlStyleBoxCount:{ - return (_likeButton.likeActionController.likeCountString == nil ? nil : _likeBoxView); - } - } - return nil; -} - -- (CGFloat)_auxiliaryViewPadding -{ - switch (_likeControlStyle) { - case FBSDKLikeControlStyleStandard:{ - return 8.0; - } - case FBSDKLikeControlStyleBoxCount:{ - return 0.0; - } - } - return 0.0; -} - -- (void)_ensureLikeActionController -{ - FBSDKLikeActionController *likeActionController = _likeButton.likeActionController; - if (likeActionController) { - _socialSentenceLabel.text = likeActionController.socialSentence; - _likeBoxView.text = likeActionController.likeCountString; - } -} - -- (void)_handleLikeButtonTap:(FBSDKLikeButton *)likeButton -{ - [self _ensureLikeActionController]; - [self sendActionsForControlEvents:UIControlEventTouchUpInside]; -} - -- (void)_initializeContent -{ - self.backgroundColor = [UIColor clearColor]; - _foregroundColor = [UIColor blackColor]; - - _likeButtonContainer = [[UIView alloc] initWithFrame:CGRectZero]; - _likeButtonContainer.backgroundColor = self.backgroundColor; - _likeButtonContainer.opaque = self.opaque; - [self addSubview:_likeButtonContainer]; - - _likeButton = [[FBSDKLikeButton alloc] initWithFrame:CGRectZero]; - [_likeButton addTarget:self action:@selector(_handleLikeButtonTap:) forControlEvents:UIControlEventTouchUpInside]; - [_likeButtonContainer addSubview:_likeButton]; - - _socialSentenceLabel = [[UILabel alloc] initWithFrame:CGRectZero]; - _socialSentenceLabel.font = [UIFont systemFontOfSize:11.0]; - _socialSentenceLabel.numberOfLines = 2; - [self addSubview:_socialSentenceLabel]; - - _likeBoxView = [[FBSDKLikeBoxView alloc] initWithFrame:CGRectZero]; - [self addSubview:_likeBoxView]; - - // use KVO to monitor changes to the likeActionController instance on FBSDKButton in order to avoid race conditions - // between notification observers - [_likeButton addObserver:self - forKeyPath:@"likeActionController" - options:NSKeyValueObservingOptionInitial - context:FBSDKLikeControlKVOLikeActionControllerContext]; - - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc addObserver:self - selector:@selector(_likeActionControllerDidDisableNotification:) - name:FBSDKLikeActionControllerDidDisableNotification - object:nil]; - [nc addObserver:self - selector:@selector(_likeActionControllerDidUpdateNotification:) - name:FBSDKLikeActionControllerDidUpdateNotification - object:nil]; -} - -- (void)observeValueForKeyPath:(NSString *)keyPath - ofObject:(id)object - change:(NSDictionary *)change - context:(void *)context -{ - if (context == FBSDKLikeControlKVOLikeActionControllerContext) { - [self _likeActionControllerDidUpdateWithAnimated:NO]; - } else { - [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; - } -} - -static void FBSDKLikeControlApplyHorizontalAlignment(CGRect *frameRef, - CGRect bounds, - FBSDKLikeControlHorizontalAlignment alignment) -{ - if (frameRef == NULL) { - return; - } - - CGRect frame = *frameRef; - switch (alignment) { - case FBSDKLikeControlHorizontalAlignmentLeft:{ - frame.origin.x = CGRectGetMinX(bounds); - break; - } - case FBSDKLikeControlHorizontalAlignmentCenter:{ - frame.origin.x = CGRectGetMinX(bounds) + floorf((CGRectGetWidth(bounds) - CGRectGetWidth(frame)) / 2); - break; - } - case FBSDKLikeControlHorizontalAlignmentRight:{ - frame.origin.x = CGRectGetMinX(bounds) + CGRectGetWidth(bounds) - CGRectGetWidth(frame); - break; - } - } - *frameRef = frame; -} - -static CGFloat FBSDKLikeControlPaddedDistance(CGFloat distance, CGFloat padding, BOOL includeDistance) -{ - return (distance == 0.0 ? 0.0 : (includeDistance ? distance : 0.0) + padding); -} - -static CGSize FBSDKLikeControlCalculateContentSize(FBSDKLikeControlLayout layout) -{ - return CGSizeMake(MAX(CGRectGetMaxX(layout.likeButtonFrame), CGRectGetMaxX(layout.auxiliaryViewFrame)), - MAX(CGRectGetMaxY(layout.likeButtonFrame), CGRectGetMaxY(layout.auxiliaryViewFrame))); - -} - -- (FBSDKLikeControlLayout)_layoutWithBounds:(CGRect)bounds - subviewSizingBlock:(fbsdk_like_control_sizing_block_t)subviewSizingBlock -{ - FBSDKLikeControlLayout layout; - - CGSize likeButtonSize = subviewSizingBlock(_likeButton, bounds.size); - layout.likeButtonFrame = CGRectMake(CGRectGetMinX(bounds), - CGRectGetMinY(bounds), - likeButtonSize.width, - likeButtonSize.height); - layout.auxiliaryViewFrame = CGRectZero; - - UIView *auxiliaryView = [self _auxiliaryView]; - CGFloat auxiliaryViewPadding = [self _auxiliaryViewPadding]; - CGSize auxiliaryViewSize = CGSizeZero; - switch (self.likeControlAuxiliaryPosition) { - case FBSDKLikeControlAuxiliaryPositionInline:{ - if (auxiliaryView) { - auxiliaryViewSize = CGSizeMake((CGRectGetWidth(bounds) - - auxiliaryViewPadding - - CGRectGetWidth(layout.likeButtonFrame)), - CGRectGetHeight(bounds)); - auxiliaryViewSize = subviewSizingBlock(auxiliaryView, auxiliaryViewSize); - - layout.auxiliaryViewFrame = CGRectMake(CGRectGetMinX(bounds), - CGRectGetMinY(bounds), - auxiliaryViewSize.width, - MAX(auxiliaryViewSize.height, - CGRectGetHeight(layout.likeButtonFrame))); - } - - // align the views next to each other for sizing - FBSDKLikeControlApplyHorizontalAlignment(&layout.likeButtonFrame, - bounds, - FBSDKLikeControlHorizontalAlignmentLeft); - if (auxiliaryView) { - layout.auxiliaryViewFrame.origin.x = CGRectGetMaxX(layout.likeButtonFrame) + auxiliaryViewPadding; - } - - // calculate the size before offsetting the horizontal alignment, using the total calculated width - layout.contentSize = FBSDKLikeControlCalculateContentSize(layout); - - // layout the subviews next to each other - switch (self.likeControlHorizontalAlignment) { - case FBSDKLikeControlHorizontalAlignmentLeft:{ - // already done - break; - } - case FBSDKLikeControlHorizontalAlignmentCenter:{ - layout.likeButtonFrame.origin.x = floorf((CGRectGetWidth(bounds) - layout.contentSize.width) / 2); - if (auxiliaryView) { - layout.auxiliaryViewFrame.origin.x = (CGRectGetMaxX(layout.likeButtonFrame) + - auxiliaryViewPadding); - } - break; - } - case FBSDKLikeControlHorizontalAlignmentRight:{ - layout.likeButtonFrame.origin.x = CGRectGetMaxX(bounds) - CGRectGetWidth(layout.likeButtonFrame); - if (auxiliaryView) { - layout.auxiliaryViewFrame.origin.x = (CGRectGetMinX(layout.likeButtonFrame) - - auxiliaryViewPadding - - CGRectGetWidth(layout.auxiliaryViewFrame)); - } - break; - } - } - - break; - } - case FBSDKLikeControlAuxiliaryPositionTop:{ - if (auxiliaryView) { - auxiliaryViewSize = CGSizeMake(CGRectGetWidth(bounds), - (CGRectGetHeight(bounds) - - auxiliaryViewPadding - - CGRectGetHeight(layout.likeButtonFrame))); - auxiliaryViewSize = subviewSizingBlock(auxiliaryView, auxiliaryViewSize); - - layout.auxiliaryViewFrame = CGRectMake(CGRectGetMinX(bounds), - CGRectGetMinY(bounds), - MAX(auxiliaryViewSize.width, - CGRectGetWidth(layout.likeButtonFrame)), - auxiliaryViewSize.height); - } - layout.likeButtonFrame.origin.y = FBSDKLikeControlPaddedDistance(CGRectGetMaxY(layout.auxiliaryViewFrame), - auxiliaryViewPadding, - YES); - - // calculate the size before offsetting the horizontal alignment, using the total calculated width - layout.contentSize = FBSDKLikeControlCalculateContentSize(layout); - - FBSDKLikeControlApplyHorizontalAlignment(&layout.likeButtonFrame, bounds, self.likeControlHorizontalAlignment); - FBSDKLikeControlApplyHorizontalAlignment(&layout.auxiliaryViewFrame, - bounds, - self.likeControlHorizontalAlignment); - break; - } - case FBSDKLikeControlAuxiliaryPositionBottom:{ - if (auxiliaryView) { - auxiliaryViewSize = CGSizeMake(CGRectGetWidth(bounds), - (CGRectGetHeight(bounds) - - auxiliaryViewPadding - - CGRectGetHeight(layout.likeButtonFrame))); - auxiliaryViewSize = subviewSizingBlock(auxiliaryView, auxiliaryViewSize); - - layout.auxiliaryViewFrame = CGRectMake(CGRectGetMinX(bounds), - CGRectGetMaxY(layout.likeButtonFrame) + auxiliaryViewPadding, - MAX(auxiliaryViewSize.width, - CGRectGetWidth(layout.likeButtonFrame)), - auxiliaryViewSize.height); - } - - // calculate the size before offsetting the horizontal alignment, using the total calculated width - layout.contentSize = FBSDKLikeControlCalculateContentSize(layout); - - FBSDKLikeControlApplyHorizontalAlignment(&layout.likeButtonFrame, bounds, self.likeControlHorizontalAlignment); - FBSDKLikeControlApplyHorizontalAlignment(&layout.auxiliaryViewFrame, - bounds, - self.likeControlHorizontalAlignment); - break; - } - } - - return layout; -} - -- (void)_likeActionControllerDidDisableNotification:(NSNotification *)notification -{ - [self _updateEnabled]; -} - -- (void)_likeActionControllerDidUpdateNotification:(NSNotification *)notification -{ - [self _ensureLikeActionController]; - FBSDKLikeActionController *likeActionController = (FBSDKLikeActionController *)notification.object; - NSString *objectID = likeActionController.objectID; - if ([self.objectID isEqualToString:objectID]) { - BOOL animated = [notification.userInfo[FBSDKLikeActionControllerAnimatedKey] boolValue]; - [self _likeActionControllerDidUpdateWithAnimated:animated]; - } -} - -- (void)_likeActionControllerDidUpdateWithAnimated:(BOOL)animated -{ - FBSDKLikeActionController *likeActionController = _likeButton.likeActionController; - NSString *objectID = likeActionController.objectID; - if ([self.objectID isEqualToString:objectID]) { - _likeBoxView.text = _likeButton.likeActionController.likeCountString; - - if (animated) { - void(^hideView)(UIView *) = ^(UIView *view){ - view.alpha = 0.0; - CGRect frame = view.frame; - frame.origin.y += kFBLikeControlSocialSentenceAnimationOffset; - view.frame = frame; - }; - [UIView animateWithDuration:kFBLikeControlAnimationDuration animations:^{ - hideView(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 isEnabled]; - [super setEnabled:enabled]; - if (currentEnabled != enabled) { - [self invalidateIntrinsicContentSize]; - [self setNeedsLayout]; - } -} - -- (void)_updateLikeBoxCaretPosition -{ - if (self.likeControlStyle != FBSDKLikeControlStyleBoxCount) { - return; - } - - switch (self.likeControlAuxiliaryPosition) { - case FBSDKLikeControlAuxiliaryPositionInline:{ - switch (self.likeControlHorizontalAlignment) { - case FBSDKLikeControlHorizontalAlignmentLeft: - case FBSDKLikeControlHorizontalAlignmentCenter:{ - _likeBoxView.caretPosition = FBSDKLikeBoxCaretPositionLeft; - break; - } - case FBSDKLikeControlHorizontalAlignmentRight:{ - _likeBoxView.caretPosition = FBSDKLikeBoxCaretPositionRight; - break; - } - } - break; - } - case FBSDKLikeControlAuxiliaryPositionTop:{ - _likeBoxView.caretPosition = FBSDKLikeBoxCaretPositionBottom; - break; - } - case FBSDKLikeControlAuxiliaryPositionBottom:{ - _likeBoxView.caretPosition = FBSDKLikeBoxCaretPositionTop; - break; - } - } -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h deleted file mode 100644 index c52f302..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h +++ /dev/null @@ -1,40 +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 - -/** - NS_ENUM (NSUInteger, FBSDKLikeObjectType) - Specifies the type of object referenced by the objectID for likes. - */ -typedef NS_ENUM(NSUInteger, FBSDKLikeObjectType) -{ - /** The objectID refers to an unknown object type. */ - FBSDKLikeObjectTypeUnknown = 0, - /** The objectID refers to an Open Graph object. */ - FBSDKLikeObjectTypeOpenGraph, - /** The objectID refers to an Page object. */ - FBSDKLikeObjectTypePage, -}; - -/** - Converts an FBLikeControlObjectType to an NSString. - */ -FBSDK_EXTERN NSString *NSStringFromFBSDKLikeObjectType(FBSDKLikeObjectType objectType); diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m deleted file mode 100644 index 273fab1..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m +++ /dev/null @@ -1,32 +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 "FBSDKLikeObjectType.h" - -NSString *NSStringFromFBSDKLikeObjectType(FBSDKLikeObjectType objectType) -{ - switch (objectType) { - case FBSDKLikeObjectTypeUnknown: - return @"unknown"; - case FBSDKLikeObjectTypeOpenGraph: - return @"open_graph"; - case FBSDKLikeObjectTypePage: - return @"page"; - } - return nil; -} diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h deleted file mode 100644 index 57fbd22..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h +++ /dev/null @@ -1,49 +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 - -/** - The common interface for components that initiate liking. - - @see FBSDKLikeButton - - @see FBSDKLikeControl - */ -@protocol FBSDKLiking - -/** - The objectID for the object to like. - - - This value may be an Open Graph object ID or a string representation of an URL that describes an - Open Graph object. The objects may be public objects, like pages, or objects that are defined by your application. - */ -@property (nonatomic, copy) NSString *objectID; - -/** - The type of object referenced by the objectID. - - - If the objectType is unknown, the control will determine the objectType by querying the server with the - objectID. Specifying a value for the objectType is an optimization that should be used if the type is known by the - consumer. Consider setting the objectType if it is known when setting the objectID. - */ -@property (nonatomic, assign) FBSDKLikeObjectType objectType; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h deleted file mode 100644 index 1604f80..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h +++ /dev/null @@ -1,47 +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 - -/** - A dialog for sharing content through Messenger. - - SUPPORTED SHARE TYPES - - FBSDKShareLinkContent - - FBSDKShareMessengerOpenGraphMusicTemplateContent - - FBSDKShareMessengerMediaTemplateContent - - FBSDKShareMessengerGenericTemplateContent - - UNSUPPORTED SHARE TYPES (DEPRECATED AUGUST 2018) - - FBSDKShareOpenGraphContent - - FBSDKSharePhotoContent - - FBSDKShareVideoContent - - Any other types that are not one of the four supported types listed above - */ -@interface FBSDKMessageDialog : NSObject - -/** - Convenience method to show a Message Share Dialog with content and a delegate. - @param content The content to be shared. - @param delegate The receiver's delegate. - */ -+ (instancetype)showWithContent:(id)content delegate:(id)delegate; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m deleted file mode 100644 index 72ae6b7..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m +++ /dev/null @@ -1,243 +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 "FBSDKMessageDialog.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareCameraEffectContent.h" -#import "FBSDKShareConstants.h" -#import "FBSDKShareDefines.h" -#import "FBSDKShareError.h" -#import "FBSDKShareMessengerGenericTemplateContent.h" -#import "FBSDKShareMessengerMediaTemplateContent.h" -#import "FBSDKShareMessengerOpenGraphMusicTemplateContent.h" -#import "FBSDKShareOpenGraphContent.h" -#import "FBSDKShareUtility.h" -#import "FBSDKShareVideoContent.h" - -#define FBSDK_MESSAGE_DIALOG_APP_SCHEME @"fb-messenger-share-api" - -@implementation FBSDKMessageDialog - -#pragma mark - Class Methods - -+ (void)initialize -{ - if ([FBSDKMessageDialog class] == self) { - [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_MESSENGER]; - [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; - } -} - -+ (instancetype)showWithContent:(id)content delegate:(id)delegate -{ - FBSDKMessageDialog *dialog = [[self alloc] init]; - dialog.shareContent = content; - dialog.delegate = delegate; - [dialog show]; - return dialog; -} - -#pragma mark - Properties - -@synthesize delegate = _delegate; -@synthesize shareContent = _shareContent; -@synthesize shouldFailOnDataError = _shouldFailOnDataError; - -#pragma mark - Public Methods - -- (BOOL)canShow -{ - return [self _canShowNative]; -} - -- (BOOL)show -{ - NSError *error; - if (![self canShow]) { - error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode - message:@"Message dialog is not available."]; - [self _invokeDelegateDidFailWithError:error]; - return NO; - } - if (![self validateWithError:&error]) { - [self _invokeDelegateDidFailWithError:error]; - return NO; - } - - id shareContent = self.shareContent; - NSDictionary *parameters = [FBSDKShareUtility parametersForShareContent:shareContent - bridgeOptions:FBSDKShareBridgeOptionsDefault - shouldFailOnDataError:self.shouldFailOnDataError]; - NSString *methodName = ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]] ? - FBSDK_SHARE_OPEN_GRAPH_METHOD_NAME : - FBSDK_SHARE_METHOD_NAME); - FBSDKBridgeAPIRequest *request; - request = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeNative - scheme:FBSDK_MESSAGE_DIALOG_APP_SCHEME - methodName:methodName - methodVersion:nil - parameters:parameters - userInfo:nil]; - FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - BOOL useSafariViewController = [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameMessage]; - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { - [self _handleCompletionWithDialogResults:response.responseParameters response:response]; - [FBSDKInternalUtility unregisterTransientObject:self]; - }; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request - useSafariViewController:useSafariViewController - fromViewController:nil - completionBlock:completionBlock]; - - [self _logDialogShow]; - [FBSDKInternalUtility registerTransientObject:self]; - return YES; -} - -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef -{ - if (self.shareContent) { - if ([self.shareContent isKindOfClass:[FBSDKShareLinkContent class]] || - [self.shareContent isKindOfClass:[FBSDKShareMessengerGenericTemplateContent class]] || - [self.shareContent isKindOfClass:[FBSDKShareMessengerMediaTemplateContent class]] || - [self.shareContent isKindOfClass:[FBSDKShareMessengerOpenGraphMusicTemplateContent class]]) { - } else { - if (errorRef != NULL) { - NSString *message = [NSString stringWithFormat:@"Message dialog does not support %@.", - NSStringFromClass(self.shareContent.class)]; - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"shareContent" - message:message]; - } - return NO; - } - } - return [FBSDKShareUtility validateShareContent:self.shareContent - bridgeOptions:FBSDKShareBridgeOptionsDefault - error:errorRef]; -} - -#pragma mark - Helper Methods - -- (BOOL)_canShowNative -{ - FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - BOOL useNativeDialog = [configuration useNativeDialogForDialogName:FBSDKDialogConfigurationNameMessage]; - return (useNativeDialog && [FBSDKInternalUtility isMessengerAppInstalled]); -} - -- (void)_handleCompletionWithDialogResults:(NSDictionary *)results response:(FBSDKBridgeAPIResponse *)response -{ - NSString *completionGesture = results[FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; - if ([completionGesture isEqualToString:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL] || - response.isCancelled) { - [self _invokeDelegateDidCancel]; - } else if (response.error) { - [self _invokeDelegateDidFailWithError:response.error]; - } else { - [self _invokeDelegateDidCompleteWithResults:results]; - } -} - -- (void)_invokeDelegateDidCancel -{ - NSDictionary * parameters =@{ - FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Cancelled, - }; - - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult - valueToSum:nil - parameters:parameters - accessToken:[FBSDKAccessToken currentAccessToken]]; - - if (!_delegate) { - return; - } - - [_delegate sharerDidCancel:self]; -} - -- (void)_invokeDelegateDidCompleteWithResults:(NSDictionary *)results -{ - NSDictionary * parameters =@{ - FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Completed, - }; - - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult - valueToSum:nil - parameters:parameters - accessToken:[FBSDKAccessToken currentAccessToken]]; - - if (!_delegate) { - return; - } - - [_delegate sharer:self didCompleteWithResults:[results copy]]; -} - -- (void)_invokeDelegateDidFailWithError:(NSError *)error -{ - NSMutableDictionary * parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys:FBSDKAppEventsDialogOutcomeValue_Failed, FBSDKAppEventParameterDialogOutcome, nil]; - if (error) { - parameters[FBSDKAppEventParameterDialogErrorMessage] = [NSString stringWithFormat:@"%@", error]; - } - - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult - valueToSum:nil - parameters:parameters - accessToken:[FBSDKAccessToken currentAccessToken]]; - - if (!_delegate) { - return; - } - - [_delegate sharer:self didFailWithError:error]; -} - -- (void)_logDialogShow -{ - NSString *contentType; - if([self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeOpenGraph; - } else if ([self.shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeStatus; - } else if ([self.shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypePhoto; - } else if ([self.shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeVideo; - } else if ([self.shareContent isKindOfClass:[FBSDKShareMessengerGenericTemplateContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeMessengerGenericTemplate; - } else if ([self.shareContent isKindOfClass:[FBSDKShareMessengerMediaTemplateContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeMessengerMediaTemplate; - } else if ([self.shareContent isKindOfClass:[FBSDKShareMessengerOpenGraphMusicTemplateContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeMessengerOpenGraphMusicTemplate; - } else { - contentType = FBSDKAppEventsDialogShareContentTypeUnknown; - } - - NSDictionary *parameters = @{FBSDKAppEventParameterDialogShareContentType : contentType, - FBSDKAppEventParameterDialogShareContentUUID : self.shareContent.shareUUID ?: [NSNull null], - FBSDKAppEventParameterDialogShareContentPageID : self.shareContent.pageID ?: [NSNull null]}; - - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogShow - valueToSum:nil - parameters:parameters - accessToken:[FBSDKAccessToken currentAccessToken]]; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h deleted file mode 100644 index 8dc40ac..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h +++ /dev/null @@ -1,33 +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 - -/** - 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. - */ -@interface FBSDKSendButton : FBSDKButton - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m deleted file mode 100644 index cc0ee18..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m +++ /dev/null @@ -1,97 +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 "FBSDKSendButton.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKMessageDialog.h" -#import "FBSDKMessengerIcon.h" - -@interface FBSDKSendButton () -@end - -@implementation FBSDKSendButton -{ - FBSDKMessageDialog *_dialog; -} - -#pragma mark - Properties - -- (id)shareContent -{ - return _dialog.shareContent; -} - -- (void)setShareContent:(id)shareContent -{ - _dialog.shareContent = shareContent; - [self checkImplicitlyDisabled]; -} - -#pragma mark - FBSDKButtonImpressionTracking - -- (NSDictionary *)analyticsParameters -{ - return nil; -} - -- (NSString *)impressionTrackingEventName -{ - return FBSDKAppEventNameFBSDKSendButtonImpression; -} - -- (NSString *)impressionTrackingIdentifier -{ - return @"send"; -} - -#pragma mark - FBSDKButton - -- (void)configureButton -{ - NSString *title = - NSLocalizedStringWithDefaultValue(@"SendButton.Send", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Send", - @"The label for FBSDKSendButton"); - - UIColor *backgroundColor = [UIColor colorWithRed:0.0 green:132.0/255.0 blue:1.0 alpha:1.0]; - UIColor *highlightedColor = [UIColor colorWithRed:0.0 green:111.0/255.0 blue:1.0 alpha:1.0]; - - [self configureWithIcon:[[FBSDKMessengerIcon alloc] init] - title:title - backgroundColor:backgroundColor - highlightedColor:highlightedColor]; - - [self addTarget:self action:@selector(_share:) forControlEvents:UIControlEventTouchUpInside]; - _dialog = [[FBSDKMessageDialog alloc] init]; -} - -- (BOOL)isImplicitlyDisabled -{ - return ![_dialog canShow] || ![_dialog validateWithError:NULL]; -} - -#pragma mark - Helper Methods - -- (void)_share:(id)sender -{ - [self logTapEventWithEventName:FBSDKAppEventNameFBSDKSendButtonDidTap parameters:[self analyticsParameters]]; - [_dialog show]; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h deleted file mode 100644 index 5886fdb..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h +++ /dev/null @@ -1,94 +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 - -/** - A utility class for sharing through the graph API. Using this class requires an access token that - has been granted the "publish_actions" permission. - - FBSDKShareAPI network requests are scheduled on the current run loop in the default run loop mode - (like NSURLConnection). If you want to use FBSDKShareAPI in a background thread, you must manage the run loop - yourself. - */ -@interface FBSDKShareAPI : NSObject - -/** - 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; - -/** - The message the person has provided through the custom dialog that will accompany the share content. - */ -@property (nonatomic, copy) NSString *message; - -/** - The graph node to which content should be shared. - */ -@property (nonatomic, copy) NSString *graphNode; - -/** - The access token used when performing a share. The access token must have the "publish_actions" - permission granted. - - Defaults to [FBSDKAccessToken currentAccessToken]. Setting this to nil will revert the access token to - [FBSDKAccessToken currentAccessToken]. - */ -@property (nonatomic, strong) FBSDKAccessToken *accessToken; - -/** - A Boolean value that indicates whether the receiver can send the share. - - May return NO if the appropriate Facebook app is not installed and is required or an access token is - required but not available. This method does not validate the content on the receiver, so this can be checked before - building up the content. - - @see [FBSDKSharing validateWithError:] - @return YES if the receiver can send, otherwise NO. - */ -- (BOOL)canShare; - -/** - Creates an User Owned Open Graph object without an action. - @param openGraphObject The open graph object to create. - - Use this method to create an object alone, when an action is not going to be posted with the object. If - the object will be used within an action, just put the object in the action and share that as the shareContent and the - object will be created in the process. The delegate will be messaged with the results. - - Also see https://developers.facebook.com/docs/sharing/opengraph/object-api#objectapi-creatinguser - - @return YES if the receiver was able to send the request to create the object, otherwise NO. - */ -- (BOOL)createOpenGraphObject:(FBSDKShareOpenGraphObject *)openGraphObject; - -/** - Begins the send from the receiver. - @return YES if the receiver was able to send the share, otherwise NO. - */ -- (BOOL)share; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m deleted file mode 100644 index a4a5887..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m +++ /dev/null @@ -1,825 +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 "FBSDKShareAPI.h" - -#if !TARGET_OS_TV -#import -#endif - -#import -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareConstants.h" -#import "FBSDKShareDefines.h" -#import "FBSDKShareError.h" -#import "FBSDKShareLinkContent.h" -#import "FBSDKShareOpenGraphAction.h" -#import "FBSDKShareOpenGraphContent.h" -#import "FBSDKShareOpenGraphObject.h" -#import "FBSDKSharePhoto.h" -#import "FBSDKSharePhotoContent.h" -#import "FBSDKShareUtility.h" -#import "FBSDKShareVideo.h" -#import "FBSDKShareVideoContent.h" -#import "FBSDKVideoUploader.h" - -static NSString *const FBSDKShareAPIDefaultGraphNode = @"me"; -static NSString *const FBSDKShareAPIPhotosEdge = @"photos"; -static NSString *const FBSDKShareAPIVideosEdge = @"videos"; -static NSMutableArray *g_pendingFBSDKShareAPI; - -@interface FBSDKShareAPI () -@end - -@implementation FBSDKShareAPI { - NSFileHandle *_fileHandle; -#if !TARGET_OS_TV - ALAssetRepresentation *_assetRepresentation; -#endif -} - -#pragma mark - Class Methods - -+ (instancetype)shareWithContent:(id)content delegate:(id)delegate -{ - FBSDKShareAPI *API = [[self alloc] init]; - API.shareContent = content; - API.delegate = delegate; - [API share]; - return API; -} - -#pragma mark - Properties - -@synthesize delegate = _delegate; -@synthesize shareContent = _shareContent; -@synthesize shouldFailOnDataError = _shouldFailOnDataError; -@synthesize accessToken = _accessToken; - -#pragma mark - Object Lifecycle - -#if !TARGET_OS_TV -+ (ALAssetsLibrary *)defaultAssetsLibrary { - static dispatch_once_t pred = 0; - static ALAssetsLibrary *library = nil; - dispatch_once(&pred, ^{ - library = [[fbsdkdfl_ALAssetsLibraryClass() alloc] init]; - }); - return library; -} -#endif - -+ (void)initialize -{ - if (self == [FBSDKShareAPI class]) { - g_pendingFBSDKShareAPI = [[NSMutableArray alloc] init]; - } -} - -- (instancetype)init -{ - if ((self = [super init])) { - _graphNode = FBSDKShareAPIDefaultGraphNode; - } - return self; -} - -#pragma mark - Public Methods - -- (BOOL)canShare -{ - return YES; -} - -- (BOOL)createOpenGraphObject:(FBSDKShareOpenGraphObject *)openGraphObject -{ - NSError *error; - if (![self canShare]) { - NSString *message = @"Share API is not available; verify 'canShare' returns YES"; - error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode message:message]; - [_delegate sharer:self didFailWithError:error]; - return NO; - } - if (![self _hasPublishActions]) { - NSString *message = @"Warning: Access token is missing publish_actions permissions"; - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:message]; - } - if (!openGraphObject) { - error = [FBSDKShareError requiredArgumentErrorWithName:@"openGraphObject" message:nil]; - [_delegate sharer:self didFailWithError:error]; - return NO; - } - - FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; - void(^completionHandler)(id) = ^(NSDictionary *result) { - [self->_delegate sharer:self didCompleteWithResults:result]; - }; - if (![self _stageOpenGraphObject:openGraphObject - connection:connection - stagingHandler:NULL - completionHandler:completionHandler]) { - return NO; - } - [connection start]; - return YES; -} - -- (BOOL)share -{ - NSError *error; - if (![self canShare]) { - NSString *message = @"Share API is not available; verify 'canShare' returns YES"; - error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode message:message]; - [_delegate sharer:self didFailWithError:error]; - return NO; - } - if (![self _hasPublishActions]) { - NSString *message = @"Warning: Access token is missing publish_actions permissions"; - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:message]; - } - if (![self validateWithError:&error]) { - [_delegate sharer:self didFailWithError:error]; - return NO; - } - id shareContent = self.shareContent; - - if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - return [self _shareLinkContent:(FBSDKShareLinkContent *)shareContent]; - } else if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { - return [self _sharePhotoContent:(FBSDKSharePhotoContent *)shareContent]; - } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - return [self _shareVideoContent:(FBSDKShareVideoContent *)shareContent]; - } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { - return [self _shareOpenGraphContent:(FBSDKShareOpenGraphContent *)shareContent]; - } else { - return NO; - } -} - -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef -{ - id shareContent = self.shareContent; - if (!shareContent) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"shareContent" message:@"Share content cannot be null."]; - } - return NO; - } - if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - if (shareContent.peopleIDs.count > 0) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"peopleIDs" value:shareContent.peopleIDs message:@"Cannot specify peopleIDs with FBSDKShareVideoContent."]; - } - return NO; - } - if (shareContent.placeID) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"placeID" value:shareContent.placeID message:@"Cannot specify place ID with FBSDKShareVideoContent."]; - } - return NO; - } - } - if (errorRef != NULL){ - *errorRef = nil; - } - return [FBSDKShareUtility validateShareContent:shareContent bridgeOptions:FBSDKShareBridgeOptionsDefault error:errorRef]; -} - -- (FBSDKAccessToken *)accessToken -{ - return _accessToken ?: [FBSDKAccessToken currentAccessToken]; -} - -#pragma mark - Helper Methods - -- (NSString *)_graphPathWithSuffix:(NSString *)suffix, ... NS_REQUIRES_NIL_TERMINATION -{ - NSMutableString *graphPath = [[NSMutableString alloc] initWithString:self.graphNode]; - va_list args; - va_start(args, suffix); - for (NSString *arg = suffix; arg != nil; arg = va_arg(args, NSString *)) { - [graphPath appendFormat:@"/%@", arg]; - } - va_end(args); - return graphPath; -} - -- (void)_addCommonParameters:(NSMutableDictionary *)parameters content:(id)content -{ - if (content.peopleIDs.count > 0) { - NSString *tags; - if ([content isKindOfClass:[FBSDKSharePhotoContent class]]) { - NSMutableArray *tagsArray = [[NSMutableArray alloc] init]; - for (NSString *peopleID in content.peopleIDs) { - [tagsArray addObject:@{ @"tag_uid" : peopleID }]; - } - NSData *tagsJSON = [NSJSONSerialization dataWithJSONObject:tagsArray options:0 error:nil]; - tags = [[NSString alloc] initWithData:tagsJSON encoding:NSUTF8StringEncoding]; - } else { - tags = [content.peopleIDs componentsJoinedByString:@","]; - } - [FBSDKInternalUtility dictionary:parameters setObject:tags forKey:@"tags"]; - } - [FBSDKInternalUtility dictionary:parameters setObject:content.placeID forKey:@"place"]; - [FBSDKInternalUtility dictionary:parameters setObject:content.ref forKey:@"ref"]; -} - -- (BOOL)_hasPublishActions -{ - return [self.accessToken.permissions containsObject:@"publish_actions"]; -} - -- (BOOL)_shareLinkContent:(FBSDKShareLinkContent *)linkContent -{ - FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { - if (!self->_delegate) { - return; - } - if (error) { - [self->_delegate sharer:self didFailWithError:error]; - } else { - result = [FBSDKTypeUtility dictionaryValue:result]; - NSMutableDictionary *shareResults = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST - forKey:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; - [FBSDKInternalUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:result[@"id"]] - forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; - [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 - [[[FBSDKGraphRequest alloc] initWithGraphPath:[self _graphPathWithSuffix:@"feed", nil] - parameters:parameters - tokenString:self.accessToken.tokenString - version:nil - HTTPMethod:@"POST"] startWithCompletionHandler:completionHandler]; - return YES; -} - -- (BOOL)_shareOpenGraphContent:(FBSDKShareOpenGraphContent *)openGraphContent -{ - // In order to create a new Open Graph action using a custom object that does not already exist (objectID or URL), you - // must first send a request to post the object and then another to post the action. If a local image is supplied - // with the object or action, that must be staged first and then referenced by the staging URL that is returned by - // that request. - FBSDKShareOpenGraphAction *action = openGraphContent.action; - FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; - void(^stagingHandler)(NSDictionary *) = ^(NSDictionary *stagedContainer) { - NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithDictionary:stagedContainer]; - [self _addCommonParameters:parameters content:openGraphContent]; - [FBSDKInternalUtility dictionary:parameters setObject:self.message forKey:@"message"]; - - FBSDKGraphRequestHandler requestHandler = ^(FBSDKGraphRequestConnection *requestConnection, - id result, - NSError *requestError) { - if (!self->_delegate) { - return; - } - if (requestError) { - NSError *error = [FBSDKShareError errorWithCode:FBSDKShareOpenGraphErrorCode - 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]; - [self->_delegate sharer:self didCompleteWithResults:shareResults]; - } - }; - NSString *graphPath = [self _graphPathWithSuffix:[FBSDKUtility URLEncode:action.actionType], nil]; - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:graphPath - parameters:parameters - tokenString:self.accessToken.tokenString - version:nil - HTTPMethod:@"POST"]; - [self _connection:connection addRequest:request completionHandler:requestHandler]; - [connection start]; - }; - if (![self _stageOpenGraphValueContainer:action connection:connection stagingHandler:stagingHandler]) { - return NO; - } - return YES; -} - -- (BOOL)_sharePhotoContent:(FBSDKSharePhotoContent *)photoContent -{ - NSArray *photos = photoContent.photos; - NSMutableArray *requests = [[NSMutableArray alloc] init]; - for (FBSDKSharePhoto *photo in photos) { - UIImage *image = photo.image; - if (!image && [photo.imageURL isFileURL]) { - image = [UIImage imageWithContentsOfFile:[photo.imageURL path]]; - } - if (image) { - NSString *graphPath = [self _graphPathWithSuffix:FBSDKShareAPIPhotosEdge, nil]; - NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; - [self _addCommonParameters:parameters content:photoContent]; - NSString *caption = photo.caption ?: self.message; - [FBSDKInternalUtility dictionary:parameters setObject:caption forKey:@"caption"]; - parameters[@"picture"] = image; - [requests addObject:[[FBSDKGraphRequest alloc] initWithGraphPath:graphPath - parameters:parameters - tokenString:self.accessToken.tokenString - version:nil - HTTPMethod:@"POST"]]; - } - } - NSUInteger requestCount = [requests count]; - NSMutableArray *results = [[NSMutableArray alloc] init]; - NSMutableArray *errors = [[NSMutableArray alloc] init]; - __block NSUInteger completedCount = 0; - FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { - result = [FBSDKTypeUtility dictionaryValue:result]; - [FBSDKInternalUtility array:results addObject:result]; - [FBSDKInternalUtility array:errors addObject:error]; - if (++completedCount != requestCount) { - return; - } - if (!self->_delegate) { - return; - } - if ([errors count]) { - [self->_delegate sharer:self didFailWithError:errors[0]]; - } else if ([results count]) { - 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]; - 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]; - [self->_delegate sharer:self didCompleteWithResults:shareResults]; - } - }; - for (FBSDKGraphRequest *request in requests) { - [request startWithCompletionHandler:completionHandler]; - } - return YES; -} - -- (BOOL)_shareVideoContent:(FBSDKShareVideoContent *)videoContent -{ - NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; - [self _addCommonParameters:parameters content:videoContent]; - [FBSDKInternalUtility 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 - UIImage *image = photo.image; - if (!image && [photo.imageURL isFileURL]) { - image = [UIImage imageWithContentsOfFile:[photo.imageURL path]]; - } - [FBSDKInternalUtility dictionary:parameters setObject:image forKey:@"thumb"]; - } - FBSDKShareVideo *video = videoContent.video; - NSURL *videoURL = video.videoURL; - if ([videoURL isFileURL]) { - NSError *fileError; - _fileHandle = [NSFileHandle fileHandleForReadingFromURL:videoURL error:&fileError]; - if (!_fileHandle) { - [_delegate sharer:self didFailWithError:fileError]; - return NO; - } - if (![self _addToPendingShareAPI]) { - return NO; - } - FBSDKVideoUploader *videoUploader = [[FBSDKVideoUploader alloc] initWithVideoName:[videoURL lastPathComponent] - videoSize:(unsigned long)[_fileHandle seekToEndOfFile] - parameters:parameters - delegate:self]; - videoUploader.graphNode = self.graphNode; - [videoUploader start]; - return YES; - } else if (videoURL) { -#if TARGET_OS_TV - return NO; -#else - if (![self _addToPendingShareAPI]) { - return NO; - } - [[FBSDKShareAPI defaultAssetsLibrary] assetForURL:videoURL resultBlock:^(ALAsset *asset) { - self->_assetRepresentation = [asset defaultRepresentation]; - NSUInteger size = (NSUInteger)self->_assetRepresentation.size; - FBSDKVideoUploader *videoUploader = [[FBSDKVideoUploader alloc] initWithVideoName:[videoURL lastPathComponent] - videoSize:size - parameters:parameters - delegate:self]; - videoUploader.graphNode = self.graphNode; - [videoUploader start]; - } failureBlock:^(NSError *error) { - [self->_delegate sharer:self didFailWithError:error]; - }]; - return YES; -#endif - } else { - return NO; - } -} - -- (BOOL)_addEncodedParametersToDictionary:(NSMutableDictionary *)parameters - key:(NSString *)key - value:(id)value - error:(NSError * __autoreleasing *)errorRef -{ - if ([value isKindOfClass:[NSString class]] || - [value isKindOfClass:[NSNumber class]] || - [value isKindOfClass:[NSNull class]]) { - parameters[key] = value; - } else if ([value isKindOfClass:[NSArray class]]) { - __block BOOL didEncode = YES; - [(NSArray *)value enumerateObjectsUsingBlock:^(id subvalue, NSUInteger idx, BOOL *stop) { - NSString *subkey = [[NSString alloc] initWithFormat:@"%@[%lu]", key, (unsigned long)idx]; - if (![self _addEncodedParametersToDictionary:parameters key:subkey value:subvalue error:errorRef]) { - *stop = YES; - didEncode = NO; - } - }]; - if (!didEncode) { - return NO; - } - } else if ([value isKindOfClass:[NSDictionary class]]) { - __block BOOL didEncode = YES; - [(NSDictionary *)value enumerateKeysAndObjectsUsingBlock:^(id subkey, id subvalue, BOOL *stop) { - subkey = [[NSString alloc] initWithFormat:@"%@[%@]", key, subkey]; - if (![self _addEncodedParametersToDictionary:parameters key:subkey value:subvalue error:errorRef]) { - *stop = YES; - didEncode = NO; - } - }]; - if (!didEncode) { - return NO; - } - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:key value:value message:nil]; - } - return NO; - } - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; -} - -- (BOOL)_stageArray:(NSArray *)array - connection:(FBSDKGraphRequestConnection *)connection - stagingHandler:(void(^)(NSArray *stagedArray))stagingHandler -{ - __block BOOL result = YES; - __block NSUInteger pendingCount = 1; - NSMutableArray *stagedArray = [[NSMutableArray alloc] initWithArray:array]; - void(^itemDidFail)(void) = ^{ - if (!result) { - return; - } - result = NO; - }; - void(^itemDidSucceed)(void) = ^{ - if (!result) { - return; - } - if ((--pendingCount == 0) && (stagingHandler != NULL)) { - stagingHandler(stagedArray); - } - }; - [array enumerateObjectsUsingBlock:^(id item, NSUInteger idx, BOOL *stop) { - pendingCount++; - void(^itemHandler)(id) = ^(id stagedValue) { - if (stagedValue) { - stagedArray[idx] = stagedValue; - itemDidSucceed(); - } else { - NSError *error = [FBSDKShareError invalidArgumentErrorWithName:@"value" - value:item - message:@"Error staging object."]; - [self->_delegate sharer:self didFailWithError:error]; - itemDidFail(); - *stop = YES; - result = NO; - } - }; - if (![self _stageValue:item connection:connection stagingHandler:itemHandler]) { - itemDidFail(); - *stop = YES; - result = NO; - } - }]; - if (result) { - itemDidSucceed(); - } - return result; -} - -- (BOOL)_stageOpenGraphObject:(FBSDKShareOpenGraphObject *)openGraphObject - connection:(FBSDKGraphRequestConnection *)connection - stagingHandler:(void(^)(id stagedObject))stagingHandler - completionHandler:(void(^)(NSDictionary *result))completionHandler -{ - NSString *type = [FBSDKTypeUtility stringValue:openGraphObject[@"og:type"]]; - if (!type) { - NSString *message = @"Open Graph objects must contain a og:type value."; - NSError *error = [FBSDKShareError requiredArgumentErrorWithName:@"og:type" message:message]; - [_delegate sharer:self didFailWithError:error]; - return NO; - } - void(^containerHandler)(NSDictionary *) = ^(NSDictionary *stagedContainer) { - NSError *JSONError; - NSString *objectString = [FBSDKInternalUtility JSONStringForObject:stagedContainer - error:&JSONError - invalidObjectHandler:NULL]; - if (!objectString) { - [self->_delegate sharer:self didFailWithError:JSONError]; - return; - } - NSString *graphPath = [self _graphPathWithSuffix:@"objects", type, nil]; - NSDictionary *parameters = @{ @"object": objectString }; - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:graphPath - parameters:parameters - tokenString:self.accessToken.tokenString - version:nil - HTTPMethod:@"POST"]; - FBSDKGraphRequestHandler requestCompletionHandler = ^(FBSDKGraphRequestConnection *requestConnection, - id result, - NSError *requestError) { - if (!self->_delegate) { - return; - } - if (requestError) { - NSString *message = [[NSString alloc] initWithFormat:@"Error creating Open Graph object: %@", - requestError.description]; - NSError *error = [FBSDKShareError errorWithCode:FBSDKShareOpenGraphErrorCode - message:message - underlyingError:requestError]; - [self->_delegate sharer:self didFailWithError:error]; - } else if (completionHandler != NULL) { - completionHandler([FBSDKTypeUtility dictionaryValue:result]); - } - }; - NSString *batchEntryName = [self _connection:connection - addRequest:request - completionHandler:requestCompletionHandler]; - if (stagingHandler != NULL) { - stagingHandler([[NSString alloc] initWithFormat:@"{result=%@:$.id}", batchEntryName]); - } - }; - return [self _stageOpenGraphValueContainer:openGraphObject connection:connection stagingHandler:containerHandler]; - return YES; -} - -- (BOOL)_stageOpenGraphValueContainer:(id)container - connection:(FBSDKGraphRequestConnection *)connection - stagingHandler:(void(^)(NSDictionary *stagedContainer))stagingHandler -{ - __block BOOL result = YES; - __block NSUInteger pendingCount = 1; - NSMutableDictionary *stagedContainer = [[NSMutableDictionary alloc] init]; - void(^itemDidFail)(void) = ^{ - if (!result) { - return; - } - result = NO; - }; - void(^itemDidSucceed)(void) = ^{ - if (!result) { - return; - } - if ((--pendingCount == 0) && (stagingHandler != NULL)) { - stagingHandler(stagedContainer); - } - }; - BOOL isAction = [container isKindOfClass:[FBSDKShareOpenGraphAction class]]; - [container enumerateKeysAndObjectsUsingBlock:^(NSString *key, id object, BOOL *stop) { - pendingCount++; - - // The server does not understand custom namespaces remove them until the server is fixed - NSString *namespace; - key = [FBSDKShareUtility getOpenGraphNameAndNamespaceFromFullName:key namespace:&namespace]; - if (namespace && !isAction) { - if (!stagedContainer[namespace]) { - stagedContainer[namespace] = [[NSMutableDictionary alloc] init]; - } - } - - void(^itemHandler)(id) = ^(id stagedValue) { - if (stagedValue) { - if (isAction) { - NSError *error; - if (![self _addEncodedParametersToDictionary:stagedContainer key:key value:stagedValue error:&error]) { - [self->_delegate sharer:self didFailWithError:error]; - itemDidFail(); - return; - } - } else { - NSMutableDictionary *valueContainer = (namespace ? stagedContainer[namespace] : stagedContainer); - valueContainer[key] = stagedValue; - } - } - itemDidSucceed(); - }; - if (![self _stageValue:object connection:connection stagingHandler:itemHandler]) { - *stop = YES; - result = NO; - } - }]; - if (result) { - itemDidSucceed(); - } - return result; -} - -- (BOOL)_stagePhoto:(FBSDKSharePhoto *)photo - connection:(FBSDKGraphRequestConnection *)connection - stagingHandler:(void(^)(id stagedPhoto))stagingHandler -{ - if (photo.imageURL) { - NSMutableDictionary *stagedPhoto = [[NSMutableDictionary alloc]initWithDictionary: @{ - @"url": photo.imageURL.absoluteString, - @"user_generated": @(photo.userGenerated), - }]; - [FBSDKInternalUtility dictionary:stagedPhoto setObject:photo.caption forKey:@"caption"]; - if (stagingHandler) { - stagingHandler(stagedPhoto); - } - return YES; - } else if (photo.image) { - NSString *graphPath = @"/me/staging_resources"; - NSDictionary *parameters = @{ @"file": photo.image }; - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:graphPath - parameters:parameters - tokenString:self.accessToken.tokenString - version:nil - HTTPMethod:@"POST"]; - FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *requestConnection, - id result, - NSError *requestError) { - NSString *stagedPhotoURLString = [FBSDKTypeUtility stringValue:result[@"uri"]]; - if (requestError || !stagedPhotoURLString) { - NSError *error = [FBSDKShareError errorWithCode:FBSDKShareOpenGraphErrorCode - message:@"Error staging photo" - underlyingError:requestError]; - [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"]; - stagingHandler(stagedPhoto); - } - }; - [request startWithCompletionHandler:completionHandler]; - return YES; - } else { - NSError *error = [FBSDKShareError invalidArgumentErrorWithName:@"photo" - value:photo - message:@"Photos must have an imageURL or image."]; - [self->_delegate sharer:self didFailWithError:error]; - return NO; - } -} - -- (BOOL)_stageValue:(id)value - connection:(FBSDKGraphRequestConnection *)connection - stagingHandler:(void(^)(id stagedValue))stagingHandler -{ - if ([value isKindOfClass:[NSString class]] || - [value isKindOfClass:[NSNumber class]]) { - if (stagingHandler != NULL) { - stagingHandler(value); - } - return YES; - } else if ([value isKindOfClass:[NSURL class]]) { - if (stagingHandler != NULL) { - stagingHandler([(NSURL *)value absoluteString]); - } - return YES; - } else if ([value isKindOfClass:[FBSDKSharePhoto class]]) { - return [self _stagePhoto:(FBSDKSharePhoto *)value connection:connection stagingHandler:stagingHandler]; - } else if ([value isKindOfClass:[FBSDKShareOpenGraphObject class]]) { - return [self _stageOpenGraphObject:(FBSDKShareOpenGraphObject *)value - connection:connection - stagingHandler:stagingHandler - completionHandler:NULL]; - } else if ([value isKindOfClass:[NSArray class]]) { - return [self _stageArray:(NSArray *)value connection:connection stagingHandler:stagingHandler]; - } else { - NSError *error = [FBSDKShareError invalidArgumentErrorWithName:@"value" - value:value - message:@"Invalid value type found in Open Graph object."]; - [_delegate sharer:self didFailWithError:error]; - return NO; - } -} - -- (NSString *)_connection:(FBSDKGraphRequestConnection *)connection - addRequest:(FBSDKGraphRequest *)request - completionHandler:(FBSDKGraphRequestHandler)completionHandler -{ - NSUInteger requestCount = [connection.requests count]; - NSString *batchEntryName = [[NSString alloc] initWithFormat:@"request_%lu", (unsigned long)requestCount]; - [connection addRequest:request completionHandler:completionHandler batchEntryName:batchEntryName]; - return batchEntryName; -} - -- (BOOL)_addToPendingShareAPI -{ - @synchronized(g_pendingFBSDKShareAPI) { - if ([g_pendingFBSDKShareAPI containsObject:self]) { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:@"FBSDKShareAPI did not share video content. Video upload already in progress."]; - return NO; - } - [g_pendingFBSDKShareAPI addObject:self]; - return YES; - } -} - -- (void)_removeFromPendingShareAPI -{ - @synchronized(g_pendingFBSDKShareAPI) { - [g_pendingFBSDKShareAPI removeObject:self]; - _fileHandle = nil; -#if !TARGET_OS_TV - _assetRepresentation = nil; -#endif - } -} - -#pragma mark - FBSDKVideoUploaderDelegate - -- (NSData *)videoChunkDataForVideoUploader:(FBSDKVideoUploader *)videoUploader startOffset:(NSUInteger)startOffset endOffset:(NSUInteger)endOffset -{ - NSUInteger chunkSize = endOffset - startOffset; - if (_fileHandle) { - [_fileHandle seekToFileOffset:startOffset]; - NSData *videoChunkData = [_fileHandle readDataOfLength:chunkSize]; - if (videoChunkData == nil || videoChunkData.length != chunkSize) { - return nil; - } - return videoChunkData; - } -#if !TARGET_OS_TV - else if (_assetRepresentation) { - NSMutableData *data = [NSMutableData dataWithLength:chunkSize]; - NSError *error; - NSUInteger bufferedLength = [_assetRepresentation getBytes:[data mutableBytes] fromOffset:startOffset length:chunkSize error:&error]; - if (bufferedLength != chunkSize || data == nil || error) { - return nil; - } - return data; - } -#endif - return nil; -} - -- (void)videoUploader:(FBSDKVideoUploader *)videoUploader didCompleteWithResults:(NSDictionary *)results -{ - 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]; - [_delegate sharer:self didCompleteWithResults:shareResults]; - [self _removeFromPendingShareAPI]; -} - -- (void)videoUploader:(FBSDKVideoUploader *)videoUploader didFailWithError:(NSError *)error -{ - [_delegate sharer:self didFailWithError:error]; - [self _removeFromPendingShareAPI]; -} - - - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h deleted file mode 100644 index c2565db..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h +++ /dev/null @@ -1,33 +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 - -/** - 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. - */ -@interface FBSDKShareButton : FBSDKButton - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m deleted file mode 100644 index 17ecf71..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m +++ /dev/null @@ -1,90 +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 "FBSDKShareButton.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareDialog.h" - -@implementation FBSDKShareButton -{ - FBSDKShareDialog *_dialog; -} - -#pragma mark - Properties - -- (id)shareContent -{ - return _dialog.shareContent; -} - -- (void)setShareContent:(id)shareContent -{ - _dialog.shareContent = shareContent; - [self checkImplicitlyDisabled]; -} - -#pragma mark - FBSDKButtonImpressionTracking - -- (NSDictionary *)analyticsParameters -{ - return nil; -} - -- (NSString *)impressionTrackingEventName -{ - return FBSDKAppEventNameFBSDKShareButtonImpression; -} - -- (NSString *)impressionTrackingIdentifier -{ - return @"share"; -} - -#pragma mark - FBSDKButton - -- (void)configureButton -{ - NSString *title = - NSLocalizedStringWithDefaultValue(@"ShareButton.Share", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], - @"Share", - @"The label for FBSDKShareButton"); - - [self configureWithIcon:nil - title:title - backgroundColor:nil - highlightedColor:nil]; - - [self addTarget:self action:@selector(_share:) forControlEvents:UIControlEventTouchUpInside]; - _dialog = [[FBSDKShareDialog alloc] init]; -} - -- (BOOL)isImplicitlyDisabled -{ - return ![_dialog canShow] || ![_dialog validateWithError:NULL]; -} - -#pragma mark - Helper Methods - -- (void)_share:(id)sender -{ - [self logTapEventWithEventName:FBSDKAppEventNameFBSDKShareButtonDidTap parameters:[self analyticsParameters]]; - [_dialog show]; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h deleted file mode 100644 index 1309c8d..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h +++ /dev/null @@ -1,53 +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 -#import - -/** - A model for content to share with a Facebook camera effect. - */ -@interface FBSDKShareCameraEffectContent : NSObject - -/** - ID of the camera effect to use. - */ -@property (nonatomic, copy) NSString *effectID; - -/** - Arguments for the effect. - */ -@property (nonatomic, copy) FBSDKCameraEffectArguments *effectArguments; - -/** - Textures for the effect. - */ -@property (nonatomic, copy) FBSDKCameraEffectTextures *effectTextures; - -/** - Compares the receiver to another camera effect content. - @param content The other content - @return YES if the receiver's values are equal to the other content's values; otherwise NO - */ -- (BOOL)isEqualToShareCameraEffectContent:(FBSDKShareCameraEffectContent *)content; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m deleted file mode 100644 index 1031dd9..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m +++ /dev/null @@ -1,236 +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 "FBSDKShareCameraEffectContent.h" - -#import "FBSDKCameraEffectArguments+Internal.h" -#import "FBSDKCameraEffectTextures+Internal.h" -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKHashtag.h" -#import "FBSDKShareUtility.h" - -static NSString *const kFBSDKShareCameraEffectContentEffectIDKey = @"effectID"; -static NSString *const kFBSDKShareCameraEffectContentEffectArgumentsKey = @"effectArguments"; -static NSString *const kFBSDKShareCameraEffectContentEffectTexturesKey = @"effectTextures"; -static NSString *const kFBSDKShareCameraEffectContentContentURLKey = @"contentURL"; -static NSString *const kFBSDKShareCameraEffectContentHashtagKey = @"hashtag"; -static NSString *const kFBSDKShareCameraEffectContentPeopleIDsKey = @"peopleIDs"; -static NSString *const kFBSDKShareCameraEffectContentPlaceIDKey = @"placeID"; -static NSString *const kFBSDKShareCameraEffectContentRefKey = @"ref"; -static NSString *const kFBSDKShareCameraEffectContentPageIDKey = @"pageID"; -static NSString *const kFBSDKShareCameraEffectContentUUIDKey = @"uuid"; - -@implementation FBSDKShareCameraEffectContent - -#pragma mark - Properties - -@synthesize effectID = _effectID; -@synthesize effectArguments = _effectArguments; -@synthesize effectTextures = _effectTextures; -@synthesize contentURL = _contentURL; -@synthesize hashtag = _hashtag; -@synthesize peopleIDs = _peopleIDs; -@synthesize placeID = _placeID; -@synthesize ref = _ref; -@synthesize pageID = _pageID; -@synthesize shareUUID = _shareUUID; - -#pragma mark - Initializer - -- (instancetype)init -{ - self = [super init]; - if (self) { - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -#pragma mark - FBSDKSharingContent - -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [FBSDKInternalUtility dictionary:parameters - setObject:_effectID - forKey:@"effect_id"]; - - NSString *effectArgumentsJSON; - if (_effectArguments) { - effectArgumentsJSON = [FBSDKInternalUtility JSONStringForObject:[_effectArguments allArguments] - error:NULL - invalidObjectHandler:NULL]; - } - [FBSDKInternalUtility dictionary:parameters - setObject:effectArgumentsJSON - forKey:@"effect_arguments"]; - - NSData *effectTexturesData; - if (_effectTextures) { - // Convert the entire textures dictionary into one NSData, because - // the existing API protocol only allows one value to be put into the pasteboard. - NSDictionary *texturesDict = [_effectTextures allTextures]; - NSMutableDictionary *texturesDataDict = [NSMutableDictionary dictionaryWithCapacity:texturesDict.count]; - [texturesDict enumerateKeysAndObjectsUsingBlock:^(NSString *key, UIImage *img, BOOL *stop) { - // Convert UIImages to NSData, because UIImage is not archivable. - NSData *imageData = UIImagePNGRepresentation(img); - if (imageData) { - [texturesDataDict setObject:imageData forKey:key]; - } - }]; - effectTexturesData = [NSKeyedArchiver archivedDataWithRootObject:texturesDataDict]; - } - [FBSDKInternalUtility dictionary:parameters - setObject:effectTexturesData - forKey:@"effect_textures"]; -} - -#pragma mark - FBSDKSharingScheme - -- (NSString *)schemeForMode:(FBSDKShareDialogMode)mode -{ - if ((FBSDKShareDialogModeNative == mode) || (FBSDKShareDialogModeAutomatic == mode)) { - if ([FBSDKInternalUtility isMSQRDPlayerAppInstalled]) { - // If installed, launch MSQRD Player for testing effects. - return FBSDK_CANOPENURL_MSQRD_PLAYER; - } - } - return nil; -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - if ([_effectID length] > 0) { - NSCharacterSet* nonDigitCharacters = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; - if ([_effectID rangeOfCharacterFromSet:nonDigitCharacters].location != NSNotFound) { - if (errorRef != NULL) { - *errorRef = [FBSDKError invalidArgumentErrorWithName:@"effectID" - value:_effectID - message:@"Invalid value for effectID, effectID can contain only numerical characters."]; - } - return NO; - } - } - - return YES; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [_effectID hash], - [_effectArguments hash], - [_effectTextures hash], - [_contentURL hash], - [_hashtag hash], - [_peopleIDs hash], - [_placeID hash], - [_ref hash], - [_pageID hash], - [_shareUUID hash], - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKShareCameraEffectContent class]]) { - return NO; - } - return [self isEqualToShareCameraEffectContent:(FBSDKShareCameraEffectContent *)object]; -} - -- (BOOL)isEqualToShareCameraEffectContent:(FBSDKShareCameraEffectContent *)content -{ - return (content && - [FBSDKInternalUtility object:_effectID isEqualToObject:content.effectID] && - [FBSDKInternalUtility object:_effectArguments isEqualToObject:content.effectArguments] && - [FBSDKInternalUtility object:_effectTextures isEqualToObject:content.effectTextures] && - [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && - [FBSDKInternalUtility object:_hashtag isEqualToObject:content.hashtag] && - [FBSDKInternalUtility object:_peopleIDs isEqualToObject:content.peopleIDs] && - [FBSDKInternalUtility object:_placeID isEqualToObject:content.placeID] && - [FBSDKInternalUtility object:_ref isEqualToObject:content.ref] && - [FBSDKInternalUtility object:_shareUUID isEqualToObject:content.shareUUID] && - [FBSDKInternalUtility object:_pageID isEqualToObject:content.pageID]); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _effectID = [decoder decodeObjectOfClass:[NSString class] forKey:kFBSDKShareCameraEffectContentEffectIDKey]; - _effectArguments = [decoder decodeObjectOfClass:[FBSDKCameraEffectArguments class] forKey:kFBSDKShareCameraEffectContentEffectArgumentsKey]; - _effectTextures = [decoder decodeObjectOfClass:[FBSDKCameraEffectTextures class] forKey:kFBSDKShareCameraEffectContentEffectTexturesKey]; - _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:kFBSDKShareCameraEffectContentContentURLKey]; - _hashtag = [decoder decodeObjectOfClass:[FBSDKHashtag class] forKey:kFBSDKShareCameraEffectContentHashtagKey]; - _peopleIDs = [decoder decodeObjectOfClass:[NSArray class] forKey:kFBSDKShareCameraEffectContentPeopleIDsKey]; - _placeID = [decoder decodeObjectOfClass:[NSString class] forKey:kFBSDKShareCameraEffectContentPlaceIDKey]; - _ref = [decoder decodeObjectOfClass:[NSString class] forKey:kFBSDKShareCameraEffectContentRefKey]; - _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:kFBSDKShareCameraEffectContentPageIDKey]; - _shareUUID = [decoder decodeObjectOfClass:[NSString class] forKey:kFBSDKShareCameraEffectContentUUIDKey]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_effectID forKey:kFBSDKShareCameraEffectContentEffectIDKey]; - [encoder encodeObject:_effectArguments forKey:kFBSDKShareCameraEffectContentEffectArgumentsKey]; - [encoder encodeObject:_effectTextures forKey:kFBSDKShareCameraEffectContentEffectTexturesKey]; - [encoder encodeObject:_contentURL forKey:kFBSDKShareCameraEffectContentContentURLKey]; - [encoder encodeObject:_hashtag forKey:kFBSDKShareCameraEffectContentHashtagKey]; - [encoder encodeObject:_peopleIDs forKey:kFBSDKShareCameraEffectContentPeopleIDsKey]; - [encoder encodeObject:_placeID forKey:kFBSDKShareCameraEffectContentPlaceIDKey]; - [encoder encodeObject:_ref forKey:kFBSDKShareCameraEffectContentRefKey]; - [encoder encodeObject:_pageID forKey:kFBSDKShareCameraEffectContentPageIDKey]; - [encoder encodeObject:_shareUUID forKey:kFBSDKShareCameraEffectContentUUIDKey]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareCameraEffectContent *copy = [[FBSDKShareCameraEffectContent alloc] init]; - copy->_effectID = [_effectID copy]; - copy->_effectArguments = [_effectArguments copy]; - copy->_effectTextures = [_effectTextures copy]; - copy->_contentURL = [_contentURL copy]; - copy->_hashtag = [_hashtag copy]; - copy->_peopleIDs = [_peopleIDs copy]; - copy->_placeID = [_placeID copy]; - copy->_ref = [_ref copy]; - copy->_pageID = [_pageID copy]; - copy->_shareUUID = [_shareUUID copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h deleted file mode 100644 index 1d73ecf..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h +++ /dev/null @@ -1,57 +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 - -/** - The error domain for all errors from FBSDKShareKit. - - Error codes from the SDK in the range 200-299 are reserved for this domain. - */ -FBSDK_EXTERN NSString *const FBSDKShareErrorDomain; - -/** - NS_ENUM(NSInteger, FBSDKShareErrorCode) - Error codes for FBSDKShareErrorDomain. - */ -typedef NS_ENUM(NSInteger, FBSDKShareErrorCode) -{ - /** - Reserved. - */ - FBSDKShareReservedErrorCode = 200, - - /** - The error code for errors from uploading open graph objects. - */ - FBSDKShareOpenGraphErrorCode, - - /** - The error code for when a sharing dialog is not available. - - Use the canShare methods to check for this case before calling show. - */ - FBSDKShareDialogNotAvailableErrorCode, - - /** - @The error code for unknown errors. - */ - FBSDKShareUnknownErrorCode, -}; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m deleted file mode 100644 index 8de78c7..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m +++ /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 "FBSDKShareConstants.h" - -NSString *const FBSDKShareErrorDomain = @"com.facebook.sdk.share"; - -NSString *const FBSDKShareOpenGraphKeyErrorKey = @"key"; -NSString *const FBSDKShareOpenGraphValueErrorKey = @"value"; diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h deleted file mode 100644 index 18c4d3e..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h +++ /dev/null @@ -1,54 +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 - -/** - A dialog for sharing content on Facebook. - */ -@interface FBSDKShareDialog : NSObject - -/** - 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; - -/** - 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 mode with which to display the dialog. - - Defaults to FBSDKShareDialogModeAutomatic, which will automatically choose the best available mode. - */ -@property (nonatomic, assign) FBSDKShareDialogMode mode; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m deleted file mode 100644 index 4f439bc..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m +++ /dev/null @@ -1,1165 +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 "FBSDKShareDialog.h" - -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareCameraEffectContent.h" -#import "FBSDKShareConstants.h" -#import "FBSDKShareDefines.h" -#import "FBSDKShareError.h" -#import "FBSDKShareLinkContent.h" -#import "FBSDKShareMediaContent.h" -#import "FBSDKShareOpenGraphAction.h" -#import "FBSDKShareOpenGraphContent.h" -#import "FBSDKShareOpenGraphObject.h" -#import "FBSDKSharePhoto.h" -#import "FBSDKSharePhotoContent.h" -#import "FBSDKShareUtility.h" -#import "FBSDKShareVideo.h" -#import "FBSDKShareVideoContent.h" - -#define FBSDK_SHARE_FEED_METHOD_NAME @"feed" -#define FBSDK_SHARE_METHOD_CAMERA_MIN_VERSION @"20170417" -#define FBSDK_SHARE_METHOD_MIN_VERSION @"20130410" -#define FBSDK_SHARE_METHOD_OG_MIN_VERSION @"20130214" -#define FBSDK_SHARE_METHOD_OG_IMAGE_MIN_VERSION @"20130410" -#define FBSDK_SHARE_METHOD_PHOTOS_MIN_VERSION @"20140116" -#define FBSDK_SHARE_METHOD_VIDEO_MIN_VERSION @"20150313" -#define FBSDK_SHARE_METHOD_ATTRIBUTED_SHARE_SHEET_MIN_VERSION @"20150629" -#define FBSDK_SHARE_METHOD_QUOTE_MIN_VERSION @"20160328" -#define FBSDK_SHARE_METHOD_MMP_MIN_VERSION @"20160328" - -FBSDK_STATIC_INLINE void FBSDKShareDialogValidateAPISchemeRegisteredForCanOpenUrl() -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FBAPI]; - }); -} - -FBSDK_STATIC_INLINE void FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanOpenUrl() -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_SHARE_EXTENSION]; - }); -} - - -@interface FBSDKShareDialog () -@end - -@implementation FBSDKShareDialog -{ - FBSDKWebDialog *_webDialog; -} - -#pragma mark - Class Methods - -+ (void)initialize -{ - if ([FBSDKShareDialog class] == self) { - [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK]; - [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; - } -} - -+ (instancetype)showFromViewController:(UIViewController *)viewController - withContent:(id)content - delegate:(id)delegate -{ - FBSDKShareDialog *dialog = [[self alloc] init]; - dialog.fromViewController = viewController; - dialog.shareContent = content; - dialog.delegate = delegate; - [dialog show]; - return dialog; -} - -#pragma mark - Object Lifecycle - -- (void)dealloc -{ - _webDialog.delegate = nil; -} - -#pragma mark - Properties - -@synthesize delegate = _delegate; -@synthesize shareContent = _shareContent; -@synthesize shouldFailOnDataError = _shouldFailOnDataError; - -#pragma mark - Public Methods - -- (BOOL)canShow -{ - if (self.shareContent) { - // Validate this content - NSError *error = nil; - return [self _validateWithError:&error]; - } else { - // Launch an empty dialog for sharing a status message. - switch (self.mode) { - case FBSDKShareDialogModeAutomatic: - case FBSDKShareDialogModeBrowser: - case FBSDKShareDialogModeFeedBrowser: - case FBSDKShareDialogModeFeedWeb: - case FBSDKShareDialogModeWeb:{ - return YES; - } - case FBSDKShareDialogModeNative:{ - return [self _canShowNative]; - } - case FBSDKShareDialogModeShareSheet:{ - return [self _canShowShareSheet]; - } - } - } -} - -- (BOOL)show -{ - BOOL didShow = NO; - NSError *error = nil; - - if ([self _validateWithError:&error]) { - switch (self.mode) { - case FBSDKShareDialogModeAutomatic:{ - didShow = [self _showAutomatic:&error]; - break; - } - case FBSDKShareDialogModeBrowser:{ - didShow = [self _showBrowser:&error]; - break; - } - case FBSDKShareDialogModeFeedBrowser:{ - didShow = [self _showFeedBrowser:&error]; - break; - } - case FBSDKShareDialogModeFeedWeb:{ - didShow = [self _showFeedWeb:&error]; - break; - } - case FBSDKShareDialogModeNative:{ - didShow = [self _showNativeWithCanShowError:&error validationError:&error]; - break; - } - case FBSDKShareDialogModeShareSheet:{ - didShow = [self _showShareSheetWithCanShowError:&error validationError:&error]; - break; - } - case FBSDKShareDialogModeWeb:{ - didShow = [self _showWeb:&error]; - break; - } - } - } - if (!didShow) { - [self _invokeDelegateDidFailWithError:error]; - } else { - [self _logDialogShow]; - [FBSDKInternalUtility registerTransientObject:self]; - } - return didShow; -} - -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef -{ - return [self _validateWithError:errorRef] && [self _validateFullyCompatibleWithError:errorRef]; -} - -#pragma mark - FBSDKWebDialogDelegate - -- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results -{ - if (_webDialog != webDialog) { - return; - } - [self _cleanUpWebDialog]; - NSInteger errorCode = [results[@"error_code"] integerValue]; - if (errorCode == 4201) { - [self _invokeDelegateDidCancel]; - } else if (errorCode != 0) { - NSError *error = [FBSDKShareError errorWithCode:FBSDKShareUnknownErrorCode - userInfo:@{ - FBSDKGraphRequestErrorGraphErrorCode : @(errorCode) - } - 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 - [self _handleWebResponseParameters:results error:nil cancelled: NO]; - } - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error -{ - if (_webDialog != webDialog) { - return; - } - [self _cleanUpWebDialog]; - [self _invokeDelegateDidFailWithError:error]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog -{ - if (_webDialog != webDialog) { - return; - } - [self _cleanUpWebDialog]; - [self _invokeDelegateDidCancel]; - [FBSDKInternalUtility unregisterTransientObject:self]; -} - -#pragma mark - Helper Methods - --(BOOL)_isDefaultToShareSheet -{ - if ([self.shareContent isKindOfClass:[FBSDKShareCameraEffectContent class]]) { - return NO; - } - FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - return [configuration.defaultShareMode isEqualToString:@"share_sheet"]; -} - -- (BOOL)_isOpenGraphURLShare:(FBSDKShareOpenGraphContent *)shareContent -{ - __block BOOL hasOGURL = NO; - [shareContent.action enumerateKeysAndObjectsUsingBlock:^(NSString *key, id object, BOOL *stop) { - if ([object isKindOfClass:[NSURL class]]) { - hasOGURL = YES; - } - }]; - return hasOGURL; -} - --(BOOL)_showAutomatic:(NSError *__autoreleasing *)errorRef -{ - BOOL isDefaultToShareSheet = [self _isDefaultToShareSheet]; - BOOL useNativeDialog = [self _useNativeDialog]; - return ((isDefaultToShareSheet && [self _showShareSheetWithCanShowError:NULL validationError:errorRef]) || - (useNativeDialog && [self _showNativeWithCanShowError:NULL validationError:errorRef]) || - (!isDefaultToShareSheet && [self _showShareSheetWithCanShowError:NULL validationError:errorRef]) || - [self _showFeedBrowser:errorRef] || - [self _showFeedWeb:errorRef] || - [self _showBrowser:errorRef] || - [self _showWeb:errorRef] || - (!useNativeDialog && [self _showNativeWithCanShowError:NULL validationError:errorRef])); -} - -- (void)_loadNativeMethodName:(NSString **)methodNameRef methodVersion:(NSString **)methodVersionRef -{ - if (methodNameRef != NULL) { - *methodNameRef = nil; - } - if (methodVersionRef != NULL) { - *methodVersionRef = nil; - } - - id shareContent = self.shareContent; - if (!shareContent) { - return; - } - - // if there is shareContent on the receiver already, we can check the minimum app version, otherwise we can only check - // for an app that can handle the native share dialog - NSString *methodName = nil; - NSString *methodVersion = nil; - if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { - methodName = FBSDK_SHARE_OPEN_GRAPH_METHOD_NAME; - BOOL containsMedia = NO; - [FBSDKShareUtility testShareContent:shareContent containsMedia:&containsMedia containsPhotos:NULL containsVideos:NULL]; - if (containsMedia) { - methodVersion = FBSDK_SHARE_METHOD_OG_IMAGE_MIN_VERSION; - } else { - methodVersion = FBSDK_SHARE_METHOD_OG_MIN_VERSION; - } - } else if ([shareContent isKindOfClass:[FBSDKShareCameraEffectContent class]]) { - methodName = FBSDK_SHARE_CAMERA_METHOD_NAME; - methodVersion = FBSDK_SHARE_METHOD_CAMERA_MIN_VERSION; - } else { - methodName = FBSDK_SHARE_METHOD_NAME; - if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { - methodVersion = FBSDK_SHARE_METHOD_PHOTOS_MIN_VERSION; - } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - methodVersion = FBSDK_SHARE_METHOD_VIDEO_MIN_VERSION; - } else { - methodVersion = FBSDK_SHARE_METHOD_MIN_VERSION; - } - } - if (methodNameRef != NULL) { - *methodNameRef = methodName; - } - if (methodVersionRef != NULL) { - *methodVersionRef = methodVersion; - } -} - -- (BOOL)_canShowNative -{ - return [FBSDKInternalUtility isFacebookAppInstalled]; -} - -- (BOOL)_canShowShareSheet -{ - if (![FBSDKInternalUtility isFacebookAppInstalled]) { - return NO; - } - - Class composeViewControllerClass = [fbsdkdfl_SLComposeViewControllerClass() class]; - if (!composeViewControllerClass) { - return NO; - } - // iOS 11 returns NO for `isAvailableForServiceType` but it will still work - NSString *facebookServiceType = fbsdkdfl_SLServiceTypeFacebook(); - NSOperatingSystemVersion iOS11Version = { .majorVersion = 11, .minorVersion = 0, .patchVersion = 0 }; - if (![FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS11Version] && ![composeViewControllerClass isAvailableForServiceType:facebookServiceType]) { - return NO; - } - return YES; -} - -- (BOOL)_canAttributeThroughShareSheet -{ - NSOperatingSystemVersion iOS8Version = { .majorVersion = 8, .minorVersion = 0, .patchVersion = 0 }; - if (![FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS8Version]) { - return NO; - } - FBSDKShareDialogValidateAPISchemeRegisteredForCanOpenUrl(); - NSString *scheme = FBSDK_CANOPENURL_FBAPI; - NSString *minimumVersion = FBSDK_SHARE_METHOD_ATTRIBUTED_SHARE_SHEET_MIN_VERSION; - NSURLComponents *components = [[NSURLComponents alloc] init]; - components.scheme = [scheme stringByAppendingString:minimumVersion]; - components.path = @"/"; - return ([[UIApplication sharedApplication] canOpenURL:components.URL] || - [self _canUseFBShareSheet]); -} - -- (BOOL)_canUseFBShareSheet -{ - NSOperatingSystemVersion iOS8Version = { .majorVersion = 8, .minorVersion = 0, .patchVersion = 0 }; - if (![FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS8Version]) { - return NO; - } - FBSDKShareDialogValidateShareExtensionSchemeRegisteredForCanOpenUrl(); - NSURLComponents *components = [[NSURLComponents alloc] init]; - components.scheme = FBSDK_CANOPENURL_SHARE_EXTENSION; - components.path = @"/"; - return [[UIApplication sharedApplication] canOpenURL:components.URL]; -} - -- (BOOL)_canUseQuoteInShareSheet -{ - return [self _canUseFBShareSheet] && [self _supportsShareSheetMinimumVersion:FBSDK_SHARE_METHOD_QUOTE_MIN_VERSION]; -} - -- (BOOL)_canUseMMPInShareSheet -{ - return [self _canUseFBShareSheet] && [self _supportsShareSheetMinimumVersion:FBSDK_SHARE_METHOD_MMP_MIN_VERSION]; -} - -- (BOOL)_supportsShareSheetMinimumVersion:(NSString *)minimumVersion -{ - NSOperatingSystemVersion iOS8Version = { .majorVersion = 8, .minorVersion = 0, .patchVersion = 0 }; - if (![FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS8Version]) { - return NO; - } - FBSDKShareDialogValidateAPISchemeRegisteredForCanOpenUrl(); - NSString *scheme = FBSDK_CANOPENURL_FBAPI; - NSURLComponents *components = [[NSURLComponents alloc] init]; - components.scheme = [scheme stringByAppendingString:minimumVersion]; - components.path = @"/"; - return [[UIApplication sharedApplication] canOpenURL:components.URL]; -} - -- (void)_cleanUpWebDialog -{ - _webDialog.delegate = nil; - _webDialog = nil; -} - -- (NSArray *)_contentImages -{ - NSMutableArray *ret = [NSMutableArray new]; - id shareContent = self.shareContent; - if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { - [ret addObjectsFromArray:[((FBSDKSharePhotoContent *)shareContent).photos valueForKeyPath:@"@distinctUnionOfObjects.image"]]; - } else if ([shareContent isKindOfClass:[FBSDKShareMediaContent class]]) { - for (id media in ((FBSDKShareMediaContent *)shareContent).media) { - if ([media isKindOfClass:[FBSDKSharePhoto class]]) { - UIImage *image = ((FBSDKSharePhoto *)media).image; - if (image != nil) { - [ret addObject:image]; - } - } - } - } - return [ret copy]; -} - -- (NSArray *)_contentVideoURLs -{ - NSMutableArray *ret = [NSMutableArray new]; - id shareContent = self.shareContent; - if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - NSURL *videoURL = ((FBSDKShareVideoContent *)shareContent).video.videoURL; - if (videoURL != nil) { - [ret addObject:videoURL]; - } - } else if ([shareContent isKindOfClass:[FBSDKShareMediaContent class]]) { - for (id media in ((FBSDKShareMediaContent *)shareContent).media) { - if ([media isKindOfClass:[FBSDKShareVideo class]]) { - NSURL *videoURL = ((FBSDKShareVideo *)media).videoURL; - if (videoURL != nil) { - [ret addObject:videoURL]; - } - } - } - } - return [ret copy]; -} - -- (NSArray *)_contentURLs -{ - NSArray *URLs = nil; - id shareContent = self.shareContent; - if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - FBSDKShareLinkContent *linkContent = (FBSDKShareLinkContent *)shareContent; - URLs = (linkContent.contentURL ? @[linkContent.contentURL] : nil); - } else if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { - FBSDKSharePhotoContent *photoContent = (FBSDKSharePhotoContent *)shareContent; - URLs = (photoContent.contentURL ? @[photoContent.contentURL] : nil); - } - return URLs; -} - -- (void)_handleWebResponseParameters:(NSDictionary *)webResponseParameters - error:(NSError *)error - cancelled:(BOOL)isCancelled -{ - if (error) { - [self _invokeDelegateDidFailWithError:error]; - return; - } else { - NSString *completionGesture = webResponseParameters[FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; - if ([completionGesture isEqualToString:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL] || isCancelled) { - [self _invokeDelegateDidCancel]; - } else { - // not all web dialogs report cancellation, so assume that the share has completed with no additional information - NSMutableDictionary *results = [[NSMutableDictionary alloc] init]; - // the web response comes back with a different payload, so we need to translate it - [FBSDKInternalUtility dictionary:results - setObject:webResponseParameters[FBSDK_SHARE_WEB_PARAM_POST_ID_KEY] - forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; - [self _invokeDelegateDidCompleteWithResults:results]; - } - } -} - -- (BOOL)_photoContentHasAtLeastOneImage:(FBSDKSharePhotoContent *)photoContent -{ - for (FBSDKSharePhoto *photo in photoContent.photos) { - if (photo.image != nil) { - return YES; - } - } - return NO; -} - -- (BOOL)_showBrowser:(NSError **)errorRef -{ - if (![self _validateShareContentForBrowserWithOptions:FBSDKShareBridgeOptionsDefault error:errorRef]) { - return NO; - } - id shareContent = self.shareContent; - NSString *methodName; - NSDictionary *parameters; - - 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) { - [self _handleWebResponseParameters:response.responseParameters error:response.error cancelled: response.isCancelled]; - [FBSDKInternalUtility unregisterTransientObject:self]; - }; - FBSDKBridgeAPIRequest *request; - request = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeWeb - scheme:FBSDK_SHARE_WEB_SCHEME - methodName:cMethodName - methodVersion:nil - parameters:cParameters - userInfo:nil]; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request - useSafariViewController:[self _useSafariViewController] - fromViewController:self.fromViewController - completionBlock:completionBlock]; - } - }; - - [FBSDKShareUtility buildAsyncWebPhotoContent:shareContent - completionHandler:completion]; - } else { - if (![FBSDKShareUtility buildWebShareContent:shareContent - methodName:&methodName - parameters:¶meters - error:errorRef]) { - return NO; - } - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { - [self _handleWebResponseParameters:response.responseParameters error:response.error cancelled: response.isCancelled]; - [FBSDKInternalUtility unregisterTransientObject:self]; - }; - FBSDKBridgeAPIRequest *request; - request = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeWeb - scheme:FBSDK_SHARE_WEB_SCHEME - methodName:methodName - methodVersion:nil - parameters:parameters - userInfo:nil]; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request - useSafariViewController:[self _useSafariViewController] - fromViewController:self.fromViewController - completionBlock:completionBlock]; - } - return YES; -} - -- (BOOL)_showFeedBrowser:(NSError **)errorRef -{ - if (![self _validateShareContentForFeed:errorRef]) { - return NO; - } - id shareContent = self.shareContent; - NSDictionary *parameters = [FBSDKShareUtility feedShareDictionaryForContent:shareContent]; - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { - [self _handleWebResponseParameters:response.responseParameters error:response.error cancelled:response.isCancelled]; - [FBSDKInternalUtility unregisterTransientObject:self]; - }; - FBSDKBridgeAPIRequest *request; - request = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeWeb - scheme:FBSDK_SHARE_WEB_SCHEME - methodName:FBSDK_SHARE_FEED_METHOD_NAME - methodVersion:nil - parameters:parameters - userInfo:nil]; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request - useSafariViewController:[self _useSafariViewController] - fromViewController:self.fromViewController - completionBlock:completionBlock]; - return YES; -} - -- (BOOL)_showFeedWeb:(NSError **)errorRef -{ - if (![self _validateShareContentForFeed:errorRef]) { - return NO; - } - id shareContent = self.shareContent; - NSDictionary *parameters = [FBSDKShareUtility feedShareDictionaryForContent:shareContent]; - _webDialog = [FBSDKWebDialog showWithName:FBSDK_SHARE_FEED_METHOD_NAME - parameters:parameters - delegate:self]; - return YES; -} - -- (BOOL)_showNativeWithCanShowError:(NSError **)canShowErrorRef validationError:(NSError **)validationErrorRef -{ - if (![self _canShowNative]) { - if (canShowErrorRef != NULL) { - *canShowErrorRef = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode - message:@"Native share dialog is not available."]; - } - return NO; - } - if (![self _validateShareContentForNative:validationErrorRef]) { - return NO; - } - NSString *scheme = nil; - if ([self.shareContent respondsToSelector:@selector(schemeForMode:)]) { - scheme = [(id)self.shareContent schemeForMode:FBSDKShareDialogModeNative]; - } - if (!(scheme.length > 0)) { - scheme = FBSDK_CANOPENURL_FACEBOOK; - } - NSString *methodName; - NSString *methodVersion; - [self _loadNativeMethodName:&methodName methodVersion:&methodVersion]; - NSDictionary *parameters = [FBSDKShareUtility parametersForShareContent:self.shareContent - bridgeOptions:FBSDKShareBridgeOptionsDefault - shouldFailOnDataError:self.shouldFailOnDataError]; - FBSDKBridgeAPIRequest *request; - request = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeNative - scheme:scheme - methodName:methodName - methodVersion:methodVersion - parameters:parameters - userInfo:nil]; - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { - if (response.error.code == FBSDKAppVersionUnsupportedErrorCode) { - NSError *fallbackError; - if ([self _showShareSheetWithCanShowError:NULL validationError:&fallbackError] || - [self _showFeedBrowser:&fallbackError]) { - return; - } - } - NSDictionary *responseParameters = response.responseParameters; - NSString *completionGesture = responseParameters[FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; - if ([completionGesture isEqualToString:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL] || - response.isCancelled) { - [self _invokeDelegateDidCancel]; - } else if (response.error) { - [self _invokeDelegateDidFailWithError:response.error]; - } else { - NSMutableDictionary *results = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:results - setObject:responseParameters[FBSDK_SHARE_RESULT_POST_ID_KEY] - forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; - [self _invokeDelegateDidCompleteWithResults:results]; - } - [FBSDKInternalUtility unregisterTransientObject:self]; - }; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request - useSafariViewController:[self _useSafariViewController] - fromViewController:self.fromViewController - completionBlock:completionBlock]; - return YES; -} - -- (BOOL)_showShareSheetWithCanShowError:(NSError **)canShowErrorRef validationError:(NSError **)validationErrorRef -{ - if (![self _canShowShareSheet]) { - if (canShowErrorRef != NULL) { - *canShowErrorRef = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode - message:@"Share sheet is not available."]; - } - return NO; - } - if (![self _validateShareContentForShareSheet:validationErrorRef]) { - return NO; - } - UIViewController *fromViewController = self.fromViewController; - if (!fromViewController) { - if (validationErrorRef != NULL) { - *validationErrorRef = [FBSDKShareError requiredArgumentErrorWithName:@"fromViewController" message:nil]; - } - return NO; - } - NSArray *images = [self _contentImages]; - NSArray *URLs = [self _contentURLs]; - NSArray *videoURLs = [self _contentVideoURLs]; - - Class composeViewControllerClass = [fbsdkdfl_SLComposeViewControllerClass() class]; - NSString *facebookServiceType = fbsdkdfl_SLServiceTypeFacebook(); - SLComposeViewController *composeViewController; - composeViewController = [composeViewControllerClass composeViewControllerForServiceType:facebookServiceType]; - - if (!composeViewController) { - if (canShowErrorRef != NULL) { - *canShowErrorRef = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode - message:@"Error creating SLComposeViewController."]; - } - return NO; - } - - NSString *initialText = [self _calculateInitialText]; - if (initialText.length > 0) { - [composeViewController setInitialText:initialText]; - } - - for (UIImage *image in images) { - [composeViewController addImage:image]; - } - for (NSURL *URL in URLs) { - [composeViewController addURL:URL]; - } - for (NSURL *videoURL in videoURLs) { - [composeViewController addURL:videoURL]; - } - composeViewController.completionHandler = ^(SLComposeViewControllerResult result) { - switch (result) { - case SLComposeViewControllerResultCancelled:{ - [self _invokeDelegateDidCancel]; - break; - } - case SLComposeViewControllerResultDone:{ - [self _invokeDelegateDidCompleteWithResults:@{}]; - break; - } - } - dispatch_async(dispatch_get_main_queue(), ^{ - [FBSDKInternalUtility unregisterTransientObject:self]; - }); - }; - [fromViewController presentViewController:composeViewController animated:YES completion:nil]; - return YES; -} - -- (BOOL)_showWeb:(NSError **)errorRef -{ - if (![self _validateShareContentForBrowserWithOptions:FBSDKShareBridgeOptionsPhotoImageURL error:errorRef]) { - return NO; - } - id shareContent = self.shareContent; - NSString *methodName; - NSDictionary *parameters; - if (![FBSDKShareUtility buildWebShareContent:shareContent - methodName:&methodName - parameters:¶meters - error:errorRef]) { - return NO; - } - _webDialog = [FBSDKWebDialog showWithName:methodName - parameters:parameters - delegate:self]; - return YES; -} - -- (BOOL)_useNativeDialog -{ - if ([self.shareContent isKindOfClass:[FBSDKShareCameraEffectContent class]]) { - return YES; - } - FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - return [configuration useNativeDialogForDialogName:FBSDKDialogConfigurationNameShare]; -} - -- (BOOL)_useSafariViewController -{ - if ([self.shareContent isKindOfClass:[FBSDKShareCameraEffectContent class]]) { - return NO; - } - FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - return [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameShare]; -} - -- (BOOL)_validateWithError:(NSError *__autoreleasing *)errorRef -{ - if (errorRef != NULL) { - *errorRef = nil; - } - - if (self.shareContent) { - if ([self.shareContent isKindOfClass:[FBSDKShareCameraEffectContent class]] || - [self.shareContent isKindOfClass:[FBSDKShareLinkContent class]] || - [self.shareContent isKindOfClass:[FBSDKShareMediaContent class]] || - [self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]] || - [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 = [FBSDKShareError requiredArgumentErrorWithName:@"shareContent" - message:message]; - } - return NO; - } - } - - if (![FBSDKShareUtility validateShareContent:self.shareContent - bridgeOptions:FBSDKShareBridgeOptionsDefault - error:errorRef]) { - return NO; - } - - switch (self.mode) { - case FBSDKShareDialogModeAutomatic:{ - return ( - ([self _canShowNative] && [self _validateShareContentForNative:errorRef]) || - ([self _canShowShareSheet] && [self _validateShareContentForShareSheet:errorRef]) || - [self _validateShareContentForFeed:errorRef] || - [self _validateShareContentForBrowserWithOptions:FBSDKShareBridgeOptionsDefault error:errorRef]); - } - case FBSDKShareDialogModeNative:{ - return [self _validateShareContentForNative:errorRef]; - } - case FBSDKShareDialogModeShareSheet:{ - return [self _validateShareContentForShareSheet:errorRef]; - } - case FBSDKShareDialogModeBrowser:{ - return [self _validateShareContentForBrowserWithOptions:FBSDKShareBridgeOptionsDefault error:errorRef]; - } - case FBSDKShareDialogModeWeb:{ - return [self _validateShareContentForBrowserWithOptions:FBSDKShareBridgeOptionsPhotoImageURL error:errorRef]; - } - case FBSDKShareDialogModeFeedBrowser: - case FBSDKShareDialogModeFeedWeb:{ - return [self _validateShareContentForFeed:errorRef]; - } - } - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"FBSDKShareDialogMode" - value:@(self.mode) - message:nil]; - } - return NO; -} - -/** - `validateWithError:` can be used by clients of this API to discover if certain features are - available for a specific `mode`. However, these features could be optional for said `mode`, in which - case `validateWithError:` should return NO but when calling `show`, the dialog must still show. - - ie: Quotes are only available if FB for iOS v52 or higher is installed. If the client adds a quote to - the `ShareLinkContent` object and FB for iOS v52 or higher is not installed, `validateWithError:` will - return NO if the `mode` is set to ShareSheet. However, calling `show` will actually show the shareSheet - without the Quote. - - This method exists to enable the behavior described above and should only be called from `validateWithError:`. - */ -- (BOOL)_validateFullyCompatibleWithError:(NSError *__autoreleasing *)errorRef -{ - id shareContent = self.shareContent; - if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - FBSDKShareLinkContent *shareLinkContent = (FBSDKShareLinkContent *)shareContent; - if (shareLinkContent.quote.length > 0 && - self.mode == FBSDKShareDialogModeShareSheet && - ![self _canUseQuoteInShareSheet]) { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareLinkContent - message:@"Quotes are only supported if Facebook for iOS version 52 and above is installed"]; - } - return NO; - } - } - return YES; -} - -- (BOOL)_validateShareContentForBrowserWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - id shareContent = self.shareContent; - if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - // The parameter 'href' or 'media' is required - FBSDKShareLinkContent *const linkContent = shareContent; - if (!linkContent.contentURL) { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"FBSDKShareLinkContent contentURL is required."]; - } - return NO; - } - } - if ([shareContent isKindOfClass:[FBSDKShareCameraEffectContent class]]) { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"Camera Content must be shared in `Native` mode."]; - } - return NO; - } - BOOL containsMedia; - BOOL containsPhotos; - BOOL containsVideos; - [FBSDKShareUtility testShareContent:shareContent containsMedia:&containsMedia containsPhotos:&containsPhotos containsVideos:&containsVideos]; - if (containsPhotos) { - if ([FBSDKAccessToken currentAccessToken] == nil) { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"The web share dialog needs a valid access token to stage photos."]; - } - return NO; - } - if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { - if (![shareContent validateWithOptions:bridgeOptions error:errorRef]) { - return NO; - } - } else { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"Web share dialogs cannot include photos."]; - } - return NO; - } - } - if (containsVideos) { - if ([FBSDKAccessToken currentAccessToken] == nil) { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"The web share dialog needs a valid access token to stage videos."]; - } - return NO; - } - if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - if (![shareContent validateWithOptions:bridgeOptions error:errorRef]) { - return NO; - } - } - } - if (containsMedia) { - if (bridgeOptions & FBSDKShareBridgeOptionsPhotoImageURL) { // a web-based URL is required - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"Web share dialogs cannot include local media."]; - } - return NO; - } - } - return YES; -} - -- (BOOL)_validateShareContentForFeed:(NSError **)errorRef -{ - id shareContent = self.shareContent; - if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - // The parameter 'href' or 'media' is required - FBSDKShareLinkContent *const linkContent = shareContent; - if (!linkContent.contentURL) { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"FBSDKShareLinkContent contentURL is required."]; - } - return NO; - } - } else { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"Feed share dialogs support FBSDKShareLinkContent."]; - } - return NO; - } - return YES; -} - -- (BOOL)_validateShareContentForNative:(NSError **)errorRef -{ - id shareContent = self.shareContent; - if ([shareContent isKindOfClass:[FBSDKShareMediaContent class]]) { - if ([FBSDKShareUtility shareMediaContentContainsPhotosAndVideos:(FBSDKShareMediaContent *)shareContent]) { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"Multimedia Content is only available for mode `ShareSheet`"]; - } - return NO; - } - } - if (![shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - return YES; - } - return [(FBSDKShareVideoContent *)shareContent validateWithOptions:FBSDKShareBridgeOptionsDefault - error:errorRef]; -} - -- (BOOL)_validateShareContentForShareSheet:(NSError **)errorRef -{ - id shareContent = self.shareContent; - if (shareContent) { - if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { - if ([self _contentImages].count != 0) { - return YES; - } else { - if ((errorRef != NULL) && !*errorRef) { - NSString *message = @"Share photo content must have UIImage photos in order to share with the share sheet"; - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" value:shareContent message:message]; - } - return NO; - } - } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - return ([self _canUseFBShareSheet] && - [(FBSDKShareVideoContent *)shareContent validateWithOptions:FBSDKShareBridgeOptionsDefault error:errorRef]); - } else if ([shareContent isKindOfClass:[FBSDKShareMediaContent class]]) { - return ([self _canUseFBShareSheet] && - [self _validateShareMediaContentAvailability:shareContent error:errorRef] && - [(FBSDKShareMediaContent *)shareContent validateWithOptions:FBSDKShareBridgeOptionsDefault error:errorRef]); - } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { - FBSDKShareOpenGraphContent *ogContent = (FBSDKShareOpenGraphContent *)shareContent; - BOOL isOGURLShare = [self _isOpenGraphURLShare:ogContent]; - - BOOL isValidOGShare = (isOGURLShare && - [ogContent.action.actionType length] != 0 && - [ogContent.previewPropertyName length] != 0); - 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 = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" value:shareContent message:message]; - } - } - return isValidOGShare; - } else if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - return YES; - } else { - if ((errorRef != NULL) && !*errorRef) { - NSString *message = [NSString stringWithFormat:@"Share sheet does not support %@.", - NSStringFromClass(shareContent.class)]; - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" value:shareContent message:message]; - } - return NO; - } - } - return YES; -} - -- (BOOL)_validateShareMediaContentAvailability:(FBSDKShareMediaContent *)shareContent error:(NSError **)errorRef -{ - if ([FBSDKShareUtility shareMediaContentContainsPhotosAndVideos:shareContent] && - self.mode == FBSDKShareDialogModeShareSheet && - ![self _canUseMMPInShareSheet]) { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" - value:shareContent - message:@"Multimedia content (photos + videos) is only supported if Facebook for iOS version 52 and above is installed"]; - } - return NO; - } - return YES; -} - -- (void)_invokeDelegateDidCancel -{ - NSDictionary * parameters = @{ - FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Cancelled, - }; - - [FBSDKAppEvents logImplicitEvent:FBSDLAppEventNameFBSDKEventShareDialogResult - valueToSum:nil - parameters:parameters - accessToken:[FBSDKAccessToken currentAccessToken]]; - - [_delegate sharerDidCancel:self]; -} - -- (void)_invokeDelegateDidCompleteWithResults:(NSDictionary *)results -{ - NSDictionary * parameters = @{ - FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Completed - }; - - [FBSDKAppEvents logImplicitEvent:FBSDLAppEventNameFBSDKEventShareDialogResult - valueToSum:nil - parameters:parameters - accessToken:[FBSDKAccessToken currentAccessToken]]; - - [_delegate sharer:self didCompleteWithResults:[results copy]]; -} - -- (void)_invokeDelegateDidFailWithError:(NSError *)error -{ - NSDictionary * parameters = @{ - FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Failed, - FBSDKAppEventParameterDialogErrorMessage : [NSString stringWithFormat:@"%@", error] - }; - - [FBSDKAppEvents logImplicitEvent:FBSDLAppEventNameFBSDKEventShareDialogResult - valueToSum:nil - parameters:parameters - accessToken:[FBSDKAccessToken currentAccessToken]]; - - [_delegate sharer:self didFailWithError:error]; -} - -- (void)_logDialogShow -{ - NSString *shareMode = NSStringFromFBSDKShareDialogMode(self.mode); - - NSString *contentType; - if([self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeOpenGraph; - } else if ([self.shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeStatus; - } else if ([self.shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypePhoto; - } else if ([self.shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeVideo; - } else if ([self.shareContent isKindOfClass:[FBSDKShareCameraEffectContent class]]) { - contentType = FBSDKAppEventsDialogShareContentTypeCamera; - } else { - contentType = FBSDKAppEventsDialogShareContentTypeUnknown; - } - - NSDictionary *parameters = @{ - FBSDKAppEventParameterDialogMode : shareMode, - FBSDKAppEventParameterDialogShareContentType : contentType, - - }; - - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventShareDialogShow - valueToSum:nil - parameters:parameters - accessToken:[FBSDKAccessToken currentAccessToken]]; -} - -- (NSString *)_calculateInitialText -{ - NSString *initialText; - if ([self _canAttributeThroughShareSheet]) { - NSMutableDictionary *initialTextDictionary = [NSMutableDictionary new]; - initialTextDictionary[@"app_id"] = [FBSDKSettings appID]; - NSString *hashtag = [FBSDKShareUtility hashtagStringFromHashtag:self.shareContent.hashtag]; - if (hashtag != nil) { - initialTextDictionary[@"hashtags"] = @[hashtag]; - } - if ([self.shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - NSString *quote = [(FBSDKShareLinkContent *)self.shareContent quote]; - if (quote != nil) { - initialTextDictionary[@"quotes"] = @[quote]; - } - } - if ([self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { - NSDictionary *ogData = [FBSDKShareUtility parametersForShareContent:self.shareContent - bridgeOptions:FBSDKShareBridgeOptionsDefault - shouldFailOnDataError:self.shouldFailOnDataError]; - initialTextDictionary[@"og_data"] = ogData; - } - - NSError *error = nil; - NSString *jsonString = [FBSDKInternalUtility JSONStringForObject:initialTextDictionary error:&error invalidObjectHandler:NULL]; - if (error != nil) { - return nil; - } - - NSString *JSONStartDelimiter = @"|"; - initialText = [NSString stringWithFormat:@"%@%@%@", - [self _calculatePreJSONInitialTextWithHashtag:hashtag], - JSONStartDelimiter, - jsonString]; - } else { - NSString *hashtag = [FBSDKShareUtility hashtagStringFromHashtag:self.shareContent.hashtag]; - if (hashtag != nil) { - initialText = hashtag; - } - } - return initialText; -} - -// Not all versions of the Share Extension support JSON. Adding this text before allows backward compatibility -- (NSString *)_calculatePreJSONInitialTextWithHashtag:(NSString *)hashtag -{ - NSMutableString *text = [NSMutableString new]; - [text appendString:[NSString stringWithFormat:@"fb-app-id:%@", [FBSDKSettings appID]]]; - if (hashtag != nil) { - [text appendString:@" "]; - [text appendString:hashtag]; - } - return [text copy]; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h deleted file mode 100644 index e7dfabc..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h +++ /dev/null @@ -1,65 +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 - -/** - NS_ENUM(NSUInteger, FBSDKShareDialogMode) - Modes for the FBSDKShareDialog. - - The automatic mode will progressively check the availability of different modes and open the most - appropriate mode for the dialog that is available. - */ -typedef NS_ENUM(NSUInteger, FBSDKShareDialogMode) -{ - /** - Acts with the most appropriate mode that is available. - */ - FBSDKShareDialogModeAutomatic = 0, - /** - @Displays the dialog in the main native Facebook app. - */ - FBSDKShareDialogModeNative, - /** - @Displays the dialog in the iOS integrated share sheet. - */ - FBSDKShareDialogModeShareSheet, - /** - @Displays the dialog in Safari. - */ - FBSDKShareDialogModeBrowser, - /** - @Displays the dialog in a UIWebView within the app. - */ - FBSDKShareDialogModeWeb, - /** - @Displays the feed dialog in Safari. - */ - FBSDKShareDialogModeFeedBrowser, - /** - @Displays the feed dialog in a UIWebView within the app. - */ - FBSDKShareDialogModeFeedWeb, -}; - -/** - Converts an FBSDKShareDialogMode to an NSString. - */ -FBSDK_EXTERN NSString *NSStringFromFBSDKShareDialogMode(FBSDKShareDialogMode dialogMode); diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m deleted file mode 100644 index 7791adb..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m +++ /dev/null @@ -1,51 +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 "FBSDKShareDialogMode.h" - -#import "FBSDKCoreKit+Internal.h" - -NSString *NSStringFromFBSDKShareDialogMode(FBSDKShareDialogMode dialogMode) -{ - switch (dialogMode) { - case FBSDKShareDialogModeAutomatic:{ - return FBSDKAppEventsDialogShareModeAutomatic; - } - case FBSDKShareDialogModeBrowser:{ - return FBSDKAppEventsDialogShareModeBrowser; - } - case FBSDKShareDialogModeNative:{ - return FBSDKAppEventsDialogShareModeNative; - } - case FBSDKShareDialogModeShareSheet:{ - return FBSDKAppEventsDialogShareModeShareSheet; - } - case FBSDKShareDialogModeWeb:{ - return FBSDKAppEventsDialogShareModeWeb; - } - case FBSDKShareDialogModeFeedBrowser: { - return FBSDKAppEventsDialogShareModeFeedBrowser; - } - case FBSDKShareDialogModeFeedWeb:{ - return FBSDKAppEventsDialogShareModeFeedWeb; - } - default:{ - return FBSDKAppEventsDialogShareModeUnknown; - } - } -} diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h deleted file mode 100644 index 30e36aa..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h +++ /dev/null @@ -1,62 +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 -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -#if !TARGET_OS_TV -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#else -#import -#import -#endif diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h deleted file mode 100644 index 0a28377..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h +++ /dev/null @@ -1,78 +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 - -/** - A model for status and link content to be shared. - */ -@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; - -/** - Compares the receiver to another link content. - @param content The other content - @return YES if the receiver's values are equal to the other content's values; otherwise NO - */ -- (BOOL)isEqualToShareLinkContent:(FBSDKShareLinkContent *)content; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m deleted file mode 100644 index e0032e3..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m +++ /dev/null @@ -1,228 +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+Internal.h" - -#import "FBSDKCoreKit+Internal.h" -#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 - -#pragma mark - Properties - -@synthesize contentURL = _contentURL; -@synthesize hashtag = _hashtag; -@synthesize peopleIDs = _peopleIDs; -@synthesize placeID = _placeID; -@synthesize ref = _ref; -@synthesize pageID = _pageID; -@synthesize feedParameters = _feedParameters; -@synthesize quote = _quote; -@synthesize shareUUID = _shareUUID; - -#pragma mark - Initializer - -- (instancetype)init -{ - self = [super init]; - if (self) { - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -#pragma mark - Setters - -- (void)setPeopleIDs:(NSArray *)peopleIDs -{ - [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; - if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { - _peopleIDs = [peopleIDs copy]; - } -} - -- (void)setFeedParameters:(NSDictionary *)feedParameters -{ - if (![_feedParameters isEqualToDictionary:feedParameters]) { - _feedParameters = [feedParameters copy]; - } -} - -#pragma mark - FBSDKSharingContent - -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - [FBSDKInternalUtility dictionary:parameters setObject:_contentURL forKey:@"link"]; - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [FBSDKInternalUtility dictionary:parameters setObject:_contentTitle forKey:@"name"]; - [FBSDKInternalUtility dictionary:parameters setObject:_contentDescription forKey:@"description"]; - [FBSDKInternalUtility dictionary:parameters setObject:_imageURL forKey:@"picture"]; -#pragma clang diagnostic pop - [FBSDKInternalUtility dictionary:parameters 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:parameters setObject:_contentURL forKey:@"messenger_link"]; -} - -#pragma mark - FBSDKSharingValidation - -- (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 -} - -#pragma mark - Equality - -- (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], - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKShareLinkContent class]]) { - return NO; - } - return [self isEqualToShareLinkContent:(FBSDKShareLinkContent *)object]; -} - -- (BOOL)isEqualToShareLinkContent:(FBSDKShareLinkContent *)content -{ -#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 - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _contentDescription = [decoder decodeObjectOfClass:[NSString class] - forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_DESCRIPTION_KEY]; - _contentTitle = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_TITLE_KEY]; - _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_URL_KEY]; - _feedParameters = [decoder decodeObjectOfClass:[NSDictionary class] forKey:FBSDK_SHARE_STATUS_CONTENT_FEED_PARAMETERS_KEY]; - _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]; - _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_STATUS_CONTENT_PAGE_ID_KEY]; - _quote = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_STATUS_CONTENT_QUOTE_TEXT_KEY]; - _shareUUID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_STATUS_CONTENT_UUID_KEY]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_contentDescription forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_DESCRIPTION_KEY]; - [encoder encodeObject:_contentTitle forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_TITLE_KEY]; - [encoder encodeObject:_contentURL forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_URL_KEY]; - [encoder encodeObject:_feedParameters forKey:FBSDK_SHARE_STATUS_CONTENT_FEED_PARAMETERS_KEY]; - [encoder encodeObject:_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]; - [encoder encodeObject:_pageID forKey:FBSDK_SHARE_STATUS_CONTENT_PAGE_ID_KEY]; - [encoder encodeObject:_quote forKey:FBSDK_SHARE_STATUS_CONTENT_QUOTE_TEXT_KEY]; - [encoder encodeObject:_shareUUID forKey:FBSDK_SHARE_STATUS_CONTENT_UUID_KEY]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareLinkContent *copy = [[FBSDKShareLinkContent alloc] init]; - copy->_contentDescription = [_contentDescription copy]; - copy->_contentTitle = [_contentTitle copy]; - copy->_contentURL = [_contentURL copy]; - copy->_feedParameters = [_feedParameters copy]; - copy->_hashtag = [_hashtag copy]; - copy->_imageURL = [_imageURL copy]; - copy->_peopleIDs = [_peopleIDs copy]; - copy->_placeID = [_placeID copy]; - copy->_ref = [_ref copy]; - copy->_pageID = [_pageID copy]; - copy->_quote = [_quote copy]; - copy->_shareUUID = [_shareUUID copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h deleted file mode 100644 index ab9d895..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h +++ /dev/null @@ -1,41 +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 - -/** - A model for media content (photo or video) to be shared. - */ -@interface FBSDKShareMediaContent : NSObject - -/** - Media to be shared. - @return Array of the media (FBSDKSharePhoto or FBSDKShareVideo) - */ -@property (nonatomic, copy) NSArray *media; - -/** - Compares the receiver to another media content. - @param content The other content - @return YES if the receiver's values are equal to the other content's values; otherwise NO - */ -- (BOOL)isEqualToShareMediaContent:(FBSDKShareMediaContent *)content; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m deleted file mode 100644 index b1b38e3..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m +++ /dev/null @@ -1,227 +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 "FBSDKShareMediaContent.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKHashtag.h" -#import "FBSDKShareError.h" -#import "FBSDKSharePhoto.h" -#import "FBSDKShareUtility.h" -#import "FBSDKShareVideo.h" - -#define FBSDK_SHARE_MEDIA_CONTENT_CONTENT_URL_KEY @"contentURL" -#define FBSDK_SHARE_MEDIA_CONTENT_HASHTAG_KEY @"hashtag" -#define FBSDK_SHARE_MEDIA_CONTENT_PEOPLE_IDS_KEY @"peopleIDs" -#define FBSDK_SHARE_MEDIA_CONTENT_MEDIA_KEY @"media" -#define FBSDK_SHARE_MEDIA_CONTENT_PLACE_ID_KEY @"placeID" -#define FBSDK_SHARE_MEDIA_CONTENT_REF_KEY @"ref" -#define FBSDK_SHARE_MEDIA_CONTENT_PAGE_ID_KEY @"pageID" -#define FBSDK_SHARE_MEDIA_CONTENT_UUID_KEY @"uuid" - -@implementation FBSDKShareMediaContent - -#pragma mark - Properties - -@synthesize contentURL = _contentURL; -@synthesize hashtag = _hashtag; -@synthesize peopleIDs = _peopleIDs; -@synthesize placeID = _placeID; -@synthesize ref = _ref; -@synthesize pageID = _pageID; -@synthesize shareUUID = _shareUUID; - -#pragma mark - Initializer - -- (instancetype)init -{ - self = [super init]; - if (self) { - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -#pragma mark - Setters - -- (void)setPeopleIDs:(NSArray *)peopleIDs -{ - [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; - if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { - _peopleIDs = [peopleIDs copy]; - } -} - -- (void)setMedia:(NSArray *)media -{ - [FBSDKShareUtility assertCollection:media ofClassStrings:@[NSStringFromClass([FBSDKSharePhoto class]), NSStringFromClass([FBSDKShareVideo class])] name:@"media"]; - if (![FBSDKInternalUtility object:_media isEqualToObject:media]) { - _media = [media copy]; - } -} - -#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) -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - if (![FBSDKShareUtility validateArray:_media minCount:1 maxCount:20 name:@"photos" error:errorRef]) { - return NO; - } - int videoCount = 0; - for (id media in _media) { - if ([media isKindOfClass:[FBSDKSharePhoto class]]) { - FBSDKSharePhoto *photo = (FBSDKSharePhoto *)media; - if (![photo validateWithOptions:bridgeOptions error:NULL]) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"media" - value:media - message:@"photos must have UIImages"]; - } - return NO; - } - } else if ([media isKindOfClass:[FBSDKShareVideo class]]) { - if (videoCount > 0) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"media" - value:media - message:@"Only 1 video is allowed"]; - return NO; - } - } - videoCount++; - FBSDKShareVideo *video = (FBSDKShareVideo *)media; - if (![FBSDKShareUtility validateRequiredValue:video name:@"video" error:errorRef]) { - return NO; - } - if (![video validateWithOptions:bridgeOptions error:errorRef]) { - return NO; - } - - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"media" - value:media - message:@"Only FBSDKSharePhoto and FBSDKShareVideo are allowed in `media` property"]; - } - return NO; - } - } - return YES; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [_contentURL hash], - [_hashtag hash], - [_peopleIDs hash], - [_media hash], - [_placeID hash], - [_ref hash], - [_pageID hash], - [_shareUUID hash], - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKShareMediaContent class]]) { - return NO; - } - return [self isEqualToShareMediaContent:(FBSDKShareMediaContent *)object]; -} - -- (BOOL)isEqualToShareMediaContent:(FBSDKShareMediaContent *)content -{ - return (content && - [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && - [FBSDKInternalUtility object:_hashtag isEqualToObject:content.hashtag] && - [FBSDKInternalUtility object:_peopleIDs isEqualToObject:content.peopleIDs] && - [FBSDKInternalUtility object:_media isEqualToObject:content.media] && - [FBSDKInternalUtility object:_placeID isEqualToObject:content.placeID] && - [FBSDKInternalUtility object:_ref isEqualToObject:content.ref] && - [FBSDKInternalUtility object:_shareUUID isEqualToObject:content.shareUUID] && - [FBSDKInternalUtility object:_pageID isEqualToObject:content.pageID]); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_MEDIA_CONTENT_CONTENT_URL_KEY]; - _hashtag = [decoder decodeObjectOfClass:[FBSDKHashtag class] forKey:FBSDK_SHARE_MEDIA_CONTENT_HASHTAG_KEY]; - _peopleIDs = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_SHARE_MEDIA_CONTENT_PEOPLE_IDS_KEY]; - NSSet *classes = [NSSet setWithObjects:[NSArray class], [FBSDKSharePhoto class], nil]; - _media = [decoder decodeObjectOfClasses:classes forKey:FBSDK_SHARE_MEDIA_CONTENT_MEDIA_KEY]; - _placeID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_MEDIA_CONTENT_PLACE_ID_KEY]; - _ref = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_MEDIA_CONTENT_REF_KEY]; - _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_MEDIA_CONTENT_PAGE_ID_KEY]; - _shareUUID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_MEDIA_CONTENT_UUID_KEY]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_contentURL forKey:FBSDK_SHARE_MEDIA_CONTENT_CONTENT_URL_KEY]; - [encoder encodeObject:_hashtag forKey:FBSDK_SHARE_MEDIA_CONTENT_HASHTAG_KEY]; - [encoder encodeObject:_peopleIDs forKey:FBSDK_SHARE_MEDIA_CONTENT_PEOPLE_IDS_KEY]; - [encoder encodeObject:_media forKey:FBSDK_SHARE_MEDIA_CONTENT_MEDIA_KEY]; - [encoder encodeObject:_placeID forKey:FBSDK_SHARE_MEDIA_CONTENT_PLACE_ID_KEY]; - [encoder encodeObject:_ref forKey:FBSDK_SHARE_MEDIA_CONTENT_REF_KEY]; - [encoder encodeObject:_pageID forKey:FBSDK_SHARE_MEDIA_CONTENT_PAGE_ID_KEY]; - [encoder encodeObject:_shareUUID forKey:FBSDK_SHARE_MEDIA_CONTENT_UUID_KEY]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareMediaContent *copy = [[FBSDKShareMediaContent alloc] init]; - copy->_contentURL = [_contentURL copy]; - copy->_hashtag = [_hashtag copy]; - copy->_peopleIDs = [_peopleIDs copy]; - copy->_media = [_media copy]; - copy->_placeID = [_placeID copy]; - copy->_ref = [_ref copy]; - copy->_pageID = [_pageID copy]; - copy->_shareUUID = [_shareUUID copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h deleted file mode 100644 index 8b18d07..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h +++ /dev/null @@ -1,34 +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 - -/** - A base interface for Messenger share action buttons. - */ -@protocol FBSDKShareMessengerActionButton - -/** - The title displayed to the user for the button. - @return The title for the button. - */ -@property (nonatomic, copy) NSString *title; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h deleted file mode 100644 index ffc1b7f..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h +++ /dev/null @@ -1,55 +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 - -@class FBSDKShareMessengerGenericTemplateElement; - -typedef NS_ENUM(NSUInteger, FBSDKShareMessengerGenericTemplateImageAspectRatio) { - FBSDKShareMessengerGenericTemplateImageAspectRatioHorizontal = 0, - FBSDKShareMessengerGenericTemplateImageAspectRatioSquare -}; - -/** - A model for sharing a generic template element to Messenger. This wrapper element allows - specifying whether or not the bubble is sharable and what aspect to render the images. - See https://developers.facebook.com/docs/messenger-platform/send-messages/template/generic - for more details. - */ -@interface FBSDKShareMessengerGenericTemplateContent : NSObject - -/** - This specifies whether or not this generic template message can be shared again after the - initial share. Defaults to false. - */ -@property (nonatomic, assign) BOOL isSharable; - -/** - The aspect ratio for when the image is rendered in the generic template bubble after being - shared. Defaults to horizontal. - */ -@property (nonatomic, assign) FBSDKShareMessengerGenericTemplateImageAspectRatio imageAspectRatio; - -/** - A generic template element with a title, optional subtitle, optional image, etc. Required. - */ -@property (nonatomic, copy) FBSDKShareMessengerGenericTemplateElement *element; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m deleted file mode 100644 index 68bfa7a..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m +++ /dev/null @@ -1,177 +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 "FBSDKShareMessengerGenericTemplateContent.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareMessengerContentUtility.h" -#import "FBSDKShareMessengerGenericTemplateElement.h" -#import "FBSDKShareMessengerURLActionButton.h" -#import "FBSDKShareUtility.h" - -static NSString *const kGenericTemplatePageIDKey = @"pageID"; -static NSString *const kGenericTemplateUUIDKey = @"UUID"; -static NSString *const kGenericTemplateIsSharableKey = @"isSharable"; -static NSString *const kGenericTemplateImageAspectRatioKey = @"imageAspectRatio"; -static NSString *const kGenericTemplateElementKey = @"element"; - -static NSString *_ImageAspectRatioString(FBSDKShareMessengerGenericTemplateImageAspectRatio imageAspectRatio) -{ - switch (imageAspectRatio) { - case FBSDKShareMessengerGenericTemplateImageAspectRatioSquare: - return @"square"; - case FBSDKShareMessengerGenericTemplateImageAspectRatioHorizontal: - return @"horizontal"; - } -} - -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]; - if ([element.defaultAction isKindOfClass:[FBSDKShareMessengerURLActionButton class]]) { - [FBSDKInternalUtility dictionary:elementDictionary setObject:SerializableButtonFromURLButton(element.defaultAction, YES) forKey:@"default_action"]; - } - - [serializableElements addObject:elementDictionary]; - } - - return serializableElements; -} - -@implementation FBSDKShareMessengerGenericTemplateContent - -#pragma mark - Properties - -@synthesize contentURL = _contentURL; -@synthesize hashtag = _hashtag; -@synthesize peopleIDs = _peopleIDs; -@synthesize placeID = _placeID; -@synthesize ref = _ref; -@synthesize pageID = _pageID; -@synthesize shareUUID = _shareUUID; - -#pragma mark - Initializer - -- (instancetype)init -{ - self = [super init]; - if (self) { - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -#pragma mark - FBSDKSharingContent - -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - NSMutableDictionary *payload = [NSMutableDictionary dictionary]; - [payload setObject:@"generic" forKey:kFBSDKShareMessengerTemplateTypeKey]; - [payload setObject:@(_isSharable) forKey:@"sharable"]; - [payload setObject:_ImageAspectRatioString(_imageAspectRatio) forKey:@"image_aspect_ratio"]; - [payload setObject:_SerializableGenericTemplateElementsFromElements(@[_element]) forKey:kFBSDKShareMessengerElementsKey]; - - NSMutableDictionary *attachment = [NSMutableDictionary dictionary]; - [attachment setObject:kFBSDKShareMessengerTemplateKey forKey:kFBSDKShareMessengerTypeKey]; - [attachment setObject:payload forKey:kFBSDKShareMessengerPayloadKey]; - - NSMutableDictionary *contentForShare = [NSMutableDictionary dictionary]; - [contentForShare setObject:attachment forKey:kFBSDKShareMessengerAttachmentKey]; - - 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"]; - if (firstElement.button) { - AddToContentPreviewDictionaryForButton(contentForPreview, firstElement.button); - } else { - AddToContentPreviewDictionaryForButton(contentForPreview, firstElement.defaultAction); - } - - [FBSDKShareMessengerContentUtility addToParameters:parameters contentForShare:contentForShare contentForPreview:contentForPreview]; -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - return [FBSDKShareUtility validateRequiredValue:_element.title - name:@"element.title" - error:errorRef] - && [FBSDKShareMessengerContentUtility validateMessengerActionButton:_element.defaultAction - isDefaultActionButton:YES - pageID:_pageID - error:errorRef] - && [FBSDKShareMessengerContentUtility validateMessengerActionButton:_element.button - isDefaultActionButton:NO - pageID:_pageID - error:errorRef]; -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (instancetype)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:kGenericTemplatePageIDKey]; - _isSharable = [decoder decodeBoolForKey:kGenericTemplateIsSharableKey]; - _imageAspectRatio = [[decoder decodeObjectOfClass:[NSNumber class] forKey:kGenericTemplateImageAspectRatioKey] unsignedIntegerValue]; - _element = [decoder decodeObjectForKey:kGenericTemplateElementKey]; - _shareUUID = [decoder decodeObjectOfClass:[NSString class] forKey:kGenericTemplateUUIDKey]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_pageID forKey:kGenericTemplatePageIDKey]; - [encoder encodeBool:_isSharable forKey:kGenericTemplateIsSharableKey]; - [encoder encodeObject:@(_imageAspectRatio) forKey:kGenericTemplateImageAspectRatioKey]; - [encoder encodeObject:_element forKey:kGenericTemplateElementKey]; - [encoder encodeObject:_shareUUID forKey:kGenericTemplateUUIDKey]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareMessengerGenericTemplateContent *copy = [[FBSDKShareMessengerGenericTemplateContent alloc] init]; - copy->_pageID = [_pageID copy]; - copy->_isSharable = _isSharable; - copy->_imageAspectRatio = _imageAspectRatio; - copy->_element = [_element copy]; - copy->_shareUUID = [_shareUUID copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h deleted file mode 100644 index d70dd96..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h +++ /dev/null @@ -1,56 +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 - -/** - 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. - */ -@interface FBSDKShareMessengerGenericTemplateElement : NSObject - -/** - The rendered title for the shared generic template element. Required. - */ -@property (nonatomic, copy) NSString *title; - -/** - The rendered subtitle for the shared generic template element. Optional. - */ -@property (nonatomic, copy) NSString *subtitle; - -/** - The image url that will be downloaded and rendered at the top of the generic template. Optional. - */ -@property (nonatomic, copy) 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; - -/** - This specifies what action button to show below the generic template. Optional. - */ -@property (nonatomic, copy) id button; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m deleted file mode 100644 index 7268f78..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m +++ /dev/null @@ -1,71 +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 "FBSDKShareMessengerGenericTemplateElement.h" - -static NSString *const kGenericTemplateTitleKey = @"title"; -static NSString *const kGenericTemplateSubtitleKey = @"subtitle"; -static NSString *const kGenericTemplateImageURLKey = @"imageURL"; -static NSString *const kGenericTemplateDefaultActionKey = @"defaultAction"; -static NSString *const kGenericTemplateButtonKey = @"button"; - -@implementation FBSDKShareMessengerGenericTemplateElement - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (instancetype)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _title = [decoder decodeObjectOfClass:[NSString class] forKey:kGenericTemplateTitleKey]; - _subtitle = [decoder decodeObjectOfClass:[NSString class] forKey:kGenericTemplateSubtitleKey]; - _imageURL = [decoder decodeObjectOfClass:[NSURL class] forKey:kGenericTemplateImageURLKey]; - _defaultAction = [decoder decodeObjectForKey:kGenericTemplateDefaultActionKey]; - _button = [decoder decodeObjectForKey:kGenericTemplateButtonKey]; - - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_title forKey:kGenericTemplateTitleKey]; - [encoder encodeObject:_subtitle forKey:kGenericTemplateSubtitleKey]; - [encoder encodeObject:_imageURL forKey:kGenericTemplateImageURLKey]; - [encoder encodeObject:_defaultAction forKey:kGenericTemplateDefaultActionKey]; - [encoder encodeObject:_button forKey:kGenericTemplateButtonKey]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareMessengerGenericTemplateElement *copy = [[FBSDKShareMessengerGenericTemplateElement alloc] init]; - copy->_title = [_title copy]; - copy->_subtitle = [_subtitle copy]; - copy->_imageURL = [_imageURL copy]; - copy->_defaultAction = [_defaultAction copy]; - copy->_button = [_button copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h deleted file mode 100644 index 142702d..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h +++ /dev/null @@ -1,69 +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 - -typedef NS_ENUM(NSUInteger, FBSDKShareMessengerMediaTemplateMediaType) { - FBSDKShareMessengerMediaTemplateMediaTypeImage = 0, - FBSDKShareMessengerMediaTemplateMediaTypeVideo -}; - -/** - A model for sharing media template content. See - https://developers.facebook.com/docs/messenger-platform/send-messages/template/media for details. - */ -@interface FBSDKShareMessengerMediaTemplateContent : NSObject - -/** - 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. - */ -@property (nonatomic, assign) FBSDKShareMessengerMediaTemplateMediaType mediaType; - -/** - The attachmentID of the item to share. Optional, but either attachmentID or mediaURL must be specified. - */ -@property (nonatomic, copy, readonly) 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; - -/** - This specifies what action button to show below the media. Optional. - */ -@property (nonatomic, copy) id button; - -/** - Custom initializer to create media template share with attachment id. - */ -- (instancetype)initWithAttachmentID:(NSString *)attachmentID; - -/** - Custom initializer to create media template share with media url. This must be a Facebook url - and cannot be an external url. - */ -- (instancetype)initWithMediaURL:(NSURL *)mediaURL; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m deleted file mode 100644 index 58cee8d..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.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 "FBSDKShareMessengerMediaTemplateContent.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKHashtag.h" -#import "FBSDKShareError.h" -#import "FBSDKShareMessengerContentUtility.h" - -static NSString *const kMediaTemplatePageIDKey = @"pageID"; -static NSString *const kMediaTemplateMediaTypeKey = @"mediaType"; -static NSString *const kMediaTemplateAttachmentIDKey = @"attachmentID"; -static NSString *const kMediaTemplateMediaURLKey = @"mediaURL"; -static NSString *const kMediaTemplateButtonKey = @"button"; -static NSString *const kMediaTemplateUUIDKey = @"uuid"; - -static BOOL _URLHasFacebookDomain(NSURL *URL) -{ - NSString *urlHost = [URL.host lowercaseString]; - NSArray *pathComponents = [URL pathComponents]; - - /** - Check the following three different cases... - 1. Check if host is facebook.com, such as in 'https://facebok.com/test' - 2. Check if host is someprefix.facebook.com, such as in 'https://www.facebook.com/test' - 3. Check if host is null, but the first path component is facebook.com - */ - return [urlHost isEqualToString:@"facebook.com"] || - [urlHost hasSuffix:@".facebook.com"] || - ([[[pathComponents firstObject] lowercaseString] hasSuffix:@"facebook.com"]); -} - -static NSString *_MediaTemplateURLSerializationKey(NSURL *mediaURL) -{ - if (_URLHasFacebookDomain(mediaURL)) { - return @"facebook_media_url"; - } else { - return @"image_url"; - } -} - -static NSString *_MediaTypeString(FBSDKShareMessengerMediaTemplateMediaType mediaType) -{ - switch (mediaType) { - case FBSDKShareMessengerMediaTemplateMediaTypeImage: - return @"image"; - case FBSDKShareMessengerMediaTemplateMediaTypeVideo: - return @"video"; - } -} - -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]; - [serializableMediaTemplateContent addObject:mediaTemplateContentDictionary]; - - return serializableMediaTemplateContent; -} - -@implementation FBSDKShareMessengerMediaTemplateContent - -#pragma mark - Properties - -@synthesize contentURL = _contentURL; -@synthesize hashtag = _hashtag; -@synthesize peopleIDs = _peopleIDs; -@synthesize placeID = _placeID; -@synthesize ref = _ref; -@synthesize pageID = _pageID; -@synthesize shareUUID = _shareUUID; - -#pragma mark - Initializer - -- (instancetype)initWithAttachmentID:(NSString *)attachmentID -{ - self = [super init]; - if (self) { - _attachmentID = [attachmentID copy]; - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -- (instancetype)initWithMediaURL:(NSURL *)mediaURL -{ - self = [super init]; - if (self) { - _mediaURL = [mediaURL copy]; - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -#pragma mark - FBSDKSharingContent - -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - NSMutableDictionary *payload = [NSMutableDictionary dictionary]; - [payload setObject:@"media" forKey:kFBSDKShareMessengerTemplateTypeKey]; - [payload setObject:_SerializableMediaTemplateContentFromContent(self) forKey:kFBSDKShareMessengerElementsKey]; - - NSMutableDictionary *attachment = [NSMutableDictionary dictionary]; - [attachment setObject:kFBSDKShareMessengerTemplateKey forKey:kFBSDKShareMessengerTypeKey]; - [attachment setObject:payload forKey:kFBSDKShareMessengerPayloadKey]; - - NSMutableDictionary *contentForShare = [NSMutableDictionary dictionary]; - [contentForShare setObject:attachment forKey:kFBSDKShareMessengerAttachmentKey]; - - 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"]; - AddToContentPreviewDictionaryForButton(contentForPreview, _button); - - [FBSDKShareMessengerContentUtility addToParameters:parameters contentForShare:contentForShare contentForPreview:contentForPreview]; -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - if (!_mediaURL && !_attachmentID) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"attachmentID/mediaURL" message:@"Must specify either attachmentID or mediaURL"]; - } - return NO; - } - return [FBSDKShareMessengerContentUtility validateMessengerActionButton:_button - isDefaultActionButton:NO - pageID:_pageID - error:errorRef]; -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (instancetype)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:kMediaTemplatePageIDKey]; - _mediaType = [[decoder decodeObjectForKey:kMediaTemplateMediaTypeKey] unsignedIntegerValue]; - _attachmentID = [decoder decodeObjectOfClass:[NSString class] forKey:kMediaTemplateAttachmentIDKey]; - _mediaURL = [decoder decodeObjectOfClass:[NSURL class] forKey:kMediaTemplateMediaURLKey]; - _button = [decoder decodeObjectForKey:kMediaTemplateButtonKey]; - _shareUUID = [decoder decodeObjectOfClass:[NSString class] forKey:kMediaTemplateUUIDKey]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_pageID forKey:kMediaTemplatePageIDKey]; - [encoder encodeObject:@(_mediaType) forKey:kMediaTemplateMediaTypeKey]; - [encoder encodeObject:_attachmentID forKey:kMediaTemplateAttachmentIDKey]; - [encoder encodeObject:_mediaURL forKey:kMediaTemplateMediaURLKey]; - [encoder encodeObject:_button forKey:kMediaTemplateButtonKey]; - [encoder encodeObject:_shareUUID forKey:kMediaTemplateUUIDKey]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareMessengerMediaTemplateContent *copy = [[FBSDKShareMessengerMediaTemplateContent alloc] init]; - copy->_pageID = [_pageID copy]; - copy->_mediaType = _mediaType; - copy->_attachmentID = [_attachmentID copy]; - copy->_mediaURL = [_mediaURL copy]; - copy->_button = [_button copy]; - copy->_shareUUID = [_shareUUID copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h deleted file mode 100644 index f68f51c..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h +++ /dev/null @@ -1,41 +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 - -/** - 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. - */ -@interface FBSDKShareMessengerOpenGraphMusicTemplateContent : NSObject - -/** - This must be an Open Graph music url. Required. - */ -@property (nonatomic, copy) NSURL *url; - -/** - This specifies what action button to show below the open graph music bubble. Optional. - */ -@property (nonatomic, copy) id button; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m deleted file mode 100644 index 38f6cd9..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m +++ /dev/null @@ -1,139 +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 "FBSDKShareMessengerOpenGraphMusicTemplateContent.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareMessengerContentUtility.h" -#import "FBSDKShareUtility.h" - -static NSString *const kMusicTemplatePageIDKey = @"pageID"; -static NSString *const kMusicTemplateURLKey = @"url"; -static NSString *const kMusicTemplateButtonKey = @"button"; -static NSString *const kMusicTemplateUUIDKey = @"uuid"; - -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]; - [serializableOpenGraphMusicTemplateContent addObject:openGraphMusicTemplateContentDictionary]; - - return serializableOpenGraphMusicTemplateContent; -} - -@implementation FBSDKShareMessengerOpenGraphMusicTemplateContent - -#pragma mark - Properties - -@synthesize contentURL = _contentURL; -@synthesize hashtag = _hashtag; -@synthesize peopleIDs = _peopleIDs; -@synthesize placeID = _placeID; -@synthesize ref = _ref; -@synthesize pageID = _pageID; -@synthesize shareUUID = _shareUUID; - -#pragma mark - Initializer - -- (instancetype)init -{ - self = [super init]; - if (self) { - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -#pragma mark - FBSDKSharingContent - -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - NSMutableDictionary *payload = [NSMutableDictionary dictionary]; - [payload setObject:@"open_graph" forKey:kFBSDKShareMessengerTemplateTypeKey]; - [payload setObject:_SerializableOpenGraphMusicTemplateContentFromContent(self) forKey:kFBSDKShareMessengerElementsKey]; - - NSMutableDictionary *attachment = [NSMutableDictionary dictionary]; - [attachment setObject:kFBSDKShareMessengerTemplateKey forKey:kFBSDKShareMessengerTypeKey]; - [attachment setObject:payload forKey:kFBSDKShareMessengerPayloadKey]; - - NSMutableDictionary *contentForShare = [NSMutableDictionary dictionary]; - [contentForShare setObject:attachment forKey:kFBSDKShareMessengerAttachmentKey]; - - NSMutableDictionary *contentForPreview = [NSMutableDictionary dictionary]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:@"OPEN_GRAPH" forKey:@"preview_type"]; - [FBSDKInternalUtility dictionary:contentForPreview setObject:_url.absoluteString forKey:@"open_graph_url"]; - AddToContentPreviewDictionaryForButton(contentForPreview, _button); - - [FBSDKShareMessengerContentUtility addToParameters:parameters contentForShare:contentForShare contentForPreview:contentForPreview]; -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - return [FBSDKShareUtility validateRequiredValue:_url name:@"url" error:errorRef] - && [FBSDKShareUtility validateRequiredValue:_pageID name:@"pageID" error:errorRef] - && [FBSDKShareMessengerContentUtility validateMessengerActionButton:_button - isDefaultActionButton:NO - pageID:_pageID - error:errorRef]; -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (instancetype)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:kMusicTemplatePageIDKey]; - _url = [decoder decodeObjectOfClass:[NSURL class] forKey:kMusicTemplateURLKey]; - _button = [decoder decodeObjectForKey:kMusicTemplateButtonKey]; - _shareUUID = [decoder decodeObjectOfClass:[NSString class] forKey:kMusicTemplateUUIDKey]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_pageID forKey:kMusicTemplatePageIDKey]; - [encoder encodeObject:_url forKey:kMusicTemplateURLKey]; - [encoder encodeObject:_button forKey:kMusicTemplateButtonKey]; - [encoder encodeObject:_shareUUID forKey:kMusicTemplateUUIDKey]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareMessengerOpenGraphMusicTemplateContent *copy = [[FBSDKShareMessengerOpenGraphMusicTemplateContent alloc] init]; - copy->_pageID = [_pageID copy]; - copy->_url = [_url copy]; - copy->_button = [_button copy]; - copy->_shareUUID = [_shareUUID copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h deleted file mode 100644 index 79feadd..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h +++ /dev/null @@ -1,62 +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 NS_ENUM(NSUInteger, FBSDKShareMessengerURLActionButtonWebviewHeightRatio) { - FBSDKShareMessengerURLActionButtonWebviewHeightRatioFull = 0, - FBSDKShareMessengerURLActionButtonWebviewHeightRatioTall, - FBSDKShareMessengerURLActionButtonWebviewHeightRatioCompact -}; - -/** - A model for a Messenger share URL action button. - */ -@interface FBSDKShareMessengerURLActionButton : NSObject - -/** - The url that this button should open when tapped. Required. - */ -@property (nonatomic, copy) NSURL *url; - -/** - This controls the display height of the webview when shown in the Messenger app. Defaults to Full. - */ -@property (nonatomic, assign) FBSDKShareMessengerURLActionButtonWebviewHeightRatio webviewHeightRatio; - -/** - This must be true if the url is a Messenger Extensions url. Defaults to NO. - */ -@property (nonatomic, assign) BOOL isMessengerExtensionURL; - -/** - This is a fallback url for a Messenger Extensions enabled button. It is used on clients that do not support - 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; - -/** - This controls whether we want to hide the share button in the webview or not. It is useful to hide the share - button when the webview is user-specific and contains sensitive information. Defaults to NO. - */ -@property (nonatomic, assign) BOOL shouldHideWebviewShareButton; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m deleted file mode 100644 index 60df77c..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m +++ /dev/null @@ -1,82 +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 "FBSDKShareMessengerURLActionButton.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareUtility.h" - -static NSString *const kURLActionButtonTitleKey = @"title"; -static NSString *const kURLActionButtonURLKey = @"url"; -static NSString *const kURLActionButtonWebviewHeightRatioKey = @"webviewHeightRatio"; -static NSString *const kURLActionButtonMessengerExtensionsKey = @"messengerExtensions"; -static NSString *const kURLActionButtonFallbackURLKey = @"fallbackURL"; -static NSString *const kURLActionButtonShouldHideWebviewShareButtonKey = @"shouldHideWebviewShareButton"; - -@implementation FBSDKShareMessengerURLActionButton - -#pragma mark - Properties - -@synthesize title = _title; - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (instancetype)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _title = [decoder decodeObjectOfClass:[NSString class] forKey:kURLActionButtonTitleKey]; - _url = [decoder decodeObjectOfClass:[NSURL class] forKey:kURLActionButtonURLKey]; - _webviewHeightRatio = [[decoder decodeObjectOfClass:[NSNumber class] forKey:kURLActionButtonWebviewHeightRatioKey] unsignedIntegerValue]; - _isMessengerExtensionURL = [decoder decodeBoolForKey:kURLActionButtonMessengerExtensionsKey]; - _fallbackURL = [decoder decodeObjectOfClass:[NSURL class] forKey:kURLActionButtonFallbackURLKey]; - _shouldHideWebviewShareButton = [decoder decodeBoolForKey:kURLActionButtonShouldHideWebviewShareButtonKey]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_title forKey:kURLActionButtonTitleKey]; - [encoder encodeObject:_url forKey:kURLActionButtonURLKey]; - [encoder encodeObject:@(_webviewHeightRatio) forKey:kURLActionButtonWebviewHeightRatioKey]; - [encoder encodeBool:_isMessengerExtensionURL forKey:kURLActionButtonMessengerExtensionsKey]; - [encoder encodeObject:_fallbackURL forKey:kURLActionButtonFallbackURLKey]; - [encoder encodeBool:_shouldHideWebviewShareButton forKey:kURLActionButtonShouldHideWebviewShareButtonKey]; - -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareMessengerURLActionButton *copy = [[FBSDKShareMessengerURLActionButton alloc] init]; - copy->_title = [_title copy]; - copy->_url = [_url copy]; - copy->_webviewHeightRatio = _webviewHeightRatio; - copy->_isMessengerExtensionURL = _isMessengerExtensionURL; - copy->_fallbackURL = [_fallbackURL copy]; - copy->_shouldHideWebviewShareButton = _shouldHideWebviewShareButton; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h deleted file mode 100644 index 83e8883..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h +++ /dev/null @@ -1,70 +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 - -/** - An Open Graph Action for sharing. - - The property keys MUST have namespaces specified on them, such as `og:image`. - */ -@interface FBSDKShareOpenGraphAction : FBSDKShareOpenGraphValueContainer - -/** - Convenience method to build a new action and set the object for the specified key. - @param actionType The action type of the receiver - @param object The Open Graph object represented by this action - @param key The key for the object - */ -+ (instancetype)actionWithType:(NSString *)actionType object:(FBSDKShareOpenGraphObject *)object key:(NSString *)key; - -/** - Convenience method to build a new action and set the object for the specified key. - @param actionType The action type of the receiver - @param objectID The ID of an existing Open Graph object - @param key The key for the object - */ -+ (instancetype)actionWithType:(NSString *)actionType objectID:(NSString *)objectID key:(NSString *)key; - -/** - Convenience method to build a new action and set the object for the specified key. - @param actionType The action type of the receiver - @param objectURL The URL to a page that defines the Open Graph object with meta tags - @param key The key for the object - */ -+ (instancetype)actionWithType:(NSString *)actionType objectURL:(NSURL *)objectURL key:(NSString *)key; - -/** - Gets the action type. - @return The action type - */ -@property (nonatomic, copy) NSString *actionType; - -/** - Compares the receiver to another Open Graph Action. - @param action The other action - @return YES if the receiver's values are equal to the other action's values; otherwise NO - */ -- (BOOL)isEqualToShareOpenGraphAction:(FBSDKShareOpenGraphAction *)action; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m deleted file mode 100644 index 8211b59..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m +++ /dev/null @@ -1,117 +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 "FBSDKShareOpenGraphAction.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareOpenGraphValueContainer+Internal.h" - -#define FBSDK_SHARE_OPEN_GRAPH_ACTION_TYPE_KEY @"type" - -@implementation FBSDKShareOpenGraphAction - -#pragma mark - Class Methods - -+ (instancetype)actionWithType:(NSString *)actionType object:(FBSDKShareOpenGraphObject *)object key:(NSString *)key -{ - FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init]; - action.actionType = actionType; - [action setObject:object forKey:key]; - return action; -} - -+ (instancetype)actionWithType:(NSString *)actionType objectID:(NSString *)objectID key:(NSString *)key -{ - FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init]; - action.actionType = actionType; - [action setString:objectID forKey:key]; - return action; -} - -+ (instancetype)actionWithType:(NSString *)actionType objectURL:(NSURL *)objectURL key:(NSString *)key -{ - FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init]; - action.actionType = actionType; - [action setURL:objectURL forKey:key]; - return action; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - return [FBSDKMath hashWithInteger:[super hash] andInteger:[_actionType hash]]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKShareOpenGraphAction class]]) { - return NO; - } - return [self isEqualToShareOpenGraphAction:(FBSDKShareOpenGraphAction *)object]; -} - -- (BOOL)isEqualToShareOpenGraphAction:(FBSDKShareOpenGraphAction *)action -{ - return (action && - [FBSDKInternalUtility object:_actionType isEqualToObject:action.actionType] && - [self isEqualToShareOpenGraphValueContainer:action]); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [super initWithCoder:decoder])) { - _actionType = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_OPEN_GRAPH_ACTION_TYPE_KEY]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [super encodeWithCoder:encoder]; - [encoder encodeObject:_actionType forKey:FBSDK_SHARE_OPEN_GRAPH_ACTION_TYPE_KEY]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareOpenGraphAction *copy = [[FBSDKShareOpenGraphAction alloc] init]; - copy->_actionType = [_actionType copy]; - [copy parseProperties:[self allProperties]]; - return copy; -} - -#pragma mark - Internal Methods - -- (BOOL)requireKeyNamespace -{ - return NO; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h deleted file mode 100644 index faed0ba..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h +++ /dev/null @@ -1,50 +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 - -/** - A model for Open Graph content to be shared. - */ -@interface FBSDKShareOpenGraphContent : NSObject - -/** - Open Graph Action to be shared. - @return The action - */ -@property (nonatomic, copy) FBSDKShareOpenGraphAction *action; - -/** - 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; - -/** - Compares the receiver to another Open Graph content. - @param content The other content - @return YES if the receiver's values are equal to the other content's values; otherwise NO - */ -- (BOOL)isEqualToShareOpenGraphContent:(FBSDKShareOpenGraphContent *)content; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m deleted file mode 100644 index 65934bb..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.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 "FBSDKShareOpenGraphContent.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKHashtag.h" -#import "FBSDKSharePhoto.h" -#import "FBSDKShareUtility.h" - -#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_ACTION_KEY @"action" -#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_CONTENT_URL_KEY @"contentURL" -#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_HASHTAG_KEY @"hashtag" -#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_PEOPLE_IDS_KEY @"peopleIDs" -#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_PLACE_ID_KEY @"placeID" -#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_PREVIEW_PROPERTY_NAME_KEY @"previewPropertyName" -#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_REF_KEY @"ref" -#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_PAGE_ID_KEY @"pageID" -#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_UUID_KEY @"uuid" - -@implementation FBSDKShareOpenGraphContent - -#pragma mark - Properties - -@synthesize contentURL = _contentURL; -@synthesize hashtag = _hashtag; -@synthesize peopleIDs = _peopleIDs; -@synthesize placeID = _placeID; -@synthesize ref = _ref; -@synthesize pageID = _pageID; -@synthesize shareUUID = _shareUUID; - -#pragma mark - Initializer - -- (instancetype)init -{ - self = [super init]; - if (self) { - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -#pragma mark - Setters - -- (void)setPeopleIDs:(NSArray *)peopleIDs -{ - [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; - if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { - _peopleIDs = [peopleIDs copy]; - } -} - -#pragma mark - FBSDKSharingContent - -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - NSString *previewPropertyName = [FBSDKShareUtility getOpenGraphNameAndNamespaceFromFullName:_previewPropertyName namespace:nil]; - [FBSDKInternalUtility dictionary:parameters - setObject:previewPropertyName - forKey:@"previewPropertyName"]; - [FBSDKInternalUtility dictionary:parameters setObject:_action.actionType forKey:@"actionType"]; - [FBSDKInternalUtility dictionary:parameters - setObject:[FBSDKShareUtility convertOpenGraphValueContainer:_action requireNamespace:NO] - forKey:@"action"]; -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - return ([FBSDKShareUtility validateRequiredValue:_action name:@"action" error:errorRef] && - [FBSDKShareUtility validateRequiredValue:_previewPropertyName name:@"previewPropertyName" error:errorRef] && - [FBSDKShareUtility validateRequiredValue:_action[_previewPropertyName] name:_previewPropertyName error:errorRef]); -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [_action hash], - [_contentURL hash], - [_hashtag hash], - [_peopleIDs hash], - [_placeID hash], - [_previewPropertyName hash], - [_ref hash], - [_pageID hash], - [_shareUUID hash], - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKShareOpenGraphContent class]]) { - return NO; - } - return [self isEqualToShareOpenGraphContent:(FBSDKShareOpenGraphContent *)object]; -} - -- (BOOL)isEqualToShareOpenGraphContent:(FBSDKShareOpenGraphContent *)content -{ - return (content && - [FBSDKInternalUtility object:_action isEqualToObject:content.action] && - [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && - [FBSDKInternalUtility object:_hashtag isEqualToObject:content.hashtag] && - [FBSDKInternalUtility object:_peopleIDs isEqualToObject:content.peopleIDs] && - [FBSDKInternalUtility object:_placeID isEqualToObject:content.placeID] && - [FBSDKInternalUtility object:_previewPropertyName isEqualToObject:content.previewPropertyName] && - [FBSDKInternalUtility object:_ref isEqualToObject:content.ref] && - [FBSDKInternalUtility object:_shareUUID isEqualToObject:content.shareUUID] && - [FBSDKInternalUtility object:_pageID isEqualToObject:content.pageID]); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [super init])) { - _action = [decoder decodeObjectOfClass:[FBSDKShareOpenGraphAction class] - forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_ACTION_KEY]; - _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_CONTENT_URL_KEY]; - _hashtag = [decoder decodeObjectOfClass:[FBSDKHashtag class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_HASHTAG_KEY]; - _peopleIDs = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PEOPLE_IDS_KEY]; - _placeID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PLACE_ID_KEY]; - _previewPropertyName = [decoder decodeObjectOfClass:[NSString class] - forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PREVIEW_PROPERTY_NAME_KEY]; - _ref = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_REF_KEY]; - _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PAGE_ID_KEY]; - _shareUUID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_UUID_KEY]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_action forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_ACTION_KEY]; - [encoder encodeObject:_contentURL forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_CONTENT_URL_KEY]; - [encoder encodeObject:_hashtag forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_HASHTAG_KEY]; - [encoder encodeObject:_peopleIDs forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PEOPLE_IDS_KEY]; - [encoder encodeObject:_placeID forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PLACE_ID_KEY]; - [encoder encodeObject:_previewPropertyName forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PREVIEW_PROPERTY_NAME_KEY]; - [encoder encodeObject:_ref forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_REF_KEY]; - [encoder encodeObject:_pageID forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PAGE_ID_KEY]; - [encoder encodeObject:_shareUUID forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_UUID_KEY]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareOpenGraphContent *copy = [[FBSDKShareOpenGraphContent alloc] init]; - copy->_action = [_action copy]; - copy->_contentURL = [_contentURL copy]; - copy->_hashtag = [_hashtag copy]; - copy->_peopleIDs = [_peopleIDs copy]; - copy->_placeID = [_placeID copy]; - copy->_previewPropertyName = [_previewPropertyName copy]; - copy->_ref = [_ref copy]; - copy->_pageID = [_pageID copy]; - copy->_shareUUID = [_shareUUID copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h deleted file mode 100644 index ef34e28..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h +++ /dev/null @@ -1,59 +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 - -/** - An Open Graph Object for sharing. - - The property keys MUST have namespaces specified on them, such as `og:image`, - and `og:type` is required. - - See https://developers.facebook.com/docs/sharing/opengraph/object-properties for other properties. - - You can specify nested namespaces inline to define complex properties. For example, the following - code will generate a fitness.course object with a location: - - FBSDKShareOpenGraphObject *course = [FBSDKShareOpenGraphObject objectWithProperties: - @{ - @"og:type": @"fitness.course", - @"og:title": @"Sample course", - @"fitness:metrics:location:latitude": @"41.40338", - @"fitness:metrics:location:longitude": @"2.17403", - }]; - */ -@interface FBSDKShareOpenGraphObject : FBSDKShareOpenGraphValueContainer - -/** - 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; - -/** - Compares the receiver to another Open Graph Object. - @param object The other object - @return YES if the receiver's values are equal to the other object's values; otherwise NO - */ -- (BOOL)isEqualToShareOpenGraphObject:(FBSDKShareOpenGraphObject *)object; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m deleted file mode 100644 index eb6a1c5..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.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 "FBSDKShareOpenGraphObject.h" - -#import "FBSDKShareOpenGraphValueContainer+Internal.h" - -#define FBSDK_SHARE_OPEN_GRAPH_OBJECT_DATA_KEY @"data" - -@implementation FBSDKShareOpenGraphObject - -#pragma mark - Class Methods - -+ (instancetype)objectWithProperties:(NSDictionary *)properties -{ - FBSDKShareOpenGraphObject *object = [[FBSDKShareOpenGraphObject alloc] init]; - [object parseProperties:properties]; - return object; -} - -#pragma mark - Equality - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKShareOpenGraphObject class]]) { - return NO; - } - return [self isEqualToShareOpenGraphObject:(FBSDKShareOpenGraphObject *)object]; -} - -- (BOOL)isEqualToShareOpenGraphObject:(FBSDKShareOpenGraphObject *)object -{ - return [self isEqualToShareOpenGraphValueContainer:object]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareOpenGraphObject *copy = [[FBSDKShareOpenGraphObject alloc] init]; - [copy parseProperties:[self allProperties]]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h deleted file mode 100644 index 59b1699..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h +++ /dev/null @@ -1,162 +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 - -@class FBSDKShareOpenGraphObject; -@class FBSDKSharePhoto; - -/** - Protocol defining operations on open graph actions and objects. - - The property keys MUST have namespaces specified on them, such as `og:image`. - */ -@protocol FBSDKShareOpenGraphValueContaining - -/** - Gets an NSArray out of the receiver. - @param key The key for the value - @return The NSArray value or nil - */ -- (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; - -/** - Gets an NSNumber out of the receiver. - @param key The key for the value - @return The NSNumber value or nil - */ -- (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 - */ -- (NSEnumerator *)objectEnumerator; - -/** - Gets an FBSDKShareOpenGraphObject out of the receiver. - @param key The key for the value - @return The FBSDKShareOpenGraphObject value or nil - */ -- (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; - -/** - Parses properties out of a dictionary into the receiver. - @param properties The properties to parse. - */ -- (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; - -/** - Removes a value from the receiver for the specified key. - @param key The key for the value - */ -- (void)removeObjectForKey:(NSString *)key; - -/** - Sets an NSArray on the receiver. - - This method will throw if the array contains any values that is not an NSNumber, NSString, NSURL, - FBSDKSharePhoto or FBSDKShareOpenGraphObject. - @param array The NSArray value - @param key The key for the value - */ -- (void)setArray:(NSArray *)array forKey:(NSString *)key; - -/** - 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; - -/** - 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; - -/** - 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; - -/** - 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; - -/** - 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; - -@end - -/** - A base class to container Open Graph values. - */ -@interface FBSDKShareOpenGraphValueContainer : NSObject - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m deleted file mode 100644 index d19ce08..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m +++ /dev/null @@ -1,238 +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 "FBSDKShareOpenGraphValueContainer.h" -#import "FBSDKShareOpenGraphValueContainer+Internal.h" - -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareOpenGraphObject.h" -#import "FBSDKSharePhoto.h" -#import "FBSDKShareUtility.h" - -#define FBSDK_SHARE_OPEN_GRAPH_VALUE_CONTAINER_PROPERTIES_KEY @"properties" - -@implementation FBSDKShareOpenGraphValueContainer -{ - NSMutableDictionary *_properties; -} - -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - if ((self = [super init])) { - _properties = [[NSMutableDictionary alloc] init]; - } - return self; -} - -#pragma mark - Public Methods - -- (NSDictionary *)allData -{ - return [_properties copy]; -} - -- (NSArray *)arrayForKey:(NSString *)key -{ - return [self _valueOfClass:[NSArray class] forKey:key]; -} - -- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(NSString *key, id object, BOOL *stop))block -{ - [_properties enumerateKeysAndObjectsUsingBlock:block]; -} - -- (NSEnumerator *)keyEnumerator -{ - return [_properties keyEnumerator]; -} - -- (NSNumber *)numberForKey:(NSString *)key -{ - return [self _valueOfClass:[NSNumber class] forKey:key]; -} - -- (NSEnumerator *)objectEnumerator -{ - return [_properties objectEnumerator]; -} - -- (FBSDKShareOpenGraphObject *)objectForKey:(NSString *)key -{ - return [self _valueOfClass:[FBSDKShareOpenGraphObject class] forKey:key]; -} - -- (id)objectForKeyedSubscript:(id)key -{ - return [self _valueForKey:key]; -} - -- (void)parseProperties:(NSDictionary *)properties -{ - [FBSDKShareUtility assertOpenGraphValues:properties requireKeyNamespace:[self requireKeyNamespace]]; - [_properties addEntriesFromDictionary:[FBSDKShareUtility convertOpenGraphValues:properties]]; -} - -- (FBSDKSharePhoto *)photoForKey:(NSString *)key -{ - return [self _valueOfClass:[FBSDKSharePhoto class] forKey:key]; -} - -- (void)removeObjectForKey:(NSString *)key -{ - [_properties removeObjectForKey:key]; -} - -- (void)setArray:(NSArray *)array forKey:(NSString *)key -{ - [self _setValue:array forKey:key]; -} - -- (void)setNumber:(NSNumber *)number forKey:(NSString *)key -{ - [self _setValue:number forKey:key]; -} - -- (void)setObject:(FBSDKShareOpenGraphObject *)object forKey:(NSString *)key -{ - [self _setValue:object forKey:key]; -} - -- (void)setPhoto:(FBSDKSharePhoto *)photo forKey:(NSString *)key -{ - [self _setValue:photo forKey:key]; -} - -- (void)setString:(NSString *)string forKey:(NSString *)key -{ - [self _setValue:string forKey:key]; -} - -- (void)setURL:(NSURL *)URL forKey:(NSString *)key -{ - [self _setValue:URL forKey:key]; -} -- (NSString *)stringForKey:(NSString *)key -{ - return [self _valueOfClass:[NSString class] forKey:key]; -} - -- (NSURL *)URLForKey:(NSString *)key -{ - return [self _valueOfClass:[NSURL class] forKey:key]; -} - -- (id)valueForKey:(NSString *)key -{ - return [self _valueForKey:key] ?: [super valueForKey:key]; -} - -#pragma mark - Internal Methods - -- (NSDictionary *)allProperties -{ - return _properties; -} - -- (BOOL)requireKeyNamespace -{ - return YES; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - return [_properties hash]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKShareOpenGraphValueContainer class]]) { - return NO; - } - return [self isEqualToShareOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object]; -} - -- (BOOL)isEqualToShareOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object -{ - return [FBSDKInternalUtility object:_properties isEqualToObject:[object allProperties]]; -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - NSSet *classes = [NSSet setWithObjects: - [NSArray class], - [NSDictionary class], - [FBSDKShareOpenGraphObject class], - [FBSDKSharePhoto class], - nil]; - NSDictionary *properties = [decoder decodeObjectOfClasses:classes - forKey:FBSDK_SHARE_OPEN_GRAPH_VALUE_CONTAINER_PROPERTIES_KEY]; - if ([properties count]) { - [self parseProperties:properties]; - } - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_properties forKey:FBSDK_SHARE_OPEN_GRAPH_VALUE_CONTAINER_PROPERTIES_KEY]; -} - -#pragma mark - Helper Methods - -- (void)_setValue:(id)value forKey:(NSString *)key -{ - [FBSDKShareUtility assertOpenGraphKey:key requireNamespace:[self requireKeyNamespace]]; - [FBSDKShareUtility assertOpenGraphValue:value]; - if (value) { - _properties[key] = value; - } else { - [self removeObjectForKey:key]; - } -} - -- (id)_valueForKey:(id)key -{ - key = [FBSDKTypeUtility stringValue:key]; - return (key ? [FBSDKTypeUtility objectValue:_properties[key]] : nil); -} - -- (id)_valueOfClass:(__unsafe_unretained Class)cls forKey:(NSString *)key -{ - id value = [self _valueForKey:key]; - return ([value isKindOfClass:cls] ? value : nil); -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h deleted file mode 100644 index 7f8c2e4..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h +++ /dev/null @@ -1,98 +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 - -@class PHAsset; - -/** - A photo for sharing. - */ -@interface FBSDKSharePhoto : NSObject - -/** - Convenience method to build a new photo object with an image. - @param image If the photo is resident in memory, this method supplies the data - @param userGenerated Specifies whether the photo represented by the receiver was generated by the user or by the - application - */ -+ (instancetype)photoWithImage:(UIImage *)image userGenerated:(BOOL)userGenerated; - -/** - Convenience method to build a new photo object with an imageURL. - @param imageURL The URL to the photo - @param userGenerated Specifies whether the photo represented by the receiver was generated by the user or by the - application - - This method should only be used when adding photo content to open graph stories. - For example, if you're trying to share a photo from the web by itself, download the image and use - `photoWithImage:userGenerated:` instead. - */ -+ (instancetype)photoWithImageURL:(NSURL *)imageURL userGenerated:(BOOL)userGenerated; - -/** - Convenience method to build a new photo object with a PHAsset. - - Parameter photoAsset: The PHAsset that represents the photo in the Photos library. - - Parameter userGenerated: Specifies whether the photo represented by the receiver was generated by the user or by the - application - */ -+ (instancetype)photoWithPhotoAsset:(PHAsset *)photoAsset userGenerated:(BOOL)userGenerated; - -/** - If the photo is resident in memory, this method supplies the data. - @return UIImage representation of the photo - */ -@property (nonatomic, strong) 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; - -/** - The representation of the photo in the Photos library. - - Returns: PHAsset that represents the photo in the Photos library. - */ -@property (nonatomic, copy) PHAsset *photoAsset; - -/** - Specifies whether the photo represented by the receiver was generated by the user or by the application. - @return YES if the photo is user-generated, otherwise NO - */ -@property (nonatomic, assign, getter=isUserGenerated) BOOL userGenerated; - -/** - Compares the receiver to another photo. - @param photo The other photo - @return YES if the receiver's values are equal to the other photo's values; otherwise NO - */ -- (BOOL)isEqualToSharePhoto:(FBSDKSharePhoto *)photo; - -/** - The user generated caption for the photo. Note that the 'caption' must come from - * the user, as pre-filled content is forbidden by the Platform Policies (2.3). - @return the Photo's caption if exists else returns null. - */ -@property (nonatomic, copy) NSString *caption; - - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m deleted file mode 100644 index e60a427..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m +++ /dev/null @@ -1,224 +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 "FBSDKSharePhoto.h" - -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareError.h" - -NSString *const kFBSDKSharePhotoAssetKey = @"photoAsset"; -NSString *const kFBSDKSharePhotoImageKey = @"image"; -NSString *const kFBSDKSharePhotoImageURLKey = @"imageURL"; -NSString *const kFBSDKSharePhotoUserGeneratedKey = @"userGenerated"; -NSString *const kFBSDKSharePhotoCaptionKey = @"caption"; - -@implementation FBSDKSharePhoto - -#pragma mark - Class Methods - -+ (instancetype)photoWithImage:(UIImage *)image userGenerated:(BOOL)userGenerated -{ - FBSDKSharePhoto *photo = [[self alloc] init]; - photo.image = image; - photo.userGenerated = userGenerated; - return photo; -} - -+ (instancetype)photoWithImageURL:(NSURL *)imageURL userGenerated:(BOOL)userGenerated -{ - FBSDKSharePhoto *photo = [[self alloc] init]; - photo.imageURL = imageURL; - photo.userGenerated = userGenerated; - return photo; -} - -+ (instancetype)photoWithPhotoAsset:(PHAsset *)photoAsset userGenerated:(BOOL)userGenerated -{ - FBSDKSharePhoto *photo = [[self alloc] init]; - photo.photoAsset = photoAsset; - photo.userGenerated = userGenerated; - return photo; -} - -#pragma mark - Properties - -- (void)setImage:(UIImage *)image -{ - _image = image; - _imageURL = nil; - _photoAsset = nil; -} - -- (void)setImageURL:(NSURL *)imageURL -{ - _image = nil; - _imageURL = [imageURL copy]; - _photoAsset = nil; -} - -- (void)setPhotoAsset:(PHAsset *)photoAsset -{ - _image = nil; - _imageURL = nil; - _photoAsset = [photoAsset copy]; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [_image hash], - [_imageURL hash], - [_photoAsset hash], - [_caption hash], - (_userGenerated ? 1u : 0u) - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKSharePhoto class]]) { - return NO; - } - return [self isEqualToSharePhoto:(FBSDKSharePhoto *)object]; -} - -- (BOOL)isEqualToSharePhoto:(FBSDKSharePhoto *)photo -{ - return (photo && - (_userGenerated == photo.userGenerated) && - [FBSDKInternalUtility object:_image isEqualToObject:photo.image] && - [FBSDKInternalUtility object:_imageURL isEqualToObject:photo.imageURL] && - [FBSDKInternalUtility object:_photoAsset isEqualToObject:photo.photoAsset] && - [FBSDKInternalUtility object:_caption isEqualToObject:photo.caption]); -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - if (bridgeOptions & FBSDKShareBridgeOptionsPhotoImageURL) { // a web-based URL is required - if (_imageURL) { - if (_imageURL.isFileURL) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"imageURL" - value:_imageURL - message:@"Cannot refer to a local file resource."]; - } - return NO; - } else { - return YES; // will bridge the image URL - } - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"photo" - value:self - message:@"imageURL is required."]; - } - return NO; - } - } else if (_photoAsset) { - if (PHAssetMediaTypeImage == _photoAsset.mediaType) { - if (bridgeOptions & FBSDKShareBridgeOptionsPhotoAsset) { - return YES; // will bridge the PHAsset.localIdentifier - } else { - return YES; // will load the asset and bridge the image - } - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"photoAsset" - value:_photoAsset - message:@"Must refer to a photo or other static image."]; - } - return NO; - } - } else if (_imageURL) { - if (_imageURL.isFileURL) { - return YES; // will load the contents of the file and bridge the image - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"imageURL" - value:_imageURL - message:@"Must refer to a local file resource."]; - } - return NO; - } - } else if (_image) { - return YES; // will bridge the image - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"photo" - value:self - message:@"Must have an asset, image, or imageURL value."]; - } - return NO; - } -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _image = [decoder decodeObjectOfClass:[UIImage class] forKey:kFBSDKSharePhotoImageKey]; - _imageURL = [decoder decodeObjectOfClass:[NSURL class] forKey:kFBSDKSharePhotoImageURLKey]; - NSString *localIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:kFBSDKSharePhotoAssetKey]; - if (localIdentifier && (PHAuthorizationStatusAuthorized == [PHPhotoLibrary authorizationStatus])) { - _photoAsset = [PHAsset fetchAssetsWithLocalIdentifiers:@[localIdentifier] options:nil].firstObject; - } - _userGenerated = [decoder decodeBoolForKey:kFBSDKSharePhotoUserGeneratedKey]; - _caption = [decoder decodeObjectOfClass:[NSString class] forKey:kFBSDKSharePhotoCaptionKey]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_image forKey:kFBSDKSharePhotoImageKey]; - [encoder encodeObject:_imageURL forKey:kFBSDKSharePhotoImageURLKey]; - [encoder encodeObject:_photoAsset.localIdentifier forKey:kFBSDKSharePhotoAssetKey]; - [encoder encodeBool:_userGenerated forKey:kFBSDKSharePhotoUserGeneratedKey]; - [encoder encodeObject:_caption forKey:kFBSDKSharePhotoCaptionKey]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKSharePhoto *copy = [[FBSDKSharePhoto alloc] init]; - copy->_image = [_image copy]; - copy->_imageURL = [_imageURL copy]; - copy->_photoAsset = [_photoAsset copy]; - copy->_userGenerated = _userGenerated; - copy->_caption = [_caption copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h deleted file mode 100644 index 427c315..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h +++ /dev/null @@ -1,41 +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 - -/** - A model for photo content to be shared. - */ -@interface FBSDKSharePhotoContent : NSObject - -/** - Photos to be shared. - @return Array of the photos (FBSDKSharePhoto) - */ -@property (nonatomic, copy) NSArray *photos; - -/** - Compares the receiver to another photo content. - @param content The other content - @return YES if the receiver's values are equal to the other content's values; otherwise NO - */ -- (BOOL)isEqualToSharePhotoContent:(FBSDKSharePhotoContent *)content; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m deleted file mode 100644 index 1aa60bc..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m +++ /dev/null @@ -1,229 +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 "FBSDKSharePhotoContent.h" - -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKHashtag.h" -#import "FBSDKShareError.h" -#import "FBSDKSharePhoto.h" -#import "FBSDKShareUtility.h" - -#define FBSDK_SHARE_PHOTO_CONTENT_CONTENT_URL_KEY @"contentURL" -#define FBSDK_SHARE_PHOTO_CONTENT_HASHTAG_KEY @"hashtag" -#define FBSDK_SHARE_PHOTO_CONTENT_PEOPLE_IDS_KEY @"peopleIDs" -#define FBSDK_SHARE_PHOTO_CONTENT_PHOTOS_KEY @"photos" -#define FBSDK_SHARE_PHOTO_CONTENT_PLACE_ID_KEY @"placeID" -#define FBSDK_SHARE_PHOTO_CONTENT_REF_KEY @"ref" -#define FBSDK_SHARE_PHOTO_CONTENT_PAGE_ID_KEY @"pageID" -#define FBSDK_SHARE_PHOTO_CONTENT_UUID_KEY @"uuid" - -@implementation FBSDKSharePhotoContent - -#pragma mark - Properties - -@synthesize contentURL = _contentURL; -@synthesize hashtag = _hashtag; -@synthesize peopleIDs = _peopleIDs; -@synthesize placeID = _placeID; -@synthesize ref = _ref; -@synthesize pageID = _pageID; -@synthesize shareUUID = _shareUUID; - -#pragma mark - Initializer - -- (instancetype)init -{ - self = [super init]; - if (self) { - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -#pragma mark - Setters - -- (void)setPeopleIDs:(NSArray *)peopleIDs -{ - [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; - if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { - _peopleIDs = [peopleIDs copy]; - } -} - -- (void)setPhotos:(NSArray *)photos -{ - [FBSDKShareUtility assertCollection:photos ofClass:[FBSDKSharePhoto class] name:@"photos"]; - if (![FBSDKInternalUtility object:_photos isEqualToObject:photos]) { - _photos = [photos copy]; - } -} - -#pragma mark - FBSDKSharingContent - -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - NSMutableArray *images = [[NSMutableArray alloc] init]; - for (FBSDKSharePhoto *photo in _photos) { - if (photo.photoAsset) { - // load the asset and bridge the image - PHImageRequestOptions *imageRequestOptions = [[PHImageRequestOptions alloc] init]; - imageRequestOptions.resizeMode = PHImageRequestOptionsResizeModeExact; - imageRequestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; - imageRequestOptions.synchronous = YES; - [[PHImageManager defaultManager] - requestImageForAsset:photo.photoAsset - targetSize:PHImageManagerMaximumSize - contentMode:PHImageContentModeDefault - options:imageRequestOptions - resultHandler:^(UIImage *image, NSDictionary *info) { - if (image) { - [images addObject:image]; - } - }]; - } else if (photo.imageURL) { - if (photo.imageURL.isFileURL) { - // load the contents of the file and bridge the image - UIImage *image = [UIImage imageWithContentsOfFile:[photo.imageURL absoluteString]]; - if (image) { - [images addObject:photo.image]; - } - } - } else if (photo.image) { - // bridge the image - [images addObject:photo.image]; - } - } - if (images.count > 0) { - [FBSDKInternalUtility dictionary:parameters - setObject:images - forKey:@"photos"]; - } -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - if (![FBSDKShareUtility validateArray:_photos minCount:1 maxCount:6 name:@"photos" error:errorRef]) { - return NO; - } - for (FBSDKSharePhoto *photo in _photos) { - if (![photo validateWithOptions:bridgeOptions error:errorRef]) { - return NO; - } - } - return YES; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [_contentURL hash], - [_hashtag hash], - [_peopleIDs hash], - [_photos hash], - [_placeID hash], - [_ref hash], - [_pageID hash], - [_shareUUID hash], - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKSharePhotoContent class]]) { - return NO; - } - return [self isEqualToSharePhotoContent:(FBSDKSharePhotoContent *)object]; -} - -- (BOOL)isEqualToSharePhotoContent:(FBSDKSharePhotoContent *)content -{ - return (content && - [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && - [FBSDKInternalUtility object:_hashtag isEqualToObject:content.hashtag] && - [FBSDKInternalUtility object:_peopleIDs isEqualToObject:content.peopleIDs] && - [FBSDKInternalUtility object:_photos isEqualToObject:content.photos] && - [FBSDKInternalUtility object:_placeID isEqualToObject:content.placeID] && - [FBSDKInternalUtility object:_ref isEqualToObject:content.ref] && - [FBSDKInternalUtility object:_shareUUID isEqualToObject:content.shareUUID] && - [FBSDKInternalUtility object:_pageID isEqualToObject:content.pageID]); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_PHOTO_CONTENT_CONTENT_URL_KEY]; - _hashtag = [decoder decodeObjectOfClass:[FBSDKHashtag class] forKey:FBSDK_SHARE_PHOTO_CONTENT_HASHTAG_KEY]; - _peopleIDs = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_SHARE_PHOTO_CONTENT_PEOPLE_IDS_KEY]; - NSSet *classes = [NSSet setWithObjects:[NSArray class], [FBSDKSharePhoto class], nil]; - _photos = [decoder decodeObjectOfClasses:classes forKey:FBSDK_SHARE_PHOTO_CONTENT_PHOTOS_KEY]; - _placeID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_PHOTO_CONTENT_PLACE_ID_KEY]; - _ref = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_PHOTO_CONTENT_REF_KEY]; - _pageID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_PHOTO_CONTENT_PAGE_ID_KEY]; - _shareUUID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_PHOTO_CONTENT_UUID_KEY]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_contentURL forKey:FBSDK_SHARE_PHOTO_CONTENT_CONTENT_URL_KEY]; - [encoder encodeObject:_hashtag forKey:FBSDK_SHARE_PHOTO_CONTENT_HASHTAG_KEY]; - [encoder encodeObject:_peopleIDs forKey:FBSDK_SHARE_PHOTO_CONTENT_PEOPLE_IDS_KEY]; - [encoder encodeObject:_photos forKey:FBSDK_SHARE_PHOTO_CONTENT_PHOTOS_KEY]; - [encoder encodeObject:_placeID forKey:FBSDK_SHARE_PHOTO_CONTENT_PLACE_ID_KEY]; - [encoder encodeObject:_ref forKey:FBSDK_SHARE_PHOTO_CONTENT_REF_KEY]; - [encoder encodeObject:_pageID forKey:FBSDK_SHARE_PHOTO_CONTENT_PAGE_ID_KEY]; - [encoder encodeObject:_shareUUID forKey:FBSDK_SHARE_PHOTO_CONTENT_UUID_KEY]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKSharePhotoContent *copy = [[FBSDKSharePhotoContent alloc] init]; - copy->_contentURL = [_contentURL copy]; - copy->_hashtag = [_hashtag copy]; - copy->_peopleIDs = [_peopleIDs copy]; - copy->_photos = [_photos copy]; - copy->_placeID = [_placeID copy]; - copy->_ref = [_ref copy]; - copy->_pageID = [_pageID copy]; - copy->_shareUUID = [_shareUUID copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h deleted file mode 100644 index a609860..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h +++ /dev/null @@ -1,102 +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 - -@class FBSDKSharePhoto; -@class PHAsset; - -/** - A video for sharing. - */ -@interface FBSDKShareVideo : NSObject - -/** - Convenience method to build a new video object from raw data. - - Parameter data: The NSData object that holds the raw video data. - */ -+ (instancetype)videoWithData:(NSData *)data; - -/** - Convenience method to build a new video object with NSData and a previewPhoto. - - Parameter data: The NSData object that holds the raw video data. - - Parameter previewPhoto: The photo that represents the video. - */ -+ (instancetype)videoWithData:(NSData *)data previewPhoto:(FBSDKSharePhoto *)previewPhoto; - -/** - Convenience method to build a new video object with a PHAsset. - @param videoAsset The PHAsset that represents the video in the Photos library. - */ -+ (instancetype)videoWithVideoAsset:(PHAsset *)videoAsset; - -/** - Convenience method to build a new video object with a PHAsset and a previewPhoto. - @param videoAsset The PHAsset that represents the video in the Photos library. - @param previewPhoto The photo that represents the video. - */ -+ (instancetype)videoWithVideoAsset:(PHAsset *)videoAsset previewPhoto:(FBSDKSharePhoto *)previewPhoto; - -/** - Convenience method to build a new video object with a videoURL. - @param videoURL The URL to the video. - */ -+ (instancetype)videoWithVideoURL:(NSURL *)videoURL; - -/** - Convenience method to build a new video object with a videoURL and a previewPhoto. - @param videoURL The URL to the video. - @param previewPhoto The photo that represents the video. - */ -+ (instancetype)videoWithVideoURL:(NSURL *)videoURL previewPhoto:(FBSDKSharePhoto *)previewPhoto; - -/** - The raw video data. - - Returns: The video data. - */ -@property (nonatomic, strong) 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; - -/** - The file URL to the video. - @return URL that points to the location of the video on disk - */ -@property (nonatomic, copy) NSURL *videoURL; - -/** - The photo that represents the video. - @return The photo - */ -@property (nonatomic, copy) FBSDKSharePhoto *previewPhoto; - -/** - Compares the receiver to another video. - @param video The other video - @return YES if the receiver's values are equal to the other video's values; otherwise NO - */ -- (BOOL)isEqualToShareVideo:(FBSDKShareVideo *)video; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m deleted file mode 100644 index 0580105..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m +++ /dev/null @@ -1,265 +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 "FBSDKShareVideo.h" - -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareError.h" -#import "FBSDKSharePhoto.h" -#import "FBSDKShareUtility.h" - -NSString *const kFBSDKShareVideoAssetKey = @"videoAsset"; -NSString *const kFBSDKShareVideoDataKey = @"data"; -NSString *const kFBSDKShareVideoPreviewPhotoKey = @"previewPhoto"; -NSString *const kFBSDKShareVideoURLKey = @"videoURL"; - -@implementation FBSDKShareVideo - -#pragma mark - Class Methods - -+ (instancetype)videoWithData:(NSData *)data -{ - FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init]; - video.data = data; - return video; -} - -+ (instancetype)videoWithData:(NSData *)data previewPhoto:(FBSDKSharePhoto *)previewPhoto -{ - FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init]; - video.data = data; - video.previewPhoto = previewPhoto; - return video; -} - -+ (instancetype)videoWithVideoAsset:(PHAsset *)videoAsset -{ - FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init]; - video.videoAsset = videoAsset; - return video; -} - -+ (instancetype)videoWithVideoAsset:(PHAsset *)videoAsset previewPhoto:(FBSDKSharePhoto *)previewPhoto -{ - FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init]; - video.videoAsset = videoAsset; - video.previewPhoto = previewPhoto; - return video; -} - -+ (instancetype)videoWithVideoURL:(NSURL *)videoURL -{ - FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init]; - video.videoURL = videoURL; - return video; -} - -+ (instancetype)videoWithVideoURL:(NSURL *)videoURL previewPhoto:(FBSDKSharePhoto *)previewPhoto -{ - FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init]; - video.videoURL = videoURL; - video.previewPhoto = previewPhoto; - return video; -} - -#pragma mark - Properties - -- (void)setData:(NSData *)data -{ - _data = data; - _videoAsset = nil; - _videoURL = nil; - _previewPhoto = nil; -} - -- (void)setVideoAsset:(PHAsset *)videoAsset -{ - _data = nil; - _videoAsset = [videoAsset copy]; - _videoURL = nil; - _previewPhoto = nil; -} - -- (void)setVideoURL:(NSURL *)videoURL -{ - _data = nil; - _videoAsset = nil; - _videoURL = [videoURL copy]; - _previewPhoto = nil; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [_data hash], - [_videoAsset hash], - [_videoURL hash], - [_previewPhoto hash], - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKShareVideo class]]) { - return NO; - } - return [self isEqualToShareVideo:(FBSDKShareVideo *)object]; -} - -- (BOOL)isEqualToShareVideo:(FBSDKShareVideo *)video -{ - return (video && - [FBSDKInternalUtility object:_data isEqualToObject:video.data] && - [FBSDKInternalUtility object:_videoAsset isEqualToObject:video.videoAsset] && - [FBSDKInternalUtility object:_videoURL isEqualToObject:video.videoURL] && - [FBSDKInternalUtility object:_previewPhoto isEqualToObject:video.previewPhoto]); -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)_validateData:(NSData *)data - withOptions:(FBSDKShareBridgeOptions)bridgeOptions - error:(NSError *__autoreleasing *)errorRef -{ - if (data) { - if (bridgeOptions & FBSDKShareBridgeOptionsVideoData) { - return YES; // will bridge the data - } - } - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"data" - value:data - message:@"Cannot share video data."]; - } - return NO; -} - -- (BOOL)_validateVideoAsset:(PHAsset *)videoAsset - withOptions:(FBSDKShareBridgeOptions)bridgeOptions - error:(NSError *__autoreleasing *)errorRef -{ - if (videoAsset) { - if (PHAssetMediaTypeVideo == videoAsset.mediaType) { - if (bridgeOptions & FBSDKShareBridgeOptionsVideoAsset) { - return YES; // will bridge the PHAsset.localIdentifier - } else { - return YES; // will bridge the legacy "assets-library" URL from AVAsset - } - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"videoAsset" - value:videoAsset - message:@"Must refer to a video file."]; - } - return NO; - } - } - return NO; -} - -- (BOOL)_validateVideoURL:(NSURL *)videoURL - withOptions:(FBSDKShareBridgeOptions)bridgeOptions - error:(NSError *__autoreleasing *)errorRef -{ - if (videoURL) { - if ([[videoURL.scheme lowercaseString] isEqualToString:@"assets-library"]) { - return YES; // will bridge the legacy "assets-library" URL - } else if (videoURL.isFileURL) { - if (bridgeOptions & FBSDKShareBridgeOptionsVideoData) { - return YES; // will load the contents of the file and bridge the data - } - } - } - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"videoURL" - value:videoURL - message:@"Must refer to an asset file."]; - } - return NO; -} - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - // validate that a valid asset, data, or videoURL value has been set. - // don't validate the preview photo; if it isn't valid it'll be dropped from the share; a default one may be created if needed. - if (_videoAsset) { - return [self _validateVideoAsset:_videoAsset withOptions:bridgeOptions error:errorRef]; - } else if (_data) { - return [self _validateData:_data withOptions:bridgeOptions error:errorRef]; - } else if (_videoURL) { - return [self _validateVideoURL:_videoURL withOptions:bridgeOptions error:errorRef]; - } else { - if ((errorRef != NULL) && !*errorRef) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"video" - value:self - message:@"Must have an asset, data, or videoURL value."]; - } - return NO; - } -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _data = [decoder decodeObjectOfClass:[NSData class] forKey:kFBSDKShareVideoDataKey]; - NSString *localIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:kFBSDKShareVideoAssetKey]; - if (localIdentifier && (PHAuthorizationStatusAuthorized == [PHPhotoLibrary authorizationStatus])) { - _videoAsset = [PHAsset fetchAssetsWithLocalIdentifiers:@[localIdentifier] options:nil].firstObject; - } - _videoURL = [decoder decodeObjectOfClass:[NSURL class] forKey:kFBSDKShareVideoURLKey]; - _previewPhoto = [decoder decodeObjectOfClass:[FBSDKSharePhoto class] forKey:kFBSDKShareVideoPreviewPhotoKey]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_data forKey:kFBSDKShareVideoDataKey]; - [encoder encodeObject:_videoAsset.localIdentifier forKey:kFBSDKShareVideoAssetKey]; - [encoder encodeObject:_videoURL forKey:kFBSDKShareVideoURLKey]; - [encoder encodeObject:_previewPhoto forKey:kFBSDKShareVideoPreviewPhotoKey]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareVideo *copy = [[FBSDKShareVideo alloc] init]; - copy->_data = [_data copy]; - copy->_videoAsset = [_videoAsset copy]; - copy->_videoURL = [_videoURL copy]; - copy->_previewPhoto = [_previewPhoto copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h deleted file mode 100644 index 0f4fd37..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h +++ /dev/null @@ -1,50 +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 - -/** - A model for video content to be shared. - */ -@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 - */ -@property (nonatomic, copy) FBSDKShareVideo *video; - -/** - Compares the receiver to another video content. - @param content The other content - @return YES if the receiver's values are equal to the other content's values; otherwise NO - */ -- (BOOL)isEqualToShareVideoContent:(FBSDKShareVideoContent *)content; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m deleted file mode 100644 index c11db77..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m +++ /dev/null @@ -1,249 +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 "FBSDKShareVideoContent.h" - -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKHashtag.h" -#import "FBSDKShareUtility.h" - -#define FBSDK_SHARE_VIDEO_CONTENT_CONTENT_URL_KEY @"contentURL" -#define FBSDK_SHARE_VIDEO_CONTENT_HASHTAG_KEY @"hashtag" -#define FBSDK_SHARE_VIDEO_CONTENT_PEOPLE_IDS_KEY @"peopleIDs" -#define FBSDK_SHARE_VIDEO_CONTENT_PLACE_ID_KEY @"placeID" -#define FBSDK_SHARE_VIDEO_CONTENT_PREVIEW_PHOTO_KEY @"previewPhoto" -#define FBSDK_SHARE_VIDEO_CONTENT_REF_KEY @"ref" -#define FBSDK_SHARE_VIDEO_CONTENT_PAGE_ID_KEY @"pageID" -#define FBSDK_SHARE_VIDEO_CONTENT_VIDEO_KEY @"video" -#define FBSDK_SHARE_VIDEO_CONTENT_UUID_KEY @"uuid" - -@implementation FBSDKShareVideoContent - -#pragma mark - Properties - -@synthesize contentURL = _contentURL; -@synthesize hashtag = _hashtag; -@synthesize peopleIDs = _peopleIDs; -@synthesize placeID = _placeID; -@synthesize ref = _ref; -@synthesize pageID = _pageID; -@synthesize shareUUID = _shareUUID; - -#pragma mark - Initializer - -- (instancetype)init -{ - self = [super init]; - if (self) { - _shareUUID = [NSUUID UUID].UUIDString; - } - return self; -} - -#pragma mark - Setters - -- (void)setPeopleIDs:(NSArray *)peopleIDs -{ - [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; - if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { - _peopleIDs = [peopleIDs copy]; - } -} - -#pragma mark - FBSDKSharingContent - -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions -{ - NSMutableDictionary *videoParameters = [[NSMutableDictionary alloc] init]; - if (_video.videoAsset) { - if (bridgeOptions & FBSDKShareBridgeOptionsVideoAsset) { - // bridge the PHAsset.localIdentifier - [FBSDKInternalUtility dictionary:videoParameters - setObject:_video.videoAsset.localIdentifier - forKey:@"assetIdentifier"]; - } else { - // bridge the legacy "assets-library" URL from AVAsset - dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); - PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init]; - options.version = PHVideoRequestOptionsVersionCurrent; - options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic; - options.networkAccessAllowed = YES; - [[PHImageManager defaultManager] requestAVAssetForVideo:_video.videoAsset - options:options - resultHandler:^(AVAsset *avAsset, AVAudioMix *audioMix, NSDictionary *info) { - NSURL *filePathURL = [[(AVURLAsset *)avAsset URL] filePathURL]; - NSString *pathExtension = [filePathURL pathExtension]; - NSString *localIdentifier = [self->_video.videoAsset localIdentifier]; - NSRange range = [localIdentifier rangeOfString:@"/"]; - NSString *uuid = [localIdentifier substringToIndex:range.location]; - NSString *assetPath = [NSString stringWithFormat:@"assets-library://asset/asset.%@?id=%@&ext=%@", pathExtension, uuid, pathExtension]; - if (assetPath) { - [FBSDKInternalUtility dictionary:videoParameters - setObject:[NSURL URLWithString:assetPath] - forKey:@"assetURL"]; - } - dispatch_semaphore_signal(semaphore); - }]; - dispatch_semaphore_wait(semaphore, dispatch_time(DISPATCH_TIME_NOW, 500 * NSEC_PER_MSEC)); - } - } else if (_video.data) { - if (bridgeOptions & FBSDKShareBridgeOptionsVideoData) { - // bridge the data - [FBSDKInternalUtility 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"]; - } 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"]; - } - } - } - [FBSDKInternalUtility dictionary:videoParameters - setObject:[FBSDKShareUtility convertPhoto:_previewPhoto] - forKey:@"previewPhoto"]; - - [FBSDKInternalUtility dictionary:parameters - setObject:videoParameters - forKey:@"video"]; -} - -#pragma mark - FBSDKSharingValidation - -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef -{ - if (![FBSDKShareUtility validateRequiredValue:_video name:@"video" error:errorRef]) { - return NO; - } - return [_video validateWithOptions:bridgeOptions error:errorRef]; -} - -#pragma mark - Equality - -- (NSUInteger)hash -{ - NSUInteger subhashes[] = { - [_contentURL hash], - [_hashtag hash], - [_peopleIDs hash], - [_placeID hash], - [_previewPhoto hash], - [_ref hash], - [_pageID hash], - [_video hash], - [_shareUUID hash], - }; - return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; -} - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - if (![object isKindOfClass:[FBSDKShareVideoContent class]]) { - return NO; - } - return [self isEqualToShareVideoContent:(FBSDKShareVideoContent *)object]; -} - -- (BOOL)isEqualToShareVideoContent:(FBSDKShareVideoContent *)content -{ - return (content && - [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && - [FBSDKInternalUtility object:_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] && - [FBSDKInternalUtility object:_video isEqualToObject:content.video]); -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [self init])) { - _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_VIDEO_CONTENT_CONTENT_URL_KEY]; - _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]; - _shareUUID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_VIDEO_CONTENT_UUID_KEY]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_contentURL forKey:FBSDK_SHARE_VIDEO_CONTENT_CONTENT_URL_KEY]; - [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]; - [encoder encodeObject:_shareUUID forKey:FBSDK_SHARE_VIDEO_CONTENT_UUID_KEY]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone -{ - FBSDKShareVideoContent *copy = [[FBSDKShareVideoContent alloc] init]; - copy->_contentURL = [_contentURL copy]; - 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]; - copy->_shareUUID = [_shareUUID copy]; - return copy; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h deleted file mode 100644 index 6174b92..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h +++ /dev/null @@ -1,117 +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 FBSDKSharingDelegate; - -/** - The common interface for components that initiate sharing. - - @see FBSDKShareDialog - - @see FBSDKMessageDialog - - @see FBSDKShareAPI - */ -@protocol FBSDKSharing - -/** - The receiver's delegate or nil if it doesn't have a delegate. - */ -@property (nonatomic, weak) id delegate; - -/** - The content to be shared. - */ -@property (nonatomic, copy) id shareContent; - -/** - A Boolean value that indicates whether the receiver should fail if it finds an error with the share content. - - If NO, the sharer will still be displayed without the data that was mis-configured. For example, an - invalid placeID specified on the shareContent would produce a data error. - */ -@property (nonatomic, assign) BOOL shouldFailOnDataError; - -/** - Validates the content on the receiver. - @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. - @return YES if the content is valid, otherwise NO. - */ -- (BOOL)validateWithError:(NSError **)errorRef; - -@end - -/** - The common interface for dialogs that initiate sharing. - */ -@protocol FBSDKSharingDialog - -/** - A Boolean value that indicates whether the receiver can initiate a share. - - May return NO if the appropriate Facebook app is not installed and is required or an access token is - required but not available. This method does not validate the content on the receiver, so this can be checked before - building up the content. - - @see [FBSDKSharing validateWithError:] - @return YES if the receiver can share, otherwise NO. - */ -- (BOOL)canShow; - -/** - Shows the dialog. - @return YES if the receiver was able to begin sharing, otherwise NO. - */ -- (BOOL)show; - -@end - -/** - A delegate for FBSDKSharing. - - The delegate is notified with the results of the sharer as long as the application has permissions to - receive the information. For example, if the person is not signed into the containing app, the sharer may not be able - to distinguish between completion of a share and cancellation. - */ -@protocol FBSDKSharingDelegate - -/** - Sent to the delegate when the share completes without error or cancellation. - @param sharer The FBSDKSharing that completed. - @param results The results from the sharer. This may be nil or empty. - */ -- (void)sharer:(id)sharer didCompleteWithResults:(NSDictionary *)results; - -/** - Sent to the delegate when the sharer encounters an error. - @param sharer The FBSDKSharing that completed. - @param error The error. - */ -- (void)sharer:(id)sharer didFailWithError:(NSError *)error; - -/** - Sent to the delegate when the sharer is cancelled. - @param sharer The FBSDKSharing that completed. - */ -- (void)sharerDidCancel:(id)sharer; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h deleted file mode 100644 index 13cfc1f..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h +++ /dev/null @@ -1,37 +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 - -/** - The common interface for sharing buttons. - - @see FBSDKSendButton - - @see FBSDKShareButton - */ -@protocol FBSDKSharingButton - -/** - The content to be shared. - */ -@property (nonatomic, copy) id shareContent; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h deleted file mode 100644 index 7806f27..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h +++ /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 - -#import -#import - -@class FBSDKHashtag; - -/** - A base interface for content to be shared. - */ -@protocol FBSDKSharingContent - -/** - URL for the content being shared. - - This URL will be checked for all link meta tags for linking in platform specific ways. See documentation - for App Links (https://developers.facebook.com/docs/applinks/) - @return URL representation of the content link - */ -@property (nonatomic, copy) NSURL *contentURL; - -/** - Hashtag for the content being shared. - @return The hashtag for the content being shared. - */ -@property (nonatomic, copy) FBSDKHashtag *hashtag; - -/** - List of IDs for taggable people to tag with this content. - See documentation for Taggable Friends - (https://developers.facebook.com/docs/graph-api/reference/user/taggable_friends) - @return Array of IDs for people to tag (NSString) - */ -@property (nonatomic, copy) NSArray *peopleIDs; - -/** - The ID for a place to tag with this content. - @return The ID for the place to tag - */ -@property (nonatomic, copy) 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; - -/** - 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. - */ -@property (nonatomic, copy) 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; - -/** - Adds content to a dictionary as key/value pairs. - - Parameter parameters: A mutable dictionary that may be appended with key/value pairs of content. - */ -- (void)addToParameters:(NSMutableDictionary *)parameters - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h deleted file mode 100644 index 1d81771..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h +++ /dev/null @@ -1,33 +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 "FBSDKShareDialogMode.h" - -/** - A base interface for indicating a custom URL scheme - */ -@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. - */ -- (nullable NSString *)schemeForMode:(FBSDKShareDialogMode)mode; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h deleted file mode 100644 index b16454a..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h +++ /dev/null @@ -1,46 +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 - -/** - Flags to indicate support for newer bridge options beyond the initial 20130410 implementation. - */ -typedef NS_OPTIONS(NSUInteger, FBSDKShareBridgeOptions) -{ - FBSDKShareBridgeOptionsDefault = 0, - FBSDKShareBridgeOptionsPhotoAsset = 1 << 0, - FBSDKShareBridgeOptionsPhotoImageURL = 1 << 1, // if set, a web-based URL is required; asset, image, and imageURL.isFileURL not allowed - FBSDKShareBridgeOptionsVideoAsset = 1 << 2, - FBSDKShareBridgeOptionsVideoData = 1 << 3, - FBSDKShareBridgeOptionsWebHashtag = 1 << 4, // if set, pass the hashtag as a string value, not an array of one string -}; - -/** - A base interface for validation of content and media. - */ -@protocol FBSDKSharingValidation - -/** - Asks the receiver to validate that its content or media values are valid. - - Parameter errorRef: Optional, will receive an FBSDKShareError if the values are not valid. - - Returns: YES if the receiver's values are valid; otherwise NO - */ -- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)bridgeOptions error:(NSError *__autoreleasing *)errorRef; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h deleted file mode 100644 index 73e0cc4..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h +++ /dev/null @@ -1,25 +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 FBSDKCameraEffectArguments () - -- (NSDictionary *)allArguments; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectTextures+Internal.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectTextures+Internal.h deleted file mode 100644 index dda27ba..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectTextures+Internal.h +++ /dev/null @@ -1,25 +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 FBSDKCameraEffectTextures () - -- (NSDictionary *)allTextures; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m deleted file mode 100644 index 7f4da89..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m +++ /dev/null @@ -1,43 +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 "FBSDKCheckmarkIcon.h" - -@implementation FBSDKCheckmarkIcon - -- (CGPathRef)pathWithSize:(CGSize)size -{ - CGAffineTransform transformValue = CGAffineTransformMakeScale(size.width / 100.0, size.height / 100.0); - CGAffineTransform *transform = &transformValue; - CGMutablePathRef path = CGPathCreateMutable(); - CGPathMoveToPoint(path, transform, 0.0, 50.0); - const CGPoint points[] = { - CGPointMake(12.0, 38.0), - CGPointMake(37.0, 63.0), - CGPointMake(87.0, 13.0), - CGPointMake(99.0, 25.0), - CGPointMake(37.0, 87.0), - CGPointMake(0.0, 48.0), - }; - CGPathAddLines(path, transform, points, sizeof(points) / sizeof(points[0])); - CGPathRef result = CGPathCreateCopy(path); - CGPathRelease(path); - return CFAutorelease(result); -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h deleted file mode 100644 index ad0a20e..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.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 - -@interface FBSDKGameRequestFrictionlessRecipientCache : NSObject - -- (BOOL)recipientsAreFrictionless:(id)recipients; -- (void)updateWithResults:(NSDictionary *)results; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m deleted file mode 100644 index 20861fc..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m +++ /dev/null @@ -1,101 +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 "FBSDKGameRequestFrictionlessRecipientCache.h" - -#import - -#import "FBSDKCoreKit+Internal.h" - -@implementation FBSDKGameRequestFrictionlessRecipientCache -{ - NSSet *_recipientIDs; -} - -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - if ((self = [super init])) { - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(_accessTokenDidChangeNotification:) - name:FBSDKAccessTokenDidChangeNotification - object:nil]; - [self _updateCache]; - } - return self; -} - -- (void)dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -#pragma mark - Public API - -- (BOOL)recipientsAreFrictionless:(id)recipients -{ - if (!recipients) { - return NO; - } - NSArray *recipientIDArray = [FBSDKTypeUtility arrayValue:recipients]; - if (!recipientIDArray && [recipients isKindOfClass:[NSString class]]) { - recipientIDArray = [recipients componentsSeparatedByString:@","]; - } - NSSet *recipientIDs = [[NSSet alloc] initWithArray:recipientIDArray]; - return [recipientIDs isSubsetOfSet:_recipientIDs]; -} - -- (void)updateWithResults:(NSDictionary *)results -{ - if ([FBSDKTypeUtility boolValue:results[@"updated_frictionless"]]) { - [self _updateCache]; - } -} - -#pragma mark - Helper Methods - -- (void)_accessTokenDidChangeNotification:(NSNotification *)notification -{ - if (![notification.userInfo[FBSDKAccessTokenDidChangeUserID] boolValue]) { - return; - } - _recipientIDs = nil; - [self _updateCache]; -} - -- (void)_updateCache -{ - if (![FBSDKAccessToken currentAccessToken]) { - _recipientIDs = nil; - return; - } - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/apprequestformerrecipients" - parameters:@{@"fields":@""} - flags:(FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | - FBSDKGraphRequestFlagDisableErrorRecovery)]; - [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { - if (!error) { - NSArray *items = [FBSDKTypeUtility arrayValue:result[@"data"]]; - NSArray *recipientIDs = [items valueForKey:@"recipient_id"]; - self->_recipientIDs = [[NSSet alloc] initWithArray:recipientIDs]; - } - }]; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h deleted file mode 100644 index 234c8d6..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h +++ /dev/null @@ -1,48 +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 - -FBSDK_EXTERN NSString *const FBSDKLikeActionControllerDidDisableNotification; -FBSDK_EXTERN NSString *const FBSDKLikeActionControllerDidResetNotification; -FBSDK_EXTERN NSString *const FBSDKLikeActionControllerDidUpdateNotification; -FBSDK_EXTERN NSString *const FBSDKLikeActionControllerAnimatedKey; - -@interface FBSDKLikeActionController : NSObject - -+ (BOOL)isDisabled; - -// this method will call beginContentAccess before returning the instance -+ (instancetype)likeActionControllerForObjectID:(NSString *)objectID objectType:(FBSDKLikeObjectType)objectType; - -@property (nonatomic, copy, readonly) NSDate *lastUpdateTime; -@property (nonatomic, copy, readonly) NSString *likeCountString; -@property (nonatomic, copy, readonly) NSString *objectID; -@property (nonatomic, assign, readonly) FBSDKLikeObjectType objectType; -@property (nonatomic, assign, readonly) BOOL objectIsLiked; -@property (nonatomic, copy, readonly) NSString *socialSentence; - -- (void)refresh; -- (void)toggleLikeWithSoundEnabled:(BOOL)soundEnabled analyticsParameters:(NSDictionary *)analyticsParameters fromViewController:(UIViewController *)fromViewController; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m deleted file mode 100644 index 15a1178..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m +++ /dev/null @@ -1,1069 +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 "FBSDKLikeActionController.h" - -#import - -#import - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKLikeActionControllerCache.h" -#import "FBSDKLikeButtonPopWAV.h" -#import "FBSDKLikeDialog.h" - -NSString *const FBSDKLikeActionControllerDidDisableNotification = @"FBSDKLikeActionControllerDidDisableNotification"; -NSString *const FBSDKLikeActionControllerDidResetNotification = @"FBSDKLikeActionControllerDidResetNotification"; -NSString *const FBSDKLikeActionControllerDidUpdateNotification = @"FBSDKLikeActionControllerDidUpdateNotification"; -NSString *const FBSDKLikeActionControllerAnimatedKey = @"animated"; - -#define FBSDK_LIKE_ACTION_CONTROLLER_ANIMATION_DELAY 0.5 -#define FBSDK_LIKE_ACTION_CONTROLLER_SOUND_DELAY 0.15 -#define FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION @"v2.1" - -#define FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY @"like" -#define FBSDK_LIKE_ACTION_CONTROLLER_REFRESH_PROPERTY_KEY @"refresh" - -#define FBSDK_LIKE_ACTION_CONTROLLER_LAST_UPDATE_TIME_KEY @"lastUpdateTime" -#define FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITH_LIKE_KEY @"likeCountStringWithLike" -#define FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITHOUT_LIKE_KEY @"likeCountStringWithoutLike" -#define FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_ID_KEY @"objectID" -#define FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_IS_LIKED_KEY @"objectIsLiked" -#define FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_TYPE_KEY @"objectType" -#define FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITH_LIKE_KEY @"socialSentenceWithLike" -#define FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITHOUT_LIKE_KEY @"socialSentenceWithoutLike" -#define FBSDK_LIKE_ACTION_CONTROLLER_UNLIKE_TOKEN_KEY @"unlikeToken" -#define FBSDK_LIKE_ACTION_CONTROLLER_VERSION_KEY @"version" - -#define FBSDK_LIKE_ACTION_CONTROLLER_VERSION 4 - -typedef NS_ENUM(NSUInteger, FBSDKLikeActionControllerRefreshMode) -{ - FBSDKLikeActionControllerRefreshModeInitial, - FBSDKLikeActionControllerRefreshModeForce, -}; - -typedef NS_ENUM(NSUInteger, FBSDKLikeActionControllerRefreshState) -{ - FBSDKLikeActionControllerRefreshStateNone, - FBSDKLikeActionControllerRefreshStateActive, - FBSDKLikeActionControllerRefreshStateComplete, -}; - -typedef void(^fbsdk_like_action_block)(FBSDKTriStateBOOL objectIsLiked, - NSString *likeCountStringWithLike, - NSString *likeCountStringWithoutLike, - NSString *socialSentenceWithLike, - NSString *socialSentenceWithoutLike, - NSString *unlikeToken, - BOOL likeStateChanged, - BOOL animated); - -typedef void(^fbsdk_like_action_controller_ensure_verified_object_id_completion_block)(NSString *verifiedObjectID); - -@interface FBSDKLikeActionController () -@end - -@implementation FBSDKLikeActionController -{ - FBSDKAccessToken *_accessToken; - NSUInteger _contentAccessCount; - BOOL _contentDiscarded; - NSMapTable *_dialogToAnalyticsParametersMap; - NSMapTable *_dialogToUpdateBlockMap; - NSString *_likeCountStringWithLike; - NSString *_likeCountStringWithoutLike; - BOOL _objectIsLikedIsPending; - BOOL _objectIsLikedOnServer; - BOOL _objectIsPage; - FBSDKLikeActionControllerRefreshState _refreshState; - NSString *_socialSentenceWithLike; - NSString *_socialSentenceWithoutLike; - NSString *_unlikeToken; - NSString *_verifiedObjectID; -} - -#pragma mark - Class Methods - -static BOOL _fbsdkLikeActionControllerDisabled = YES; - -+ (BOOL)isDisabled -{ - return _fbsdkLikeActionControllerDisabled; -} - -static FBSDKLikeActionControllerCache *_cache = nil; - -+ (void)initialize -{ - if (self == [FBSDKLikeActionController class]) { - NSString *accessTokenString = [FBSDKAccessToken currentAccessToken].tokenString; - if (accessTokenString) { - NSURL *fileURL = [self _cacheFileURL]; - NSData *data = [[NSData alloc] initWithContentsOfURL:fileURL]; - if (data) { - NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; - unarchiver.requiresSecureCoding = YES; - @try { - _cache = [unarchiver decodeObjectOfClass:[FBSDKLikeActionControllerCache class] - forKey:NSKeyedArchiveRootObjectKey]; - } - @catch (NSException *ex) { - // ignore decoding exceptions from previous versions of the archive, etc - } - if (![_cache.accessTokenString isEqualToString:accessTokenString]) { - _cache = nil; - } - } - } - if (!_cache) { - _cache = [[FBSDKLikeActionControllerCache alloc] initWithAccessTokenString:accessTokenString]; - } - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc addObserver:self - selector:@selector(_accessTokenDidChangeNotification:) - name:FBSDKAccessTokenDidChangeNotification - object:nil]; - [nc addObserver:self - selector:@selector(_applicationWillResignActiveNotification:) - name:UIApplicationWillResignActiveNotification - object:nil]; - } -} - -+ (void)_accessTokenDidChangeNotification:(NSNotification *)notification -{ - NSString *accessTokenString = [FBSDKAccessToken currentAccessToken].tokenString; - if ([accessTokenString isEqualToString:_cache.accessTokenString]) { - return; - } - [_cache resetForAccessTokenString:accessTokenString]; - [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKLikeActionControllerDidResetNotification object:nil]; -} - -+ (void)_applicationWillResignActiveNotification:(NSNotification *)notification -{ - NSURL *fileURL = [self _cacheFileURL]; - if (!fileURL) { - return; - } - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_cache]; - if (data) { - [data writeToURL:fileURL atomically:YES]; - } else { - [[[NSFileManager alloc] init] removeItemAtURL:fileURL error:NULL]; - } -} - -+ (NSURL *)_cacheFileURL -{ - NSURL *directoryURL = [[[NSFileManager alloc] init] URLForDirectory:NSLibraryDirectory - inDomain:NSUserDomainMask - appropriateForURL:nil - create:YES - error:NULL]; - return [directoryURL URLByAppendingPathComponent:@"com-facebook-sdk-like-data"]; -} - - -+ (instancetype)likeActionControllerForObjectID:(NSString *)objectID objectType:(FBSDKLikeObjectType)objectType -{ - if (!objectID) { - return nil; - } - @synchronized(self) { - FBSDKLikeActionController *controller = _cache[objectID]; - FBSDKAccessToken *accessToken = [FBSDKAccessToken currentAccessToken]; - if (controller) { - [controller beginContentAccess]; - } else { - controller = [[self alloc] initWithObjectID:objectID objectType:objectType accessToken:accessToken]; - _cache[objectID] = controller; - } - [controller _refreshWithMode:FBSDKLikeActionControllerRefreshModeInitial]; - return controller; - } -} - -#pragma mark - Object Lifecycle - -- (instancetype)initWithObjectID:(NSString *)objectID - objectType:(FBSDKLikeObjectType)objectType - accessToken:(FBSDKAccessToken *)accessToken -{ - if ((self = [super init])) { - _objectID = [objectID copy]; - _objectType = objectType; - _accessToken = [accessToken copy]; - - [self _configure]; - } - return self; -} - -- (instancetype)init -{ - return [self initWithObjectID:nil objectType:FBSDKLikeObjectTypeUnknown accessToken:nil]; -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (instancetype)initWithCoder:(NSCoder *)decoder -{ - if ([decoder decodeIntegerForKey:FBSDK_LIKE_ACTION_CONTROLLER_VERSION_KEY] != FBSDK_LIKE_ACTION_CONTROLLER_VERSION) { - return nil; - } - - NSString *objectID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_ID_KEY]; - if (!objectID) { - return nil; - } - - if ((self = [super init])) { - _objectID = [objectID copy]; - _accessToken = [FBSDKAccessToken currentAccessToken]; - - _lastUpdateTime = [[decoder decodeObjectOfClass:[NSDate class] forKey:FBSDK_LIKE_ACTION_CONTROLLER_LAST_UPDATE_TIME_KEY] copy]; - _likeCountStringWithLike = [[decoder decodeObjectOfClass:[NSString class] - forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITH_LIKE_KEY] copy]; - _likeCountStringWithoutLike = [[decoder decodeObjectOfClass:[NSString class] - forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITHOUT_LIKE_KEY] copy]; - _objectIsLiked = [decoder decodeBoolForKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_IS_LIKED_KEY]; - _objectType = [decoder decodeIntegerForKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_TYPE_KEY]; - _socialSentenceWithLike = [[decoder decodeObjectOfClass:[NSString class] - forKey:FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITH_LIKE_KEY] copy]; - _socialSentenceWithoutLike = [[decoder decodeObjectOfClass:[NSString class] - forKey:FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITHOUT_LIKE_KEY] copy]; - _unlikeToken = [[decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_LIKE_ACTION_CONTROLLER_UNLIKE_TOKEN_KEY] copy]; - - [self _configure]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder -{ - [coder encodeObject:_lastUpdateTime forKey:FBSDK_LIKE_ACTION_CONTROLLER_LAST_UPDATE_TIME_KEY]; - [coder encodeObject:_likeCountStringWithLike forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITH_LIKE_KEY]; - [coder encodeObject:_likeCountStringWithoutLike - forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITHOUT_LIKE_KEY]; - [coder encodeObject:_objectID forKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_ID_KEY]; - [coder encodeBool:_objectIsLiked forKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_IS_LIKED_KEY]; - [coder encodeInteger:_objectType forKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_TYPE_KEY]; - [coder encodeObject:_socialSentenceWithLike forKey:FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITH_LIKE_KEY]; - [coder encodeObject:_socialSentenceWithoutLike forKey:FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITHOUT_LIKE_KEY]; - [coder encodeObject:_unlikeToken forKey:FBSDK_LIKE_ACTION_CONTROLLER_UNLIKE_TOKEN_KEY]; - [coder encodeInteger:FBSDK_LIKE_ACTION_CONTROLLER_VERSION forKey:FBSDK_LIKE_ACTION_CONTROLLER_VERSION_KEY]; -} - -#pragma mark - Properties - -- (NSString *)likeCountString -{ - return (_objectIsLiked ? _likeCountStringWithLike : _likeCountStringWithoutLike); -} - -- (NSString *)socialSentence -{ - return (_objectIsLiked ? _socialSentenceWithLike : _socialSentenceWithoutLike); -} - -#pragma mark - Public API - -- (void)refresh -{ - [self _refreshWithMode:FBSDKLikeActionControllerRefreshModeForce]; -} - -- (void)toggleLikeWithSoundEnabled:(BOOL)soundEnabled analyticsParameters:(NSDictionary *)analyticsParameters fromViewController:(UIViewController *)fromViewController -{ - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidTap - valueToSum:nil - parameters:analyticsParameters - accessToken:_accessToken]; - - [self _setExecuting:YES forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY]; - - BOOL useOGLike = [self _useOGLike]; - BOOL deferred = !useOGLike; - - fbsdk_like_action_block updateBlock = ^(FBSDKTriStateBOOL objectIsLiked, - NSString *likeCountStringWithLike, - NSString *likeCountStringWithoutLike, - NSString *socialSentenceWithLike, - NSString *socialSentenceWithoutLike, - NSString *unlikeToken, - BOOL likeStateChanged, - BOOL animated){ - [self _updateWithObjectIsLiked:objectIsLiked - likeCountStringWithLike:likeCountStringWithLike - likeCountStringWithoutLike:likeCountStringWithoutLike - socialSentenceWithLike:socialSentenceWithLike - socialSentenceWithoutLike:socialSentenceWithoutLike - unlikeToken:unlikeToken - soundEnabled:soundEnabled && likeStateChanged - animated:animated && likeStateChanged - deferred:deferred]; - }; - - BOOL objectIsLiked = !_objectIsLiked; - - // optimistically update if using og.like (FAS will defer the update) - if (useOGLike) { - updateBlock(FBSDKTriStateBOOLFromBOOL(objectIsLiked), - _likeCountStringWithLike, - _likeCountStringWithoutLike, - _socialSentenceWithLike, - _socialSentenceWithoutLike, - _unlikeToken, - YES, - YES); - if (_objectIsLikedIsPending) { - return; - } - } - - if (objectIsLiked) { - if (useOGLike) { - [self _publishLikeWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } else { - [self _presentLikeDialogWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } - } else { - if (useOGLike && _unlikeToken) { - [self _publishUnlikeWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } else { - [self _presentLikeDialogWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } - } -} - -#pragma mark - NSDiscardableContent - -- (BOOL)beginContentAccess -{ - _contentDiscarded = NO; - _contentAccessCount++; - return YES; -} - -- (void)endContentAccess -{ - _contentAccessCount--; -} - -- (void)discardContentIfPossible -{ - if (_contentAccessCount == 0) { - _contentDiscarded = YES; - } -} - -- (BOOL)isContentDiscarded -{ - return _contentDiscarded; -} - -#pragma mark - FBSDKLikeDialogDelegate - -- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didCompleteWithResults:(NSDictionary *)results -{ - FBSDKTriStateBOOL objectIsLiked = FBSDKTriStateBOOLFromNSNumber(results[@"object_is_liked"]); - NSString *likeCountString = [FBSDKTypeUtility stringValue:results[@"like_count_string"]]; - NSString *socialSentence = [FBSDKTypeUtility stringValue:results[@"social_sentence"]]; - NSString *unlikeToken = [FBSDKTypeUtility stringValue:results[@"unlike_token"]]; - BOOL likeStateChanged = ![[FBSDKTypeUtility stringValue:results[@"completionGesture"]] isEqualToString:@"cancel"]; - - fbsdk_like_action_block updateBlock = [_dialogToUpdateBlockMap objectForKey:likeDialog]; - if (updateBlock != NULL) { - // we do not need to specify values for with/without like, since we will fast-app-switch to change - // the value - updateBlock(objectIsLiked, - likeCountString, - likeCountString, - socialSentence, - socialSentence, - unlikeToken, - likeStateChanged, - YES); - } - [self _setExecuting:NO forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY]; -} - -- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didFailWithError:(NSError *)error -{ - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors - formatString:@"Like dialog error for %@(%@): %@", _objectID, NSStringFromFBSDKLikeObjectType(_objectType), error]; - - if ([error.userInfo[@"error_reason"] isEqualToString:@"dialog_disabled"]) { - _fbsdkLikeActionControllerDisabled = YES; - - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidDisable - valueToSum:nil - parameters:[_dialogToAnalyticsParametersMap objectForKey:likeDialog] - accessToken:_accessToken]; - - [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKLikeActionControllerDidDisableNotification - object:self - userInfo:nil]; - } else { - FBSDKLikeActionControllerLogError(@"present_dialog", _objectID, _objectType, _accessToken, error); - } - [self _setExecuting:NO forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY]; -} - -#pragma mark - Helper Methods - -- (void)_configure -{ - NSPointerFunctionsOptions keyOptions = (NSPointerFunctionsStrongMemory | NSPointerFunctionsObjectPersonality); - NSPointerFunctionsOptions valueOptions = (NSPointerFunctionsStrongMemory | - NSPointerFunctionsObjectPersonality | - NSPointerFunctionsCopyIn); - _dialogToAnalyticsParametersMap = [[NSMapTable alloc] initWithKeyOptions:keyOptions valueOptions:valueOptions capacity:0]; - _dialogToUpdateBlockMap = [[NSMapTable alloc] initWithKeyOptions:keyOptions valueOptions:valueOptions capacity:0]; - - _contentAccessCount = 1; -} - -static void FBSDKLikeActionControllerLogError(NSString *currentAction, - NSString *objectID, - FBSDKLikeObjectType objectType, - FBSDKAccessToken *accessToken, - NSError *error) -{ - NSDictionary *parameters = @{ - @"object_id": objectID, - @"object_type": NSStringFromFBSDKLikeObjectType(objectType), - @"current_action": currentAction, - @"error": [error description] ?: @"", - }; - NSString *eventName = ([FBSDKError errorIsNetworkError:error] ? - FBSDKAppEventNameFBSDKLikeControlNetworkUnavailable : - FBSDKAppEventNameFBSDKLikeControlError); - [FBSDKAppEvents logImplicitEvent:eventName - valueToSum:nil - parameters:parameters - accessToken:accessToken]; -} - -typedef void(^fbsdk_like_action_controller_get_engagement_completion_block)(BOOL success, - NSString *likeCountStringWithLike, - NSString *likeCountStringWithoutLike, - NSString *socialSentenceWithLike, - NSString *socialSentenceWithoutLike); -static void FBSDKLikeActionControllerAddGetEngagementRequest(FBSDKAccessToken *accessToken, - FBSDKGraphRequestConnection *connection, - NSString *objectID, - FBSDKLikeObjectType objectType, - fbsdk_like_action_controller_get_engagement_completion_block completionHandler) -{ - if (completionHandler == NULL) { - return; - } - NSString *fields = @"engagement.fields(count_string_with_like,count_string_without_like,social_sentence_with_like," - @"social_sentence_without_like)"; - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:objectID - parameters:@{ @"fields": fields, - @"locale": [NSLocale currentLocale].localeIdentifier - } - tokenString:accessToken.tokenString - HTTPMethod:@"GET" - flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; - [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { - BOOL success = NO; - NSString *likeCountStringWithLike = nil; - NSString *likeCountStringWithoutLike = nil; - NSString *socialSentenceWithLike = nil; - NSString *socialSentenceWithoutLike = nil; - if (error) { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors - formatString:@"Error fetching engagement for %@ (%@): %@", - objectID, - NSStringFromFBSDKLikeObjectType(objectType), - error]; - FBSDKLikeActionControllerLogError(@"get_engagement", objectID, objectType, accessToken, error); - } else { - success = YES; - result = [FBSDKTypeUtility dictionaryValue:result]; - likeCountStringWithLike = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"engagement.count_string_with_like"]]; - likeCountStringWithoutLike = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"engagement.count_string_without_like"]]; - socialSentenceWithLike = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"engagement.social_sentence_with_like"]]; - socialSentenceWithoutLike = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"engagement.social_sentence_without_like"]]; - } - completionHandler(success, - likeCountStringWithLike, - likeCountStringWithoutLike, - socialSentenceWithLike, - socialSentenceWithoutLike); - }]; -} - -typedef void(^fbsdk_like_action_controller_get_object_id_completion_block)(BOOL success, - NSString *verifiedObjectID, - BOOL objectIsPage); -static void FBSDKLikeActionControllerAddGetObjectIDRequest(FBSDKAccessToken *accessToken, - FBSDKGraphRequestConnection *connection, - NSString *objectID, - fbsdk_like_action_controller_get_object_id_completion_block completionHandler) -{ - if (completionHandler == NULL) { - return; - } - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"" - parameters:@{ - @"fields": @"id", - @"id": objectID, - @"metadata": @"1", - @"type": @"og", - @"locale": [NSLocale currentLocale].localeIdentifier - } - tokenString:accessToken.tokenString - HTTPMethod:@"GET" - flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; - - [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { - result = [FBSDKTypeUtility dictionaryValue:result]; - NSString *verifiedObjectID = [FBSDKTypeUtility stringValue:result[@"id"]]; - BOOL objectIsPage = [FBSDKTypeUtility boolValue:[result valueForKeyPath:@"metadata.type"]]; - completionHandler(verifiedObjectID != nil, verifiedObjectID, objectIsPage); - }]; -} - -static void FBSDKLikeActionControllerAddGetObjectIDWithObjectURLRequest(FBSDKAccessToken *accessToken, - FBSDKGraphRequestConnection *connection, - NSString *objectID, - fbsdk_like_action_controller_get_object_id_completion_block completionHandler) -{ - if (completionHandler == NULL) { - return; - } - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"" - parameters:@{ - @"fields": @"og_object.fields(id)", - @"id": objectID, - @"locale": [NSLocale currentLocale].localeIdentifier - } - tokenString:accessToken.tokenString - HTTPMethod:@"GET" - flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; - [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { - result = [FBSDKTypeUtility dictionaryValue:result]; - NSString *verifiedObjectID = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"og_object.id"]]; - completionHandler(verifiedObjectID != nil, verifiedObjectID, NO); - }]; -} - -typedef void(^fbsdk_like_action_controller_get_og_object_like_completion_block)(BOOL success, - FBSDKTriStateBOOL objectIsLiked, - NSString *unlikeToken); -static void FBSDKLikeActionControllerAddGetOGObjectLikeRequest(FBSDKAccessToken *accessToken, - FBSDKGraphRequestConnection *connection, - NSString *objectID, - FBSDKLikeObjectType objectType, - fbsdk_like_action_controller_get_og_object_like_completion_block completionHandler) -{ - if (completionHandler == NULL) { - return; - } - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/og.likes" - parameters:@{ - @"fields": @"id,application", - @"object": objectID, - @"locale": [NSLocale currentLocale].localeIdentifier - } - tokenString:accessToken.tokenString - HTTPMethod:@"GET" - flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; - - [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { - BOOL success = NO; - FBSDKTriStateBOOL objectIsLiked = FBSDKTriStateBOOLValueUnknown; - NSString *unlikeToken = nil; - if (error) { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors - formatString:@"Error fetching like state for %@(%@): %@", objectID, NSStringFromFBSDKLikeObjectType(objectType), error]; - FBSDKLikeActionControllerLogError(@"get_og_object_like", objectID, objectType, accessToken, error); - } else { - success = YES; - result = [FBSDKTypeUtility dictionaryValue:result]; - NSArray *dataSet = [FBSDKTypeUtility arrayValue:result[@"data"]]; - for (NSDictionary *data in dataSet) { - objectIsLiked = FBSDKTriStateBOOLValueYES; - NSString *applicationID = [FBSDKTypeUtility stringValue:[data valueForKeyPath:@"application.id"]]; - if ([accessToken.appID isEqualToString:applicationID]) { - unlikeToken = [FBSDKTypeUtility stringValue:data[@"id"]]; - break; - } - } - } - completionHandler(success, objectIsLiked, unlikeToken); - }]; -} - -typedef void(^fbsdk_like_action_controller_publish_like_completion_block)(BOOL success, NSString *unlikeToken); -static void FBSDKLikeActionControllerAddPublishLikeRequest(FBSDKAccessToken *accessToken, - FBSDKGraphRequestConnection *connection, - NSString *objectID, - FBSDKLikeObjectType objectType, - fbsdk_like_action_controller_publish_like_completion_block completionHandler) -{ - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/og.likes" - parameters:@{ @"object": objectID, - @"locale": [NSLocale currentLocale].localeIdentifier - } - tokenString:accessToken.tokenString - version:nil - HTTPMethod:@"POST"]; - [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { - BOOL success = NO; - NSString *unlikeToken = nil; - if (error) { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors - formatString:@"Error liking object %@(%@): %@", objectID, NSStringFromFBSDKLikeObjectType(objectType), error]; - FBSDKLikeActionControllerLogError(@"publish_like", objectID, objectType, accessToken, error); - } else { - success = YES; - result = [FBSDKTypeUtility dictionaryValue:result]; - unlikeToken = [FBSDKTypeUtility stringValue:result[@"id"]]; - } - if (completionHandler != NULL) { - completionHandler(success, unlikeToken); - } - }]; -} - -typedef void(^fbsdk_like_action_controller_publish_unlike_completion_block)(BOOL success); -static void FBSDKLikeActionControllerAddPublishUnlikeRequest(FBSDKAccessToken *accessToken, - FBSDKGraphRequestConnection *connection, - NSString *unlikeToken, - FBSDKLikeObjectType objectType, - fbsdk_like_action_controller_publish_unlike_completion_block completionHandler) -{ - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:unlikeToken - parameters:nil - tokenString:accessToken.tokenString - version:nil - HTTPMethod:@"DELETE"]; - [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { - BOOL success = NO; - if (error) { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors - formatString:@"Error unliking object with unlike token %@(%@): %@", unlikeToken, NSStringFromFBSDKLikeObjectType(objectType), error]; - FBSDKLikeActionControllerLogError(@"publish_unlike", unlikeToken, objectType, accessToken, error); - } else { - success = YES; - } - if (completionHandler != NULL) { - completionHandler(success); - } - }]; -} - -static void FBSDKLikeActionControllerAddRefreshRequests(FBSDKAccessToken *accessToken, - FBSDKGraphRequestConnection *connection, - NSString *objectID, - FBSDKLikeObjectType objectType, - fbsdk_like_action_block completionHandler) -{ - if (completionHandler == NULL) { - return; - } - __block FBSDKTriStateBOOL objectIsLiked = FBSDKTriStateBOOLValueUnknown; - __block NSString *likeCountStringWithLike = nil; - __block NSString *likeCountStringWithoutLike = nil; - __block NSString *socialSentenceWithLike = nil; - __block NSString *socialSentenceWithoutLike = nil; - __block NSString *unlikeToken = nil; - - void(^handleResults)(void) = ^{ - completionHandler(objectIsLiked, - likeCountStringWithLike, - likeCountStringWithoutLike, - socialSentenceWithLike, - socialSentenceWithoutLike, - unlikeToken, - NO, - NO); - }; - - fbsdk_like_action_controller_get_og_object_like_completion_block getLikeStateCompletionBlock = ^(BOOL success, - FBSDKTriStateBOOL innerObjectIsLiked, - NSString *innerUnlikeToken) { - if (success) { - objectIsLiked = innerObjectIsLiked; - if (innerUnlikeToken) { - unlikeToken = [innerUnlikeToken copy]; - } - } - }; - FBSDKLikeActionControllerAddGetOGObjectLikeRequest(accessToken, - connection, - objectID, - objectType, - getLikeStateCompletionBlock); - - fbsdk_like_action_controller_get_engagement_completion_block engagementCompletionBlock = ^(BOOL success, - NSString *innerLikeCountStringWithLike, - NSString *innerLikeCountStringWithoutLike, - NSString *innerSocialSentenceWithLike, - NSString *innerSocialSentenceWithoutLike) { - if (success) { - // Don't lose cached state if certain properties were not included - likeCountStringWithLike = [innerLikeCountStringWithLike copy]; - likeCountStringWithoutLike = [innerLikeCountStringWithoutLike copy]; - socialSentenceWithLike = [innerSocialSentenceWithLike copy]; - socialSentenceWithoutLike = [innerSocialSentenceWithoutLike copy]; - - handleResults(); - } - }; - FBSDKLikeActionControllerAddGetEngagementRequest(accessToken, - connection, - objectID, - objectType, - engagementCompletionBlock); -} - - -- (void)_ensureVerifiedObjectID:(fbsdk_like_action_controller_ensure_verified_object_id_completion_block)completion -{ - if (completion == NULL) { - return; - } - FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; - [connection overrideVersionPartWith:FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION]; - if ([_objectID rangeOfString:@"://"].location != NSNotFound) { - FBSDKLikeActionControllerAddGetObjectIDWithObjectURLRequest(_accessToken, connection, _objectID, ^(BOOL success, - NSString *innerVerifiedObjectID, - BOOL innerObjectIsPage) { - if (success) { - self->_verifiedObjectID = [innerVerifiedObjectID copy]; - self->_objectIsPage = innerObjectIsPage; - } - }); - } - - FBSDKLikeActionControllerAddGetObjectIDRequest(_accessToken, connection, _objectID, ^(BOOL success, - NSString *innerVerifiedObjectID, - BOOL innerObjectIsPage) { - if (success) { - // if this was an URL based request, then we want to use the objectID from that request - this value will just - // be an echo of the URL - if (!self->_verifiedObjectID) { - self->_verifiedObjectID = [innerVerifiedObjectID copy]; - } - self->_objectIsPage = innerObjectIsPage; - } - if (self->_verifiedObjectID) { - completion(self->_verifiedObjectID); - } - }); - [connection start]; -} - -- (void)_presentLikeDialogWithUpdateBlock:(fbsdk_like_action_block)updateBlock - analyticsParameters:(NSDictionary *)analyticsParameters - fromViewController:(UIViewController *)fromViewController -{ - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidPresentDialog - valueToSum:nil - parameters:analyticsParameters - accessToken:_accessToken]; - FBSDKLikeDialog *dialog = [[FBSDKLikeDialog alloc] init]; - dialog.objectID = _objectID; - dialog.objectType = _objectType; - dialog.delegate = self; - dialog.fromViewController = fromViewController; - [_dialogToUpdateBlockMap setObject:updateBlock forKey:dialog]; - [_dialogToAnalyticsParametersMap setObject:analyticsParameters forKey:dialog]; - if (![dialog like]) { - [self _setExecuting:NO forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY]; - } -} - -- (void)_publishIfNeededWithUpdateBlock:(fbsdk_like_action_block)updateBlock - analyticsParameters:(NSDictionary *)analyticsParameters - fromViewController:(UIViewController *)fromViewController -{ - BOOL objectIsLiked = _objectIsLiked; - if (_objectIsLikedOnServer != objectIsLiked) { - if (objectIsLiked) { - [self _publishLikeWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } else { - [self _publishUnlikeWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } - } -} - -- (void)_publishLikeWithUpdateBlock:(fbsdk_like_action_block)updateBlock - analyticsParameters:(NSDictionary *)analyticsParameters - fromViewController:(UIViewController *)fromViewController -{ - _objectIsLikedIsPending = YES; - [self _ensureVerifiedObjectID:^(NSString *verifiedObjectID) { - FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; - [connection overrideVersionPartWith:FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION]; - fbsdk_like_action_controller_publish_like_completion_block completionHandler = ^(BOOL success, - NSString *unlikeToken) { - self->_objectIsLikedIsPending = NO; - if (success) { - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidLike - valueToSum:nil - parameters:analyticsParameters - accessToken:self->_accessToken]; - self->_objectIsLikedOnServer = YES; - self->_unlikeToken = [unlikeToken copy]; - if (updateBlock != NULL) { - updateBlock(FBSDKTriStateBOOLFromBOOL(self.objectIsLiked), - self->_likeCountStringWithLike, - self->_likeCountStringWithoutLike, - self->_socialSentenceWithLike, - self->_socialSentenceWithoutLike, - self->_unlikeToken, - NO, - NO); - } - [self _publishIfNeededWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } else { - [self _presentLikeDialogWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } - }; - FBSDKLikeActionControllerAddPublishLikeRequest(self->_accessToken, - connection, - verifiedObjectID, - self->_objectType, - completionHandler); - [connection start]; - }]; -} - -- (void)_publishUnlikeWithUpdateBlock:(fbsdk_like_action_block)updateBlock - analyticsParameters:(NSDictionary *)analyticsParameters - fromViewController:(UIViewController *)fromViewController -{ - _objectIsLikedIsPending = YES; - FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; - [connection overrideVersionPartWith:FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION]; - fbsdk_like_action_controller_publish_unlike_completion_block completionHandler = ^(BOOL success) { - self->_objectIsLikedIsPending = NO; - if (success) { - [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidUnlike - valueToSum:nil - parameters:analyticsParameters - accessToken:self->_accessToken]; - self->_objectIsLikedOnServer = NO; - self->_unlikeToken = nil; - if (updateBlock != NULL) { - updateBlock(FBSDKTriStateBOOLFromBOOL(self.objectIsLiked), - self->_likeCountStringWithLike, - self->_likeCountStringWithoutLike, - self->_socialSentenceWithLike, - self->_socialSentenceWithoutLike, - self->_unlikeToken, - NO, - NO); - } - [self _publishIfNeededWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } else { - [self _presentLikeDialogWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; - } - }; - FBSDKLikeActionControllerAddPublishUnlikeRequest(_accessToken, - connection, - _unlikeToken, - _objectType, - completionHandler); - [connection start]; -} - -- (void)_refreshWithMode:(FBSDKLikeActionControllerRefreshMode)mode -{ - switch (mode) { - case FBSDKLikeActionControllerRefreshModeForce:{ - // if we're already refreshing, skip - if (_refreshState == FBSDKLikeActionControllerRefreshStateActive) { - return; - } - break; - } - case FBSDKLikeActionControllerRefreshModeInitial:{ - // if we've already started any refresh, skip this - if (_refreshState != FBSDKLikeActionControllerRefreshStateNone) { - return; - } - break; - } - } - - // You must be logged in to fetch the like status - if (!_accessToken) { - return; - } - - [self _setExecuting:YES forKey:FBSDK_LIKE_ACTION_CONTROLLER_REFRESH_PROPERTY_KEY]; - _refreshState = FBSDKLikeActionControllerRefreshStateActive; - - [self _ensureVerifiedObjectID:^(NSString *verifiedObjectID) { - FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; - [connection overrideVersionPartWith:FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION]; - FBSDKLikeActionControllerAddRefreshRequests(self->_accessToken, - connection, - verifiedObjectID, - self->_objectType, - ^(FBSDKTriStateBOOL objectIsLiked, - NSString *likeCountStringWithLike, - NSString *likeCountStringWithoutLike, - NSString *socialSentenceWithLike, - NSString *socialSentenceWithoutLike, - NSString *unlikeToken, - BOOL likeStateChanged, - BOOL animated) { - [self _updateWithObjectIsLiked:objectIsLiked - likeCountStringWithLike:likeCountStringWithLike - likeCountStringWithoutLike:likeCountStringWithoutLike - socialSentenceWithLike:socialSentenceWithLike - socialSentenceWithoutLike:socialSentenceWithoutLike - unlikeToken:unlikeToken - soundEnabled:NO - animated:NO - deferred:NO]; - [self _setExecuting:NO forKey:FBSDK_LIKE_ACTION_CONTROLLER_REFRESH_PROPERTY_KEY]; - self->_refreshState = FBSDKLikeActionControllerRefreshStateComplete; - }); - [connection start]; - }]; -} - -- (void)_setExecuting:(BOOL)executing forKey:(NSString *)key -{ - static NSMapTable *_executing = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _executing = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsCopyIn valueOptions:NSPointerFunctionsStrongMemory capacity:0]; - }); - - NSString *objectKey = [NSString stringWithFormat: - @"%@:%@:%@", - _objectID, - NSStringFromFBSDKLikeObjectType(_objectType), - key]; - if (executing) { - [self beginContentAccess]; - [_executing setObject:self forKey:objectKey]; - } else { - [_executing removeObjectForKey:objectKey]; - [self endContentAccess]; - } -} - -- (void)_updateWithObjectIsLiked:(FBSDKTriStateBOOL)objectIsLikedTriState - likeCountStringWithLike:(NSString *)likeCountStringWithLike - likeCountStringWithoutLike:(NSString *)likeCountStringWithoutLike - socialSentenceWithLike:(NSString *)socialSentenceWithLike - socialSentenceWithoutLike:(NSString *)socialSentenceWithoutLike - unlikeToken:(NSString *)unlikeToken - soundEnabled:(BOOL)soundEnabled - animated:(BOOL)animated - deferred:(BOOL)deferred -{ - if (objectIsLikedTriState != FBSDKTriStateBOOLValueUnknown) { - _lastUpdateTime = [NSDate date]; - } - - // This value will not be useable if objectIsLikedTriState is FBSDKTriStateBOOLValueUnknown - BOOL objectIsLiked = BOOLFromFBSDKTriStateBOOL(objectIsLikedTriState, NO); - - // So always check objectIsLikedChanged before using objectIsLiked. - // If the new like state is unknown, we don't consider the state to have changed. - BOOL objectIsLikedChanged = (objectIsLikedTriState != FBSDKTriStateBOOLValueUnknown) && (self.objectIsLiked != objectIsLiked); - - if (!objectIsLikedChanged && - [FBSDKInternalUtility object:_likeCountStringWithLike isEqualToObject:likeCountStringWithLike] && - [FBSDKInternalUtility object:_likeCountStringWithoutLike isEqualToObject:likeCountStringWithoutLike] && - [FBSDKInternalUtility object:_socialSentenceWithLike isEqualToObject:socialSentenceWithLike] && - [FBSDKInternalUtility object:_socialSentenceWithoutLike isEqualToObject:socialSentenceWithoutLike] && - [FBSDKInternalUtility object:_unlikeToken isEqualToObject:unlikeToken]) { - // check if the like state changed and only animate if it did - return; - } - - void(^updateBlock)(void) = ^{ - if (objectIsLikedChanged) { - self->_objectIsLiked = objectIsLiked; - } - - if (likeCountStringWithLike) { - self->_likeCountStringWithLike = [likeCountStringWithLike copy]; - } - if (likeCountStringWithoutLike) { - self->_likeCountStringWithoutLike = [likeCountStringWithoutLike copy]; - } - if (socialSentenceWithLike) { - self->_socialSentenceWithLike = [socialSentenceWithLike copy]; - } - if (socialSentenceWithoutLike) { - self->_socialSentenceWithoutLike = [socialSentenceWithoutLike copy]; - } - if (unlikeToken) { - 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 - userInfo:userInfo]; - }; - - notificationBlock(); - }; - - // if only meta data changed, don't defer - if (deferred && objectIsLikedChanged) { - double delayInSeconds = FBSDK_LIKE_ACTION_CONTROLLER_ANIMATION_DELAY; - dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); - dispatch_after(popTime, dispatch_get_main_queue(), updateBlock); - } else { - updateBlock(); - } -} - -- (BOOL)_useOGLike -{ - return (_accessToken && - !_objectIsPage && - _verifiedObjectID && - [_accessToken.permissions containsObject:@"publish_actions"]); -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h deleted file mode 100644 index e1f30c8..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h +++ /dev/null @@ -1,31 +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 FBSDKLikeActionControllerCache : NSObject - -- (instancetype)initWithAccessTokenString:(NSString *)accessTokenString NS_DESIGNATED_INITIALIZER; - -@property (nonatomic, copy, readonly) NSString *accessTokenString; - -- (id)objectForKeyedSubscript:(id)key; -- (void)resetForAccessTokenString:(NSString *)accessTokenString; -- (void)setObject:(id)object forKeyedSubscript:(id)key; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m deleted file mode 100644 index 746e819..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m +++ /dev/null @@ -1,116 +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 "FBSDKLikeActionControllerCache.h" - -#import - -#import "FBSDKLikeActionController.h" - -// after 1 day, expire the cached states -#define FBSDK_LIKE_ACTION_CONTROLLER_CACHE_TIMEOUT 60 * 24 - -#define FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ACCESS_TOKEN_KEY @"accessTokenString" -#define FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ITEMS_KEY @"items" - -@implementation FBSDKLikeActionControllerCache -{ - NSString *_accessTokenString; - NSMutableDictionary *_items; -} - -#pragma mark - Object Lifecycle - -- (instancetype)initWithAccessTokenString:(NSString *)accessTokenString -{ - if ((self = [super init])) { - _accessTokenString = [accessTokenString copy]; - _items = [[NSMutableDictionary alloc] init]; - } - return self; -} - -- (instancetype)init -{ - FBSDK_NOT_DESIGNATED_INITIALIZER(initWithAccessTokenString:); - return [self initWithAccessTokenString:nil]; -} - -#pragma mark - NSCoding - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - NSString *accessTokenString = [decoder decodeObjectOfClass:[NSString class] - forKey:FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ACCESS_TOKEN_KEY]; - if ((self = [self initWithAccessTokenString:accessTokenString])) { - NSSet *allowedClasses = [NSSet setWithObjects:[NSDictionary class], [FBSDKLikeActionController class], nil]; - NSDictionary *items = [decoder decodeObjectOfClasses:allowedClasses - forKey:FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ITEMS_KEY]; - _items = [[NSMutableDictionary alloc] initWithDictionary:items]; - [self _prune]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:_accessTokenString forKey:FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ACCESS_TOKEN_KEY]; - [encoder encodeObject:_items forKey:FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ITEMS_KEY]; -} - -#pragma mark - Public Methods - -- (id)objectForKeyedSubscript:(id)key -{ - return _items[key]; -} - -- (void)resetForAccessTokenString:(NSString *)accessTokenString -{ - _accessTokenString = [accessTokenString copy]; - [_items removeAllObjects]; -} - -- (void)setObject:(id)object forKeyedSubscript:(id)key -{ - _items[key] = object; -} - -#pragma mark - Helper Methods - -- (void)_prune -{ - NSMutableArray *keysToRemove = [[NSMutableArray alloc] init]; - [_items enumerateKeysAndObjectsUsingBlock:^(NSString *objectID, - FBSDKLikeActionController *likeActionController, - BOOL *stop) { - NSDate *lastUpdateTime = likeActionController.lastUpdateTime; - if (!lastUpdateTime || - ([[NSDate date] timeIntervalSinceDate:lastUpdateTime] > FBSDK_LIKE_ACTION_CONTROLLER_CACHE_TIMEOUT)) { - [keysToRemove addObject:objectID]; - } - }]; - [_items removeObjectsForKeys:keysToRemove]; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h deleted file mode 100644 index 8ad46b6..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h +++ /dev/null @@ -1,33 +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 "FBSDKLikeBoxView.h" - -@interface FBSDKLikeBoxBorderView : UIView - -@property (nonatomic, assign) CGFloat borderCornerRadius; -@property (nonatomic, assign) CGFloat borderWidth; -@property (nonatomic, assign) FBSDKLikeBoxCaretPosition caretPosition; -@property (nonatomic, assign, readonly) UIEdgeInsets contentInsets; -@property (nonatomic, strong) UIView *contentView; -@property (nonatomic, strong) UIColor *fillColor; -@property (nonatomic, strong) UIColor *foregroundColor; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m deleted file mode 100644 index 71faf0f..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m +++ /dev/null @@ -1,323 +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 "FBSDKLikeBoxBorderView.h" - -#import "FBSDKCoreKit+Internal.h" - -#define FBSDK_LIKE_BOX_BORDER_CARET_WIDTH 6.0 -#define FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT 3.0 -#define FBSDK_LIKE_BOX_BORDER_CARET_PADDING 3.0 -#define FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING 4.0 - -@implementation FBSDKLikeBoxBorderView - -#pragma mark - Object Lifecycle - -- (instancetype)initWithFrame:(CGRect)frame -{ - if ((self = [super initWithFrame:frame])) { - [self _initializeContent]; - } - return self; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [super initWithCoder:decoder])) { - [self _initializeContent]; - } - return self; -} - -#pragma mark - Properties - -- (void)setBackgroundColor:(UIColor *)backgroundColor -{ - if (![self.backgroundColor isEqual:backgroundColor]) { - [super setBackgroundColor:backgroundColor]; - [self setNeedsDisplay]; - } -} - -- (void)setBorderCornerRadius:(CGFloat)borderCornerRadius -{ - if (_borderCornerRadius != borderCornerRadius) { - _borderCornerRadius = borderCornerRadius; - [self setNeedsDisplay]; - } -} - -- (void)setBorderWidth:(CGFloat)borderWidth -{ - if (_borderWidth != borderWidth) { - _borderWidth = borderWidth; - [self setNeedsDisplay]; - [self invalidateIntrinsicContentSize]; - } -} - -- (void)setCaretPosition:(FBSDKLikeBoxCaretPosition)caretPosition -{ - if (_caretPosition != caretPosition) { - _caretPosition = caretPosition; - [self setNeedsLayout]; - [self setNeedsDisplay]; - [self invalidateIntrinsicContentSize]; - } -} - -- (UIEdgeInsets)contentInsets -{ - UIEdgeInsets borderInsets = [self _borderInsets]; - return UIEdgeInsetsMake(borderInsets.top + FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING, - borderInsets.left + FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING, - borderInsets.bottom + FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING, - borderInsets.right + FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING); -} - -- (void)setContentView:(UIView *)contentView -{ - if (_contentView != contentView) { - [_contentView removeFromSuperview]; - _contentView = contentView; - [self addSubview:_contentView]; - [self setNeedsLayout]; - [self invalidateIntrinsicContentSize]; - } -} - -- (void)setFillColor:(UIColor *)fillColor -{ - if (![_fillColor isEqual:fillColor]) { - _fillColor = fillColor; - [self setNeedsDisplay]; - } -} - -- (void)setForegroundColor:(UIColor *)foregroundColor -{ - if (![_foregroundColor isEqual:foregroundColor]) { - _foregroundColor = foregroundColor; - [self setNeedsDisplay]; - } -} - -#pragma mark - Layout - -- (CGSize)intrinsicContentSize -{ - return FBSDKEdgeInsetsOutsetSize(self.contentView.intrinsicContentSize, self.contentInsets); -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - self.contentView.frame = UIEdgeInsetsInsetRect(self.bounds, self.contentInsets); -} - -- (CGSize)sizeThatFits:(CGSize)size -{ - UIEdgeInsets contentInsets = self.contentInsets; - size = FBSDKEdgeInsetsInsetSize(size, contentInsets); - size = [self.contentView sizeThatFits:size]; - size = FBSDKEdgeInsetsOutsetSize(size, contentInsets); - return size; -} - -#pragma mark - Drawing - -- (void)drawRect:(CGRect)rect -{ - CGContextRef context = UIGraphicsGetCurrentContext(); - CGContextSaveGState(context); - - // read the configuration properties - CGRect bounds = self.bounds; - CGFloat borderWidth = self.borderWidth; - CGFloat borderCornerRadius = self.borderCornerRadius; - CGFloat contentScaleFactor = self.contentScaleFactor; - - // fill the background - if (self.backgroundColor) { - [self.backgroundColor setFill]; - CGContextFillRect(context, bounds); - } - - // configure the colors and lines - [self.fillColor setFill]; - [self.foregroundColor setStroke]; - CGContextSetLineJoin(context, kCGLineJoinRound); - CGContextSetLineWidth(context, borderWidth); - - // get the frame of the box - CGRect borderFrame = UIEdgeInsetsInsetRect(bounds, [self _borderInsets]); - - // define the arcs for the corners - const int start = 0; - const int tangent = 1; - const int end = 2; - CGPoint topLeftArc[3] = { - CGPointMake(CGRectGetMinX(borderFrame) + borderCornerRadius, CGRectGetMinY(borderFrame)), - CGPointMake(CGRectGetMinX(borderFrame), CGRectGetMinY(borderFrame)), - CGPointMake(CGRectGetMinX(borderFrame), CGRectGetMinY(borderFrame) + borderCornerRadius), - }; - CGPoint bottomLeftArc[3] = { - CGPointMake(CGRectGetMinX(borderFrame), CGRectGetMaxY(borderFrame) - borderCornerRadius), - CGPointMake(CGRectGetMinX(borderFrame), CGRectGetMaxY(borderFrame)), - CGPointMake(CGRectGetMinX(borderFrame) + borderCornerRadius, CGRectGetMaxY(borderFrame)), - }; - CGPoint bottomRightArc[3] = { - CGPointMake(CGRectGetMaxX(borderFrame) - borderCornerRadius, CGRectGetMaxY(borderFrame)), - CGPointMake(CGRectGetMaxX(borderFrame), CGRectGetMaxY(borderFrame)), - CGPointMake(CGRectGetMaxX(borderFrame), CGRectGetMaxY(borderFrame) - borderCornerRadius), - }; - CGPoint topRightArc[3] = { - CGPointMake(CGRectGetMaxX(borderFrame), CGRectGetMinY(borderFrame) + borderCornerRadius), - CGPointMake(CGRectGetMaxX(borderFrame), CGRectGetMinY(borderFrame)), - CGPointMake(CGRectGetMaxX(borderFrame) - borderCornerRadius, CGRectGetMinY(borderFrame)), - }; - - // start a path on the context - CGContextBeginPath(context); - - // position the caret and decide which lines to draw - CGPoint caretPoints[3]; - switch (self.caretPosition) { - case FBSDKLikeBoxCaretPositionTop: - CGContextMoveToPoint(context, topRightArc[end].x, topRightArc[end].y); - caretPoints[0] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame) + (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2)), - CGRectGetMinY(borderFrame)); - caretPoints[1] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame)), - CGRectGetMinY(borderFrame) - FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT); - caretPoints[2] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame) - (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2)), - CGRectGetMinY(borderFrame)); - CGContextAddLines(context, caretPoints, sizeof(caretPoints) / sizeof(caretPoints[0])); - CGContextAddArcToPoint(context, topLeftArc[tangent].x, topLeftArc[tangent].y, topLeftArc[end].x, topLeftArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, bottomLeftArc[start].x, bottomLeftArc[start].y); - CGContextAddArcToPoint(context, bottomLeftArc[tangent].x, bottomLeftArc[tangent].y, bottomLeftArc[end].x, bottomLeftArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, bottomRightArc[start].x, bottomRightArc[start].y); - CGContextAddArcToPoint(context, bottomRightArc[tangent].x, bottomRightArc[tangent].y, bottomRightArc[end].x, bottomRightArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, topRightArc[start].x, topRightArc[start].y); - CGContextAddArcToPoint(context, topRightArc[tangent].x, topRightArc[tangent].y, topRightArc[end].x, topRightArc[end].y, borderCornerRadius); - break; - case FBSDKLikeBoxCaretPositionLeft: - CGContextMoveToPoint(context, topLeftArc[end].x, topLeftArc[end].y); - caretPoints[0] = CGPointMake(CGRectGetMinX(borderFrame), - FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame) - (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2))); - caretPoints[1] = CGPointMake(CGRectGetMinX(borderFrame) - FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT, - FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame))); - caretPoints[2] = CGPointMake(CGRectGetMinX(borderFrame), - FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame) + (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2))); - CGContextAddLines(context, caretPoints, sizeof(caretPoints) / sizeof(caretPoints[0])); - CGContextAddArcToPoint(context, bottomLeftArc[tangent].x, bottomLeftArc[tangent].y, bottomLeftArc[end].x, bottomLeftArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, bottomRightArc[start].x, bottomRightArc[start].y); - CGContextAddArcToPoint(context, bottomRightArc[tangent].x, bottomRightArc[tangent].y, bottomRightArc[end].x, bottomRightArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, topRightArc[start].x, topRightArc[start].y); - CGContextAddArcToPoint(context, topRightArc[tangent].x, topRightArc[tangent].y, topRightArc[end].x, topRightArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, topLeftArc[start].x, topLeftArc[start].y); - CGContextAddArcToPoint(context, topLeftArc[tangent].x, topLeftArc[tangent].y, topLeftArc[end].x, topLeftArc[end].y, borderCornerRadius); - break; - case FBSDKLikeBoxCaretPositionBottom: - CGContextMoveToPoint(context, bottomLeftArc[end].x, bottomLeftArc[end].y); - caretPoints[0] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame) - (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2)), - CGRectGetMaxY(borderFrame)); - caretPoints[1] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame)), - CGRectGetMaxY(borderFrame) + FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT); - caretPoints[2] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame) + (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2)), - CGRectGetMaxY(borderFrame)); - CGContextAddLines(context, caretPoints, sizeof(caretPoints) / sizeof(caretPoints[0])); - CGContextAddArcToPoint(context, bottomRightArc[tangent].x, bottomRightArc[tangent].y, bottomRightArc[end].x, bottomRightArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, topRightArc[start].x, topRightArc[start].y); - CGContextAddArcToPoint(context, topRightArc[tangent].x, topRightArc[tangent].y, topRightArc[end].x, topRightArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, topLeftArc[start].x, topLeftArc[start].y); - CGContextAddArcToPoint(context, topLeftArc[tangent].x, topLeftArc[tangent].y, topLeftArc[end].x, topLeftArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, bottomLeftArc[start].x, bottomLeftArc[start].y); - CGContextAddArcToPoint(context, bottomLeftArc[tangent].x, bottomLeftArc[tangent].y, bottomLeftArc[end].x, bottomLeftArc[end].y, borderCornerRadius); - break; - case FBSDKLikeBoxCaretPositionRight: - CGContextMoveToPoint(context, bottomRightArc[end].x, bottomRightArc[end].y); - caretPoints[0] = CGPointMake(CGRectGetMaxX(borderFrame), - FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame) + (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2))); - caretPoints[1] = CGPointMake(CGRectGetMaxX(borderFrame) + FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT, - FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame))); - caretPoints[2] = CGPointMake(CGRectGetMaxX(borderFrame), - FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame) - (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2))); - CGContextAddLines(context, caretPoints, sizeof(caretPoints) / sizeof(caretPoints[0])); - CGContextAddArcToPoint(context, topRightArc[tangent].x, topRightArc[tangent].y, topRightArc[end].x, topRightArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, topLeftArc[start].x, topLeftArc[start].y); - CGContextAddArcToPoint(context, topLeftArc[tangent].x, topLeftArc[tangent].y, topLeftArc[end].x, topLeftArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, bottomLeftArc[start].x, bottomLeftArc[start].y); - CGContextAddArcToPoint(context, bottomLeftArc[tangent].x, bottomLeftArc[tangent].y, bottomLeftArc[end].x, bottomLeftArc[end].y, borderCornerRadius); - CGContextAddLineToPoint(context, bottomRightArc[start].x, bottomRightArc[start].y); - CGContextAddArcToPoint(context, bottomRightArc[tangent].x, bottomRightArc[tangent].y, bottomRightArc[end].x, bottomRightArc[end].y, borderCornerRadius); - break; - } - - // close and draw now that we have it all - CGContextClosePath(context); - CGContextDrawPath(context, kCGPathFillStroke); - - CGContextRestoreGState(context); -} - -#pragma mark - Helper Methods - -- (UIEdgeInsets)_borderInsets -{ - // inset the border bounds by 1/2 of the border width, since it is drawn split between inside and outside of the path - CGFloat scale = self.contentScaleFactor; - CGFloat halfBorderWidth = FBSDKPointsForScreenPixels(ceilf, scale, self.borderWidth / 2); - UIEdgeInsets borderInsets = UIEdgeInsetsMake(halfBorderWidth, halfBorderWidth, halfBorderWidth, halfBorderWidth); - - // adjust the insets for the caret position - switch (self.caretPosition) { - case FBSDKLikeBoxCaretPositionTop:{ - borderInsets.top += FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT + FBSDK_LIKE_BOX_BORDER_CARET_PADDING; - break; - } - case FBSDKLikeBoxCaretPositionLeft:{ - borderInsets.left += FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT + FBSDK_LIKE_BOX_BORDER_CARET_PADDING; - break; - } - case FBSDKLikeBoxCaretPositionBottom:{ - borderInsets.bottom += FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT + FBSDK_LIKE_BOX_BORDER_CARET_PADDING; - break; - } - case FBSDKLikeBoxCaretPositionRight:{ - borderInsets.right += FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT + FBSDK_LIKE_BOX_BORDER_CARET_PADDING; - break; - } - } - - return borderInsets; -} - -- (void)_initializeContent -{ - self.backgroundColor = [UIColor clearColor]; - self.borderCornerRadius = 3.0; - self.borderWidth = 1.0; - self.contentMode = UIViewContentModeRedraw; - self.fillColor = [UIColor whiteColor]; - self.foregroundColor = FBSDKUIColorWithRGB(0x6A, 0x71, 0x80); - self.opaque = NO; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h deleted file mode 100644 index 9f7a3da..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h +++ /dev/null @@ -1,43 +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 - -/** - NS_ENUM(NSUInteger, FBSDKLikeBoxCaretPosition) - - Specifies the position of the caret relative to the box. - */ -typedef NS_ENUM(NSUInteger, FBSDKLikeBoxCaretPosition) -{ - /** The caret is on the top of the box. */ - FBSDKLikeBoxCaretPositionTop, - /** The caret is on the left of the box. */ - FBSDKLikeBoxCaretPositionLeft, - /** The caret is on the bottom of the box. */ - FBSDKLikeBoxCaretPositionBottom, - /** The caret is on the right of the box. */ - FBSDKLikeBoxCaretPositionRight, -}; - -@interface FBSDKLikeBoxView : UIView - -@property (nonatomic, assign) FBSDKLikeBoxCaretPosition caretPosition; -@property (nonatomic, copy) NSString *text; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m deleted file mode 100644 index e0afeac..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m +++ /dev/null @@ -1,108 +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 "FBSDKLikeBoxView.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKLikeBoxBorderView.h" - -@implementation FBSDKLikeBoxView -{ - FBSDKLikeBoxBorderView *_borderView; - UILabel *_likeCountLabel; -} - -#pragma mark - Object Lifecycle - -- (instancetype)initWithFrame:(CGRect)frame -{ - if ((self = [super initWithFrame:frame])) { - [self _initializeContent]; - } - return self; -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - if ((self = [super initWithCoder:decoder])) { - [self _initializeContent]; - } - return self; -} - -#pragma mark - Properties - -- (void)setCaretPosition:(FBSDKLikeBoxCaretPosition)caretPosition -{ - if (_caretPosition != caretPosition) { - _caretPosition = caretPosition; - _borderView.caretPosition = _caretPosition; - [self setNeedsLayout]; - [self invalidateIntrinsicContentSize]; - } -} - -- (NSString *)text -{ - return _likeCountLabel.text; -} - -- (void)setText:(NSString *)text -{ - if (![_likeCountLabel.text isEqualToString:text]) { - _likeCountLabel.text = text; - [self setNeedsLayout]; - [self invalidateIntrinsicContentSize]; - } -} - -#pragma mark - Layout - -- (CGSize)intrinsicContentSize -{ - return _borderView.intrinsicContentSize; -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - CGRect bounds = self.bounds; - _borderView.frame = bounds; -} - -- (CGSize)sizeThatFits:(CGSize)size -{ - return [_borderView sizeThatFits:size]; -} - -#pragma mark - Helper Methods - -- (void)_initializeContent -{ - _borderView = [[FBSDKLikeBoxBorderView alloc] initWithFrame:CGRectZero]; - [self addSubview:_borderView]; - - _likeCountLabel = [[UILabel alloc] initWithFrame:CGRectZero]; - _likeCountLabel.font = [UIFont systemFontOfSize:11.0]; - _likeCountLabel.textAlignment = NSTextAlignmentCenter; - _likeCountLabel.textColor = FBSDKUIColorWithRGB(0x6A, 0x71, 0x80); - _borderView.contentView = _likeCountLabel; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h deleted file mode 100644 index 032d30d..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h +++ /dev/null @@ -1,29 +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" -#import "FBSDKLikeActionController.h" -#import "FBSDKLikeButton.h" - -@interface FBSDKLikeButton () - -@property (nonatomic, strong, readwrite) FBSDKLikeActionController *likeActionController; - -@end 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/FBSDKLikeControl+Internal.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h deleted file mode 100644 index 13890a6..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h +++ /dev/null @@ -1,27 +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 "FBSDKLikeControl.h" - -@interface FBSDKLikeControl () - -- (NSDictionary *)analyticsParameters; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h deleted file mode 100644 index 9d7748f..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h +++ /dev/null @@ -1,49 +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 FBSDKLikeDialogDelegate; - -@interface FBSDKLikeDialog : NSObject - -+ (instancetype)likeWithObjectID:(NSString *)objectID - objectType:(FBSDKLikeObjectType)objectType - delegate:(id)delegate; - -@property (nonatomic, weak) id delegate; -@property (nonatomic, copy) NSString *objectID; -@property (nonatomic, assign) FBSDKLikeObjectType objectType; -@property (nonatomic, assign) BOOL shouldFailOnDataError; -@property (nonatomic, weak) UIViewController *fromViewController; - -- (BOOL)canLike; -- (BOOL)like; -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef; - -@end - -@protocol FBSDKLikeDialogDelegate - -- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didCompleteWithResults:(NSDictionary *)results; -- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didFailWithError:(NSError *)error; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m deleted file mode 100644 index ea2abf6..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m +++ /dev/null @@ -1,159 +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 "FBSDKLikeDialog.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareConstants.h" -#import "FBSDKShareDefines.h" -#import "FBSDKShareError.h" - -@implementation FBSDKLikeDialog - -#define FBSDK_LIKE_METHOD_MIN_VERSION @"20140410" -#define FBSDK_LIKE_METHOD_NAME @"like" -#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_LIKE @"like" -#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_UNLIKE @"unlike" - -#pragma mark - Class Methods - -+ (void)initialize -{ - if ([FBSDKLikeDialog class] == self) { - [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; - } -} - -+ (instancetype)likeWithObjectID:(NSString *)objectID - objectType:(FBSDKLikeObjectType)objectType - delegate:(id)delegate -{ - FBSDKLikeDialog *dialog = [[self alloc] init]; - dialog.objectID = objectID; - dialog.objectType = objectType; - dialog.delegate = delegate; - [dialog like]; - return dialog; -} - -#pragma mark - Public Methods - -- (BOOL)canLike -{ - return YES; -} - -- (BOOL)like -{ - NSError *error; - if (![self canLike]) { - error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode - message:@"Like dialog is not available."]; - [_delegate likeDialog:self didFailWithError:error]; - return NO; - } - if (![self validateWithError:&error]) { - [_delegate likeDialog:self didFailWithError:error]; - return NO; - } - - NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; - [FBSDKInternalUtility dictionary:parameters setObject:self.objectID forKey:@"object_id"]; - [FBSDKInternalUtility dictionary:parameters - setObject:NSStringFromFBSDKLikeObjectType(self.objectType) - forKey:@"object_type"]; - FBSDKBridgeAPIRequest * webRequest = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeWeb - scheme:FBSDK_SHARE_JS_DIALOG_SCHEME - methodName:FBSDK_LIKE_METHOD_NAME - methodVersion:nil - parameters:parameters - userInfo:nil]; - FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { - [self _handleCompletionWithDialogResults:response.responseParameters error:response.error]; - }; - - FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - BOOL useSafariViewController = [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameLike]; - if ([self _canLikeNative]) { - FBSDKBridgeAPIRequest *nativeRequest = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeNative - scheme:FBSDK_CANOPENURL_FACEBOOK - methodName:FBSDK_LIKE_METHOD_NAME - methodVersion:FBSDK_LIKE_METHOD_MIN_VERSION - parameters:parameters - userInfo:nil]; - void (^networkCompletionBlock)(FBSDKBridgeAPIResponse *) = ^(FBSDKBridgeAPIResponse *response) { - if (response.error.code == FBSDKAppVersionUnsupportedErrorCode) { - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:webRequest - useSafariViewController:useSafariViewController - fromViewController:self.fromViewController - completionBlock:completionBlock]; - } else { - completionBlock(response); - } - }; - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:nativeRequest - useSafariViewController:useSafariViewController - fromViewController:self.fromViewController - completionBlock:networkCompletionBlock]; - } else { - [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:webRequest - useSafariViewController:useSafariViewController - fromViewController:self.fromViewController - completionBlock:completionBlock]; - } - - return YES; -} - -- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef -{ - if (![self.objectID length]) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"objectID" message:nil]; - } - return NO; - } - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; -} - -#pragma mark - Helper Methods - -- (BOOL)_canLikeNative -{ - FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; - BOOL useNativeDialog = [configuration useNativeDialogForDialogName:FBSDKDialogConfigurationNameLike]; - return (useNativeDialog && [FBSDKInternalUtility isFacebookAppInstalled]); -} - -- (void)_handleCompletionWithDialogResults:(NSDictionary *)results error:(NSError *)error -{ - if (!_delegate) { - return; - } - NSString *completionGesture = results[FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; - if (completionGesture && !error) { - [_delegate likeDialog:self didCompleteWithResults:[results copy]]; - } else { - [_delegate likeDialog:self didFailWithError:error]; - } -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h deleted file mode 100644 index b3b6965..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h +++ /dev/null @@ -1,25 +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 FBSDKMessengerIcon : FBSDKIcon - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m deleted file mode 100644 index 2f5a22f..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m +++ /dev/null @@ -1,50 +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 "FBSDKMessengerIcon.h" - -@implementation FBSDKMessengerIcon - -- (CGPathRef)pathWithSize:(CGSize)size -{ - CGAffineTransform transformValue = CGAffineTransformMakeScale(size.width / 61.0, size.height / 61.0); - const CGAffineTransform *transform = &transformValue; - CGMutablePathRef path = CGPathCreateMutable(); - CGPathMoveToPoint(path, transform, 30.001, 0.962); - CGPathAddCurveToPoint(path, transform, 13.439, 0.962, 0.014, 13.462, 0.014, 28.882); - CGPathAddCurveToPoint(path, transform, 0.014, 37.165, 3.892, 44.516, 10.046, 49.549); - CGPathAddLineToPoint(path, transform, 10.046, 61.176); - CGPathAddLineToPoint(path, transform, 19.351, 54.722); - CGPathAddCurveToPoint(path, transform, 22.662, 55.870, 26.250, 56.502, 30.002, 56.502); - CGPathAddCurveToPoint(path, transform, 46.565, 56.502, 59.990, 44.301, 59.990, 28.882); - CGPathAddCurveToPoint(path, transform, 59.989, 13.462, 46.564, 0.962, 30.001, 0.962); - CGPathCloseSubpath(path); - CGPathMoveToPoint(path, transform, 33.159, 37.473); - CGPathAddLineToPoint(path, transform, 25.403, 29.484); - CGPathAddLineToPoint(path, transform, 10.467, 37.674); - CGPathAddLineToPoint(path, transform, 26.843, 20.445); - CGPathAddLineToPoint(path, transform, 34.599, 28.433); - CGPathAddLineToPoint(path, transform, 49.535, 20.244); - CGPathAddLineToPoint(path, transform, 33.159, 37.473); - CGPathCloseSubpath(path); - CGPathRef result = CGPathCreateCopy(path); - CGPathRelease(path); - return CFAutorelease(result); -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h deleted file mode 100644 index d3d8565..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h +++ /dev/null @@ -1,43 +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 - -#define FBSDK_SHARE_JS_DIALOG_SCHEME @"web" -#define FBSDK_SHARE_CAMERA_METHOD_NAME @"camera" -#define FBSDK_SHARE_METHOD_NAME @"share" -#define FBSDK_SHARE_OPEN_GRAPH_METHOD_NAME @"ogshare" -#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY @"completionGesture" -#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL @"cancel" -#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST @"post" -#define FBSDK_SHARE_RESULT_DID_COMPLETE_KEY @"didComplete" -#define FBSDK_SHARE_RESULT_PHOTO_IDS_KEY @"photo_ids" -#define FBSDK_SHARE_RESULT_POST_ID_KEY @"postId" -#define FBSDK_SHARE_VIDEO_END_OFFSET @"end_offset" -#define FBSDK_SHARE_VIDEO_FILE_CHUNK @"video_file_chunk" -#define FBSDK_SHARE_VIDEO_ID @"video_id" -#define FBSDK_SHARE_VIDEO_SIZE @"file_size" -#define FBSDK_SHARE_VIDEO_START_OFFSET @"start_offset" -#define FBSDK_SHARE_VIDEO_UPLOAD_PHASE @"upload_phase" -#define FBSDK_SHARE_VIDEO_UPLOAD_PHASE_FINISH @"finish" -#define FBSDK_SHARE_VIDEO_UPLOAD_PHASE_START @"start" -#define FBSDK_SHARE_VIDEO_UPLOAD_PHASE_TRANSFER @"transfer" -#define FBSDK_SHARE_VIDEO_UPLOAD_SESSION_ID @"upload_session_id" -#define FBSDK_SHARE_VIDEO_UPLOAD_SUCCESS @"success" -#define FBSDK_SHARE_WEB_PARAM_POST_ID_KEY @"post_id" -#define FBSDK_SHARE_WEB_SCHEME @"https" diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m deleted file mode 100644 index 46896cc..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m +++ /dev/null @@ -1,30 +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 "FBSDKShareError.h" - -#import "FBSDKShareConstants.h" - -@implementation FBSDKShareError - -+ (NSString *)errorDomain -{ - return FBSDKShareErrorDomain; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h deleted file mode 100644 index a17f2fd..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h +++ /dev/null @@ -1,27 +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 "FBSDKShareDefines.h" -#import "FBSDKShareError.h" -#import "FBSDKShareOpenGraphValueContainer+Internal.h" -#import "FBSDKShareUtility.h" -#import "FBSDKVideoUploader.h" 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 deleted file mode 100644 index d1e70a0..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h +++ /dev/null @@ -1,49 +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 - -@class FBSDKShareMessengerURLActionButton; -@protocol FBSDKShareMessengerActionButton; - -extern NSString *const kFBSDKShareMessengerTemplateTypeKey; -extern NSString *const kFBSDKShareMessengerTemplateKey; -extern NSString *const kFBSDKShareMessengerPayloadKey; -extern NSString *const kFBSDKShareMessengerTypeKey; -extern NSString *const kFBSDKShareMessengerAttachmentKey; -extern NSString *const kFBSDKShareMessengerElementsKey; -extern NSString *const kFBSDKShareMessengerButtonsKey; - -void AddToContentPreviewDictionaryForButton(NSMutableDictionary *dictionary, - id button); - -NSDictionary *SerializableButtonFromURLButton(FBSDKShareMessengerURLActionButton *button, BOOL isDefaultAction); -NSArray *> *SerializableButtonsFromButton(id button); - -@interface FBSDKShareMessengerContentUtility : NSObject - -+ (void)addToParameters:(NSMutableDictionary *)parameters - contentForShare:(NSMutableDictionary *)contentForShare - contentForPreview:(NSMutableDictionary *)contentForPreview; - -+ (BOOL)validateMessengerActionButton:(id)button - isDefaultActionButton:(BOOL)isDefaultActionButton - pageID:(NSString *)pageID - error:(NSError *__autoreleasing *)errorRef; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m deleted file mode 100644 index 1cdc312..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m +++ /dev/null @@ -1,145 +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 "FBSDKShareMessengerContentUtility.h" - -#import "FBSDKCoreKit+Internal.h" -#import "FBSDKShareError.h" -#import "FBSDKShareMessengerGenericTemplateContent.h" -#import "FBSDKShareMessengerGenericTemplateElement.h" -#import "FBSDKShareMessengerMediaTemplateContent.h" -#import "FBSDKShareMessengerOpenGraphMusicTemplateContent.h" -#import "FBSDKShareMessengerURLActionButton.h" -#import "FBSDKShareUtility.h" - -NSString *const kFBSDKShareMessengerTemplateTypeKey = @"template_type"; -NSString *const kFBSDKShareMessengerTemplateKey = @"template"; -NSString *const kFBSDKShareMessengerPayloadKey = @"payload"; -NSString *const kFBSDKShareMessengerTypeKey = @"type"; -NSString *const kFBSDKShareMessengerAttachmentKey = @"attachment"; -NSString *const kFBSDKShareMessengerElementsKey = @"elements"; -NSString *const kFBSDKShareMessengerButtonsKey = @"buttons"; - -static void _AddToContentPreviewDictionaryForURLButton(NSMutableDictionary *dictionary, - FBSDKShareMessengerURLActionButton *urlButton) -{ - NSString *urlString = urlButton.url.absoluteString; - NSString *urlStringPath = urlButton.url.path; - NSRange rangeOfPath = [urlString rangeOfString:urlStringPath]; - NSString *shortURLString = urlString; - if (rangeOfPath.location != NSNotFound) { - shortURLString = [urlString substringWithRange:NSMakeRange(0, rangeOfPath.location)]; - } - - NSString *previewString = urlButton.title.length > 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"]; -} - -void AddToContentPreviewDictionaryForButton(NSMutableDictionary *dictionary, - id button) -{ - if ([button isKindOfClass:[FBSDKShareMessengerURLActionButton class]]) { - _AddToContentPreviewDictionaryForURLButton(dictionary, button); - } -} - -@implementation FBSDKShareMessengerContentUtility - -static NSString *_WebviewHeightRatioString(FBSDKShareMessengerURLActionButtonWebviewHeightRatio heightRatio) { - switch (heightRatio) { - case FBSDKShareMessengerURLActionButtonWebviewHeightRatioFull: - return @"full"; - case FBSDKShareMessengerURLActionButtonWebviewHeightRatioTall: - return @"tall"; - case FBSDKShareMessengerURLActionButtonWebviewHeightRatioCompact: - return @"compact"; - } -} - -static NSString *_WebviewShareButtonString(BOOL shouldHideWebviewShareButton) { - return shouldHideWebviewShareButton ? @"hide" : nil; -} - -NSDictionary *SerializableButtonFromURLButton(FBSDKShareMessengerURLActionButton *button, BOOL isDefaultAction) -{ - NSMutableDictionary *serializableButton = [NSMutableDictionary dictionary]; - - // Strip out title for default action - if (!isDefaultAction) { - [FBSDKInternalUtility 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"]; - return serializableButton; -} - -NSArray *> *SerializableButtonsFromButton(id button) -{ - // Return NSArray even though there is just one button to match proper json structure - NSMutableArray *> *serializableButtons = [NSMutableArray array]; - if ([button isKindOfClass:[FBSDKShareMessengerURLActionButton class]]) { - [FBSDKInternalUtility array:serializableButtons addObject:SerializableButtonFromURLButton(button, NO)]; - } - - return serializableButtons; -} - -+ (void)addToParameters:(NSMutableDictionary *)parameters - contentForShare:(NSMutableDictionary *)contentForShare - contentForPreview:(NSMutableDictionary *)contentForPreview -{ - NSError *error = nil; - NSData *contentForShareData = [NSJSONSerialization dataWithJSONObject:contentForShare options:kNilOptions error:&error]; - if (!error && contentForShareData) { - NSString *contentForShareDataString = [[NSString alloc] initWithData:contentForShareData encoding:NSUTF8StringEncoding]; - - NSMutableDictionary *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"]; - } -} - -+ (BOOL)validateMessengerActionButton:(id)button - isDefaultActionButton:(BOOL)isDefaultActionButton - pageID:(NSString *)pageID - error:(NSError *__autoreleasing *)errorRef -{ - if (!button) { - return YES; - } - else if ([button isKindOfClass:[FBSDKShareMessengerURLActionButton class]]) { - FBSDKShareMessengerURLActionButton *urlActionButton = (FBSDKShareMessengerURLActionButton *)button; - return [FBSDKShareUtility validateRequiredValue:urlActionButton.url name:@"button.url" error:errorRef] && - (!isDefaultActionButton ? [FBSDKShareUtility validateRequiredValue:urlActionButton.title name:@"button.title" error:errorRef] : YES) && - (urlActionButton.isMessengerExtensionURL ? [FBSDKShareUtility validateRequiredValue:pageID name:@"content pageID" error:errorRef] : YES); - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"buttons" value:button message:nil]; - } - return NO; - } -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h deleted file mode 100644 index 5d9382e..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h +++ /dev/null @@ -1,29 +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 - -@interface FBSDKShareOpenGraphValueContainer () - -- (NSDictionary *)allProperties; -- (BOOL)isEqualToShareOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object; -- (BOOL)requireKeyNamespace; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h deleted file mode 100644 index 6e7133b..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h +++ /dev/null @@ -1,77 +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 -#import -#import -#import - -@interface FBSDKShareUtility : NSObject - -+ (void)assertCollection:(id)collection ofClass:itemClass name:(NSString *)name; -+ (void)assertCollection:(id)collection ofClassStrings:(NSArray *)classStrings name:(NSString *)name; -+ (void)assertOpenGraphKey:(id)key requireNamespace:(BOOL)requireNamespace; -+ (void)assertOpenGraphValue:(id)value; -+ (void)assertOpenGraphValues:(NSDictionary *)dictionary requireKeyNamespace:(BOOL)requireKeyNamespace; - -+ (BOOL)buildWebShareContent:(id)content - methodName:(NSString *__autoreleasing *)methodNameRef - parameters:(NSDictionary *__autoreleasing *)parametersRef - error:(NSError *__autoreleasing *)errorRef; -+ (void)buildAsyncWebPhotoContent:(FBSDKSharePhotoContent *)content - completionHandler:(void(^)(BOOL, NSString *, NSDictionary *))completion; -+ (id)convertOpenGraphValue:(id)value; -+ (NSDictionary *)convertOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)container - requireNamespace:(BOOL)requireNamespace; -+ (NSDictionary *)convertOpenGraphValues:(NSDictionary *)dictionary; -+ (NSDictionary *)convertPhoto:(FBSDKSharePhoto *)photo; -+ (NSDictionary *)feedShareDictionaryForContent:(id)content; -+ (NSString *)getOpenGraphNameAndNamespaceFromFullName:(NSString *)fullName namespace:(NSString **)namespace; -+ (NSString *)hashtagStringFromHashtag:(FBSDKHashtag *)hashtag; -+ (UIImage *)imageWithCircleColor:(UIColor *)color - canvasSize:(CGSize)canvasSize - circleSize:(CGSize)circleSize; -+ (NSDictionary *)parametersForShareContent:(id)shareContent - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions - shouldFailOnDataError:(BOOL)shouldFailOnDataError; -+ (void)testShareContent:(id)shareContent - containsMedia:(BOOL *)containsMediaRef - containsPhotos:(BOOL *)containsPhotosRef - containsVideos:(BOOL *)containsVideosRef; -+ (BOOL)shareMediaContentContainsPhotosAndVideos:(FBSDKShareMediaContent *)shareMediaContent; - -+ (BOOL)validateArgumentWithName:(NSString *)argumentName - value:(NSUInteger)value - isIn:(NSArray *)possibleValues - error:(NSError *__autoreleasing *)errorRef; -+ (BOOL)validateArray:(NSArray *)array - minCount:(NSUInteger)minCount - maxCount:(NSUInteger)maxCount - name:(NSString *)name - error:(NSError *__autoreleasing *)errorRef; -+ (BOOL)validateNetworkURL:(NSURL *)URL name:(NSString *)name error:(NSError *__autoreleasing *)errorRef; -+ (BOOL)validateRequiredValue:(id)value name:(NSString *)name error:(NSError *__autoreleasing *)errorRef; -+ (BOOL)validateShareContent:(id)shareContent - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions - error:(NSError *__autoreleasing *)errorRef; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m deleted file mode 100644 index 2e5b780..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m +++ /dev/null @@ -1,729 +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 "FBSDKShareUtility.h" - -#import - -#import "FBSDKShareError.h" -#import "FBSDKShareLinkContent+Internal.h" - -@implementation FBSDKShareUtility - -#pragma mark - Class Methods - -+ (void)assertCollection:(id)collection ofClassStrings:(NSArray *)classStrings name:(NSString *)name -{ - for (id item in collection) { - BOOL validClass = NO; - for (NSString *classString in classStrings) { - if ([item isKindOfClass:NSClassFromString(classString)]) { - validClass = YES; - break; - } - } - if (!validClass) { - NSString *reason = [[NSString alloc] initWithFormat: - @"Invalid value found in %@: %@ - %@", - name, - item, - collection]; - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; - } - } -} - -+ (void)assertCollection:(id)collection ofClass:itemClass name:(NSString *)name -{ - for (id item in collection) { - if (![item isKindOfClass:itemClass]) { - NSString *reason = [[NSString alloc] initWithFormat: - @"Invalid value found in %@: %@ - %@", - name, - item, - collection]; - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; - } - } -} - -+ (void)assertOpenGraphKey:(id)key requireNamespace:(BOOL)requireNamespace -{ - if (![key isKindOfClass:[NSString class]]) { - NSString *reason = [[NSString alloc] initWithFormat:@"Invalid key found in Open Graph dictionary: %@", key]; - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; - } - if (!requireNamespace) { - return; - } - NSArray *components = [key componentsSeparatedByString:@":"]; - if ([components count] < 2) { - NSString *reason = [[NSString alloc] initWithFormat:@"Open Graph keys must be namespaced: %@", key]; - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; - } - for (NSString *component in components) { - if (![component length]) { - NSString *reason = [[NSString alloc] initWithFormat:@"Invalid key found in Open Graph dictionary: %@", key]; - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; - } - } -} - -+ (void)assertOpenGraphValue:(id)value -{ - if ([self _isOpenGraphValue:value]) { - return; - } - if ([value isKindOfClass:[NSDictionary class]]) { - [self assertOpenGraphValues:(NSDictionary *)value requireKeyNamespace:YES]; - return; - } - if ([value isKindOfClass:[NSArray class]]) { - for (id subValue in (NSArray *)value) { - [self assertOpenGraphValue:subValue]; - } - return; - } - NSString *reason = [[NSString alloc] initWithFormat:@"Invalid Open Graph value found: %@", value]; - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; -} - -+ (void)assertOpenGraphValues:(NSDictionary *)dictionary requireKeyNamespace:(BOOL)requireKeyNamespace -{ - [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) { - [self assertOpenGraphKey:key requireNamespace:requireKeyNamespace]; - [self assertOpenGraphValue:value]; - }]; -} - -+ (BOOL)buildWebShareContent:(id)content - methodName:(NSString *__autoreleasing *)methodNameRef - parameters:(NSDictionary *__autoreleasing *)parametersRef - error:(NSError *__autoreleasing *)errorRef -{ - NSString *methodName = nil; - NSMutableDictionary *parameters = nil; - if ([content isKindOfClass:[FBSDKShareOpenGraphContent class]]) { - methodName = @"share_open_graph"; - FBSDKShareOpenGraphContent *openGraphContent = (FBSDKShareOpenGraphContent *)content; - FBSDKShareOpenGraphAction *action = openGraphContent.action; - NSDictionary *properties = [self convertOpenGraphValueContainer:action requireNamespace:NO]; - NSString *propertiesJSON = [FBSDKInternalUtility JSONStringForObject:properties - error:errorRef - invalidObjectHandler:NULL]; - parameters = [NSMutableDictionary new]; - [FBSDKInternalUtility dictionary:parameters setObject:action.actionType forKey:@"action_type"]; - [FBSDKInternalUtility 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"]; - } - } - } - if (parameters) { - NSString *hashtagString = [self hashtagStringFromHashtag:content.hashtag]; - [FBSDKInternalUtility dictionary:parameters setObject:hashtagString forKey:@"hashtag"]; - } - if (methodNameRef != NULL) { - *methodNameRef = methodName; - } - if (parametersRef != NULL) { - *parametersRef = parameters; - } - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; -} - -+ (void)buildAsyncWebPhotoContent:(FBSDKSharePhotoContent *)content - completionHandler:(void(^)(BOOL, NSString *, NSDictionary *))completion -{ - void(^stageImageCompletion)(NSArray *) = ^(NSArray *stagedURIs) { - NSString *const methodName = @"share"; - NSMutableDictionary *const parameters = - [[FBSDKShareUtility parametersForShareContent:content - 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"]; - - if (completion != NULL) { - completion(YES, methodName, [parameters copy]); - } - }; - - [self _stageImagesForPhotoContent:(FBSDKSharePhotoContent *)content - withCompletionHandler:stageImageCompletion]; -} - -+ (id)convertOpenGraphValue:(id)value -{ - if ([self _isOpenGraphValue:value]) { - return value; - } else if ([value isKindOfClass:[NSDictionary class]]) { - NSDictionary *properties = (NSDictionary *)value; - if ([FBSDKTypeUtility stringValue:properties[@"type"]]) { - return [FBSDKShareOpenGraphObject objectWithProperties:properties]; - } else { - NSURL *imageURL = [FBSDKTypeUtility URLValue:properties[@"url"]]; - if (imageURL) { - FBSDKSharePhoto *sharePhoto = [FBSDKSharePhoto photoWithImageURL:imageURL - userGenerated:[FBSDKTypeUtility boolValue:properties[@"user_generated"]]]; - sharePhoto.caption = [FBSDKTypeUtility stringValue:properties[@"caption"]]; - return sharePhoto; - } else { - return nil; - } - } - } else if ([value isKindOfClass:[NSArray class]]) { - NSMutableArray *array = [[NSMutableArray alloc] init]; - for (id subValue in (NSArray *)value) { - [FBSDKInternalUtility array:array addObject:[self convertOpenGraphValue:subValue]]; - } - return [array copy]; - } else { - return nil; - } -} - -+ (NSDictionary *)convertOpenGraphValues:(NSDictionary *)dictionary -{ - NSMutableDictionary *convertedDictionary = [[NSMutableDictionary alloc] init]; - [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { - [FBSDKInternalUtility dictionary:convertedDictionary setObject:[self convertOpenGraphValue:obj] forKey:key]; - }]; - return [convertedDictionary copy]; -} - -+ (NSDictionary *)feedShareDictionaryForContent:(id)content -{ - NSMutableDictionary *parameters = nil; -#pragma clang diagnostic pop -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if ([content isKindOfClass:[FBSDKShareLinkContent class]]) { - FBSDKShareLinkContent *linkContent = (FBSDKShareLinkContent *)content; - parameters = [[NSMutableDictionary alloc] initWithDictionary:linkContent.feedParameters]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentDescription forKey:@"description"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.quote forKey:@"quote"]; - [FBSDKInternalUtility dictionary:parameters setObject:[self hashtagStringFromHashtag:linkContent.hashtag] forKey:@"hashtag"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentTitle forKey:@"name"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.imageURL forKey:@"picture"]; - [FBSDKInternalUtility dictionary:parameters setObject:linkContent.ref forKey:@"ref"]; - } -#pragma clang diagnostic pop - return [parameters copy]; -} - -+ (NSString *)hashtagStringFromHashtag:(FBSDKHashtag *)hashtag -{ - if (!hashtag) { - return nil; - } - if (hashtag.isValid) { - return hashtag.stringRepresentation; - } else { - [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors - formatString:@"Invalid hashtag: '%@'", hashtag.stringRepresentation]; - return nil; - } -} - -+ (UIImage *)imageWithCircleColor:(UIColor *)color - canvasSize:(CGSize)canvasSize - circleSize:(CGSize)circleSize -{ - CGRect circleFrame = CGRectMake((canvasSize.width - circleSize.width) / 2.0, - (canvasSize.height - circleSize.height) / 2.0, - circleSize.width, - circleSize.height); - UIGraphicsBeginImageContextWithOptions(canvasSize, NO, 0); - CGContextRef context = UIGraphicsGetCurrentContext(); - [color setFill]; - CGContextFillEllipseInRect(context, circleFrame); - UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return image; -} - -+ (NSDictionary *)parametersForShareContent:(id)shareContent - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions - shouldFailOnDataError:(BOOL)shouldFailOnDataError -{ - NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; - - // FBSDKSharingContent parameters - NSString *const hashtagString = [self hashtagStringFromHashtag:shareContent.hashtag]; - if (hashtagString.length > 0) { - // When hashtag support was originally added, the Facebook app supported an array of hashtags. - // 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"]; - } else { - [FBSDKInternalUtility 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]]) { - 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"]; - } - - parameters[@"dataFailuresFatal"] = @(shouldFailOnDataError); - - // media/destination-specific content parameters - if ([shareContent respondsToSelector:@selector(addToParameters:bridgeOptions:)]) { - [shareContent addToParameters:parameters bridgeOptions:bridgeOptions]; - } - - return [parameters copy]; -} - -+ (void)testShareContent:(id)shareContent - containsMedia:(BOOL *)containsMediaRef - containsPhotos:(BOOL *)containsPhotosRef - containsVideos:(BOOL *)containsVideosRef -{ - BOOL containsMedia = NO; - BOOL containsPhotos = NO; - BOOL containsVideos = NO; - if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { - containsMedia = NO; - containsPhotos = NO; - containsVideos = NO; - } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { - containsMedia = YES; - containsVideos = YES; - containsPhotos = NO; - } else if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { - [self _testObject:((FBSDKSharePhotoContent *)shareContent).photos - containsMedia:&containsMedia - containsPhotos:&containsPhotos - containsVideos:&containsVideos]; - } else if ([shareContent isKindOfClass:[FBSDKShareMediaContent class]]) { - [self _testObject:((FBSDKShareMediaContent *)shareContent).media - containsMedia:&containsMedia - containsPhotos:&containsPhotos - containsVideos:&containsVideos]; - } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { - [self _testOpenGraphValueContainer:((FBSDKShareOpenGraphContent *)shareContent).action - containsMedia:&containsMedia - containsPhotos:&containsPhotos - containsVideos:&containsVideos]; - } - if (containsMediaRef != NULL) { - *containsMediaRef = containsMedia; - } - if (containsPhotosRef != NULL) { - *containsPhotosRef = containsPhotos; - } - if (containsVideosRef != NULL) { - *containsVideosRef = containsVideos; - } -} - -+ (BOOL)validateAssetLibraryURLsWithShareMediaContent:(FBSDKShareMediaContent *)mediaContent name:(NSString *)name error:(NSError *__autoreleasing *)errorRef -{ - for (id media in mediaContent.media) { - if ([media isKindOfClass:[FBSDKShareVideo class]]) { - FBSDKShareVideo *video = (FBSDKShareVideo *)media; - if (![self _validateAssetLibraryVideoURL:video.videoURL name:name error:errorRef]) { - return NO; - } - } - } - return YES; -} - -+ (BOOL)validateShareContent:(id)shareContent - bridgeOptions:(FBSDKShareBridgeOptions)bridgeOptions - error:(NSError *__autoreleasing *)errorRef -{ - if (![self validateRequiredValue:shareContent name:@"shareContent" error:errorRef]) { - return NO; - } - else if ([shareContent respondsToSelector:@selector(validateWithOptions:error:)]) { - return [shareContent validateWithOptions:bridgeOptions error:errorRef]; - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" value:shareContent message:nil]; - } - return NO; - } -} - -+ (BOOL)shareMediaContentContainsPhotosAndVideos:(FBSDKShareMediaContent *)shareMediaContent -{ - BOOL containsPhotos = NO; - BOOL containsVideos = NO; - [self testShareContent:shareMediaContent containsMedia:NULL containsPhotos:&containsPhotos containsVideos:&containsVideos]; - return containsVideos && containsPhotos; -} - -#pragma mark - Object Lifecycle - -- (instancetype)init -{ - FBSDK_NO_DESIGNATED_INITIALIZER(); - return nil; -} - -#pragma mark - Helper Methods - -+ (id)_convertObject:(id)object -{ - if ([object isKindOfClass:[FBSDKShareOpenGraphValueContainer class]]) { - object = [self convertOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object requireNamespace:YES]; - } else if ([object isKindOfClass:[FBSDKSharePhoto class]]) { - object = [self convertPhoto:(FBSDKSharePhoto *)object]; - } else if ([object isKindOfClass:[NSArray class]]) { - NSMutableArray *array = [[NSMutableArray alloc] init]; - for (id item in (NSArray *)object) { - [FBSDKInternalUtility array:array addObject:[self _convertObject:item]]; - } - object = array; - } - return object; -} - -+ (NSDictionary *)convertOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)container - requireNamespace:(BOOL)requireNamespace -{ - NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; - NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; - [container enumerateKeysAndObjectsUsingBlock:^(NSString *key, id object, BOOL *stop) { - // if we have an FBSDKShareOpenGraphObject and a type, then we are creating a new object instance; set the flag - if ([key isEqualToString:@"og:type"] && [container isKindOfClass:[FBSDKShareOpenGraphObject class]]) { - dictionary[@"fbsdk:create_object"] = @YES; - dictionary[key] = object; - } - id value = [self _convertObject:object]; - if (value) { - NSString *namespace; - key = [self getOpenGraphNameAndNamespaceFromFullName:key namespace:&namespace]; - - if (requireNamespace) { - if ([namespace isEqualToString:@"og"]) { - dictionary[key] = value; - } else { - data[key] = value; - } - } else { - dictionary[key] = value; - } - } - }]; - if ([data count]) { - dictionary[@"data"] = data; - } - return dictionary; -} - -+ (NSString *)getOpenGraphNameAndNamespaceFromFullName:(NSString *)fullName namespace:(NSString **)namespace { - if (namespace) { - *namespace = nil; - } - - if ([fullName isEqualToString:@"fb:explicitly_shared"]) { - return fullName; - } - - NSUInteger index = [fullName rangeOfString:@":"].location; - if ((index != NSNotFound) && (fullName.length > index + 1)) { - if (namespace) { - *namespace = [fullName substringToIndex:index]; - } - - return [fullName substringFromIndex:index + 1]; - } - - return fullName; -} - -+ (NSDictionary *)convertPhoto:(FBSDKSharePhoto *)photo -{ - if (!photo) { - return nil; - } - NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; - dictionary[@"user_generated"] = @(photo.userGenerated); - [FBSDKInternalUtility dictionary:dictionary setObject:photo.caption forKey:@"caption"]; - - [FBSDKInternalUtility dictionary:dictionary setObject:photo.image ?: photo.imageURL.absoluteString forKey:@"url"]; - return dictionary; -} - -+ (BOOL)_isOpenGraphValue:(id)value -{ - return ((value == nil) || - [value isKindOfClass:[NSNull class]] || - [value isKindOfClass:[NSNumber class]] || - [value isKindOfClass:[NSString class]] || - [value isKindOfClass:[NSURL class]] || - [value isKindOfClass:[FBSDKSharePhoto class]] || - [value isKindOfClass:[FBSDKShareOpenGraphObject class]]); -} - -+ (void)_stageImagesForPhotoContent:(FBSDKSharePhotoContent *)content - withCompletionHandler:(void(^)(NSArray *))completion -{ - __block NSMutableArray *stagedURIs = [NSMutableArray array]; - dispatch_group_t group = dispatch_group_create(); - for (FBSDKSharePhoto *photo in content.photos) { - if (photo.image != nil) { - dispatch_group_enter(group); - NSDictionary *stagingParameters = @{ - @"file" : photo.image, - }; - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/staging_resources" - parameters:stagingParameters - HTTPMethod:@"POST"]; - [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { - NSString *photoStagedURI = result[@"uri"]; - if (photoStagedURI != nil) { - [stagedURIs addObject:photoStagedURI]; - dispatch_group_leave(group); - } - }]; - } - } - - dispatch_group_notify(group, dispatch_get_main_queue(), ^{ - if (completion != NULL) { - completion([stagedURIs copy]); - } - }); -} - -+ (void)_testObject:(id)object containsMedia:(BOOL *)containsMediaRef containsPhotos:(BOOL *)containsPhotosRef containsVideos:(BOOL *)containsVideosRef -{ - BOOL containsMedia = NO; - BOOL containsPhotos = NO; - BOOL containsVideos = NO; - if ([object isKindOfClass:[FBSDKSharePhoto class]]) { - containsMedia = (((FBSDKSharePhoto *)object).image != nil); - containsPhotos = YES; - } else if ([object isKindOfClass:[FBSDKShareVideo class]]) { - containsMedia = YES; - containsVideos = YES; - } else if ([object isKindOfClass:[FBSDKShareOpenGraphValueContainer class]]) { - [self _testOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object - containsMedia:&containsMedia - containsPhotos:&containsPhotos - containsVideos:&containsVideos]; - } else if ([object isKindOfClass:[NSArray class]]) { - for (id item in (NSArray *)object) { - BOOL itemContainsMedia = NO; - BOOL itemContainsPhotos = NO; - BOOL itemContainsVideos = NO; - [self _testObject:item containsMedia:&itemContainsMedia containsPhotos:&itemContainsPhotos containsVideos:&itemContainsVideos]; - containsMedia |= itemContainsMedia; - containsPhotos |= itemContainsPhotos; - containsVideos |= itemContainsVideos; - if (containsMedia && containsPhotos && containsVideos) { - break; - } - } - } - if (containsMediaRef != NULL) { - *containsMediaRef = containsMedia; - } - if (containsPhotosRef != NULL) { - *containsPhotosRef = containsPhotos; - } - if (containsVideosRef != NULL) { - *containsVideosRef = containsVideos; - } -} - -+ (void)_testOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)container - containsMedia:(BOOL *)containsMediaRef - containsPhotos:(BOOL *)containsPhotosRef - containsVideos:(BOOL *)containsVideosRef -{ - __block BOOL containsMedia = NO; - __block BOOL containsPhotos = NO; - __block BOOL containsVideos = NO; - [container enumerateKeysAndObjectsUsingBlock:^(NSString *key, id object, BOOL *stop) { - BOOL itemContainsMedia = NO; - BOOL itemContainsPhotos = NO; - BOOL itemContainsVideos = NO; - [self _testObject:object containsMedia:&itemContainsMedia containsPhotos:&itemContainsPhotos containsVideos:&itemContainsVideos]; - containsMedia |= itemContainsMedia; - containsPhotos |= itemContainsPhotos; - containsVideos |= itemContainsVideos; - if (containsMedia && containsPhotos && containsVideosRef) { - *stop = YES; - } - }]; - if (containsMediaRef != NULL) { - *containsMediaRef = containsMedia; - } - if (containsPhotosRef != NULL) { - *containsPhotosRef = containsPhotos; - } - if (containsVideosRef != NULL) { - *containsVideosRef = containsVideos; - } -} - -+ (BOOL)validateArray:(NSArray *)array - minCount:(NSUInteger)minCount - maxCount:(NSUInteger)maxCount - name:(NSString *)name - error:(NSError *__autoreleasing *)errorRef -{ - NSUInteger count = [array count]; - if ((count < minCount) || (count > maxCount)) { - if (errorRef != NULL) { - NSString *message = [[NSString alloc] initWithFormat:@"%@ must have %lu to %lu values", - name, - (unsigned long)minCount, - (unsigned long)maxCount]; - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name value:array message:message]; - } - return NO; - } else { - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; - } -} - -+ (BOOL)_validateFileURL:(NSURL *)URL name:(NSString *)name error:(NSError *__autoreleasing *)errorRef -{ - if (!URL) { - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; - } - if (!URL.isFileURL) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name value:URL message:nil]; - } - return NO; - } - // ensure that the file exists. per the latest spec for NSFileManager, we should not be checking for file existence, - // so they have removed that option for URLs and discourage it for paths, so we just construct a mapped NSData. - NSError *fileError; - if (![[NSData alloc] initWithContentsOfURL:URL - options:NSDataReadingMapped - error:&fileError]) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name - value:URL - message:@"Error reading file" - underlyingError:fileError]; - } - return NO; - } - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; -} - -+ (BOOL)validateNetworkURL:(NSURL *)URL name:(NSString *)name error:(NSError *__autoreleasing *)errorRef -{ - if (!URL || [FBSDKInternalUtility isBrowserURL:URL]) { - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name value:URL message:nil]; - } - return NO; - } -} - -+ (BOOL)validateRequiredValue:(id)value name:(NSString *)name error:(NSError *__autoreleasing *)errorRef -{ - if (!value || - ([value isKindOfClass:[NSString class]] && ![(NSString *)value length]) || - ([value isKindOfClass:[NSArray class]] && ![(NSArray *)value count]) || - ([value isKindOfClass:[NSDictionary class]] && ![(NSDictionary *)value count])) { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError requiredArgumentErrorWithName:name message:nil]; - } - return NO; - } - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; -} - -+ (BOOL)validateArgumentWithName:(NSString *)argumentName - value:(NSUInteger)value - isIn:(NSArray *)possibleValues - error:(NSError *__autoreleasing *)errorRef -{ - for (NSNumber *possibleValue in possibleValues) { - if (value == [possibleValue unsignedIntegerValue]) { - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; - } - } - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:argumentName value:@(value) message:nil]; - } - return NO; -} - -+ (BOOL)_validateAssetLibraryVideoURL:(NSURL *)videoURL name:(NSString *)name error:(NSError *__autoreleasing *)errorRef -{ - if (!videoURL || [[videoURL.scheme lowercaseString] isEqualToString:@"assets-library"]) { - if (errorRef != NULL) { - *errorRef = nil; - } - return YES; - } else { - if (errorRef != NULL) { - *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name value:videoURL message:nil]; - } - return NO; - } -} - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h deleted file mode 100644 index 66b9961..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h +++ /dev/null @@ -1,104 +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 - -@protocol FBSDKVideoUploaderDelegate; - -/** - A utility class for uploading through the chunk upload graph API. Using this class requires an access token in - `[FBSDKAccessToken currentAccessToken]` that has been granted the "publish_actions" permission. - - see https://developers.facebook.com/docs/graph-api/video-uploads - */ -@interface FBSDKVideoUploader : NSObject - -/** - Initialize videoUploader - @param videoName The file name of the video to be uploaded - @param videoSize The size of the video to be uploaded - @param parameters Optional parameters for video uploads. See Graph API documentation for the full list of parameters https://developers.facebook.com/docs/graph-api/reference/video - @param delegate Receiver's delegate - */ -- (instancetype)initWithVideoName:(NSString *)videoName videoSize:(NSUInteger)videoSize parameters:(NSDictionary *)parameters delegate:(id)delegate -NS_DESIGNATED_INITIALIZER; - - -/** - The video to be uploaded. - */ -@property (readonly, copy, nonatomic) FBSDKShareVideo *video; - -/** - Optional parameters for video uploads. See Graph API documentation for the full list of parameters https://developers.facebook.com/docs/graph-api/reference/video - */ -@property (copy, nonatomic) NSDictionary *parameters; - -/** - The graph node to which video should be uploaded - */ -@property (nonatomic, copy) NSString *graphNode; - -/** - Receiver's delegate - */ -@property (weak, nonatomic) id delegate; - -/** - Start upload process - */ -//TODO #6229672 add cancel and/or pause -- (void)start; - -@end - -/** - A delegate for `FBSDKVideoUploader`. - - The delegate passes video chunk to `FBSDKVideoUploader` object in `NSData` format and is notified with the results of the uploader. - */ -@protocol FBSDKVideoUploaderDelegate - -/** - get chunk of the video to be uploaded in 'NSData' format - @param videoUploader The `FBSDKVideoUploader` object which is performing the upload process - @param startOffset The start offset of video chunk to be uploaded - @param endOffset The end offset of video chunk being to be uploaded - */ -- (NSData *)videoChunkDataForVideoUploader:(FBSDKVideoUploader *)videoUploader startOffset:(NSUInteger) startOffset endOffset:(NSUInteger) endOffset; - -/** - Notify the delegate that upload process success. - @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; - -/** - Notify the delegate that upload process fails. - @param videoUploader The `FBSDKVideoUploader` object which is performing the upload process - @param error The error object from unsuccessful upload - */ -- (void)videoUploader:(FBSDKVideoUploader *)videoUploader didFailWithError:(NSError *)error; - -@end diff --git a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m b/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m deleted file mode 100644 index ccaa016..0000000 --- a/Example/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m +++ /dev/null @@ -1,230 +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 "FBSDKVideoUploader.h" - -#import - -#import - -#import - -#import "FBSDKShareDefines.h" -#import "FBSDKShareError.h" - -static NSString *const FBSDKVideoUploaderDefaultGraphNode = @"me"; -static NSString *const FBSDKVideoUploaderEdge = @"videos"; - -@implementation FBSDKVideoUploader -{ - NSNumber *_videoID; - NSNumber *_uploadSessionID; - NSNumberFormatter *_numberFormatter; - NSString *_graphPath; - NSString *_videoName; - NSUInteger _videoSize; -} - -- (instancetype)init NS_UNAVAILABLE -{ - assert(0); -} - -#pragma Public Method -- (instancetype)initWithVideoName:(NSString *)videoName videoSize:(NSUInteger)videoSize parameters:(NSDictionary *)parameters delegate:(id)delegate -{ - self = [super init]; - if (self) { - _parameters = [parameters copy]; - _delegate = delegate; - _graphNode = FBSDKVideoUploaderDefaultGraphNode; - _videoName = videoName; - _videoSize = videoSize; - } - return self; -} - -- (void)start -{ - _graphPath = [self _graphPathWithSuffix:FBSDKVideoUploaderEdge, nil]; - [self _postStartRequest]; -} - -#pragma Helper Method - -- (void)_postStartRequest -{ - FBSDKGraphRequestHandler startRequestCompletionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) - { - if (error) { - [self.delegate videoUploader:self didFailWithError:error]; - return; - } else { - result = [FBSDKTypeUtility dictionaryValue:result]; - NSNumber *uploadSessionID = [self.numberFormatter numberFromString:result[FBSDK_SHARE_VIDEO_UPLOAD_SESSION_ID]]; - NSNumber *videoID = [self.numberFormatter numberFromString:result[FBSDK_SHARE_VIDEO_ID]]; - NSDictionary *offsetDictionary = [self _extractOffsetsFromResultDictionary:result]; - if (uploadSessionID == nil || videoID == nil) { - [self.delegate videoUploader:self didFailWithError:[ - FBSDKShareError errorWithCode:FBSDKShareUnknownErrorCode - message:@"Failed to get valid upload_session_id or video_id."]]; - return; - } else if (offsetDictionary == nil) { - return; - } - self->_uploadSessionID = uploadSessionID; - self->_videoID = videoID; - [self _startTransferRequestWithOffsetDictionary:offsetDictionary]; - } - }; - if (_videoSize == 0) { - [self.delegate videoUploader:self didFailWithError:[ - FBSDKShareError errorWithCode:FBSDKShareUnknownErrorCode - message:[NSString stringWithFormat:@"Invalid video size: %lu", (unsigned long)_videoSize]]]; - return; - } - [[[FBSDKGraphRequest alloc] initWithGraphPath:_graphPath - parameters:@{ - FBSDK_SHARE_VIDEO_UPLOAD_PHASE: FBSDK_SHARE_VIDEO_UPLOAD_PHASE_START, - FBSDK_SHARE_VIDEO_SIZE: [NSString stringWithFormat:@"%tu", _videoSize], - } - HTTPMethod:@"POST"] startWithCompletionHandler:startRequestCompletionHandler]; -} - -- (void)_startTransferRequestWithOffsetDictionary:(NSDictionary *)offsetDictionary -{ - dispatch_queue_t dataQueue; - NSOperatingSystemVersion iOS8Version = { .majorVersion = 8, .minorVersion = 0, .patchVersion = 0 }; - if ([FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS8Version]) { - dataQueue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0); - } else { - dataQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0); - } - NSUInteger startOffset = [offsetDictionary[FBSDK_SHARE_VIDEO_START_OFFSET] unsignedIntegerValue]; - NSUInteger endOffset = [offsetDictionary[FBSDK_SHARE_VIDEO_END_OFFSET] unsignedIntegerValue]; - if (startOffset == endOffset) { - [self _postFinishRequest]; - return; - } else { - dispatch_async(dataQueue, ^{ - size_t chunkSize = (unsigned long)(endOffset - startOffset); - NSData *data = [self.delegate videoChunkDataForVideoUploader:self startOffset:startOffset endOffset:endOffset]; - if (data == nil || data.length != chunkSize) { - [self.delegate videoUploader:self didFailWithError:[FBSDKShareError errorWithCode:FBSDKShareUnknownErrorCode message: - [NSString stringWithFormat:@"Fail to get video chunk with start offset: %lu, end offset : %lu.", (unsigned long)startOffset, (unsigned long)endOffset]]]; - return; - } - dispatch_async(dispatch_get_main_queue(), ^{ - FBSDKGraphRequestDataAttachment *dataAttachment = [[FBSDKGraphRequestDataAttachment alloc] initWithData:data - filename:self->_videoName - contentType:nil]; - FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:self->_graphPath - parameters:@{ - FBSDK_SHARE_VIDEO_UPLOAD_PHASE: FBSDK_SHARE_VIDEO_UPLOAD_PHASE_TRANSFER, - FBSDK_SHARE_VIDEO_START_OFFSET: offsetDictionary[FBSDK_SHARE_VIDEO_START_OFFSET], - FBSDK_SHARE_VIDEO_UPLOAD_SESSION_ID: self->_uploadSessionID, - FBSDK_SHARE_VIDEO_FILE_CHUNK: dataAttachment, - } - HTTPMethod:@"POST"]; - [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *innerError) { - if (innerError) { - [self.delegate videoUploader:self didFailWithError:innerError]; - return; - } - NSDictionary *innerOffsetDictionary = [self _extractOffsetsFromResultDictionary:result]; - if (innerOffsetDictionary == nil) { - return; - } - [self _startTransferRequestWithOffsetDictionary:innerOffsetDictionary]; - }]; - }); - }); - } -} - -- (void)_postFinishRequest -{ - NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; - parameters[FBSDK_SHARE_VIDEO_UPLOAD_PHASE] = FBSDK_SHARE_VIDEO_UPLOAD_PHASE_FINISH; - parameters[FBSDK_SHARE_VIDEO_UPLOAD_SESSION_ID] = _uploadSessionID; - [parameters addEntriesFromDictionary:self.parameters]; - [[[FBSDKGraphRequest alloc] initWithGraphPath:_graphPath - parameters:parameters - HTTPMethod:@"POST"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { - if (error) { - [self.delegate videoUploader:self didFailWithError:error]; - } else { - result = [FBSDKTypeUtility dictionaryValue:result]; - if (result[FBSDK_SHARE_VIDEO_UPLOAD_SUCCESS] == nil) { - [self.delegate videoUploader:self didFailWithError:[FBSDKShareError errorWithCode:FBSDKShareUnknownErrorCode - message:@"Failed to finish uploading."]]; - return; - } - NSMutableDictionary *shareResult = [[NSMutableDictionary alloc] init]; - shareResult[FBSDK_SHARE_VIDEO_UPLOAD_SUCCESS] = result[FBSDK_SHARE_VIDEO_UPLOAD_SUCCESS]; - shareResult[FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY] = FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST; - shareResult[FBSDK_SHARE_VIDEO_ID] = self->_videoID; - [self.delegate videoUploader:self didCompleteWithResults:shareResult]; - } - }]; -} - -- (NSDictionary *)_extractOffsetsFromResultDictionary:(id)result -{ - result = [FBSDKTypeUtility dictionaryValue:result]; - NSNumber *startNum = [self.numberFormatter numberFromString:result[FBSDK_SHARE_VIDEO_START_OFFSET]]; - NSNumber *endNum = [self.numberFormatter numberFromString:result[FBSDK_SHARE_VIDEO_END_OFFSET]]; - if (startNum == nil || endNum == nil) { - [self.delegate videoUploader:self didFailWithError:[FBSDKShareError errorWithCode:FBSDKShareUnknownErrorCode - message:@"Fail to get valid start_offset or end_offset."]]; - return nil; - } - if ([startNum compare:endNum] == NSOrderedDescending) { - [self.delegate videoUploader:self didFailWithError:[FBSDKShareError errorWithCode:FBSDKShareUnknownErrorCode - message:@"Invalid offset: start_offset is greater than end_offset."]]; - return nil; - } - - NSMutableDictionary *shareResults = [[NSMutableDictionary alloc] init]; - shareResults[FBSDK_SHARE_VIDEO_START_OFFSET] = startNum; - shareResults[FBSDK_SHARE_VIDEO_END_OFFSET] = endNum; - return shareResults; -} - -- (NSNumberFormatter *)numberFormatter -{ - if (!_numberFormatter) { - _numberFormatter = [[NSNumberFormatter alloc] init]; - _numberFormatter.numberStyle = NSNumberFormatterDecimalStyle; - } - return _numberFormatter; -} - -- (NSString *)_graphPathWithSuffix:(NSString *)suffix, ... NS_REQUIRES_NIL_TERMINATION -{ - NSMutableString *graphPath = [[NSMutableString alloc] initWithString:self.graphNode]; - va_list args; - va_start(args, suffix); - for (NSString *arg = suffix; arg != nil; arg = va_arg(args, NSString *)) { - [graphPath appendFormat:@"/%@", arg]; - } - va_end(args); - return graphPath; -} - -@end diff --git a/Example/Pods/FBSDKShareKit/README.md b/Example/Pods/FBSDKShareKit/README.md deleted file mode 100644 index 1f9c74e..0000000 --- a/Example/Pods/FBSDKShareKit/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Facebook SDK for iOS - -This open-source library allows you to integrate Facebook into your iOS app. - -Learn more about the provided samples, documentation, integrating the SDK into your app, accessing source code, and more at https://developers.facebook.com/docs/ios - -NOTE: By default, the Facebook SDK for iOS is installed in ~/Documents/FacebookSDK - -## TRY IT OUT - -1. Download the SDK at or via CocoaPods by adding the 'FBSDKCoreKit', 'FBSDKLoginKit', and 'FBSDKShareKit' pods. -2. Test your install: build and run the project at `~/Documents/FacebookSDK/Samples/Scrumptious/Scrumptious.xcodeproj` -3. Check-out the tutorials available online at: -4. Start coding! Visit for tutorials and reference documentation. - -## FEATURES - -- Login - -- Sharing - -- App Links - -- Graph API - -- Analytics - - -## GIVE FEEDBACK - -Please report bugs or issues to - -You can also join the [Facebook Developers Group on Facebook](https://www.facebook.com/groups/fbdevelopers/) or ask questions on [Stack Overflow](http://facebook.stackoverflow.com) - -## LICENSE - -See the [LICENSE](LICENSE) file. - -## DEVELOPER TERMS - -- By enabling Facebook integrations, including through this SDK, you can share information with Facebook, including information about people’s use of your app. Facebook will use information received in accordance with our [Data Use Policy](https://www.facebook.com/about/privacy/), including to provide you with insights about the effectiveness of your ads and the use of your app. These integrations also enable us and our partners to serve ads on and off Facebook. -- You may limit your sharing of information with us by updating the Insights control in the developer tool `https://developers.facebook.com/apps/{app_id}/settings/advanced`. -- If you use a Facebook integration, including to share information with us, you agree and confirm that you have provided appropriate and sufficiently prominent notice to and obtained the appropriate consent from your users regarding such collection, use, and disclosure (including, at a minimum, through your privacy policy). You further agree that you will not share information with us about children under the age of 13. -- You agree to comply with all applicable laws and regulations and also agree to our Terms , including our Platform Policies .and Advertising Guidelines, as applicable . - -By using the Facebook SDK for iOS you agree to these terms. diff --git a/Example/Pods/FBSDKShareKit/LICENSE b/Example/Pods/Facebook-iOS-SDK/LICENSE similarity index 100% rename from Example/Pods/FBSDKShareKit/LICENSE rename to Example/Pods/Facebook-iOS-SDK/LICENSE diff --git a/Example/Pods/FBSDKLoginKit/README.md b/Example/Pods/Facebook-iOS-SDK/README.md similarity index 100% rename from Example/Pods/FBSDKLoginKit/README.md rename to Example/Pods/Facebook-iOS-SDK/README.md diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsUninstall.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsUninstall.h deleted file mode 120000 index 4d75da5..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEventsUninstall.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.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 new file mode 120000 index 0000000..b1db635 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKCodelessIndexer.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKGateKeeperManager.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKGateKeeperManager.h new file mode 120000 index 0000000..600bf35 --- /dev/null +++ b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKGateKeeperManager.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLConnection.h b/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLConnection.h deleted file mode 120000 index 7d42325..0000000 --- a/Example/Pods/Headers/Private/FBSDKCoreKit/FBSDKURLConnection.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo+Internal.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo+Internal.h deleted file mode 120000 index ebfc0d9..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginCodeInfo+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h deleted file mode 120000 index 13badb8..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginError.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginError.h deleted file mode 120000 index 2a3df9f..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginError.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManager.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManager.h deleted file mode 120000 index 810d740..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManagerResult+Internal.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManagerResult+Internal.h deleted file mode 120000 index 2f2fdeb..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManagerResult+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginManagerResult+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h deleted file mode 120000 index f38b4a0..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginButton.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginButton.h deleted file mode 120000 index a997dee..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginCompletion+Internal.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginCompletion+Internal.h deleted file mode 120000 index 45fdfa9..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginCompletion+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginCompletion.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginCompletion.h deleted file mode 120000 index 1c5d1f1..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginCompletion.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginConstants.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginConstants.h deleted file mode 120000 index 93a52b7..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginConstants.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginError.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginError.h deleted file mode 120000 index f257464..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginError.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit+Internal.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit+Internal.h deleted file mode 120000 index 1eda541..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit.h deleted file mode 120000 index cf4e004..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManager+Internal.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManager+Internal.h deleted file mode 120000 index cab55ae..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManager+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManager.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManager.h deleted file mode 120000 index a791506..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLogger.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLogger.h deleted file mode 120000 index dfaa540..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLogger.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLoginResult+Internal.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLoginResult+Internal.h deleted file mode 120000 index a0af26e..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLoginResult+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h deleted file mode 120000 index b8cf2c7..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginTooltipView.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginTooltipView.h deleted file mode 120000 index 0f25173..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginTooltipView.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginUtility.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginUtility.h deleted file mode 120000 index 48ff8f9..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginUtility.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKTooltipView.h b/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKTooltipView.h deleted file mode 120000 index c46a3c3..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/FBSDKTooltipView.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKLoginKit/_FBSDKLoginRecoveryAttempter.h b/Example/Pods/Headers/Private/FBSDKLoginKit/_FBSDKLoginRecoveryAttempter.h deleted file mode 120000 index 91c7602..0000000 --- a/Example/Pods/Headers/Private/FBSDKLoginKit/_FBSDKLoginRecoveryAttempter.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.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/FBSDKAppGroupContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h deleted file mode 120000 index 0e81d04..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.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/FBSDKAppInviteContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h deleted file mode 120000 index 61c47da..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.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/FBSDKCameraEffectArguments+Internal.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments+Internal.h deleted file mode 120000 index f2f471a..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h deleted file mode 120000 index b3b50d0..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures+Internal.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures+Internal.h deleted file mode 120000 index ccbf020..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectTextures+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h deleted file mode 120000 index 98fc52f..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCheckmarkIcon.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCheckmarkIcon.h deleted file mode 120000 index 429d4fb..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCheckmarkIcon.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h deleted file mode 120000 index 0a8ba29..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h deleted file mode 120000 index 3f7906b..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestFrictionlessRecipientCache.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestFrictionlessRecipientCache.h deleted file mode 120000 index 8d2b1fc..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestFrictionlessRecipientCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h deleted file mode 120000 index addd63f..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionController.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionController.h deleted file mode 120000 index b17a17a..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionController.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionControllerCache.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionControllerCache.h deleted file mode 120000 index f54c62b..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionControllerCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxBorderView.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxBorderView.h deleted file mode 120000 index eac03ca..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxBorderView.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxView.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxView.h deleted file mode 120000 index 2fe6da3..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxView.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton+Internal.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton+Internal.h deleted file mode 120000 index 894b54b..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.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/FBSDKLikeDialog.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeDialog.h deleted file mode 120000 index 5f2ac3b..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h deleted file mode 120000 index efe324e..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h deleted file mode 120000 index c29f9ee..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h deleted file mode 120000 index 7451999..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessengerIcon.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessengerIcon.h deleted file mode 120000 index 6363326..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessengerIcon.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h deleted file mode 120000 index b827828..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h deleted file mode 120000 index 2d4e646..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h deleted file mode 120000 index c981a56..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h deleted file mode 120000 index 4394f0f..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h deleted file mode 120000 index e7e13b5..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDefines.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDefines.h deleted file mode 120000 index 4314dbc..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h deleted file mode 120000 index 56b9ff9..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h deleted file mode 120000 index 8e28a21..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareError.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareError.h deleted file mode 120000 index c4a055e..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareError.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit+Internal.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit+Internal.h deleted file mode 120000 index b6d1c4f..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h deleted file mode 120000 index 4c43211..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.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/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h deleted file mode 120000 index 5d14f07..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h deleted file mode 120000 index 9a4eb9b..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h deleted file mode 120000 index 0db4f02..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerContentUtility.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerContentUtility.h deleted file mode 120000 index ec3450f..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerContentUtility.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h deleted file mode 120000 index 14959c4..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h deleted file mode 120000 index d5dc273..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h deleted file mode 120000 index ab62fb6..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h deleted file mode 120000 index 1c00ce2..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h deleted file mode 120000 index adadbe5..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h deleted file mode 120000 index 8e50e05..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h deleted file mode 120000 index c44ae92..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h deleted file mode 120000 index f8b1179..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer+Internal.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer+Internal.h deleted file mode 120000 index 7882df5..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer+Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h deleted file mode 120000 index 30a0dd3..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h deleted file mode 120000 index b025b98..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h deleted file mode 120000 index 54fbeba..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareUtility.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareUtility.h deleted file mode 120000 index 1654e8c..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareUtility.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h deleted file mode 120000 index 5fe5d63..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h deleted file mode 120000 index 18a9aad..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h deleted file mode 120000 index e649637..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h deleted file mode 120000 index 3485485..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h deleted file mode 120000 index c11b781..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h deleted file mode 120000 index 93bea6c..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h deleted file mode 120000 index 01a430b..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKVideoUploader.h b/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKVideoUploader.h deleted file mode 120000 index d296268..0000000 --- a/Example/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKVideoUploader.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h deleted file mode 120000 index 13badb8..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginManager.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginManager.h deleted file mode 120000 index 810d740..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h deleted file mode 120000 index f38b4a0..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginButton.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginButton.h deleted file mode 120000 index a997dee..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginConstants.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginConstants.h deleted file mode 120000 index 93a52b7..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginConstants.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit.h deleted file mode 120000 index cf4e004..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginManager.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginManager.h deleted file mode 120000 index a791506..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h deleted file mode 120000 index b8cf2c7..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginTooltipView.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginTooltipView.h deleted file mode 120000 index 0f25173..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginTooltipView.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKTooltipView.h b/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKTooltipView.h deleted file mode 120000 index c46a3c3..0000000 --- a/Example/Pods/Headers/Public/FBSDKLoginKit/FBSDKTooltipView.h +++ /dev/null @@ -1 +0,0 @@ -../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKMarketingKit/FBSDKMarketingKit/FBSDKAutoLog.h b/Example/Pods/Headers/Public/FBSDKMarketingKit/FBSDKMarketingKit/FBSDKAutoLog.h new file mode 120000 index 0000000..1bf8cf6 --- /dev/null +++ b/Example/Pods/Headers/Public/FBSDKMarketingKit/FBSDKMarketingKit/FBSDKAutoLog.h @@ -0,0 +1 @@ +../../../../FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKAutoLog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKMarketingKit/FBSDKMarketingKit/FBSDKMarketingKit.h b/Example/Pods/Headers/Public/FBSDKMarketingKit/FBSDKMarketingKit/FBSDKMarketingKit.h new file mode 120000 index 0000000..17e04c0 --- /dev/null +++ b/Example/Pods/Headers/Public/FBSDKMarketingKit/FBSDKMarketingKit/FBSDKMarketingKit.h @@ -0,0 +1 @@ +../../../../FBSDKMarketingKit/FBSDKMarketingKit.framework/Headers/FBSDKMarketingKit.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/FBSDKAppGroupContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h deleted file mode 120000 index 0e81d04..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.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/FBSDKAppInviteContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h deleted file mode 120000 index 61c47da..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.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/FBSDKCameraEffectArguments.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h deleted file mode 120000 index b3b50d0..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h deleted file mode 120000 index 98fc52f..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h deleted file mode 120000 index 0a8ba29..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h deleted file mode 120000 index 3f7906b..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h deleted file mode 120000 index addd63f..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.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/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h deleted file mode 120000 index efe324e..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h deleted file mode 120000 index c29f9ee..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h deleted file mode 120000 index 7451999..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h deleted file mode 120000 index b827828..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h deleted file mode 120000 index 2d4e646..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h deleted file mode 120000 index c981a56..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h deleted file mode 120000 index 4394f0f..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h deleted file mode 120000 index e7e13b5..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h deleted file mode 120000 index 56b9ff9..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h deleted file mode 120000 index 8e28a21..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h deleted file mode 120000 index 4c43211..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h deleted file mode 120000 index 5d14f07..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h deleted file mode 120000 index 9a4eb9b..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h deleted file mode 120000 index 0db4f02..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h deleted file mode 120000 index 14959c4..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h deleted file mode 120000 index d5dc273..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h deleted file mode 120000 index ab62fb6..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h deleted file mode 120000 index 1c00ce2..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h deleted file mode 120000 index adadbe5..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h deleted file mode 120000 index 8e50e05..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h deleted file mode 120000 index c44ae92..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h deleted file mode 120000 index f8b1179..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h deleted file mode 120000 index 30a0dd3..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h deleted file mode 120000 index b025b98..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h deleted file mode 120000 index 54fbeba..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h deleted file mode 120000 index 5fe5d63..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h deleted file mode 120000 index 18a9aad..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h deleted file mode 120000 index e649637..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h deleted file mode 120000 index 3485485..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h deleted file mode 120000 index c11b781..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h deleted file mode 120000 index 93bea6c..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h b/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h deleted file mode 120000 index 01a430b..0000000 --- a/Example/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h +++ /dev/null @@ -1 +0,0 @@ -../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.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 8b6e1dc..c1b989e 100644 --- a/Example/Pods/Local Podspecs/PNObject.podspec.json +++ b/Example/Pods/Local Podspecs/PNObject.podspec.json @@ -43,13 +43,7 @@ "StrongestPasswordValidator": [ ], - "FBSDKCoreKit": [ - - ], - "FBSDKShareKit": [ - - ], - "FBSDKLoginKit": [ + "Facebook-iOS-SDK": [ ], "NSDataAES": [ diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 45b638f..1c45441 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -26,12 +26,21 @@ PODS: - DJLocalization/Core (= 1.2.2) - DJLocalization/Core (1.2.2) - Expecta (1.0.6) - - FBSDKCoreKit (4.37.0): - - Bolts (~> 1.7) - - FBSDKLoginKit (4.37.0): + - Facebook-iOS-SDK (4.38.0): + - Bolts (~> 1.9) + - Facebook-iOS-SDK/CoreKit (= 4.38.0) + - Facebook-iOS-SDK/MarketingKit (= 4.38.0) + - Facebook-iOS-SDK/CoreKit (4.38.0): + - Bolts (~> 1.9) + - FBSDKCoreKit + - Facebook-iOS-SDK/MarketingKit (4.38.0): + - Bolts (~> 1.9) + - Facebook-iOS-SDK/CoreKit + - FBSDKMarketingKit + - FBSDKCoreKit (4.39.0): + - Bolts (~> 1.9) + - FBSDKMarketingKit (4.38.0): - FBSDKCoreKit - - FBSDKShareKit (4.37.0): - - FBSDKCoreKit (~> 4.37.0) - NSDataAES (0.2.2) - NSDate_Utils (1.1.0): - DJLocalization @@ -43,9 +52,7 @@ PODS: - CodFis-Helper - DDDKeychainWrapper - DJLocalization - - FBSDKCoreKit - - FBSDKLoginKit - - FBSDKShareKit + - Facebook-iOS-SDK - NSDataAES - NSDate_Utils - NSString-Helper @@ -54,7 +61,7 @@ PODS: - RZDataBinding - StrongestPasswordValidator - UIDevice-Utils - - PureLayout (3.1.2) + - PureLayout (3.1.4) - RZDataBinding (2.1.1) - Specta (1.0.7) - StrongestPasswordValidator (0.1.2) @@ -74,9 +81,9 @@ SPEC REPOS: - DDDKeychainWrapper - DJLocalization - Expecta + - Facebook-iOS-SDK - FBSDKCoreKit - - FBSDKLoginKit - - FBSDKShareKit + - FBSDKMarketingKit - NSDataAES - NSDate_Utils - NSString-Helper @@ -99,16 +106,16 @@ SPEC CHECKSUMS: DDDKeychainWrapper: e681a4daba6448786fa83b4941f58102a33b1897 DJLocalization: 0c84029af375647d4104a42ae36be87194c46c47 Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5 - FBSDKCoreKit: fe5f3474499a81963e11e3f3a5c753d0a95ca2b4 - FBSDKLoginKit: 2f7249686d1e30ce8a5ef5400eedf50b3e3df332 - FBSDKShareKit: 52e0083222c38e930eb6878007478326599195c3 + Facebook-iOS-SDK: 9077b67c4178ea46c62997bcf2b6314ca6555440 + FBSDKCoreKit: 1e3981faefab8c88edfaa9eecd94aab02d99a9bc + FBSDKMarketingKit: e609f39d74ab273cf52e2f8b7e8829ed412b2827 NSDataAES: 967ea3337476a80e9838a533c25d570a06855ed0 NSDate_Utils: c858a89da6e204ecf53aca48dbccb4da4d25bc9e NSString-Helper: 1c259caa6c845e79e0bb45ee25e34f95d86d2317 nv-ios-http-status: b6c2b5fc8656cc19e0d3000dadce2080b99d0e2f PEAR-FileManager-iOS: 3bc403f68a53483f5629aa822f4649e40275c4d3 - PNObject: d92d660eb43b9385e7148e42598b8a7d3a785834 - PureLayout: 4634d0b61e3b5021166e8ec7c18e9e0ca0720c8b + PNObject: 11e8fe8e955d327a9832ed63f6720f60b877d66a + PureLayout: f08c01b8dec00bb14a1fefa3de4c7d9c265df85e RZDataBinding: 289e2fbdce8b9585afef69def83425c5d380ffbd Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66 StrongestPasswordValidator: 921e42615bdf353513c6f925bffd4fc29865dbd7 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 69c0428..e234045 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,789 +7,566 @@ objects = { /* Begin PBXBuildFile section */ - 00F305AF6DBA128963E6AF6F881D1003 /* SPTExample.h in Headers */ = {isa = PBXBuildFile; fileRef = D46A64ECBFB90E6F8FA173DA56993314 /* SPTExample.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0152742AA1857092355DF70B672D46F6 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B243224F6E2B01B74C79F0377139E80 /* XCTest.framework */; }; - 01D2DF942F5EA2CF9A3521A3038A3329 /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = A373CB0170E3799074B8D43A97F6C3DE /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 02D70F25B1D17CDCA8739A324E39598D /* PNObject+Protected.h in Headers */ = {isa = PBXBuildFile; fileRef = 2259653BA47063BB08391397AA4D6B29 /* PNObject+Protected.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 033C96EC85C29D83F41E8691272AA89A /* SPTExample.m in Sources */ = {isa = PBXBuildFile; fileRef = B926D05DE0F6797BC2493E0BBC663EE5 /* SPTExample.m */; }; - 03C3DFD87D3672F4A0277718D96AF3AC /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 47529291057D7967C6EC1395C1D3517E /* BFURL.m */; }; - 048261C6DC90BD20FB6B7D80D39FAAF1 /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = 3947CAB7BA76C2DCF9C1AC6C4B8B9816 /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 049957B67D6CDCEB437E71E659F55E0C /* FBSDKEventBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = 03544C46C5B4889BCB1205F7BF2604A1 /* FBSDKEventBinding.m */; }; - 05185729116B927A056C7AF9754C4539 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 70809CF813292F967C2F301B243571FB /* FBSDKLiking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0550B4BF59B1049BD82A1D505D494E7F /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FFD442C08D07342BF2D569764C17502 /* FBSDKSharePhoto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 08A77C331857F6CB64AE42ED3A2C2668 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D49012A51A1B5C9ABD583D3B12D61E1 /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 08B1188775832322BF1A45824DD88321 /* AFOAuth2Manager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BB30C0BCCE010C3483BCB26EC8864B3 /* AFOAuth2Manager.m */; }; - 091323A9C683CC6AE616CC5C2E6703B8 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 16462DED9F55E0ED16FFE38C1ED53CD1 /* FBSDKProfile.m */; }; - 09712EBDA1994961CE9C31F1EFDAF894 /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 31AC3BF6268C5138FFE5B801AAED212D /* FBSDKGraphRequestDataAttachment.m */; }; - 098562CA49DC385B7C4EB46B312A1C7D /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D0DF3729BE6BBEEE00F9B91E3D1674F /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09ADD3463A685ED824702245C079C8B8 /* FBSDKDeviceRequestsHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 193E4E44508695DE7A55DB438C385177 /* FBSDKDeviceRequestsHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09C0057FD1DEEF4659BAB5030B00B77A /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 264E69028A0C84EABC73E28CFA284AE3 /* FBSDKAppInviteContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A004A774371313724FD2CDAB8E028B7 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D257A2F765F81E2A8F1698939933D63 /* FBSDKConstants.m */; }; - 0A1AF115F308A6C498AEDDA1EBCF3CF1 /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C42A7B280E657A70E6DF71DAB0887DB3 /* FBSDKBridgeAPIRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A1CFD0C8DB65F5B278C84D60E8AF191 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 255326F6938207707C684919F7491B1A /* FBSDKGraphRequestPiggybackManager.m */; }; - 0AE212F7CDA9749547620FE976BA88F4 /* EXPMatchers+conformTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 800D7827EDE27C97F6CF2751A65EAC01 /* EXPMatchers+conformTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0AE598228DE88AC96D9F004D7E3030FE /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DA4EF941F355AF232E76D0362583A7A /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B125FBEA33B922D6A58FF0617C8111E /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = A2ABDF177C47796393C929E00486BBD2 /* FBSDKProfile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B1796622C52B0FB7C4C83A1DFA9B473 /* BFGeneric.h in Headers */ = {isa = PBXBuildFile; fileRef = B9AEE51E846500100F68164B7E238349 /* BFGeneric.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B42F3E2DD16761607DF335860AAE4F3 /* PNObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = D527AA5FFEAFD1EA9BDEEB3573A1DC51 /* PNObjectUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0BAFF1949FC6F2B5F412297CF4375A94 /* NSArray+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = F1406D8AC4FA98818B9092CEA3E20A29 /* NSArray+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0CA0E2158F6EB8006169912283109B48 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = FFAF6BD0022B3CEDB7E260EF8F44B4FB /* FBSDKLoginManagerLogger.m */; }; - 0CAB4EEE9D9F8E1A47F24FD2F28FB6D1 /* CodFisResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D63D39F5A65930A719EB5CA354755F9 /* CodFisResponse.m */; }; - 0CE53BFCC4DCA47C9CDBB607FF4DB660 /* PNObject+PNObjectGETConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = BD34E4911A8C97EA3C3543FD49C2D096 /* PNObject+PNObjectGETConnection.m */; }; - 0D0F452B575E190C7213A91EB17B2F2C /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 82A9CE801509DD721875DFD93FE32730 /* FBSDKColor.m */; }; - 0D18D671FB019E5EFAA82CEBA4D6BB92 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E357E32EA8D6A9B3888D3596C3AA3776 /* FBSDKServerConfiguration+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D3C5DD6B9F4D84D787D9AE239C810AB /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FC6CB7CF81A4D88DDFFCA3A269B7F29 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D7E001306FB9D7B7CC00EF937083824 /* FBSDKCodelessMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 87ED635594827F2E8464EDA2788E6D55 /* FBSDKCodelessMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E0943A0BD830457B9F09EAF47750295 /* PNObject+PNObjectGETConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 408972FACA5A1B21A155BCAEE932439B /* PNObject+PNObjectGETConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0EF9C95C80360F9C598CBC725E365EAD /* HTTPStatusCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 68851197844455F40E4C06D94EA40DB6 /* HTTPStatusCodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0FB0184291757E2845799BB6910C182B /* SPTCompiledExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D0E30867072236A95E7876836C8F4A4 /* SPTCompiledExample.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1053B2DB6537E9415F0EAA416CEAA76F /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = EEC193E3F520E1B6AB4F3372A37E4BAE /* FBSDKLikeButtonPopWAV.m */; }; - 1080F1D985357A95E3F9829CF4C19E80 /* FBSDKURLSessionTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EE551CD8266F254A5DAA54EDB79C7BA /* FBSDKURLSessionTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 108871841048D34FCD7ABE208F1C4D0C /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 898F592C01E433162EEF7551D2AAEFB6 /* FBSDKAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11370609D1CD9B9107F787C3BB5B4492 /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = C4133B738A4980DB8CFA963ED740C59C /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 11A17EFE591AA340A6CE7A274DC1987B /* FBSDKCodelessParameterComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = CC7C2F2E2DE9B376DAAC74105A9F6666 /* FBSDKCodelessParameterComponent.m */; }; - 11C3318EF5EF0363DF1E0BA0638BCF43 /* FBSDKAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F72703BE3D6FC73268CEC1B54CE873 /* FBSDKAppLink_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12391E62320C3781CAD46C0EFDD589C7 /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = E94C13ABE0366ABA3DE88BB136000108 /* FBSDKLoginTooltipView.m */; }; - 1316AD4724A521235B74E419BECCA208 /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E15D107A27585EB378759650D71B11E /* FBSDKPaymentObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1344771FCD7E484D006FCF8B82604547 /* FBSDKShareMediaContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4138F15DE6BC317FEE875C58D5E9DF /* FBSDKShareMediaContent.m */; }; - 136EEE92B8F627C7219894D51F87A071 /* PNUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3508A777B47A718379F2EAF4270531DF /* PNUser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 138F2AD3773BBFF3CDD2764FF13CD27C /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D200A199F3480AC54156D74567862E5 /* FBSDKAccessTokenCache.m */; }; - 1477A552AA3E3027A18F09B549FC9115 /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = FC174185FAB7A4F971B645D5474701EF /* FBSDKProfilePictureView.m */; }; - 14ABA42FD2E2ADFCECEA08CF5DC158C4 /* PNAddress.m in Sources */ = {isa = PBXBuildFile; fileRef = 87AAC9B7E486DDDEEFD4F57F7AECF48F /* PNAddress.m */; }; - 15A83EF248565323AA06F18C58CA1F34 /* NSData+SHA.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F1A0E415C3F797F256FED40444E2DD /* NSData+SHA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15BCB2AF5FB6BC37B64AA1FF69CB31E3 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FC98C93277D7E6BF8CA5D23CB43D95C /* SystemConfiguration.framework */; }; - 15EFA090B7770B1148DF5B475DAC2027 /* SpectaUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = D67B3C8C11BB65F8C4C53C7A4AE87EAC /* SpectaUtility.m */; }; - 174FCA70BE25DA6C1F884D62421CF464 /* PNLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 68758C3411A71AEED45A7CC14C650578 /* PNLocation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1751090389BAE32331DF7D6C14732F88 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = E7B7AB25D5DD7C7CB8A762BDAC5BA64F /* FBSDKAccessTokenCacheV3_17.m */; }; - 17A9072498EF63122AEF07383B4A9761 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BBD3EC1F0D7D8327357AA769BBD293AC /* FBSDKGameRequestFrictionlessRecipientCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17A9449C050498493A1F79B62E8D6E55 /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = E251366A8B36B8B9C9DC672E8D750278 /* FBSDKAccessToken.m */; }; - 18280685903B8517AA27746BD27DEC76 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 207EE05BFBF535B0FBCC1B4F35245968 /* FBSDKAccessTokenCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 183E2DED78A76D5E58A41D8D017DF9C7 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 21382B817A2018EE60879362EEAA5FE3 /* FBSDKAppEventsStateManager.m */; }; - 188E716EBDF21E71A02CC7EFB29C6C30 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 35B32CAC5F01D66EA844A8CC98A49175 /* FBSDKAppGroupJoinDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 18F5664C8CC2918D6A165D1B90D9C8E5 /* AFOAuth2Manager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2EE15DA3B2D963CF915EE5204C254F /* AFOAuth2Manager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 197BD0EAF2B8B8E1DA7B65B82E27133A /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AC81A0D2E762BD988AF1E7E0BBC1AEE /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1A3ADB043C2D513D9258861EB23A69B2 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FA46E687E1312187756E021E50CD42E /* FBSDKLoginManager.m */; }; - 1A40002D8D0F2E1C849C829D99A38DA7 /* NSData+AESKey.h in Headers */ = {isa = PBXBuildFile; fileRef = F7864DD1693A7A235C28BC7C4D10B58E /* NSData+AESKey.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1AA16342BE87ACC6DE2BC83518BDFCF6 /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 452E64327494846C3D2E7CAF2898AFDC /* _FBSDKLoginRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1AB0379AA91C582CB55A4611628D2900 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F888E9855668DCC7F64E0402CBE13CB /* FBSDKLoginError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1ABAD35DC2453FC1A7BB3B94C8746AB5 /* DJLocalizationSystem+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E2164C3CCF342AB7241FC9A9B7E17F36 /* DJLocalizationSystem+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1AF719F550D1F36CD24805149417F8C3 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A090559352B38A5116A2F0A8B9C1497 /* FBSDKLoginButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1AFCC51E6CD2BA28739A25FA32795D26 /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = EE0AC7D4EEAD02045DC937D7BD2C1C23 /* FBSDKLikeControl.m */; }; - 1B5631ECABDFC196E23F140C0337213D /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = C06378B48C7515ABB5B949DE8B63375D /* _FBSDKLoginRecoveryAttempter.m */; }; - 1BE70E91E0121441BD9C9466364F67F8 /* NSObject+RZDataBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = C18D28F8319BFCC61B6C109FFEF432CC /* NSObject+RZDataBinding.m */; }; - 1BFC968ADFAF4F910818A182CDF07EBB /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0520C7E3795A436FFB2969476664B7D9 /* FBSDKGraphRequestPiggybackManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C34EC9BBFDDE10CD9F3847B75EDAAF9 /* NSObject+RZDataBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = EA897AA5523D9BBF72539EE0EEDE87A9 /* NSObject+RZDataBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C3A9D56E54E41D20E4977EB35C5A318 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E774A5077A3054A8BBA9C022C1E29F4 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m */; }; - 1C5BEFFB0A0C786594702A006EEC6CE5 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B31A3DA2188BE0FC38C6889CC1B9DCDA /* FBSDKSharingButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C5DBE11967543148446FACF449C3885 /* FBSDKCodelessParameterComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A7FDB37BF24244A3C52060B82A5DB49 /* FBSDKCodelessParameterComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1CB925272502B9378C5DF891A6FC1502 /* FBSDKDeviceLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 97235C98D0D6BE67142911F95065B66A /* FBSDKDeviceLoginManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1CBF9A754FEBA4FD0E5D8AD2EB3FFCD9 /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 78ADC27CAD5317640AD7062E17593E6A /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 1D0D64823BF323E997715CA85450E551 /* FBSDKAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FB864BD98F199EA7151B86D7776B8C3 /* FBSDKAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1DA3E5951079ED7BB5FBC108102BB150 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = F50D11F39AE29BB5A0578C32B1DD4D06 /* FBSDKMonotonicTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1ECF3D2B32C6DED2CE0769D30757CE08 /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = B147DE1A7260EFF4D15C8B36FF290A4E /* FBSDKShareDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1ECF98F86E123748E422CD05A555235E /* FBSDKDeviceLoginManagerResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0927668E0C2C5C5630C5BD9F8AEFF05B /* FBSDKDeviceLoginManagerResult+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1EFA02B376598B7BBED28346C8753E28 /* FBSDKAppEventsUninstall.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E73B3A37690059AD6CD0A5E0C51DC60 /* FBSDKAppEventsUninstall.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F65EE7AF8BB1BA499DE41B3611F9789 /* RZDBTransforms.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C1F83A82EF1E725A2A7424E4FC2641E /* RZDBTransforms.m */; }; - 1FE049AF9EA4DFEE0ADAE2E08F0294F9 /* Expecta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D9C88EC650ED2970A74902F58713724 /* Expecta-dummy.m */; }; - 1FE4E5B7FD421540AEA91A0DDF9728D3 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1798DBD97EF8F8F206F34CCF900897F6 /* FBSDKLogger.m */; }; - 201D40D63C43A4FAB1082EE5098901EB /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = D6687C4432E52053F517767D035DB259 /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 204CE0368C63B493BA94C67D70AF19CA /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C681477C9407E00FE027DB25A56590 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 208E5B367B5ACA775FDBB8239726218E /* NSDataAES-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EF80CAB2F23373F48E87570F7ECC5A9 /* NSDataAES-dummy.m */; }; - 2095A32CF66523D4354C9DFC8B6DF931 /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 626329BFEA37AF9E99A2ABC7DFF906C3 /* FBSDKLoginConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 21535B6B089E5472A3250B0C56893BA7 /* Pods-PNObject_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 73B30F1E60DA52CB98F98C8708976D8F /* Pods-PNObject_Example-dummy.m */; }; - 21809E415ACA6A73B8DE677487C5E61B /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ED6A22CEB2E40168F13BFCD2FC0DBC3 /* FBSDKBridgeAPIResponse.m */; }; - 21F2EF2767136B85E80E026A974D9CCC /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CFFE266989CAEEB105125FDA511198E /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 222C650B3594A18E7DB0AD88FD5C845F /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = AB9AFF952B2628EEF3D2785E78D3666C /* FBSDKAccessTokenCacheV3_21.m */; }; - 224EBFFFCE79EF531EBBC5764B8F47C8 /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B33648BCE03F8F323A600AFB2C4184B1 /* FBSDKShareLinkContent+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 22D77C86C41F5BD76A0A4437BB30E166 /* FBSDKEventBindingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BB9A02B49FC5E7C8A2B9A5D4DA1F980 /* FBSDKEventBindingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 22F5AC77C784F4F179A7763B90B24A6A /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = BAB42CCC406C6A5E4743ED0336157DA1 /* FBSDKShareOpenGraphContent.m */; }; - 23FC5CB7AEB3CD68F5BA662EFCAA5F93 /* AFHTTPRequestSerializer+OAuth2.h in Headers */ = {isa = PBXBuildFile; fileRef = F76C90725C029275161554BC0426191A /* AFHTTPRequestSerializer+OAuth2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2405168C50070FEC7A7C15EF29083177 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E65A5B341221CBEEF0E88382CDB87241 /* Foundation.framework */; }; - 24F18AC451AF480B2AE995F6AAA6C28E /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 2562B5BCB3BB4273DD636EBF7CF6D668 /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2634D93125CFB6C39D524F1F7F4C069C /* FBSDKImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = B19299E53733482BCF184D69D0D9D4F4 /* FBSDKImageDownloader.m */; }; - 2647288BA688C6A1E74FBD05CC04D164 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E61444B20CBFB611DB03797D93038E0 /* AFSecurityPolicy.m */; }; - 267A5EFFF05B4A200CA9FA0F62F89E4B /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = D130FE1B704C334E307D8657EAF37098 /* FBSDKLoginUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2736DB4B35A53B66F656FBEDB5FD29C8 /* FBSDKDeviceRequestsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 42853A0181BFFC8BD67A522A40B3D75C /* FBSDKDeviceRequestsHelper.m */; }; - 274D7D0AD4D167B0E2D0F9D38A32C31A /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = E7CB4A36C71DCA9004167558E6FFB3DE /* FBSDKLoginKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 27AE1E66223D92B631DB67BC329BEA61 /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = A0392097A153840E34B245E5BC8B3EF4 /* FBSDKShareError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2800FDB5AA5EDE296635E8BC3A07D292 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = BD0EDE71BBA1CCD2D49375A35F02988C /* FBSDKViewImpressionTracker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 28ECD775F8DCC733D298F8ABA2013C6A /* FBSDKShareMessengerGenericTemplateContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5870AC01A2B66DACFB5EF8DF86F3A3E9 /* FBSDKShareMessengerGenericTemplateContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 295F39241310A5652C790ED165CD51D8 /* XCTestCase+Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = B729151CBE9D4D3FCA84A885A7FA8AF1 /* XCTestCase+Specta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2976B0ACA2F8F18E7BF4242F5F0EB9A4 /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 12DBABF54A0D1A13073266DEAF71AB5F /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 299BAD28841F9E59571012470D83E9DB /* NSArray+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = BE635994183DF4CE80601C6FB12722E3 /* NSArray+PureLayout.m */; }; - 29F6FFB37AF9E82BA73AFAF917DE483B /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = E0FF3EC47A42286B181021A479DD1803 /* FBSDKShareOpenGraphValueContainer.m */; }; - 2A4536F0731EC4249479D0F6805AB9EA /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = B13B325A3DE8D33ECA3430517021C0F8 /* FBSDKSystemAccountStoreAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2A4662905490343662D2B5C9BBE10845 /* FBSDKAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FFDDE1BDCD388670D4D56FA7A5837D7 /* FBSDKAppLinkTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2A7B906C6E4C44D16C334B19B29D502D /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = C3E3FF9898F600C508E5121B11879A62 /* FBSDKServerConfiguration.m */; }; - 2B8DA2E4560E08CADAF8524226832C7C /* FBSDKURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 41D7537A4D4D5D37F50A1831829FD47A /* FBSDKURL.m */; }; - 2BB317087B5BD4CEEDBF599295F74117 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = 098D32B91683044612866E4D6B655190 /* FBSDKBridgeAPIProtocolType.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2BE5F801929C0162A2EC55CB1232C056 /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = DE67682584A286D51ED20B31D084E028 /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2BEBB43A11CC5E3860D8B864F3E4F620 /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = A20E26A23FB1A3AD970DC56195FABB73 /* FBSDKKeychainStoreViaBundleID.m */; }; - 2C7EC772E87A746723857AC903AF2F90 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A8C19BF201CB6D0FEAE915501EAB18B /* FBSDKServerConfigurationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CBA5742A8F4A8B904F9C30717BAB2ED /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = F3C4A3461A90A87F919F4C075AED6B06 /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CDF58E4DBD75C68C7DFA7EAB88234BF /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A615662CD3D253D18C81ACEB4D51FEA /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2D6D441DC7DC9152121F61EC3F74D8C5 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E5C60BEF924ADC12560A04F338BBB59 /* BFAppLinkNavigation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2E7BD4927D6049811F367F4D0952BFE7 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 955C1438A6C55A109024ECFE0E59F2A6 /* FBSDKBase64.m */; }; - 2EBB3871169ADA80543D579DA2B68C5F /* NSData+AESKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 73C4CA0DDD20C9404F022699B69E1C8F /* NSData+AESKey.m */; }; - 2F00F1852018F6AF3EDAFD7E8ABB744D /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = 872397B71CB788624C68B559D4C409E2 /* FBSDKAccessTokenCacheV3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2F3272F9B3E950E60A797EF3BF9D1A61 /* FBSDKShareMessengerGenericTemplateElement.h in Headers */ = {isa = PBXBuildFile; fileRef = CAE94A7CEF07674CA5A9504B98BB4B9D /* FBSDKShareMessengerGenericTemplateElement.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 30DC49514C1A0C670507330948AAB941 /* ExpectaSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = E1A28981401446572FE29DAC9570ECC5 /* ExpectaSupport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 317B01976E992013776876BF69F013C5 /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 40847E3530278BABA50E27F042C4A6D4 /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 318F82D2BD9FF120D4D9EBCE096E9963 /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = F2399C18A88B380AD1FBABFD1ADC63B7 /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 31C7D5A52A23943A31FE7BB18D7D04B5 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E58EFDBC0BD5FC5AA09EF2E78FA9FC6 /* AFHTTPSessionManager.m */; }; - 3222DC27D07E09F14C5AF5093C2BBA9E /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C4AE2EB524458DF5D3195C2082156FDE /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 32522D61F476D77D64D49C33DC711869 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = CB62F7CE20B50C030CBE53D47D42937F /* FBSDKShareVideo.m */; }; - 3266C3E22519A5D701B1E51D9C19656B /* PEARFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A4A34BDF7F1C2EF28E102545830C36B4 /* PEARFileManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3328BCF13ECAA14F6A55B3913A9563A9 /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = FC1C84083C56DEA9692B2856DE211395 /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 340798B6FC125386C76859EA154B51E2 /* FBSDKAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 69BB3407552D83DCDB500A2BCAC62AA9 /* FBSDKAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 34247D73BA4ED2166489ABF8D5FB42C3 /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F6FFF41F5657EF1F9999F87B32D0ACE /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 346777A7B527D4304B9A01624EA0483E /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 949B94603FCE91B73D37C7942A1DC84A /* FBSDKLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 34F69CC34872B435330A29D530FE63A4 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C74DE409E2F8EB010B597C7B60FC2295 /* FBSDKCoreKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 34F73CE41B0F74002D57370081D3D60A /* AFHTTPRequestSerializer+OAuth2.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF3EFF42698A9901B54C38949D90B56 /* AFHTTPRequestSerializer+OAuth2.m */; }; - 34FFFA1167F9A5A163406DF4499401E7 /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C281D535337DDB08FADBA3886092C98 /* FBSDKCloseIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 350451B877576A77F8E59C5644EE3C56 /* EXPMatchers+beSupersetOf.h in Headers */ = {isa = PBXBuildFile; fileRef = BED4CE54AC8106A6864F85607C1A6976 /* EXPMatchers+beSupersetOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3524D932E585DFC2A41B081B077D6FDE /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FE24076474E62A09BCA909DA1A68CF2 /* FBSDKLikeBoxView.m */; }; - 3610BA1DA288AC37DD83277DBCB50B00 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = A166368F7803FF5D28A6F926C6EA624E /* AFURLRequestSerialization.m */; }; - 363458F1BDA4A3C107E84C6060AB3A7E /* EXPMatchers+beSubclassOf.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB9389E6BC749689DAF1C72BD35634 /* EXPMatchers+beSubclassOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 366F79F8A5C97EBA6483C5E33D351461 /* SPTSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C5495006CAFA9B3AD7DDB0535CA4CD /* SPTSpec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 36B6A108F6DA30A5D65A92A2A2C88DB6 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A9C72854AB6B24B7EDC326DA284454 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 36DF1910A3A1B78FCA8C5D64C1124757 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 50AF06AE6DE7B9BAEEA4794F8B2A879B /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 377BA877A725435D078BD8591ACC2271 /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = 748A5B4FCF6878E666806705BA41E859 /* EXPExpect.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 379EE353AAAF4E1C20360A28426F81C3 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2C67768601CAAF60233B174DB92151 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; - 37E74BB611D287EA8DA7D4A9433ADCC3 /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = DF997915633455E830598962FABE969F /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 38DD78F4364DEC953B9F985FA92A3FB4 /* FBSDKAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = BE26F71E3C57510BE75F06CA83292052 /* FBSDKAppLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 38DEA83415273708C683A11099389EDE /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A189CCFF17CA7A7B9FFE7F300CF2F715 /* MobileCoreServices.framework */; }; - 3934CBF26A913E61688A22F32249BDD5 /* FBSDKVideoUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = FCD1EA6A6A7C243E0424BB20F7AB9F52 /* FBSDKVideoUploader.m */; }; - 396019EFCD86DFFCE38988E275F393DA /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BB2B82D03CB3906ABDE6669ED9D833A /* FBSDKLikeObjectType.m */; }; - 39B59AE5EB29B1F0BB134DCFA3E02F66 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = F04DCF6C3EF993D25317DBCB0D789345 /* FBSDKWebDialogView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A232DA217B1001ADAC04AF1DED9DB36 /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E103652089DD85A4A5A16985A7C35A23 /* FBSDKBridgeAPIRequest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A5D233A243A3B622CFEBE69417C5311 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 96469ECD1F7F9EE7F98E75A3797FDB8E /* FBSDKGraphRequestBody.m */; }; - 3A60D4659A54DA4A4013E1CBE261D9F2 /* FBSDKMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC2B7BDEE80DDFF3EA3524AB6E7999D /* FBSDKMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3C4D25D70D007E6B5633FE23BE6B2CD4 /* FBSDKShareMessengerGenericTemplateContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7C69B54E006EECF1C28F66946D96EF /* FBSDKShareMessengerGenericTemplateContent.m */; }; - 3C9ACC4D8CF8870CB1D991F45D8FFA43 /* AFOAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = FE13F68BA7E00A87F6382640DA4031B8 /* AFOAuthCredential.m */; }; - 3CBB32A2E0C543FB415508C2BD5EB93C /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D5E98EF533DB073454B50533F063ACE /* FBSDKBridgeAPIRequest.m */; }; - 3CDDB713C31C45BA2279C4A398ECF24D /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D5D5A109336011BE64863B8BBDCF230 /* FBSDKMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E66C3E919E8B5A41952912EE11C028B /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = D0D00D31B319D6657AF1BFB3622F4819 /* FBSDKTooltipView.m */; }; - 3E7AF8FD5D0B9BB6CE7C6A2245D686A8 /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 32A83024C86330332FE1464C4AD7953C /* FBSDKLogo.m */; }; - 3E83440DD72381F99AF66A1C0D5E5461 /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ECF7B3E0E8A8B859C7A2F89B06AAA26 /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 3EED88EEDE1C0C7A16DC71CA2DDE4EA3 /* FBSDKShareMessengerActionButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 6085CE9C47854FC205AA516CE066CE0F /* FBSDKShareMessengerActionButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3EF512C592A4C3ED940D79AF1A684B5C /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC28F0107C2466419BBD9DE692C5399 /* FBSDKApplicationDelegate.m */; }; - 3F75926F86F06BB85DB6F865FE9F7966 /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = AA77261700278C71645546302461BF34 /* BFAppLinkReturnToRefererController.m */; }; - 3FF4180C47E4C942A0EFF31E974381A9 /* PNObject+PNObjectDELETEConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = A08AE125079B781AFAD3479BC84A9403 /* PNObject+PNObjectDELETEConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FF44F4B7C7249A431DE9B6A01F006EC /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 718E9C888B54AD428B7A5D9DF4D5ED56 /* FBSDKGraphRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 40509D22018572758A17B9974F7A4189 /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 7642275934E424A63198BB2B53B41144 /* FBSDKShareOpenGraphObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 409A1CC1433E5C95EE7CE682A2E2E0B4 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6732E2A7357018A011AC949878023A74 /* FBSDKGameRequestContent.m */; }; - 40BBC298C02D608C2D6C5954C47D1A94 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = BEEF5F450117F10026EC99F89C596C84 /* BFCancellationTokenSource.m */; }; - 41617DB18E0304559B81D83FE6D10356 /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = FE6EABB3BDE91D97C148A51DE2050436 /* FBSDKMaleSilhouetteIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 438D276A2D57438A513843B07D96DF03 /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 6727A49F23F5D0E57AD124C38F13BFE8 /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 43A375FD41EC165799C29D1A236A5209 /* DDDKeychainWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A441E9586B3C8581D76BC1E0A03671 /* DDDKeychainWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 44137D4F96AFCC1B3B9656F201140F35 /* NSDataAESCipher.m in Sources */ = {isa = PBXBuildFile; fileRef = A2C3EC08D3C5AB7F67EF98D3DF744910 /* NSDataAESCipher.m */; }; - 448052C6B70F1BE9B44B7AFB9DCEB45B /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 176E870DCB3AF59CD26DB552E58F97DE /* FBSDKKeychainStore.m */; }; - 449CEA122C4676A1B00D3A3C3CBE7A6E /* FBSDKCameraEffectArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = F3C7BC76A5F427D2951B7C3F2DB7CEFC /* FBSDKCameraEffectArguments.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 44FD0E419777DFA3AD0463D952EB0772 /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ADED0A7769310FE904BC209FDA425FA /* FBSDKShareOpenGraphContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 466523A1E1B31C1AA8FD5BDC3B434F0E /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = A97FC406D15CA4B86550A496F6988BF2 /* FBSDKLoginConstants.m */; }; - 46C0B3FCB2E2C02C974CBA1411DFAF25 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DD181996D4B1D7A965555F0BD9DACCF /* FBSDKAccessTokenCacheV4.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 46D0DC84B3B40B9CB044D74E4709C754 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 172CA916B01ADF01834F21D4BBC99E7F /* FBSDKLoginButton.m */; }; - 46E4B5B6B00026940A4F68E4B3DCE84A /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 06475B8A4E97FA30A4B8FEEDCB4EAF7F /* FBSDKAppGroupAddDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4739AE05F2E34C90B7BD2AE0BEB92650 /* FBSDKURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 35BE26673679AF3E2590326B5CA04ECA /* FBSDKURL_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 47AF601E76F55D5A1DB9D2BDA3A68B4C /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D751AFFF300A2F684AE78260EB03685 /* BFAppLinkNavigation.m */; }; - 48CCA302404C30F8C62A1122D6A51826 /* UIStoryboard+DJLocalization.h in Headers */ = {isa = PBXBuildFile; fileRef = 88CABB3CA14023398BAF033A078AEDCE /* UIStoryboard+DJLocalization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 494F9C90E427437A64345EFD97B24110 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 805B50B7ED432F0E73C491477AA168B5 /* FBSDKGraphRequestConnection+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4A98F2855308B3D4747CADBFD1645254 /* FBSDKShareCameraEffectContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A0E9946A5BA7F2E0540229B719AD8A8E /* FBSDKShareCameraEffectContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4A9A562406FF3C97C4129D66B18F6859 /* EXPDoubleTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 3551BEEAC27EF8D09CD29F52E558D806 /* EXPDoubleTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 4AC1B9D0D40CAC17B102DDBBD3BA0999 /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CF9487BD2BD29A89969AFDC1E824BF9 /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 4B6FD049765DBAE95476186D50C81A6D /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8847F10A21BF43DFF71395A3E1AB5A59 /* FBSDKBridgeAPIResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4BCE79019BD603FF6B7775814DC455E7 /* DJLocalization.h in Headers */ = {isa = PBXBuildFile; fileRef = A99EA254D66D2678098821F32E154DEF /* DJLocalization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C0526852A3E399A470F21927CF42F72 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D3091B1C12A13E5647BD49E81D3CF04B /* FBSDKLoginManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C35E7911543D1BC76F8C272C36640DA /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8027B64849AE705283D770AE136C543C /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4CD6CB8AAFF20879DCBF76E285F28E54 /* EXPUnsupportedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 544310B55950B4943152573ED2AFFE8B /* EXPUnsupportedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4CFEAF71BBEA78F270AC77A312256950 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FD2F4B240BEA72CCF0601DEFB7DF452 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4E222FAC164C5AF9D134FAA764D1AD01 /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2D8AC6F61FDC1242D2122868466363 /* FBSDKErrorConfiguration.m */; }; - 4E948B6EEB7EB8AB4979EBD6794E254B /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = B22E0A3A9166CC492A6B1197C5CEBFF8 /* FBSDKMath.m */; }; - 4F38CAFE2AD68D3E5D36A79DCE736D2D /* PureLayoutDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = E3B47E60EDE1E9A02809DEF9923F4931 /* PureLayoutDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F6B9E97C001CCEC71169ED327BCA693 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B7877ED51692A3542CF09D985F7F4943 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; - 4FAAB3660027FAC050A74C50CBD73231 /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 369556203A1B8AC26266ABF8A2697A2A /* FBSDKConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4FDB78C8DBCAB8394F6858ED9A0AD888 /* SPTCallSite.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E19E7F2A879610962D09F17D159E49C /* SPTCallSite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4FEACBD15B82E17E01DAF9C08F9A3845 /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 384BF2ED884F26B398ECBCFA92CF6E14 /* FBSDKLikeBoxView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 508388C4C2D0C7F15FA3C49B1C83ADF5 /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D29203C6537617FB954FDD799C384F58 /* FBSDKLoginKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 51157F5787119DA743B3CDCF26C2BC82 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CF110C040A6C071E0CCA79CE2745EE0 /* FBSDKSettings+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 513AC396F7199753D3A09DB4D82E9D76 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = A0E40EF9DC8E81ADFAF25AC32D7EABB2 /* BFAppLinkReturnToRefererView.m */; }; - 51F525AB91E0FBAFD33419A6D658D346 /* SPTGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 7332C1E49582D8BB28F10D054D709139 /* SPTGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 52013313F8863A2E5BD7EBBBC151080E /* FBSDKCameraEffectTextures.h in Headers */ = {isa = PBXBuildFile; fileRef = DD66E6FED006CAC3550B19E204BEC63C /* FBSDKCameraEffectTextures.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 522785F8A1647F9D2428F3F09B72B639 /* PNObjcPassword.h in Headers */ = {isa = PBXBuildFile; fileRef = D42FD38E24E40D4390E6E20CB316304F /* PNObjcPassword.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 522B93E3C9779AC51A0B6DDA8DBC3169 /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 21EE23B56B6160B8FF9892C879BF17BF /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 530F9F7F9A63D142BBCF8EAAEC3BF49D /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F1D6EF45199DB45509D1E7117799302 /* FBSDKTypeUtility.m */; }; - 541A150F47F274A2E75151231B26278B /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 382F7323EE572C7B5BEEE17B4A8BC464 /* FBSDKGraphErrorRecoveryProcessor.m */; }; - 542EEE9F64801548D7D715C76DE67212 /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 40D0360875987A8961CE4CDC11E76684 /* FBSDKTestUsersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5454C3D7021E044D6BFA6D2B0170BC59 /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = C36D0990929ACC7C7E57A00EA14900CB /* FBSDKMessengerIcon.m */; }; - 54AD6DE6A29D9DAA91597608E2FE005F /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 565ADF0C1EA97B982FEB1A8BC05B7C2E /* FBSDKSharePhotoContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54FED1ABB9325BAF9830CD2828198843 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 77AFBC5B46A02911078C7A0E7E9BB0F6 /* FBSDKBoltsMeasurementEventListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 552B55E25CD26A0A0881FD8C7855EF2E /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 157C7F2CDCAFB2C0654489B1DE32558F /* FBSDKShareDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55BC5838B2C50DCB0660F1FC1F3D4916 /* nv_ios_http_status.m in Sources */ = {isa = PBXBuildFile; fileRef = AC0454B2B1FCCBFAFF0A59DD5E5C4F52 /* nv_ios_http_status.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 561EE129AC0DB801204077B18B6A035C /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 3278C19DB886D77F2D550A9BBEDFB91A /* FBSDKInternalUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 56C2DB17A9779095DC6A92D40560E170 /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F1BF5543D80B51DF0A66E88F653F3435 /* FBSDKButton+Subclass.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 56CDEC1A2C8DC901A01F0358A08EADBC /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 057B5D00B60E06F193E8BC4B3E2444C3 /* FBSDKURLConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 56FB80211E0860AC159095C4E100C3C2 /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = 15ADDF66D61DF3F757DC15DD22960A85 /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 57072620B5F92EB21C27C92109189580 /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = AA7D9A7CB43B42B8194FDB3FC3BFA0F7 /* FBSDKAppLinkResolver.m */; }; - 57DE7FD54FA977AE629EF8DC9CC40DF0 /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 894A257D948EE417BCF17996CA3F53CE /* FBSDKUIUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 57F1098F692CAEE9463F08D4BEAD6639 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 95CE3638CD655496A931B5F3D3EE6709 /* FBSDKGraphErrorRecoveryProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 57FA9C9E75997394348C17E6F2F7DEB9 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 8714BC79FC4AE625BF543612A8626CDE /* FBSDKLikeObjectType.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 580133EA8C6B03050D04359FBD1864A5 /* FBSDKShareMessengerContentUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A9179BB63F92444BB2D72730D28C05F /* FBSDKShareMessengerContentUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 584B3A9ABE4DB7870AD38335D696F48F /* UIDevice-Hardware.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D17E600DCFB32A0E02AAEF855AAFEE /* UIDevice-Hardware.m */; }; - 584EB991FA3571F93AD6C6F8CBE40ECB /* FBSDKCameraEffectTextures+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BA24DC711C9A9BF728E911963B7D295 /* FBSDKCameraEffectTextures+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5855C9103CD56D525F718C56B1415B18 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = BC1E39658FAE36DE0487BC875B578D96 /* AFURLResponseSerialization.m */; }; - 588EBFF034DDE1388B6B8204CDE44163 /* FBSDKAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = A5BFAF03F4C3972E82C33C9CC26CDEBD /* FBSDKAppLink.m */; }; - 589A28C1BD126C470D35FF87C1731232 /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = AC0C36F361714BF3701DBE769DCC4D51 /* FBSDKDynamicFrameworkLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 58E4A3FA33E8AD9728E8E8BE06459E0B /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 97652E23694192076D88B7C98EA13878 /* FBSDKCloseIcon.m */; }; - 58FAE1B62B5CB317C1864645E4A00E0C /* FBSDKImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9112F85BC4C12A79ADCAFEBD6501AD /* FBSDKImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 599679184FB094F22D2006ED35BE11EC /* PNObject+PNObjectPOSTConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 873CFF1D9529B6114BA69362D3FB5F5C /* PNObject+PNObjectPOSTConnection.m */; }; - 5A5C26749271533645256CC332DF7292 /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = 0504389A5BE500DFAF6462082446D938 /* FBSDKAppEventsState.m */; }; - 5AD96ECFA4E51B3AED9A4355D6DC3BD6 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = EC3FEF4D8E0DC876D4BEC311CFC5D274 /* FBSDKMutableCopying.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5B0D99DBC6962679024DCB43643813BF /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = F69FF63557810B667D967581618582B5 /* FBSDKAppEvents.m */; }; - 5B131207C7BA6BF1455FD2194CB63B7F /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FD38A9226FE7FDA838763FAA4056722 /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5BB3106321C514F91FC6D5C37D0BC5DA /* SPTSharedExampleGroups.m in Sources */ = {isa = PBXBuildFile; fileRef = DD515BEE94EE644F9B8BBE4A92E294CA /* SPTSharedExampleGroups.m */; }; - 5C030388FB39B3282C460E73545A74B2 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CD0505928D66817CBB6EF5B7DE3C9CFB /* FBSDKGraphRequest+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5C7D10E737DB82BD7AE8257E1A6A44DE /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 746988DB73522DD2D4EB7DFEC771D31A /* BFAppLinkTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5C836967A64A9B0A73004E02B0A797BA /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = DEB52BB2809F059D93B9F3616B2C905D /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5CB4B2864D1BC7CFD01093A34233FC62 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = B184E5094AB0B36173233CACA23FAD11 /* FBSDKAccessTokenCacheV3_21.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5CDA68EF888D84B0B24D7D7EA044A17C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E65A5B341221CBEEF0E88382CDB87241 /* Foundation.framework */; }; - 5CE0BD054025A82FFE16616B8559F448 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 5591BB007FC9E3071D990D1CF0A52C23 /* UIImageView+AFNetworking.m */; }; - 5CF3B82DFDB3064C86E53278994C1532 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 04E2BABEA53E3363A9BC0F646F4BBCE3 /* FBSDKCheckmarkIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D5A5C58521774012084AF03E04F172E /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = EBB4AC8A822AA58630CAC4468B0B14ED /* FBSDKShareUtility.m */; }; - 5DE6FF81784F3E5A4B2613938B81B958 /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FA7EE8D5280ACA9545EB0F4B0F4138EA /* FBSDKShareConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E44108C666B3F67AC4BD3B1DEF3B732 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9B4847D4B627158FFC1A63EA6DC80F /* FBSDKLikeActionControllerCache.m */; }; - 5F9AEF2488EDE6958051A208A40A67C4 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = C7B095BFA92E7D5342D36E7B4BEFA6CC /* FBSDKInternalUtility.m */; }; - 5FD203D399B52F2A8A7129195256F81F /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = E70EB6CB87C778ADC5A4325EEFF99B01 /* FBSDKLoginUtility.m */; }; - 61030D3EB4C684D7284E718381F3EC94 /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B5A30A9EC17834C60F15FCD8D5862EA /* FBSDKShareError.m */; }; - 623976AE79DDE4B446ADB0AB18158DF4 /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA08EC0714F4A88BF630D3F963EB509 /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 638564E69D361A1892C40E91C2405ED4 /* AFOAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = F997A285593487CF4D2467662618064D /* AFOAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 63F9CAF62FF3F4925BF18F8F7EAA3D65 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D56E1741F8C7E0E3D263D5B58F460EC3 /* AFNetworkActivityIndicatorManager.m */; }; - 64023F7F676FA908189FABFB4480DD64 /* FBSDKDeviceLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 93AD73B1077B7352ED7AC7FCAF654105 /* FBSDKDeviceLoginError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 641E32DFF8249C4D2477436850AA8A97 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = A387993C7396BA018A78B182545014E7 /* FBSDKShareConstants.m */; }; - 64A3E2F4776B7BAB34FAD028AC015031 /* AFJSONResponseSerializerWithData.h in Headers */ = {isa = PBXBuildFile; fileRef = A2DF4A77D1D9958186177B1D8CEB3C31 /* AFJSONResponseSerializerWithData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 64E385C5B6D77DF22B536BDDF7C25C0D /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = EC0CCAE8180310F27F4D45B4C566DFFD /* FBSDKTriStateBOOL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 655A6D5F35E3F2178EEBA91DF6E4A34F /* UIDevice-Utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB34A34410BB0E2237F80F427197302 /* UIDevice-Utils-dummy.m */; }; - 656A9171F1D093E42DB3ED1BE457938A /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = FED8B893DA37A3224223A9BFB0E51281 /* FBSDKErrorRecoveryConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 65E12611819508E2DAB6FBDED66889A2 /* CodFis+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 73093867BFAE6EBBDF7A5D9F91A222CA /* CodFis+Helper.m */; }; - 6619FEF6F9675153A61F0052BFE0C2D1 /* FBSDKHashtag.h in Headers */ = {isa = PBXBuildFile; fileRef = 536F022E7BC8A34B94D3EC1E16FA0C13 /* FBSDKHashtag.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 666906D65B6FB93DAD8D35A951445EEC /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 942CD0883F237C1B6475AB8084F6CBDD /* FBSDKGraphRequestConnection.m */; }; - 66FF7015F3BC028EEC59F0E695FF7BC9 /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = A5A21E87FC761D2AB2656E8E2DBC885F /* FBSDKWebDialogView.m */; }; - 6704388A6D061F750D5935EF16F23EAB /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ECC32889FE623554A78B0832BFC075D /* FBSDKApplicationDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 67739FEF1C037432A2CF1DF2E1093590 /* ALView+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8B465D31717139A016A12D2FFB2744 /* ALView+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6845F87B7C7D4DB8D2B1BD551CBA0F50 /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2153DF21CC1242FEC6CEAFC1D4C2B1F9 /* BFAppLink_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6849ADCF79AF3D161FBF7F60FEF911CF /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A66D1BA73BBAAF86C6CF4CD6BEE54D /* Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 684B4F5D563DFA918DCE8BFD2B02559C /* PNObjectFormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2188B59C0DAFD7EDFB9D610675470885 /* PNObjectFormData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6854944632B3D42512DCDBA043513186 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = B3B28FA59F82B358B1D10BD0A881E27E /* FBSDKIcon.m */; }; - 69A678E4CAE098311DFD3A51A140747C /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E3891458C3A4B448665461397F352DA7 /* BFMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 69F5C89876B1A41A040E6A9643D91E36 /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 087B6006953245BE2307CFE4FE8A79C5 /* BFAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A42EC6B2A721B0FEC8CADDB441FF130 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B243224F6E2B01B74C79F0377139E80 /* XCTest.framework */; }; - 6A55F873250A5B1E26E0320E42790F94 /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8364047D4C435ABFE5C89C5D44227EE8 /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6A64C061241326CBD97B377B6BE66714 /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 51EBFAD0C0E40885ED2A77D75DE53222 /* FBSDKTriStateBOOL.m */; }; - 6A79CB0F6CBA69860AA8F3340128DC1D /* FBSDKCameraEffectArguments+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B85BFC6FDA0BBCDF52F9B150C0F94CB /* FBSDKCameraEffectArguments+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A7F40D7542E522A70B679B7D8D1EE98 /* PNObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C775F44E2FBA24D38FF9B7D0B1D0435 /* PNObject.m */; }; - 6AF2F5C155E6B7CFEF956A11F4FAC79E /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E562A612CB4F467213BE91B2F766A9 /* FBSDKShareVideoContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6AFE20F50EBDFC499A6FE45DA4FB3739 /* EXPMatchers+beLessThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = B63D6D1A539902429FE51B2BF2A53071 /* EXPMatchers+beLessThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6B3798C77A446D3A3FE2F40801BCFF98 /* FBSDKShareMessengerMediaTemplateContent.h in Headers */ = {isa = PBXBuildFile; fileRef = D0439D5A4E46C28BEDE7B249A11B358A /* FBSDKShareMessengerMediaTemplateContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6BE8998FA3899A7DC8EEBFDC63951BD9 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 91D597045A0BDA11505525EF9C97D548 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C65E7BD2C584A2718EBC713E6247E84 /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 55AD2686F264B001D9B23B2E667BDC0A /* FBSDKWebDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6CF51E4CD911CC37BD3BC983147A1F32 /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = A664539EAC41F63765859137D417FA54 /* FBSDKGraphRequestConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6D5F44172F6AAF24D4247D37094BC155 /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 8980D6FAE79CA78C7001A8EA2BC3E1C4 /* EXPDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6DC8E9658B53381381FF83D6CAB7562F /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = A5F7CA78CB70B76E563566A7973AAC60 /* FBSDKLikeActionController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E7858347B08E3DF327E57979BB18517 /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DE60FB232ECB173CC83D28B8E9FD5C37 /* FBSDKDialogConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7027A9FEDCBB9B791906363339A6AD97 /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E863438AB7FA603ABBF228C1972C62E3 /* FBSDKShareKit-dummy.m */; }; - 70C2B4A4DF9A6936BC3F62E5A1A598D0 /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = FC73FA0EC9903EFA53286D879E678FA9 /* FBSDKSendButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7139601222F664B8F5260815A59BA08C /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3FB96D1F6A7EF08A000F86B2C6E5F6 /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 713B0290DCD4649E177F455A7356D833 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = FF5BDB925B9438AB881A5CE3EC32A419 /* FBSDKAppLinkUtility.m */; }; - 7167A0191A09719D4A5FC81E405FD491 /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2219D5C06179BD9C93CC2B7E8E7CD4DD /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 722F4F7059004BC26B05B04159A8F02D /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E00D21E56F405766DF0B9B5832FDAA4 /* FBSDKMessengerIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 725CCAAF04DC3601E4654019526F8EAF /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = C5F23AC255A5CC190D702640CF82EEFC /* FBSDKCrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 72953BBAA66CA4C193619829C6DAF56D /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = FA043EAD1C57E2A9165D7691DC1DCD15 /* BFExecutor.m */; }; - 72ACC51F1B63B0D7053398FE4CE62237 /* XCTestCase+Specta.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E7F2F46D7D93AFC302D7C7045F11BA4 /* XCTestCase+Specta.m */; }; - 731833E6AB52A6FB84DEB14EE63F1ED0 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 00CAC1E14DB79A2B3778FA8099224F62 /* FBSDKBridgeAPICrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7328A1382E043DA2F89BFD188961A2AC /* SpectaDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 45D55B98448A8CF5BEC142E2BBB0FA71 /* SpectaDSL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 73B41D0198453FB22EB2992ED406C255 /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A5738F31E7FA35B142C111B2013AACF1 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 74ACD77123BD1E4B1F25DE53DAED8EEB /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 48EAEA1A387E7483A605AB622EAB91B8 /* UIRefreshControl+AFNetworking.m */; }; - 74BBEA978F44711C7F7B1F7437FBD674 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B179CB1A2CAA77714778F5DB7EB59D2 /* FBSDKProfile+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 759380B7535BF389BFC236BB1CBE2908 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = EF207F7E0D5311B1FF52C426AEE0A0C5 /* FBSDKServerConfigurationManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7679E06F3D455E0251AB2CB89E925413 /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D74D80556E8DC3CCFB397594080ECFE /* FBSDKLoginManagerLoginResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 76970FE79DF1B898BCB37CF7594E6A56 /* XCTest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DBECFE13698D4D8DDED7724E25BFCDA /* XCTest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 781357E25E5A2DEFA8D8EA7E7B19AC6C /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 54EF2C419EDEC0E3FCE2864C5F40C795 /* FBSDKShareOpenGraphObject.m */; }; - 7884DDB21AB55B9D2A9762D0FB4DBDDA /* Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = D91E6EFB912D50035F95B3A10A3CA1FE /* Specta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 788FE9B988F7485F3483370F7FC8C0D0 /* PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CDB54ACD6F9DCEE318FD3F032FC7E4B /* PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 789C113F849D2152650246E812CEFD92 /* ALView+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1F5AFFD86438D32B457856F1C59628 /* ALView+PureLayout.m */; }; - 78A51680DE2B3C2258E5B7370C3C4F1C /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF274BD1AD934B41EBF4A67A2FC6E93 /* FBSDKTooltipView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 78E84D9F67AC3D515E2489187D6E6858 /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = EBB57EC1C4725BDEC0C2D9A90660ACAE /* FBSDKLogo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 794E313F37A8A5DAD7D4E8CE28B95051 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA1A58C1768B29C459BE6D58062AC94 /* FBSDKLoginManagerLoginResult.m */; }; - 798FDC261242E3D89E95749D6102E07C /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AC0138A592F04FD4FC9F9A9BB3A0B99 /* BFMeasurementEvent.m */; }; - 79ADDEB18C07943EF2210D20F94B065C /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A02AB7FDED3B5C6D22B85644965FF2B /* BFAppLink.m */; }; - 7A363BE29075121D69BB814A5768C675 /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9969A5355EA68D96AEC6594E6A5E9069 /* AFAutoPurgingImageCache.m */; }; - 7A9C233F2D2D2C54280244BDD228675D /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D6CB9BAB3FC03DEEC9B261FC2A7FDBA /* BFAppLinkTarget.m */; }; - 7BAEC6BD63A58DA35019F4928C72D9C9 /* EXPExpect.m in Sources */ = {isa = PBXBuildFile; fileRef = E8125DFB41A764986449B5FFD87065B1 /* EXPExpect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7C204A362F58FDE21BF3C158E2FC5981 /* RZDBCoalesce.h in Headers */ = {isa = PBXBuildFile; fileRef = E82E129D6FE596D85CDF967D18298D39 /* RZDBCoalesce.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C4B8DCA490D1C3C1466C8A074ACCA2D /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F05B4186BB3B1AAE47C0F25011FE071A /* AFURLSessionManager.m */; }; - 7C665FA91BFEDAE2D86EE1F2F0BE82CB /* NSString+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = B108E25F23F3FF0B5A268E471281C15A /* NSString+Helper.m */; }; - 7C67993DB44A89015466DC3DC13A0F93 /* PNInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = 640975C4F30DA8E78437AA8D79746559 /* PNInstallation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C7613E6DD3B5405607CE0212323BFED /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 61AEAF3AAE7DB3790BF72EB0A31909EB /* FBSDKSharingContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C7A3E5E39696BDFE861BDCBD0FF360A /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 08C8C47139DE7A2034FF8DAFB81C47AD /* FBSDKCrypto.m */; }; - 7C94F778956DE5C5B26E0DD8209B2008 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = A2F2629D5E6336FD8A4E7A0CD2C69259 /* FBSDKKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7CD1EC69438A0F7CD14C2BAFB82C6268 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 23B0C08AA81CFF7D87EC3BD5D0CE1B4B /* FBSDKSettings.m */; }; - 7CD58E642985D548BD6A21BB224E917B /* PNObject+PNObjectDELETEConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = EC027B83CF68F1B70BFB4195B3D50010 /* PNObject+PNObjectDELETEConnection.m */; }; - 7CED56B0BD2B2620B7BA217EABF2D786 /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = C72E97BE66A5B29F0A07C26872D0713A /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7D10C9ADE7770705B6589C46A2D56DDE /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4428B42610AB0FB470CE8A9F571BE487 /* FBSDKAppGroupAddDialog.m */; }; - 7D80F293E0D0160FD33D353B80E7D92A /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 952BCB39B0D72AA10B61D9439887C180 /* UIWebView+AFNetworking.m */; }; - 7DB70D62C2A46B2CF4E7DA5BD56EBD60 /* FBSDKAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F544822CB217B6B1ABDF563043A86A3 /* FBSDKAppLinkNavigation.m */; }; - 7F365743FCA2E9F7EDC0F263974F57FE /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD3FCF450E8C38314DB299B1C7AD6C6 /* FBSDKBridgeAPIProtocolWebV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F8D82B2DC379FD4555A31361E385183 /* FBSDKAccessTokenExpirer.h in Headers */ = {isa = PBXBuildFile; fileRef = F887AE57AD2A49338ED76686CC4DD718 /* FBSDKAccessTokenExpirer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 801516439734262C213D041E4F822BEF /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B8947C04C451A0A2DF29B3CBAB3F9D6 /* BFTask.m */; }; - 81A2CDBF20BC107B1A9F6B746220AAE3 /* SPTCallSite.m in Sources */ = {isa = PBXBuildFile; fileRef = FC9787E13A62A239A3C6CD21A98AF9E0 /* SPTCallSite.m */; }; - 8205F4BB9304CC301ED44469A25A31E9 /* SPTExampleGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 538C17A97ECA9192B8A93A339933238C /* SPTExampleGroup.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 820F7BF2538DFC4CFA9B59A637BCDE83 /* PNUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 54EE5407AE0AC49B2A28B4953A66E61C /* PNUser.m */; }; - 824ABE35BCC524701DB1EA1C6B990717 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F094D8A53A77AFCF246030E5859876BE /* FBSDKAppEvents+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82C5215501C4109081E963A4815FCCF1 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3CF9BC60882B5CABB7C29219C1A5F5 /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 82F8536418753B4D6FE778043E77CB92 /* PNObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 16CEDCF52A7FE56873DA10A71C1834E4 /* PNObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 834D962D86A4EF1CFF861CC2EFF48B0D /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D59F55316C71363EBAE55121B468EE8 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84E484F55BE456F9C2AC6D10B00BC8C5 /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B7F258ADC3CB1852D6BF95616AE754 /* FBSDKAppGroupContent.m */; }; - 854A5179B17321B1ACE2F4F89A1A6887 /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = FC9BBD4529783C71966EC576E224DB8B /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 854E7B4F2E69A96C617624186C3E1CA4 /* AFJSONResponseSerializerWithData.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEF0C3BFA8D3894AF5D67B207904D92 /* AFJSONResponseSerializerWithData.m */; }; - 855C6BCA0C9A9CA5AD7BE7AD2E3EB947 /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B367F401FD4702B3206026DF4F75F33D /* FBSDKSharePhotoContent.m */; }; - 859F02AF780B48740A1EE13BDCB6301F /* StrongestPasswordValidator-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 801E0A9A89866BB1388463D16126A85A /* StrongestPasswordValidator-dummy.m */; }; - 865154C1D6849E47CB014F647FD3C3AC /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = ADDE93AA0657112092BB44CD65D006EF /* FBSDKLikeBoxBorderView.m */; }; - 8716445EB7B8630DEC2F206115A37D54 /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BF510F166B6FC7160538AC711EAC68A1 /* FBSDKContainerViewController.m */; }; - 872EBC07AD530A1D8BED5019C4AF5E0F /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = CD9D6CD3E31885EA3B12EB1BC27DEAD5 /* FBSDKShareLinkContent.m */; }; - 874600BC9704604956CD6C7B06D81AAD /* FBSDKMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2697FCCB73BA3609AEBDD786D5234175 /* FBSDKMeasurementEvent.m */; }; - 8789804AC1D6DB6E826562679A0B5755 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = D6F306826C82D3D7DCBEF677A85120BB /* FBSDKShareOpenGraphAction.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 88710DB33EDBB8884DFDD3D7560754F3 /* NSString+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F30F50F4924304799BACA865C94A99 /* NSString+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 88B9CC88372552827AD0E8D10242F150 /* DDDKeychainWrapper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DE0802BEA45CBF21D91724CA980C8B91 /* DDDKeychainWrapper-dummy.m */; }; - 88C8F4FB60378D4DD8712F1AD8A51481 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 876647EB967D4F5CEB7CB8F4FBB79757 /* FBSDKAppEventsDeviceInfo.m */; }; - 8AAFB07AADB3CD4F639112B28633F6B8 /* FBSDKAppEventsUninstall.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FCBEFF7147CA5ADDE141AAE8CFEA4E /* FBSDKAppEventsUninstall.m */; }; - 8B091229A9A83FE798827C0C8BA60A99 /* FBSDKURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 48930B14EAE31BA46846BE06AE185384 /* FBSDKURL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8B3C790A9F62211F165C731DAD3EF23E /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 8963B8734D6A668C052D29DFAFA4F085 /* FBSDKViewImpressionTracker.m */; }; - 8BD2C801BAD7E32D51C1A5FCDD80FD20 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 44B271AE2F41468F2DA5075E3F378680 /* FBSDKGameRequestDialog.m */; }; - 8BFF3CC5A8D688A492744775FCB646E5 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 66CE6A6C55FF062323C0728E0A293795 /* FBSDKLoginCompletion.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C25C902AEF7C1B06FE471BE69026EF2 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A2B994B4672A9C954B3718919B483170 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8D5A376E51ADE0B377F302FB4E27C6B1 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C3B3777C1B965AB8BB35AE83D4436BA /* FBSDKLikeButton+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8D6037046EBDB4211EEE5EB161E3F4D0 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C685DA7E3C04F35929DAAF2AA6845DBC /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E5B46BE55688C744B490076A5BABE16 /* FBSDKUserDataStore.m in Sources */ = {isa = PBXBuildFile; fileRef = BFD2E4193FCBADCB13E557AEDEE981BA /* FBSDKUserDataStore.m */; }; - 8F486A4828A5C764C62E6FAEB91601A7 /* FBSDKWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 876BEDE992F7C6D99443EF18BFE22429 /* FBSDKWebViewAppLinkResolver.m */; }; - 8F5C8E3BEFC7BA916E0E538BFB6B1638 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = E9D3C0E09FD3CC25C5D3A478EA531702 /* FBSDKLikeButtonPopWAV.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FAFA679169B991C26440F5BA1F79AE4 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = DEF1943D8DBFABAA3F0637F6D1638364 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FF2350E0E274B2526968718F65F594E /* FBSDKCameraEffectTextures.m in Sources */ = {isa = PBXBuildFile; fileRef = F7AFC8A7A5AE5F65B91A38EE8CD0E02B /* FBSDKCameraEffectTextures.m */; }; - 90BCE8D3D1AB17E293CDB5491C8FA7BD /* FBSDKHybridAppEventsScriptMessageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B90DE54CC161DDA1C75DDD40CF7FDA1 /* FBSDKHybridAppEventsScriptMessageHandler.m */; }; - 90E43DF6002D7292F4EF6BB2A8F48F73 /* RZDataBinding-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 739BA53B10D2894EFCF6A2AF08454C11 /* RZDataBinding-dummy.m */; }; - 90EF13FE2052073904121CAB7187AEEB /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 46F22A2A8EF3BD4B1F683B08B3956F91 /* FBSDKAppEventsStateManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9130F2B076F9DA0F5141BA3C1081EC43 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = CA6815C15E4DF3E1D99EFC04DE634168 /* FBSDKError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9182F8DDBB6D41DBD25D620B6F16FA84 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 51C40578330A9198354C2DCB5AFC5785 /* BFWebViewAppLinkResolver.m */; }; - 91ED2C949C60F448233A36AA2D699338 /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F49F1FD84C52521B107B72B7B54DA72 /* FBSDKAudioResourceLoader.m */; }; - 920205AB031DC94595A6B49DA887B3B9 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 75DDA03055953C05A58106E8AC33C3FF /* FBSDKURLOpening.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92763E0B98BFA7F74976576A06F9BDEF /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = E4E6332A344B4A0932629526E8E6C9CC /* FBSDKMessageDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92E331296E10F89DA5A2D6D70947091F /* SPTExampleGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 8090ACCF98C8E565350440301F977D9A /* SPTExampleGroup.m */; }; - 92EC832F4B912E0F946DDA210FED5871 /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 516C170C34D2B97E2B3F13FB5D3B92E2 /* FBSDKErrorConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9308DA2187804CCE5AEB594FC69433B2 /* FBSDKShareMessengerURLActionButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E22E9CCF0015069EC4DA801689A00653 /* FBSDKShareMessengerURLActionButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 935CEB07FC411261B561544D90FB3A66 /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FEF6ABC1EA5C7650FB77F74C69D1D2 /* FBSDKAppEventsState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 936A0FDB9C319B1E90CF9AF8F9FEDF50 /* PNObject+PNObjectConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = A8D49478D57BB6B6FB40C1ADA4AFE932 /* PNObject+PNObjectConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 936F558BB8EA4B91337D3C5F3B01CC7E /* ExpectaObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 09FC8EE3328476939506F0CAD81A6757 /* ExpectaObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9378000FA0D713D2D2092A8EAD15148A /* SpectaTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0203FB378E2F15AE5A113A383BC90619 /* SpectaTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 93E1F20990B3E61C372E7E7AA07DE1A2 /* FBSDKDeviceLoginCodeInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = C31FA8102DF83AC01E794EEEE51AB787 /* FBSDKDeviceLoginCodeInfo.m */; }; - 9402D5D55901FFD02A2CEE75E788473C /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C99F264193E3ADE6EAA13156157DFD8 /* FBSDKWebDialog.m */; }; - 943BB5F34B5CD9664133C86620EF1727 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = FF2A391F4328DB787D7D6C604A041035 /* BFAppLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9540D014FB0C64E24A6E6A857CEE2647 /* EXPMatchers+haveCountOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 09760B847BD503A2045C772B3ED2E2B2 /* EXPMatchers+haveCountOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9618CE7E609826CDF188CEBC9982A39B /* PNInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 97334F9A318D4EA1E45EC3E7B4D6EEEC /* PNInstallation.m */; }; - 96285A1E5046745D05F4D6551935A5D5 /* PNObjectConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3D2F853F93E1C5DD8686BB8FCE0297 /* PNObjectConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9704CA353B00EBF0F17D8FE45C56094F /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E40C5CA1634FBE648F7631DA237EDE0 /* FBSDKApplicationDelegate+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 972DCA7EB0835B792402F05F786C1C14 /* SPTTestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = B6459BA3D7319F3DBD101EA52CDAEC4D /* SPTTestSuite.m */; }; - 97608DD732C7501FA73459EAEFFDBC93 /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 18E3F2D763C0560879C54D3E19F7D46F /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 977BA43F2E386199621B4EEF5529AC52 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AA8B735DA45CEAD444BE76EBAD0A239 /* FBSDKGraphRequestDataAttachment.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 988A897C68668FD2699C106891E5EDED /* FBSDKAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 588036BA015152EA49785DA03F133B1D /* FBSDKAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 989AC73AF203EC1178A0B2E557868E4F /* PNObject+Protected.m in Sources */ = {isa = PBXBuildFile; fileRef = 91DFFD5F597BE0B703594690DB976C8F /* PNObject+Protected.m */; }; - 98DE6A8ED32B28D5103E5ADDEF3C4509 /* FBSDKHashtag.m in Sources */ = {isa = PBXBuildFile; fileRef = 76DE5D8DE9038186BAF45C3051D74179 /* FBSDKHashtag.m */; }; - 990210D04E6297ECF71B94F5473E3ADF /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = EA6EB31152E17AD260E9078B9EF5B971 /* FBSDKGraphRequestMetadata.m */; }; - 993ED47BA6B60C214B39DB4D35E1C04F /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6C846D234A6F018B473255B0F47201 /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 99A2E0F759E819C5A930D72C10354A9A /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B6C6178EFF740B1770E47181E2D755AD /* FBSDKLikeControl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 99E11F86F9773CA005BA910500021B11 /* PNObjcPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = B52A626CE55E09268E47AAA82D1F702A /* PNObjcPassword.m */; }; - 9AC6D21F0D2ACFF0490A2A968FB28521 /* NSData+AESValue.h in Headers */ = {isa = PBXBuildFile; fileRef = D441D2DF6D2DC0EFA6139912F83A816E /* NSData+AESValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9AF2916356336DF258EB0614FF3377AE /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1823C6C3EDE6A438390AF42376A3B429 /* FBSDKErrorRecoveryAttempter.m */; }; - 9AF2E07B66DEBC787A23B2799089F44D /* SPTSharedExampleGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = A1A885E6A01CE0321DD46209AEAC8A56 /* SPTSharedExampleGroups.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B364751F79479816F6EB295523AC7F2 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4609ED5B43147AB345743308F07A18A4 /* FBSDKLoginManagerLoginResult+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C43032123DA74368CF14F4F031DB515 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E4EE4E3A82F63F42815DE3E8CD55193 /* FBSDKShareButton.m */; }; - 9C753A1C10DDC28C8C9215D0B58CCE9A /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E9C7B7B50E52257245C7FCE81EAC42 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9D3CD599014B4F30DE56349C117E2948 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 71113CD9E60F21CD6045F396953DCB2A /* FBSDKLoginCompletion+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9D61DBE4FDD3C57A86A64767032F4FCF /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B9A245ECDD956B80B4E44A642331EF83 /* BFTaskCompletionSource.m */; }; - 9DDFE16F634196761FA61836185E2A55 /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 57BC6CFE2FF77A0D657A729BB2CFCAF5 /* FBSDKShareDialog.m */; }; - 9DE7C3FB6171B8038748F48AAFB3DBDE /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 21A4A321D36F5A7AD77F203FBB536116 /* FBSDKIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E1436121B15B5382F66D42C2FF72011 /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = FE242ABAC176E657012AB92CBE4DDB4F /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9E4BEDC737A45D91B6F193E72384088C /* FBSDKSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5619B1BEE713E742B53D6FDA6C86B8C0 /* FBSDKSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9F10206DF65903B81CD3F816985269F7 /* FBSDKHybridAppEventsScriptMessageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F1E075C82DF8DE948E2EC4A3B63A3C0A /* FBSDKHybridAppEventsScriptMessageHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A08E34400227E1A75FDAB154821A6736 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = AD279EE06DA2DC38AEC49D7F19A0A2BC /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A09C6504411ECD4F3E27CD83C993207D /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = B946E6678D6085D230EDD6B927817340 /* UIProgressView+AFNetworking.m */; }; - A0E9ED7E722C10D77E8FE302D62AAB78 /* PNObjectModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 8766997BC0347060CA9AB363D89F270A /* PNObjectModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A14858EFB92503250412D4DC000E6388 /* CodFisResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CCF53AEBA6B2AA7D485B661C65FD727 /* CodFisResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A184D61C3BF5B154326CC7F552AE65F8 /* nv-ios-http-status-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 53DCE1D82D923DC94A1EC30D71C8F023 /* nv-ios-http-status-dummy.m */; }; - A19471AD6C740493AA3BF36A37AB1FC1 /* Specta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4499DF8459C8D2AF31AA71B9AE675D1D /* Specta-dummy.m */; }; - A1C67CC8B456DB58DD45A5F13534C7E2 /* NSLayoutConstraint+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 323BE48D55B39D125EAB374652FBB6E2 /* NSLayoutConstraint+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A1D6D467725CEA1E1DC7CAB5BEA0B96D /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F7FC7C9360DC60E43AFA5DAC5FDE0DD /* FBSDKShareDialogMode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A2893F4ACEC4878AE7A813BC87DF8CE7 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = DD53C695F3ECDB80A46506C6E2F9A25A /* FBSDKBridgeAPIProtocolWebV2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A2AD68C8C56C0DAD0299462D11A8E0EC /* FBSDKWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CAF11D909749FDA9F2ED0794DBFE7AE /* FBSDKWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A2F3A17F0A21A3DEEE6EC83D57CC0F0F /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A4A3712E9464769F7B299FFD4429F1B8 /* FBSDKButton.m */; }; - A31E14CE478562FD973C0B7AE52828A2 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1CA53BC015968B8A7D5A2281145D6C /* FBSDKCoreKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A461560958A7C2A444019DE8C9D4AA73 /* DJLocalizationSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 50297A9E224149D1E8A31E0C13343402 /* DJLocalizationSystem.m */; }; - A47058BA3D8100AC8AD306DE999C459A /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = E6E1817B1A9A7142269AD887653D5838 /* BFCancellationTokenRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A49198B98E5C0BB49892785E10D0F7A8 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE7900090D53530DA111253F2CB6043 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A4CCAE0364E7A158E452A26B49F09019 /* DJLocalizationSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = AC1561C48A0E5AA9B22C0A48189E239A /* DJLocalizationSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A5153CF6A6262915EE2FA75393045171 /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 803FFB178186C751D5B8D54CA328423A /* FBSDKMonotonicTime.m */; }; - A524077B10F421A23E43A3FAF0742C09 /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 13211D855E5293A4E7B68979B3927B79 /* BFCancellationToken.m */; }; - A546ED745B1936BDFD4B2C332F54544E /* PNObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 57350A0FB1DCF1849369CA5A30E6D256 /* PNObjectConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A66A8F49BCF0452FF86B23746E4859E2 /* PEARFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E2135D9F38B34065389530EF9C89743 /* PEARFileManager.m */; }; - A67845A90E116A203E63EC3479348C95 /* NSDate+NSDate_Util.m in Sources */ = {isa = PBXBuildFile; fileRef = 23C7228C5DDC140432CF41CC12A34201 /* NSDate+NSDate_Util.m */; }; - A7578BE8C819FE4979DBB9591EB85717 /* NSDate_Utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A1D7637BB2132A3F444F156482E184 /* NSDate_Utils-dummy.m */; }; - A7ABF62FF15E1E127CD8309A2F049A43 /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 36C15D5B7538C6F932A0E92F0CD7778D /* FBSDKUtility.m */; }; - A90E0F4E5B6411187B120FE58E05B19C /* FBSDKMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 696A3A1D99A35202B4526CF2357B74A5 /* FBSDKMeasurementEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A9884A2EDCE569C96A067FC4EF36C01F /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F5C77D4033571915F1514FFA13A7AC6 /* FBSDKShareOpenGraphValueContainer+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A9F4A7FBFB0A0FBE5A11472CB0E2C07F /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FC55FE8353DEA67B0C980579730F822 /* FBSDKLoginError.m */; }; - AA5C88F10468A55C41A2193119C54D21 /* FBSDKAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = E3DB002F04E427756444ACE788547734 /* FBSDKAppLinkReturnToRefererView.m */; }; - AA6C2DC638A31B96889518F62367151D /* NSLayoutConstraint+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = AEE4441C0BEC052CFBAE042BF924FACE /* NSLayoutConstraint+PureLayout.m */; }; - AACE3143D5979498634D88F2825A5835 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 5853A3C027EF3C086C98DF233E21B3C5 /* AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AB182D0291DDE489515C35044E922290 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BA4A045DAB6043B53CE15EDF906D10C /* BFCancellationTokenRegistration.m */; }; - AB21C0D330C9B43FE6EC4A8BF305D2D9 /* DJLocalizableString.m in Sources */ = {isa = PBXBuildFile; fileRef = 82F6CC1ACAF6F27C6A111F34E7731E6A /* DJLocalizableString.m */; }; - AB5BBDA109B69FC3AB4B19AF19D79137 /* NSMutableData+AES.m in Sources */ = {isa = PBXBuildFile; fileRef = C05C6907571617EC014518E10073274C /* NSMutableData+AES.m */; }; - ABC3CB7089B6AA83B96FCB031E455EA6 /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = F595D724DDAEC4AAEAC9F66C11999838 /* FBSDKShareVideo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AC3A306E8F74654902835F64C33B0E0D /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 46035459CD822676C43AC57A7C17623B /* FBSDKAccessTokenCaching.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AC7F19718C449A9DC6F00DA6027E0EF9 /* FBSDKUserDataStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 73168AB5AEFEF68BF6160910269CA1CE /* FBSDKUserDataStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD822B83292C5C186C2581BBC86842F3 /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FF9058171819AA185761AE2B04EA055 /* FBSDKGameRequestDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD82883E20FB648B0EAFB696C8B49895 /* FBSDKCodelessPathComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D2FFE55155C7A7943B0D43B2ED6874 /* FBSDKCodelessPathComponent.m */; }; - ADFA22F318E8237CD11FB41D0BFEF84B /* PureLayout-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D6C25CEF86D625B2705257253DAD8BE /* PureLayout-dummy.m */; }; - AE691DD1EB97FEE2480FA4E0C99A009B /* FBSDKViewHierarchy.h in Headers */ = {isa = PBXBuildFile; fileRef = DEAEF601660FF4DF3234E9612BDE6814 /* FBSDKViewHierarchy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AF2E1D84AC3C2318579CED74EF6D5294 /* VatNumber+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = A8BB7CB0268D269DBE4F5B0469EBA1EA /* VatNumber+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AF99F1B8AB0B2F0FFB2D5D89E031D894 /* FBSDKDeviceLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = 3181B47B45E3776B3AB0FAFC6DE02069 /* FBSDKDeviceLoginError.m */; }; - AFB4C25724EBC1689155913AAE5B45E3 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D29168074700CD130E3196CF5B50654D /* FBSDKServerConfigurationManager.m */; }; - B0163131C0CE19D92063F1D4F6A3A57D /* SpectaUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = E712FB17B0B0BF56ED405AF90AB9E748 /* SpectaUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B09052FE148B0590C79C0C6CD54B560A /* FBSDKDeviceLoginManagerResult.h in Headers */ = {isa = PBXBuildFile; fileRef = AE4EEE301DC50F594D9F70CCA22FD21B /* FBSDKDeviceLoginManagerResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0E254530E432BA0E54C65D1CF86DEBC /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 097219E7D000D1D18B00390AF04655BC /* Security.framework */; }; - B14D736299BA7FC6F286FA30D7E373F2 /* DJLocalizableString.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E25B94A00EC37D77852BB2423511D5 /* DJLocalizableString.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B17B2D08D123DBB1C541E8562B16BEA4 /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = ACB25F02D87081973482D519F2156D5C /* FBSDKLoginManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B1F4A0076ECF098DF51D77B65DABCB17 /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = A78D0197FB7F04FEFE361A9DF89ECC1A /* FBSDKLikeButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B2BADD56B4205B6455C811CAAC44EB75 /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = B12311AD0419602DF0FDD90C95BAE7F3 /* FBSDKColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B30CA0A041BB4FBF8F4B29B54654E57F /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 58924C097629393B47F8913C206AB1DB /* AFImageDownloader.m */; }; - B338D6C9D6E10095446FBD283A0AAAE8 /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB35FF89153EE0C74104A17970026A4 /* BFWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B39C2441EB0E51A74699176E48E1A8E8 /* FBSDKAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = FC325C3C3D911B47F0AA694DA05BD71B /* FBSDKAppLinkTarget.m */; }; + 001D7E3CB983A8CE083F1EF4182198EE /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 98C87D8204E8239B6D9C648F1EC4C4DB /* FBSDKBridgeAPIProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 003C66447305234CD3387D77362D2FBE /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 82FD9D340118B39EF705BF5AB916C9EA /* FBSDKButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 00F305AF6DBA128963E6AF6F881D1003 /* SPTExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 363B154B56E9E7803745A62413950CDF /* SPTExample.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 013EF458065D79BBEC4C4DCDB96F5006 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = D7651BF565230AC7C42B4C8AACCB71E2 /* FBSDKBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01D2DF942F5EA2CF9A3521A3038A3329 /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = ECBD9A733ABEE5212AE355EE55A02915 /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01E67A1E5948E7E50A8336B7C428DA52 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E409953C74E4DB7333D72C876F9BA009 /* FBSDKAccessTokenCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0300AA88269CE5D7E95C9E862CCF7FCA /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FA70C1224F57397D80DD41931C3B1C5 /* FBSDKUtility.m */; }; + 033C96EC85C29D83F41E8691272AA89A /* SPTExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E241EB0EAB5D7131EB15B8B647EF8DAE /* SPTExample.m */; }; + 037C1A5A6542CB296776362C63A0E4E4 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A6E8130DA123697A53FA2CB8521B2867 /* FBSDKSettings+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 03C3DFD87D3672F4A0277718D96AF3AC /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = DC22675D40DB2EA22CD300BAC3988061 /* BFURL.m */; }; + 0408330158A2E9B48AF110B05E7F6640 /* PureLayout+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C9803B51A670EF5D318E5A04E6E0524 /* PureLayout+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 044169F43C50021142B6B7C33A5FBDEF /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 058B8504288A93E1C2BCA07E4C01BCDE /* FBSDKDialogConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 048261C6DC90BD20FB6B7D80D39FAAF1 /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = 165CF624A84179950C6FDE0A73AB35B4 /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 04F3476DB61025DFA24A4F7E313CCB1D /* PNObject-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C30F58DA20C9E3C4C6D00D79F4434E2 /* PNObject-dummy.m */; }; + 072B15A37C3C2C8440518E6B13C046E3 /* FBSDKSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 416DA3C85DF3A756FB16ADB890777586 /* FBSDKSwizzler.m */; }; + 0777D597D523973F9B02F673DB28464F /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = E530614B1ABA80A13A95356A991B8B5E /* FBSDKLogo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07C0880F6DF8294A48B81C28B104663F /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 80EF578708C3C8E74246CC1C2DA6335F /* FBSDKTimeSpentData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 08A77C331857F6CB64AE42ED3A2C2668 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = E4DE7E50173DD75846A4AFF27735D3C0 /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 08EFF5B59D6719657FDBF3262BD74462 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 12DE2FF5B3A0AD9E1F9DBC9F2290C5B4 /* FBSDKGraphRequestBody.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 098562CA49DC385B7C4EB46B312A1C7D /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D9AE264A8F9F920F0874CDF977D370D /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 09998248A0DDEC14B08472B1D9DD911E /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 461F225C10C831BF56A7A0642884B232 /* FBSDKGraphRequestConnection.m */; }; + 09C8B530F2602EABC211301F83C116C9 /* FBSDKViewHierarchy.m in Sources */ = {isa = PBXBuildFile; fileRef = 083682A84322B9FB603A63D433260F39 /* FBSDKViewHierarchy.m */; }; + 0A0401388402B54927DFEDBE570FA461 /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = A2B7E375386A4AE6FA17EFC9427E1F7A /* FBSDKWebDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0AE212F7CDA9749547620FE976BA88F4 /* EXPMatchers+conformTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D4513F2D820F16881A1C4C1E3097C57 /* EXPMatchers+conformTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0AE598228DE88AC96D9F004D7E3030FE /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3716F02B4752231340F0F59CFC2AB263 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0B1796622C52B0FB7C4C83A1DFA9B473 /* BFGeneric.h in Headers */ = {isa = PBXBuildFile; fileRef = D01C290E1CB24CC044945B126541FAF7 /* BFGeneric.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0BD07BD0817EC4FA7825B07ED776E766 /* RZDBMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 56C717938F4C6620F2E518EB2C21CB82 /* RZDBMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C1F116E07908A8A0A4AF84C6F48DEF5 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B5C59D4E929E27E274D161365F623D /* FBSDKConstants.m */; }; + 0CAB4EEE9D9F8E1A47F24FD2F28FB6D1 /* CodFisResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 02462456D584F14A5BED1946168948FB /* CodFisResponse.m */; }; + 0CF6B0D5F915EB162115FEA7F45B8021 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = CBD19A36E25066B29EA821819854C135 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 0D647C62B673E2CC77779886580C5A52 /* FBSDKAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = C87EF2B762F2DB877803CF34F613FC3C /* FBSDKAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0DDEF049DB6B3F2EDEE94F3EAE91D430 /* PNUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 54EE5407AE0AC49B2A28B4953A66E61C /* PNUser.m */; }; + 0E060CC555E54F6DAA83FA57B2DA23D8 /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0AD1AD177A3C0238CF0A0C8449A22B /* FBSDKTestUsersManager.m */; }; + 0EF9C95C80360F9C598CBC725E365EAD /* HTTPStatusCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F96E6A0967EE7E39AB0EF85C14505B3 /* HTTPStatusCodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F3DD8E4CAC4CBB2960127F8C0F35BD3 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 64A54F9B05C5BC6EC4D3ED3ED6E31663 /* FBSDKCloseIcon.m */; }; + 0FA1713B6A6CD455B4D108B25ADD74CB /* FBSDKDeviceRequestsHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = BF87EA89298D0CC3B0A9CF1DAAC1FA9C /* FBSDKDeviceRequestsHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FB0184291757E2845799BB6910C182B /* SPTCompiledExample.h in Headers */ = {isa = PBXBuildFile; fileRef = D00073415D26535814DA1E68C7D75C68 /* SPTCompiledExample.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FFA1B95718521D093347C0657030E5F /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = FFF1870FC011A05291F60D4D70A70E89 /* FBSDKUIUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 105BEDD5404301CA97CD42483FBCF77F /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B9D7A713D36784BE4EDA637A92BC827 /* FBSDKTriStateBOOL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10C4D45C6ABA1652354B48209F1201DE /* PNObjectModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 8766997BC0347060CA9AB363D89F270A /* PNObjectModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 111FAFF1038A78A60FE73DE2582AEC76 /* PNLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = C5E5518C24ABEF56D055C449B0853253 /* PNLocation.m */; }; + 11370609D1CD9B9107F787C3BB5B4492 /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = 662C7CEA5DD968B32F1B8682D7EEE8AE /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 121CD17FEECE83AF9131CB989D332A37 /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = BDCFE78A9B7338D71EF10611286942EF /* FBSDKAccessTokenCaching.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1232F21D67820B6A4F3195BFEC0FEE66 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 36F3F210A7A242FE1FD916F37CBADDCD /* FBSDKAppEventsStateManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 145E7C905FC0B7F94382F19FAAEDF431 /* NSArray+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FEF225FC599C9FEE209D0725906EA86 /* NSArray+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1545293F2435CB87346850AF58F74483 /* PNObject+PNObjectDELETEConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = EC027B83CF68F1B70BFB4195B3D50010 /* PNObject+PNObjectDELETEConnection.m */; }; + 15A83EF248565323AA06F18C58CA1F34 /* NSData+SHA.h in Headers */ = {isa = PBXBuildFile; fileRef = C785165311ED4D6C4EC7BFA0E953B2C2 /* NSData+SHA.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 15EFA090B7770B1148DF5B475DAC2027 /* SpectaUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = F2B4D21CE71172A01AD428FA5B0250D6 /* SpectaUtility.m */; }; + 15F538CD641FACC0C9DD2ADEE047748C /* FBSDKWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = F5CDC80BF7428CE92D164FD10F91A6A9 /* FBSDKWebViewAppLinkResolver.m */; }; + 180C11B2F63B47CF1FC739E034C5DC47 /* PNObject+Protected.h in Headers */ = {isa = PBXBuildFile; fileRef = 2259653BA47063BB08391397AA4D6B29 /* PNObject+Protected.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 18289F907B47703F39AC051162392C93 /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D4FA2A9CC60BC348A6623694DC18D9A /* FBSDKTestUsersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 197BD0EAF2B8B8E1DA7B65B82E27133A /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 94790902DBEF7F1FDA96953FC4E64F56 /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A1636B9D2F688A702FEF84B5798045B /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = EAF9D928B205ECEF1E1AC6010234DB66 /* FBSDKCloseIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A40002D8D0F2E1C849C829D99A38DA7 /* NSData+AESKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 775D1E1B5C8150DD7BD0F21CDD958388 /* NSData+AESKey.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1ABAD35DC2453FC1A7BB3B94C8746AB5 /* DJLocalizationSystem+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 30027D05854975EFC23B4C890C8022C4 /* DJLocalizationSystem+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1BC36D066EFB6CD12CF329E3701DB1B8 /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E4572D806AA1BBC81969ADFB3DDCF50 /* FBSDKAccessToken.m */; }; + 1CAE75ED48FB601FDF44A292C96E97CD /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B8E843F02992F19DE425D86E28546DB /* FBSDKGraphRequestConnection+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1CBF9A754FEBA4FD0E5D8AD2EB3FFCD9 /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C2C5B0BE0CA5002795E39FACF35433C /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1CF59AE92815BB21F9D1C1BA32887538 /* NSArray+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 92CD58E200B787BAAE825A1FA8E39242 /* NSArray+PureLayout.m */; }; + 1D322FD6069536B34D1F8AF7CCF032AB /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DC961768C16B735AD04D0D2AD74AF8A /* FBSDKGraphRequest.m */; }; + 1E108EAE7598DEEC66084FF3CE8C768F /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B9E944DABDFA7F4DD79C993D9E70E32 /* FBSDKProfile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E3B24C80925403D2EF4BC821E18BFE0 /* FBSDKMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 24F09EF994A067478CB514410AA34AF3 /* FBSDKMeasurementEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1FE049AF9EA4DFEE0ADAE2E08F0294F9 /* Expecta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3463CBC1F71C1CF5C51BF0A374F8B6D0 /* Expecta-dummy.m */; }; + 201D40D63C43A4FAB1082EE5098901EB /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AE5B2BF1A66904BDD595369B06633E9 /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 204CE0368C63B493BA94C67D70AF19CA /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B8DE5017B46F7603F67BE5E2C6480425 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 208E5B367B5ACA775FDBB8239726218E /* NSDataAES-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D3A07B9E2A9F0BAA94A49E29DC0289 /* NSDataAES-dummy.m */; }; + 20A69731267F6F91566AD1025CE4F1E0 /* PNObject+PNObjectPOSTConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 873CFF1D9529B6114BA69362D3FB5F5C /* PNObject+PNObjectPOSTConnection.m */; }; + 21F2EF2767136B85E80E026A974D9CCC /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = A7337468F16E656419B1EB01E404F626 /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 2211ED65288DD4CC5A0424002CD7845C /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 278ACC5AADD0F5559FE842BF192588B3 /* FBSDKLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2283BBB3D63B8F0ED4DD99E252882DC1 /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 770095613E5B5A03B157948E02F77487 /* FBSDKErrorConfiguration.m */; }; + 24F18AC451AF480B2AE995F6AAA6C28E /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3E9404B03949F39EB6C1AE034D3527 /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2647288BA688C6A1E74FBD05CC04D164 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1E3FED54C9FDB7750B2C61B469E9D3 /* AFSecurityPolicy.m */; }; + 26C29CCFB909B65F74C58C7F56AEB8F7 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B4A98C0B59FEC0349F4C4B75BD6EDBB7 /* FBSDKButton.m */; }; + 26F1A8FAB560CE2C7B43B5D0EE3E52CA /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = C762D8D04881F3CB10A2A0EC699EEA50 /* FBSDKBridgeAPICrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 28E7AF256840F042F2AE4526C2F2CE27 /* FBSDKSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = DD98A59BB406DEA3321CB51AB21D8017 /* FBSDKSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 295F39241310A5652C790ED165CD51D8 /* XCTestCase+Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = 58573C9A78CAA88BB5168416F7995F24 /* XCTestCase+Specta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2976B0ACA2F8F18E7BF4242F5F0EB9A4 /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 25A577668D9BE62DECC875B19A98C779 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 29B2AD57EB2C737C713A6C3B025966E7 /* FBSDKEventBindingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F0AAED51171EAC5942700BC2218C89D2 /* FBSDKEventBindingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2A38EBE09F7833270177CFDA35E44D4E /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E7DE8887FB3D62BD49E328FBCED36F7 /* FBSDKWebDialogView.m */; }; + 2BE5F801929C0162A2EC55CB1232C056 /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8D591D56FFE0908DA9373ADF38FD69 /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2C9C0DB96000329033AA577785AE3637 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 46F8A260556054D99729150E532B7909 /* FBSDKAppLinkUtility.m */; }; + 2CB881B8F5A4A45849C253AA8C76899D /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = BFE984503E6165E0649B53AE9BF49BF2 /* FBSDKBridgeAPIProtocolType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2CBA5742A8F4A8B904F9C30717BAB2ED /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 4934336C1F61E006BCD0B2A11BB701EA /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2CDF58E4DBD75C68C7DFA7EAB88234BF /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA36DB0C619A910989BF280D0DF59AD /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D0692C5DFB050EFB05E4E96AF3A5F01 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 286F1697FD7C5628424DF2BAB4A1277F /* _FBSDKTemporaryErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D6D441DC7DC9152121F61EC3F74D8C5 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 677236E9F8E56E2EED7E7B340ED191F9 /* BFAppLinkNavigation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2E22C2A4A6B867E4CB9F647262D4B370 /* AFOAuthCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = FE13F68BA7E00A87F6382640DA4031B8 /* AFOAuthCredential.m */; }; + 2E29F7ABCD0C7FC6214823121472D167 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 67F11EE028D9C48A8BA8812ABDEA5078 /* FBSDKAppEventsStateManager.m */; }; + 2EBB3871169ADA80543D579DA2B68C5F /* NSData+AESKey.m in Sources */ = {isa = PBXBuildFile; fileRef = C5A9F9D51250FA03D62340CB0C404777 /* NSData+AESKey.m */; }; + 2F2FE1C49C629B140A829ABFE0FAACF0 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D6F2D19BDEF7351A7D3AC3C578FEAE4 /* FBSDKAudioResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2FA88F65FA393DBE6BB81D24C5B82ADF /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = A3B7E755B0BC9F40D51031611DCE0B35 /* FBSDKGraphRequestDataAttachment.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 305AD55A21C0AAB54BA019219AC0D2F3 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 5369FE224A2A381FB95EC2120A973CCE /* FBSDKGraphRequestMetadata.m */; }; + 30DC49514C1A0C670507330948AAB941 /* ExpectaSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = EC5D78051729C73CF93EB317E6E565F2 /* ExpectaSupport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 317B01976E992013776876BF69F013C5 /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 08888F77B7559F806A516C24FC8D1CEB /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 318F82D2BD9FF120D4D9EBCE096E9963 /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = A3FC262E39538F9FA107E93E8BFF7330 /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 31C7D5A52A23943A31FE7BB18D7D04B5 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D48B413F6CD76474420CD78F10AFF38 /* AFHTTPSessionManager.m */; }; + 3222DC27D07E09F14C5AF5093C2BBA9E /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E5AF211F0B66AD29F5E545B08E5B8FF1 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3266C3E22519A5D701B1E51D9C19656B /* PEARFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 389CFEACA7C9B76D0F3920359DB54CC8 /* PEARFileManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3328BCF13ECAA14F6A55B3913A9563A9 /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = E15D7924EBB89041DD689B419DB0DDDB /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3337964B0697559A7DFD39F9E6280DD8 /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F268AE2267944D18C9103B4A3D961FD /* FBSDKPaymentObserver.m */; }; + 33FAE2468295867484AA13E804AA565B /* RZDBTransforms.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3D7D81F0079CA5AFFB6E83752F9170 /* RZDBTransforms.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 34247D73BA4ED2166489ABF8D5FB42C3 /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 0170FB4571D1DE543DCDD05866D304FD /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 350451B877576A77F8E59C5644EE3C56 /* EXPMatchers+beSupersetOf.h in Headers */ = {isa = PBXBuildFile; fileRef = DF3026E23C27D70F04297FC288C0FF3D /* EXPMatchers+beSupersetOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3505DE9E19A5C0CEA67456D9AD6F7F0D /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F252CCAAE16FC4699E054C0F24C6A7D /* MobileCoreServices.framework */; }; + 3610BA1DA288AC37DD83277DBCB50B00 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = E5630EDFC38C502EA515AF1A19289B39 /* AFURLRequestSerialization.m */; }; + 363458F1BDA4A3C107E84C6060AB3A7E /* EXPMatchers+beSubclassOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 40CB89F9717C62EB8957785A6EB3FCF7 /* EXPMatchers+beSubclassOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3657D18329A9BF91FBAF0FC03C57062D /* FBSDKMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 785562DEEBF5BC0A7C950B934440E40C /* FBSDKMeasurementEvent.m */; }; + 366F79F8A5C97EBA6483C5E33D351461 /* SPTSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF9BFE12EC560CB974852D1647A5FCE /* SPTSpec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36970E05B0713E35EA74DB38A327B4CA /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = EDE7C37FF7DD0312B72C40B60D0C9DC5 /* FBSDKSettings.m */; }; + 36B6A108F6DA30A5D65A92A2A2C88DB6 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 38E6B5920B345E361E5BE6310096446C /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36DF1910A3A1B78FCA8C5D64C1124757 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0CD69D89A711481A13C38FA50BA927 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 377BA877A725435D078BD8591ACC2271 /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0752E58A5EAA30AD58F145FD43B738 /* EXPExpect.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37E74BB611D287EA8DA7D4A9433ADCC3 /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = F62C482EE90A46966BA5B12D96878AAE /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 38F45CAB736190B8780A681D2AB070F4 /* FBSDKAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A2E3485F3C660F0B0EB6CE227843E9B /* FBSDKAppLink.m */; }; + 3A3B0153879F09E51AAEC26F5F64F217 /* AFJSONResponseSerializerWithData.h in Headers */ = {isa = PBXBuildFile; fileRef = A2DF4A77D1D9958186177B1D8CEB3C31 /* AFJSONResponseSerializerWithData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3C0B08EBA39E348D07B87AD01A2E17C9 /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 7988B8E9E7F035F5D366BA10590CBB37 /* FBSDKTimeSpentData.m */; }; + 3C27FB3277BAAD883F1E033B64349F71 /* StrongestPasswordValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 6285184D424D8B500578979EB3BCAAAF /* StrongestPasswordValidator.m */; }; + 3C8A66633C216FF1DC87C35974B8C871 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A0417A45A2F49FDAA0A36C09FC3E187 /* CoreGraphics.framework */; }; + 3CB9178A15881D469E019C52DF55EA66 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D904820105D537D53D9CDAA0F4B0390 /* FBSDKColor.m */; }; + 3D0532FB2EC6DF83E9DECD38072E6FF5 /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = CD2E613C5270A1BA9626010AE5BC9820 /* FBSDKMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D119CF039AF27070940418831E6FC2A /* FBSDKEventBindingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B72F1647DE757CB0BF9D0C01397FE6 /* FBSDKEventBindingManager.m */; }; + 3E7020D6F81D3DEEBCFFE631D07C6F5F /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 485B5A26EA002FAA88FC2BE02C63F8F3 /* FBSDKDynamicFrameworkLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3E83440DD72381F99AF66A1C0D5E5461 /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A77ADBE8D4830B102F91F72EE93376D /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 3F75926F86F06BB85DB6F865FE9F7966 /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = CB2DA88A317AD09A2551C77FBB019836 /* BFAppLinkReturnToRefererController.m */; }; + 4001116623CE8E97C48A62C17DE69B75 /* PNObject+PNObjectGETConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = BD34E4911A8C97EA3C3543FD49C2D096 /* PNObject+PNObjectGETConnection.m */; }; + 40BBC298C02D608C2D6C5954C47D1A94 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FEB333B891FDB0A0369287A18F40372 /* BFCancellationTokenSource.m */; }; + 40DB0F3696BF92748AD072C52C2F8D88 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E0671FE5A61649B1C76CEE43476EB0 /* FBSDKGraphRequest+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 40FD4C9C5ACC9BCA23D07EB7DAF5363E /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 431D9D75B33961C44984665FCC4143B2 /* FBSDKViewImpressionTracker.m */; }; + 4190CE91A51AB79109CEF3B9333F578F /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 996396F3434F55E3BC30E200D2133FE5 /* FBSDKIcon.m */; }; + 4355091BD1D9F346C4E96BCB1CCCF4D7 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EED4C5A1701B547498F82AE3B18B1292 /* FBSDKServerConfigurationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 438D276A2D57438A513843B07D96DF03 /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = BEFF36676C4B701528EA8455A54038C8 /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 43A375FD41EC165799C29D1A236A5209 /* DDDKeychainWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E91846F5FC7A6C73BFD33DF61939034 /* DDDKeychainWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 43E4C38DAE8F8F549728812BF25A50C6 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 1650AC4C4981BEE6422FAD5953F3BACB /* FBSDKServerConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 44137D4F96AFCC1B3B9656F201140F35 /* NSDataAESCipher.m in Sources */ = {isa = PBXBuildFile; fileRef = 08004EE10CD42AB6608277E07ED59BEC /* NSDataAESCipher.m */; }; + 44DF926A67F4B16B0A26CA6523D94DB6 /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DB07A2A496833FE81867521D39D2FF91 /* FBSDKErrorRecoveryConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4543EACA66C696711260962DDF817939 /* FBSDKHybridAppEventsScriptMessageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = DBC2ABA53C27A4FA2A06BD4D313524B5 /* FBSDKHybridAppEventsScriptMessageHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 463B1F5C122CB2A6A324C9EF3C0016BB /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 64AF2E5E93CD0F51FCC5C417AA5254C7 /* FBSDKBridgeAPIResponse.m */; }; + 464CBAB5BE36DA805640E024A438007E /* FBSDKAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = FD78411329920E587B7AFF79A4FB2134 /* FBSDKAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 46D0FCA3AEF62CCBFCE76CA2DC40B35D /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = E940BB3B7637A14064336685794BF7E0 /* FBSDKWebDialogView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4732FEE7344C121E72E2B2DAA5E420B7 /* FBSDKCodelessParameterComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = EC4B71AE96D1A5D627E72497D1DC6C23 /* FBSDKCodelessParameterComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 47AF601E76F55D5A1DB9D2BDA3A68B4C /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = FAD1BDBB0FB7D500AC2C5F94035C962B /* BFAppLinkNavigation.m */; }; + 47BE09F1C41D33B99A8D04CCE978A431 /* PNObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 57350A0FB1DCF1849369CA5A30E6D256 /* PNObjectConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 480D5935CD345ADC019E50448974021B /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0320AB889A5F756C6180D95467F45BC9 /* FBSDKAppEventsState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 48CCA302404C30F8C62A1122D6A51826 /* UIStoryboard+DJLocalization.h in Headers */ = {isa = PBXBuildFile; fileRef = 39FE593DE930BA78D4BDA0F3C5F10E58 /* UIStoryboard+DJLocalization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4A9A562406FF3C97C4129D66B18F6859 /* EXPDoubleTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = BD44FBD619782C7C9C2602E36A854326 /* EXPDoubleTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 4AA2EEF83FC82A568C7C136F1CCE2A69 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 485FDE7300A8557FBE3C82FC07576F1B /* FBSDKAccessTokenCache.m */; }; + 4AC1B9D0D40CAC17B102DDBBD3BA0999 /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = A311E4E7DAE3E607DD369E764B42AD25 /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 4B07FDAE09AD3935FC7D21A580784B92 /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = EC64DCF50E636893C5B7603C9750658F /* FBSDKIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4BA92AE5F377BA1E92A1D7566305C4EE /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C035D4B7C25EB6D02048E013706A803 /* FBSDKBridgeAPIRequest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4BCE79019BD603FF6B7775814DC455E7 /* DJLocalization.h in Headers */ = {isa = PBXBuildFile; fileRef = 53A54C74047B217C4204A767B03867BC /* DJLocalization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4BF41AE734C22991F475FC2F3A2B8B47 /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CCCD71B7B317367C3A26040E746CFAA /* FBSDKKeychainStoreViaBundleID.m */; }; + 4BF68DB992035938317ED4F611866211 /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 859B23362F4273474F1FF2202824CACB /* FBSDKGraphRequestDataAttachment.m */; }; + 4C35E7911543D1BC76F8C272C36640DA /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD4BB858FAD421FFED79A6FA590B68C /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4C7C40AA3F329F239B610AA2EEE2D6C5 /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = E31B8B89E1ADF6AF6FBEC5E06171EEE3 /* FBSDKKeychainStoreViaBundleID.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4CD6CB8AAFF20879DCBF76E285F28E54 /* EXPUnsupportedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E5EBF82A2572FE1FDD7925CE28E95237 /* EXPUnsupportedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4CFEAF71BBEA78F270AC77A312256950 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6ED2EA6001D4C2DC4C030A5408F3EA /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4E9310FA4A0FC203CD579EE96F3D47BA /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = DE4DEBDAA197887EC06CB600F6048E0C /* FBSDKErrorRecoveryAttempter.m */; }; + 4F38B87EF7E7CDC32B168BC6465CD3FF /* PNInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = 640975C4F30DA8E78437AA8D79746559 /* PNInstallation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4FDB78C8DBCAB8394F6858ED9A0AD888 /* SPTCallSite.h in Headers */ = {isa = PBXBuildFile; fileRef = 7973413B8C74EAF016C4C64DCCD1B1A8 /* SPTCallSite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5019A8C44B238BDC8BC538106A57996C /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7113609688C45AD2C38B06A469142179 /* FBSDKApplicationDelegate+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 513AC396F7199753D3A09DB4D82E9D76 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DA70D814036C015181CDFD29F020C55 /* BFAppLinkReturnToRefererView.m */; }; + 51F525AB91E0FBAFD33419A6D658D346 /* SPTGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 541ED8FD87561470666421B17341AE24 /* SPTGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 522B93E3C9779AC51A0B6DDA8DBC3169 /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = D732C9CD35343E4257B34510E1C44BC5 /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5330BE1AD6AE920297042114951906DF /* PNObjectConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3D2F853F93E1C5DD8686BB8FCE0297 /* PNObjectConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5342C542FFA001965F816E752AB14947 /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 68D64A1F9DC4EB4F1017B0BC9B432FB8 /* FBSDKBridgeAPIRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54E91E1F0443C7A949682430B76A49E8 /* UIDevice-Hardware.m in Sources */ = {isa = PBXBuildFile; fileRef = 726E7FF9F534B6024C21CC8ECA817B1C /* UIDevice-Hardware.m */; }; + 55BC5838B2C50DCB0660F1FC1F3D4916 /* nv_ios_http_status.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4FF31D3743D9127CF19D30BF976D6B /* nv_ios_http_status.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 55ED45EE169724DF38EF2AC2B5E8A349 /* FBSDKCodelessPathComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 335E80A801C5F0B8EA0C340F6A2DA1B4 /* FBSDKCodelessPathComponent.m */; }; + 56FB80211E0860AC159095C4E100C3C2 /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = BA239773AEE9DB5E3C63C024061F5CF5 /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5743A9734FFAB2419676E36064913A43 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B10F4EFCD20F9BF3AD7AD2CA65A38D24 /* SystemConfiguration.framework */; }; + 5761D245AE58E0E6DC5D282FE7294315 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = F2383083267CAD2E43713143955EE386 /* FBSDKMonotonicTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 57B8B79726E7D3B2EF38DD501B2B5C7F /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E5C73A34BB2A13E5A8AE866E6F02D54 /* FBSDKCrypto.m */; }; + 5855C9103CD56D525F718C56B1415B18 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4A1B06096D3624B7AF5E4F03EAC457 /* AFURLResponseSerialization.m */; }; + 58859490927CE090DF982C2007B31971 /* FBSDKAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1769FEF7D2E02007FE3D8ACA91F935EB /* FBSDKAppLinkNavigation.m */; }; + 58FF86D7BA005DC7E2BDFDCD53015BE6 /* RZDBTransforms.m in Sources */ = {isa = PBXBuildFile; fileRef = 4890ECB8F3F7FE2FF6A5F281D7A7F31A /* RZDBTransforms.m */; }; + 5A5D211B147C5F7BDE41505E5DF6CB08 /* FBSDKAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = A39897F17E8BC2DE3AD4A201E27B9062 /* FBSDKAppLinkReturnToRefererController.m */; }; + 5AF0986D8179B0EA87F96B31DF78CC34 /* FBSDKGateKeeperManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 52D54A1262183BE2303202BC73DEC049 /* FBSDKGateKeeperManager.m */; }; + 5B131207C7BA6BF1455FD2194CB63B7F /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = D97F92F3E2E397D4BE297A9C791C5057 /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5B15330AD877AFEE5C2DFA8FAFD694D3 /* NSLayoutConstraint+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 12A5EA8EA3E20FA8292818DD0658894B /* NSLayoutConstraint+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5BB3106321C514F91FC6D5C37D0BC5DA /* SPTSharedExampleGroups.m in Sources */ = {isa = PBXBuildFile; fileRef = FF6DA530E8AADD78DEF49D2321BA23DE /* SPTSharedExampleGroups.m */; }; + 5C7D10E737DB82BD7AE8257E1A6A44DE /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 000F1CF748EBFB206133755B1FF1DF13 /* BFAppLinkTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5C836967A64A9B0A73004E02B0A797BA /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = 1502F66B6DF47240BECBA7DAF52792D4 /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5CE0BD054025A82FFE16616B8559F448 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = DFD6B459CDADF5A779016A8B51D7B27A /* UIImageView+AFNetworking.m */; }; + 5EC29ADA772D468B84D3D21EBCCF4BE5 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A160288374D399361D96BB87C0F0389 /* FBSDKError.m */; }; + 601A0AFB02EBA07A6FCCA9811A758BDA /* PNObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = B2C893DAD391E87E8A4A1A581DADDB1E /* PNObjectUtilities.m */; }; + 60DF31167DBFA80897B07665C23D2F06 /* RZDataBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = C996090B13A384767CD1D174BC7C93FE /* RZDataBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 60FD561476C33184D4CDE57C19237F42 /* PNObject+PNObjectDELETEConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = A08AE125079B781AFAD3479BC84A9403 /* PNObject+PNObjectDELETEConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 61C17A4C6926274B9362540760826225 /* AFOAuthCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = F997A285593487CF4D2467662618064D /* AFOAuthCredential.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 623976AE79DDE4B446ADB0AB18158DF4 /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 612F262688422A838FBD8457582F09F3 /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 62C6C3B335402F6735C1C7819C68A078 /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = 657D97DDD493FB72F983D3A29CD5B2A3 /* FBSDKAccessTokenCacheV3.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6332CC1C2B83DA293197FE7B4568EFAB /* PNAddress.m in Sources */ = {isa = PBXBuildFile; fileRef = 87AAC9B7E486DDDEEFD4F57F7AECF48F /* PNAddress.m */; }; + 63F9CAF62FF3F4925BF18F8F7EAA3D65 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E83104FA9E0105DAC57B3D1062029649 /* AFNetworkActivityIndicatorManager.m */; }; + 648E9D3F57A37FFCEC532894C5EE0699 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = B812F23AB8D4F223C79DF9E41C418DBB /* FBSDKMutableCopying.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 65E12611819508E2DAB6FBDED66889A2 /* CodFis+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC6DB2CE93C86FE2BFFA87107CCE05B /* CodFis+Helper.m */; }; + 68454CA2A86FA3941D746279611DC85A /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = C58EE65AE76FB96E9215E13D996D4D7C /* FBSDKPaymentObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6845F87B7C7D4DB8D2B1BD551CBA0F50 /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 39A0E708D67DF3D162AE8EA6BB54D30C /* BFAppLink_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6849ADCF79AF3D161FBF7F60FEF911CF /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 2219317883A77BB64723FA78EDD93B03 /* Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 69A678E4CAE098311DFD3A51A140747C /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CA4B3B1E2DC384D754F5F1E6F415285A /* BFMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 69F5C89876B1A41A040E6A9643D91E36 /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 67FB21CF1D8CFEF98F752ED2CBDF78A4 /* BFAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A55F873250A5B1E26E0320E42790F94 /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = B60A2EC0A74153D3BF10596C0E97F49E /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6AFE20F50EBDFC499A6FE45DA4FB3739 /* EXPMatchers+beLessThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = E4A63B8B67E63E3B938D6AE92FA3ABF3 /* EXPMatchers+beLessThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6AFE74F0E16794B1DA54D02EB8E39C44 /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = E5DE6868349BC3A8C692E9F7B55A7B10 /* FBSDKWebDialog.m */; }; + 6BE8998FA3899A7DC8EEBFDC63951BD9 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E9657037019A3652D78224AAEF0B514 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6CE80E1B0528BF7F15853705D93EFE7D /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B7AB4D7E1AAB4D06CEAFFCA1E9A155 /* FBSDKAppEventsDeviceInfo.m */; }; + 6D5F44172F6AAF24D4247D37094BC155 /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = AF0641978DE2E2E138B79745F3250987 /* EXPDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6EDAF7AAD2C46E8C4D9EE5B39B71F2B0 /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FFC61D9E9C72B0BE6BA9353CAA3F476 /* FBSDKSystemAccountStoreAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7139601222F664B8F5260815A59BA08C /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3340B284F5A4B1101B2EA55D03F67179 /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7167A0191A09719D4A5FC81E405FD491 /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 78B6CE2F982824ECDDB62EDFA68DBF72 /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 72953BBAA66CA4C193619829C6DAF56D /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 19733680C010A769F600B8B7ADD1E09A /* BFExecutor.m */; }; + 72ACC51F1B63B0D7053398FE4CE62237 /* XCTestCase+Specta.m in Sources */ = {isa = PBXBuildFile; fileRef = 584248C5CD7B315AF5246B8C364DC902 /* XCTestCase+Specta.m */; }; + 7328A1382E043DA2F89BFD188961A2AC /* SpectaDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D05E1EE033D6F80BA1D0B98AAFED36F /* SpectaDSL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 73A05BCFF872DA1600985960A1E9313A /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA5CAE31536E1E27629A11BCB4CF168 /* FBSDKTypeUtility.m */; }; + 73B41D0198453FB22EB2992ED406C255 /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 88C2F4FA76F01022B37B706FD918FBD1 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 73B69F9F5639CE18FC39D234E7B5EC66 /* PNObjcPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = B52A626CE55E09268E47AAA82D1F702A /* PNObjcPassword.m */; }; + 74ACD77123BD1E4B1F25DE53DAED8EEB /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = F9F3F51028FF3A97837DA90F7A32F64B /* UIRefreshControl+AFNetworking.m */; }; + 7625157774F10E1D7FCE7AD9293D706A /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F32FCB8E3AAC327AB06D88FAEFD089B6 /* FBSDKApplicationDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76970FE79DF1B898BCB37CF7594E6A56 /* XCTest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC8BE4BC81727568FEF5A2CD6DEBFE6 /* XCTest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 782E505B23A53D503A897D1D4F4676BE /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E7F45333DDB870BCE9AF8768954BD3F /* FBSDKAccessTokenCacheV4.m */; }; + 7884DDB21AB55B9D2A9762D0FB4DBDDA /* Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = 490E4BA82FF5E83ACB0A9E2DD8CEE169 /* Specta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 798FDC261242E3D89E95749D6102E07C /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 980BE1AD67D110D1788859B542CCB1F5 /* BFMeasurementEvent.m */; }; + 79ADDEB18C07943EF2210D20F94B065C /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 86DBEE22F90A25649F8A23C69D2CB5AA /* BFAppLink.m */; }; + 79CB053D44A4204C4278653CE5365441 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 4384BD4D2EBA42B4DB88C818E5DFF02C /* FBSDKBridgeAPIProtocolWebV2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A363BE29075121D69BB814A5768C675 /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 29CAA7D9F787A2A120080AC6FC88E236 /* AFAutoPurgingImageCache.m */; }; + 7A9C233F2D2D2C54280244BDD228675D /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = D379952EE9B1CC53D49E8D28922CA33A /* BFAppLinkTarget.m */; }; + 7BAEC6BD63A58DA35019F4928C72D9C9 /* EXPExpect.m in Sources */ = {isa = PBXBuildFile; fileRef = ED6D51F798683F56C36591205BA05DB5 /* EXPExpect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7BE57CA288ED004D34F221B694BEA79C /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 01D145C12D119AE56EC1613D66D72B39 /* FBSDKInternalUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7C450A1740A23144EB8386C9CE61357E /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03E5451DC47BE87809A74157B93B4B6B /* XCTest.framework */; }; + 7C4B8DCA490D1C3C1466C8A074ACCA2D /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D1B47152DC334661A7C9426021D280 /* AFURLSessionManager.m */; }; + 7C665FA91BFEDAE2D86EE1F2F0BE82CB /* NSString+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D2553C93DE666C6DC8243EA12538803 /* NSString+Helper.m */; }; + 7C9F9DB10AC9460EAA4D07C6D474A59E /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D9E442F484C4F1DC9544D140367F44 /* FBSDKBridgeAPIProtocolWebV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7CED56B0BD2B2620B7BA217EABF2D786 /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D42F1517CD3CBCD0BC1A82B4348A5FA /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7CEE201A575FEBE9EEFD11CE158C9255 /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = 41A6FC6A658296BE9D7A339CB81EAD43 /* FBSDKProfilePictureView.m */; }; + 7D275814958507972D63A5B648DBF7BF /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = B386F32BA189CDE63C05CEDFCBEEDCAC /* FBSDKAccessTokenCacheV3.m */; }; + 7D80F293E0D0160FD33D353B80E7D92A /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 23628EF3FD25B246CE001581C88C984A /* UIWebView+AFNetworking.m */; }; + 7DBE8A059E20CB8FEA3831FC56E68776 /* FBSDKGateKeeperManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A0A30EA7D3C07597C704B556AA795310 /* FBSDKGateKeeperManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7F327FC086D3D6841E6A6336BC20B000 /* PNObjectFormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2188B59C0DAFD7EDFB9D610675470885 /* PNObjectFormData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7FB8F274FA3C814E62E483970745CB87 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D10C44817DB43A6E8F62B37FF8FCC7E /* FBSDKErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 801516439734262C213D041E4F822BEF /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 752D97D6051447FA1D520A1D682AF84D /* BFTask.m */; }; + 8082C8E30D7F0BE0C73004BDA8A5DA72 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = FDE981D03BCA1801082CECF58AA2154A /* FBSDKBase64.m */; }; + 808474CCD1DC03A8F9CA1EC5563C0F32 /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 653BAC33D44AB2E4F138F12134718430 /* FBSDKMonotonicTime.m */; }; + 80C375FC68F9B28B33C527FBEE3CC6A6 /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 33CB6A8AB8A00F2435EC6FD2E5C4153A /* FBSDKTypeUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 81A2CDBF20BC107B1A9F6B746220AAE3 /* SPTCallSite.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B540B0E52E9950F9224BC7DCDB4AD77 /* SPTCallSite.m */; }; + 8205F4BB9304CC301ED44469A25A31E9 /* SPTExampleGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 91F1A51E5822337B24C5E3E864B398A7 /* SPTExampleGroup.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8254DD6462D680D89B2DF314A136411A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 294FAA371210175694E4B8BFBCB7CBB9 /* UIKit.framework */; }; + 82C5215501C4109081E963A4815FCCF1 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = 178B9C0FDEE0457A3F981794A4826081 /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 834D962D86A4EF1CFF861CC2EFF48B0D /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E8382E098B0ABAF91909E30F6C711AF /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83BEC211C2359FAF1ABF087FF3A89426 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C85D9CEDCB95BB4A71EA215C8B90FF8 /* Foundation.framework */; }; + 851A96A6C60CAE6F883E8546713B8C63 /* PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DB74D19D498C0E48971AC94032AED38 /* PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 854A5179B17321B1ACE2F4F89A1A6887 /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D6BD89269A6DD8558CCEFB8B8582B93 /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 85AF5441BF15F5DB12ED575581E7D143 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D54A9F46B6EB907BCD2C84BDC8EFABF /* FBSDKGraphErrorRecoveryProcessor.m */; }; + 8779A887F9007A0F876939F6CB7848BD /* FBSDKAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 61F4EB45E0D70DF1C15C5E1396FF36C0 /* FBSDKAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 877CB69D147D2206337C609F0051CEBA /* FBSDKWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB4B944F703E86FB6328A72D391C38E /* FBSDKWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 88710DB33EDBB8884DFDD3D7560754F3 /* NSString+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = C2DC5E9F159D344A67D6569916FB180D /* NSString+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 88B9CC88372552827AD0E8D10242F150 /* DDDKeychainWrapper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 656001A3D96976072BAC29FA16251DDC /* DDDKeychainWrapper-dummy.m */; }; + 8982E8831CCB8A333F6EC231562DE2DC /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = C54A3D5DFA79A22C7935EE0CD80898B2 /* FBSDKGraphErrorRecoveryProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8B37C2630B2920E9936B5F3EE0194A57 /* RZDBCoalesce.h in Headers */ = {isa = PBXBuildFile; fileRef = CB5A23D7CAB1F7D76E196945926CE000 /* RZDBCoalesce.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8B51D3D8AF6B8CCD98006F3587BE5167 /* NSLayoutConstraint+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 361754E20DAC382E2D061EFC136F5E20 /* NSLayoutConstraint+PureLayout.m */; }; + 8C25C902AEF7C1B06FE471BE69026EF2 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A1695794226E0FEBAB9495DBB5A8709 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C6DC17FC0A96C7C96A2314AF08631EE /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 289E3A20F1A86561270D02B85D1B4997 /* FBSDKAudioResourceLoader.m */; }; + 8C705E2BC83BFD6710BBA748DFD90E3F /* AFOAuth2Manager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BB30C0BCCE010C3483BCB26EC8864B3 /* AFOAuth2Manager.m */; }; + 8D49D4F395AB88CDDC252BF64B4CA46A /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = A4816B197A4DA843B5BAE6D7B991B453 /* FBSDKAppEventsUtility.m */; }; + 8D6037046EBDB4211EEE5EB161E3F4D0 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = EC6F59C205AF23ABEA19AA731A6E8609 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8DBE38B9A78C819A0F99EE4F4575BB9B /* ALView+PureLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 03321EB295089087235FD1C62963C992 /* ALView+PureLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8DFFD5984190D2EE669224BA497B4054 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C85D9CEDCB95BB4A71EA215C8B90FF8 /* Foundation.framework */; }; + 8E871A4784D115B96DE66366B9ECC20F /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 8034D248C388C25F4A2F229BCFDCE2BD /* FBSDKErrorRecoveryConfiguration.m */; }; + 8EE43CC6A3647E5F30094088F7068DDE /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C83F37F9D7191D64044FEA1C2C4A14 /* FBSDKSystemAccountStoreAdapter.m */; }; + 8F5284023F4AF857EACFEFEB8F6BAB9C /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = EBDE76588719717B85EEA3CFE6CBBA5A /* FBSDKBridgeAPIResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8FAFA679169B991C26440F5BA1F79AE4 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0194AAE82EE02294FBF03732E0314254 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 90D504C318D675FD00626279AD97F220 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 579D3460161136F30D8823384E6BED3F /* FBSDKBoltsMeasurementEventListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 913A4693C4D7D0EB7F70C4FA43A032CE /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DE562258E02C8B31B463F219B25B03 /* FBSDKAppLinkUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9182F8DDBB6D41DBD25D620B6F16FA84 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = CAF2CBBBAF5ADC862D5BACCC4996077D /* BFWebViewAppLinkResolver.m */; }; + 9248407648D571CEACE65F6AAB54B91C /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B57BD272FDCBE8BC82C09FFC50A9C18A /* FBSDKApplicationDelegate.m */; }; + 92E331296E10F89DA5A2D6D70947091F /* SPTExampleGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = CB04AB2F151597DDE35ABB4444ED59DB /* SPTExampleGroup.m */; }; + 930EBC3071860B3F7C858DBE14EADE91 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = 10E26528C336427F30503DE4A1011920 /* FBSDKAccessTokenCacheV4.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 930F99A88D82BF693305A4034BA85667 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E057CFAFE6D8AF73684B5D93F4DADF4 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; + 9328E9935D35F813E10B1A9E9F56B050 /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 3153FE2486FEC2BF286C9A3D1945D053 /* FBSDKGraphRequestMetadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 93513DBDD1318B7A3C7C45B9B8D29573 /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = B6F2A4C4D0967284E0D0FAC0BF68CE4A /* FBSDKGraphRequestConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 936F558BB8EA4B91337D3C5F3B01CC7E /* ExpectaObject.m in Sources */ = {isa = PBXBuildFile; fileRef = CFED1553744DB17CCC9EAF9970D7ADB9 /* ExpectaObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9378000FA0D713D2D2092A8EAD15148A /* SpectaTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 490065D128802441BB1FB732F56D40A1 /* SpectaTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 941422EA6CD6C2B9195574DEBB31BA62 /* RZDataBinding-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D343872EEBAF43CE0DC2F119F06F9039 /* RZDataBinding-dummy.m */; }; + 943BB5F34B5CD9664133C86620EF1727 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3C32898DC0EEBDBE77CAB1B4600672 /* BFAppLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9540D014FB0C64E24A6E6A857CEE2647 /* EXPMatchers+haveCountOf.h in Headers */ = {isa = PBXBuildFile; fileRef = A0CC2E228E2C2712B4CAFE870E91A503 /* EXPMatchers+haveCountOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 95B8E7085D1C0F363E53D6EE4E0ABB18 /* PNObject+PNObjectConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = E0313CAEAAB995D3E3B8BDC53F978BF1 /* PNObject+PNObjectConnection.m */; }; + 972DCA7EB0835B792402F05F786C1C14 /* SPTTestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = E7AD97EFD9264A7C82BA037AF359BE3D /* SPTTestSuite.m */; }; + 9750E566793768EF169431B2637AC99A /* FBSDKURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CF46963F5DBECA8F990D664E78244DF /* FBSDKURL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97608DD732C7501FA73459EAEFFDBC93 /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = FFC91391FB0F38A92CB464EFE66C96C6 /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 98AE287D8461DCB483F70251BA9C8D8B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 294FAA371210175694E4B8BFBCB7CBB9 /* UIKit.framework */; }; + 9922BFDA9CD5FC96536EBF693423E398 /* Pods-PNObject_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 73B30F1E60DA52CB98F98C8708976D8F /* Pods-PNObject_Example-dummy.m */; }; + 993ED47BA6B60C214B39DB4D35E1C04F /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = C0C580581B1648EB29BAF15596AC30A7 /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9A18D8A6550A52F5C7F0BD126DD7F405 /* FBSDKURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EBA549F8235DA37DD70326A1AB21B5 /* FBSDKURL_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9A32132BBD1C0453C10F1A992997C190 /* PNObjcPassword.h in Headers */ = {isa = PBXBuildFile; fileRef = D42FD38E24E40D4390E6E20CB316304F /* PNObjcPassword.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9AB4F67423DDEC3E36F0294CCEFE4010 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = F2D4951CDBB16ACA06C05E8650AAB14F /* FBSDKBridgeAPIProtocolWebV1.m */; }; + 9AC6D21F0D2ACFF0490A2A968FB28521 /* NSData+AESValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D2FAA475E195F7FDB9C14388A0CB4FB /* NSData+AESValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9AF2E07B66DEBC787A23B2799089F44D /* SPTSharedExampleGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = E8CFDBC024987EFC67CB0D852D0112B0 /* SPTSharedExampleGroups.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C2B52680D797FD8AA55098040DDBD10 /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = E55F7EDA314738FA02044CEA17817FFF /* FBSDKServerConfiguration.m */; }; + 9C753A1C10DDC28C8C9215D0B58CCE9A /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E7817995CA8E82F8CA7970DB4DC37A6 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9D31345E6705268F31624DC267E50E91 /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = CDFA2D80B9175C43B70783FFA8D28F5D /* FBSDKAppEventsState.m */; }; + 9D61DBE4FDD3C57A86A64767032F4FCF /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 07586B8A2F580D9D57878CF276CF8B47 /* BFTaskCompletionSource.m */; }; + 9E1436121B15B5382F66D42C2FF72011 /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = E952FECC9010F2150703CEEFBCC1ADAA /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A08E34400227E1A75FDAB154821A6736 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = CE4B797D6FFA8E39076D94474C4CFF86 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A09C6504411ECD4F3E27CD83C993207D /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ABD3C066C9577CD58761179AA0C798A /* UIProgressView+AFNetworking.m */; }; + A09F9B2F3CED75ABE254AAC2D86EC7D2 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = E6DE64501D9A617BC0052FB3EC5F98AE /* FBSDKGraphRequestBody.m */; }; + A0D3C44433C22860C19EBBFBB777BA40 /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CD0F9B6480334A437F00EAFB30C5490 /* FBSDKColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A108BE03F5D82F24F809AF618B7D9409 /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = B0FC7D94698334D0BBC3EC267ACF3015 /* FBSDKMath.m */; }; + A14858EFB92503250412D4DC000E6388 /* CodFisResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 015C55CC7496765F59115C2D0ABFE3F0 /* CodFisResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1624FBD76B02D023B491C5DFA259F6D /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 19F19F5B077D4973A0CCCF126880FE82 /* FBSDKConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A184D61C3BF5B154326CC7F552AE65F8 /* nv-ios-http-status-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6515F05B30E44361827C3A533E8CF0F3 /* nv-ios-http-status-dummy.m */; }; + A19471AD6C740493AA3BF36A37AB1FC1 /* Specta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93098FE37E7E5400834CFB5D30CBAE5A /* Specta-dummy.m */; }; + A1FF9CB98C6B84C2D8293739F0EB3907 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = EB408E69B1B8079E81A5B47D7C42E525 /* FBSDKCopying.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A2575C21DDC37B95538CA49A5A151609 /* PNAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 25D8F4929C2A75DC37221A0AA12824E1 /* PNAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A33844353A16AB0A5CBEDFE047734EA4 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F3F5F3BDA07EC4ECE61A1B0E4D70395 /* FBSDKCoreKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A461560958A7C2A444019DE8C9D4AA73 /* DJLocalizationSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 09A76BA64EDFC80D659AAEC83BD6AE35 /* DJLocalizationSystem.m */; }; + A47058BA3D8100AC8AD306DE999C459A /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FF247BD248692D6F5E815E389F39D61 /* BFCancellationTokenRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A4CCAE0364E7A158E452A26B49F09019 /* DJLocalizationSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = DB7FD328AF97B85C0DFEA22287D84F64 /* DJLocalizationSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A524077B10F421A23E43A3FAF0742C09 /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = CF48680A6189A72332AD76B9B13FF39C /* BFCancellationToken.m */; }; + A60EF137EABCA04DFDB39AFD4B37FB13 /* FBSDKImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 28DA6EFDA7EE38714A86AD2C2B12C40A /* FBSDKImageDownloader.m */; }; + A666FF416DB9D781E4D26A9F37D259AF /* FBSDKURL.m in Sources */ = {isa = PBXBuildFile; fileRef = F7FFB211E02B400D0F1B911B5476C751 /* FBSDKURL.m */; }; + A66A8F49BCF0452FF86B23746E4859E2 /* PEARFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C2CED6A861BAF4CC033E7EF4C7E62E36 /* PEARFileManager.m */; }; + A67845A90E116A203E63EC3479348C95 /* NSDate+NSDate_Util.m in Sources */ = {isa = PBXBuildFile; fileRef = C5304D5A185D69A482777C150506A2BA /* NSDate+NSDate_Util.m */; }; + A7578BE8C819FE4979DBB9591EB85717 /* NSDate_Utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 016C6F7C8A40FD73841130A33A381F63 /* NSDate_Utils-dummy.m */; }; + A8632DA71B09D43374CF7CDD90186031 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 995E14547E0A7F21450289297BF529EE /* FBSDKBridgeAPIProtocolNativeV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9E8811619AB5D2D8AB83565045A98D4 /* PureLayout-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 58EE28538DC768AED75EC8F88A6C5D17 /* PureLayout-dummy.m */; }; + AACE3143D5979498634D88F2825A5835 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 60FA2B7810F7D78E9D4A9C844A4EF183 /* AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AB182D0291DDE489515C35044E922290 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = A15BD8FDD2243D9BF14DDE5C44E49496 /* BFCancellationTokenRegistration.m */; }; + AB21C0D330C9B43FE6EC4A8BF305D2D9 /* DJLocalizableString.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B724A4508AEEDF70BA5BCA12D50B6DA /* DJLocalizableString.m */; }; + AB5BBDA109B69FC3AB4B19AF19D79137 /* NSMutableData+AES.m in Sources */ = {isa = PBXBuildFile; fileRef = B8D399040D4E42EB282B029396E10A4A /* NSMutableData+AES.m */; }; + AB5ED060D8115BADD3439C8FBCF3B7DC /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = E1BC5DBB5D548FD1B646BDB961D94149 /* FBSDKGraphRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC1EF555A2BE4175645FC535C0A5028A /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = D220B834A39FAB9DD3F2CEFB81B1F433 /* FBSDKCrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC664ED99788248D29FCD1F2584D9775 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C187085E02BD1208D982095A76F6866 /* FBSDKBridgeAPIRequest.m */; }; + ACD06101A93068B534BBB211DF3574D8 /* PNObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C775F44E2FBA24D38FF9B7D0B1D0435 /* PNObject.m */; }; + AEA0520A2D183DB2B136DAD0F8452DA3 /* FBSDKCodelessPathComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = B9F7937AACA50141FC8E4E3252B6E1F2 /* FBSDKCodelessPathComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AF0FC2879F810DC81CCA59A35ED695DB /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = B2817CB6A61A68540B51B6D215B82C75 /* FBSDKAppLinkResolver.m */; }; + AF2E1D84AC3C2318579CED74EF6D5294 /* VatNumber+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 0646A926CA42E57A5BCF976CCB05110B /* VatNumber+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B0163131C0CE19D92063F1D4F6A3A57D /* SpectaUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F3ED38E28BFF5C699CE4885714C3E88 /* SpectaUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B14D736299BA7FC6F286FA30D7E373F2 /* DJLocalizableString.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B436B6A42B9B4BDFB99DB1F3EC44A7B /* DJLocalizableString.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B161962B63AEF26A9B8C23AF34A1AD23 /* PNObject+PNObjectConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = A8D49478D57BB6B6FB40C1ADA4AFE932 /* PNObject+PNObjectConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B1C42F73D7CFBC372C30F46F032D4CEC /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F178C88F2A7C0B9E96D92CF14D88A6C /* FBSDKAccessTokenCacheV3_17.m */; }; + B30CA0A041BB4FBF8F4B29B54654E57F /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = DD5CAD3D437EB8D22A3FFB4418C856D9 /* AFImageDownloader.m */; }; + B30D47730AD028E1D0FAC710C5D2C68D /* NSObject+RZDataBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B24CBD3D048F362BC22183941A2179 /* NSObject+RZDataBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B338D6C9D6E10095446FBD283A0AAAE8 /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 670DD800EE70F43E4275DED5BE72A491 /* BFWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B393D49D591107B9068E39C4E4AF8A99 /* FBSDKViewHierarchy.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AA8B738B89B1B2DBBE7390C9258C0CD /* FBSDKViewHierarchy.h */; settings = {ATTRIBUTES = (Project, ); }; }; B3C78FF7324B4E995EB136FAF0549ABF /* Pods-PNObject_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C6A7875971DFD8B00865186211FBD472 /* Pods-PNObject_Tests-dummy.m */; }; - B3CA67B486E1719A124C5F1DB4256AEF /* FBSDKAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6858509AE4AB5B41576F24603F15520C /* FBSDKAppLinkReturnToRefererController.m */; }; - B4C7B543C4543A80A3043F3537E13745 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4536743F73315987683C3324B01D7139 /* AFNetworking-dummy.m */; }; - B4E78AC964A04F565CF39007DA69D21E /* FBSDKCodelessPathComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9302213966977B870A5EDA47DC66C8AD /* FBSDKCodelessPathComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B5023F69DFBFE68C058D189C112AFE94 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC6CBD664A2CBD2083B8BA395BFEDF5E /* UIKit.framework */; }; - B60DED481B8C9145ED79C156F76E4FCF /* EXPBlockDefinedMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BC8DD89E498C32B266891C23AB6FDC5 /* EXPBlockDefinedMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B61ECF9951BDAA47C2A0F8026561382B /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 116BDADEF0E5671E2778C019325BDDC9 /* FBSDKBridgeAPIProtocolNativeV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B67E5C353B849EE14AB231F4B6300202 /* EXPMatchers+beFalsy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5DD49FEDCD3CD1BCA1ED51D8365DEB /* EXPMatchers+beFalsy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B7368CEE2255870200C656DF16C7B400 /* FBSDKShareMessengerURLActionButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F541374C8430DA0077106D6E5F1DA26 /* FBSDKShareMessengerURLActionButton.m */; }; - B75A9E1161273C93F86B87F905AA7F66 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 083753C776988E690880CA346ABF5823 /* FBSDKAppInviteContent.m */; }; - B8041A0CD63F21B8E087F7F795212B5E /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AC895753CD9C702066BD2354EFB381B /* FBSDKBridgeAPIProtocolWebV2.m */; }; - B81578EB27000DC5531AA588AE3AAD2F /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EA81D366F1C2DA0E3C48520066FE1B /* FBSDKGraphRequestMetadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B81C0407BB365772AF796E215E3B5242 /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2186D54B2A440BC97AFEBCB1544D9B /* FBSDKContainerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B8900D0468D47B26F18E5DDE71FDAEED /* FBSDKEventBindingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 28A68BE6ACD020D05F047DD6D0F256F7 /* FBSDKEventBindingManager.m */; }; - B93A615A86ABFFAB3D0CF5A94130F439 /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 50035DCF1A752411360B10EFFC35F0BD /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - BA0BC9FE6A015F2A0A52F7C393CB6EBA /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 978F9D4BBECDC7A7F151BB55D0C12299 /* FBSDKMaleSilhouetteIcon.m */; }; - BA646F2BFDE06DC5F9C1EFF721FDE25B /* RZDBCoalesce.m in Sources */ = {isa = PBXBuildFile; fileRef = ECB1D7720A8CF797BE0808D89E06D033 /* RZDBCoalesce.m */; }; - BA7FDA4FBE08D8538A578557CBA6DD4D /* NSDate+NSDate_Util.h in Headers */ = {isa = PBXBuildFile; fileRef = D638C12B68218651E52AA8E3C94B2413 /* NSDate+NSDate_Util.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BAF05A6456511CD7D49701575FAC468C /* FBSDKURLSessionTask.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8982068C4262C37B85828DADB96866 /* FBSDKURLSessionTask.m */; }; - BBD6D82E3C00632FB251B0091A037311 /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B56D76D2BF08891F4D7012036DCE314 /* FBSDKAppEventsUtility.m */; }; - BD513782772FB9C8D088EECEB26994CA /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 375620A2EF26926B58593F4262BDB803 /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD999AF96970AA00FA8E946619D45AB6 /* SPTExcludeGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DFF53BB878A43B652F3626FE15D5FBE /* SPTExcludeGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BDDB1F5D66FFF46AC15B13F74D65FA07 /* EXPMatchers+beCloseTo.h in Headers */ = {isa = PBXBuildFile; fileRef = B2ADEF6DE2A753024D7EE6BB62C12A0C /* EXPMatchers+beCloseTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE14473DEDAD7850A96E9EE6BC1423B5 /* nv_ios_http_status.h in Headers */ = {isa = PBXBuildFile; fileRef = 16102F175FCEF915822BF8406CA5D2B2 /* nv_ios_http_status.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE54A0902E6EB79861B5BCA6990FF0FF /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 35804B3CEE4F9061640C2881234D0B6A /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF0236A4E80A93AD277A8CE46B0F983B /* UIStoryboard+DJLocalization.m in Sources */ = {isa = PBXBuildFile; fileRef = 43075ED41EDAC5215E93E64528886C1B /* UIStoryboard+DJLocalization.m */; }; - BFB95EF7E9D91ACFF230A61EF5274AB2 /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2964338CB51713FCF4178C7C529ACCAD /* BFAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C09D68B57794FCA0A63B590B7AE55F2F /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E5426E047B8483C151AF23A6C16A5096 /* FBSDKShareKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C1C824B655656D6CD5F1F5DD11C29144 /* SPTTestSuite.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D21A5C3093EAFB3E12E7F651A3A132A /* SPTTestSuite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C1D3558C4859BC717A8EACCB37215EDB /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 807B96CAC1ED20D949D005D57A05B2B5 /* FBSDKLikeButton.m */; }; - C1EB4DAB79037286B468228A394383C2 /* EXPMatchers+beInstanceOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B80C2A86E5412DD2870FA63E06F6E33 /* EXPMatchers+beInstanceOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C2B68344FD47E6858D5E4334F0613EE6 /* EXPMatchers+beNil.h in Headers */ = {isa = PBXBuildFile; fileRef = 87F16AC73F6DC5DC5D2C30FC2F111C10 /* EXPMatchers+beNil.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C2E2A7A3651EA92318AED45B4431B3C1 /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E93CE678CED3D184D0F8007F9391C4B /* BFAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C3763545936D68F70E2336A6DBDF87CB /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 161DDD68AD6642631788D91C227710A2 /* FBSDKBoltsMeasurementEventListener.m */; }; - C471AFE0B359ECE7205F6275DEF2BF45 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BBE8F3262FA519552E8C2072923D34C /* FBSDKError.m */; }; - C639AEC65E071F50582B05D632780677 /* CodFis-Helper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FFB25E6B9D88368697A01736E84DAF5 /* CodFis-Helper-dummy.m */; }; - C662AD540F8337B3C028C0AD1439FA64 /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 44E358B4FA39962000122487194B2760 /* FBSDKURLConnection.m */; }; - C6DA0DDEDF28D634002BECBC9EC1682A /* SPTSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 118E6026F09B98DA73AFA88047CC0B74 /* SPTSpec.m */; }; - C6E4AFFCF5DFEBEA9619B9ECBB505236 /* UIImage+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 51584A1ACF25CB49347808148BBCEC99 /* UIImage+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C7150A505CFD257A50D71B17A42910BF /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 710A0BE4E9782F28B5400B86A0F9E4B8 /* FBSDKAudioResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C756B43DD45331E8FDAF4E336C0F1238 /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = D1D89136781DE0949112D15F9A3DD031 /* FBSDKProfilePictureView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C7712DED5239B6760E136922EAF9E723 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D7FF50177AB684897EFA94FCCD615D /* Bolts.m */; }; - C7856D541CA8451DA020A79FA20C3EAC /* NSData+AESValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 662CB4A93808AEAC21BCD400DC311E45 /* NSData+AESValue.m */; }; - C81A1DB73312FEEAA34D09324000B55D /* EXPMatchers+equal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B137C5DB9EE4C34F0784B0E2300B45 /* EXPMatchers+equal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C960C17E58C7F8869EECC9C019E306D8 /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 43FDACBDC768982815404996FC3041F0 /* FBSDKAppEventsDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C98721120AA130804106F8DE44DCA31A /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 5337B1EBF72D885EDB2CA3F253FC5B37 /* UIButton+AFNetworking.m */; }; - C989BECBB7EAC0BF548A725B7950B784 /* NSMutableData+AES.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B67BCDA25FB657CCDB23961B3E77CDF /* NSMutableData+AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CA4CBBB9D9DAEF8174BABB823407FD72 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 600F03DF58A86C9F7FE46DFD525FD1DF /* BFExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CA71B66465DCED2490A49660B2B14450 /* FBSDKVideoUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C03F27BB1C39FD44794CD971653F9B8 /* FBSDKVideoUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CAD614C557E87939DA2B205FA0F4C449 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AE91203791D4B728219D544E4464FE87 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CB3682266535621C3A27C76EF64E9867 /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E41BAE09E8F96F1CC0C694C0A13330B /* EXPMatchers.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC17AFEFD713E37E561285987DD29B15 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 115C678BF96C98C00C9F1103DBBD9F9B /* FBSDKGameRequestContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CCA944C1829F3BA46BBC9BFBDE9D414D /* DDDKeychainWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 33066B4FAF93E2F3564F1B2C745A7128 /* DDDKeychainWrapper.m */; }; - CCD02E5E143C8FEF45E983835202DE47 /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = B0430D0D9ECF06A2CE776A09363ADA27 /* FBSDKLikeDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CDBACFE3595B7810F501F7401E25AE09 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A56F16109927B5D358D193F6A4BB3426 /* FBSDKAppGroupContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CE2E52CE2DF36E8460C12537B5CF15C5 /* FBSDKSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A047C05FBFBE85A1CE33DE614DF3F33 /* FBSDKSwizzler.m */; }; - CE323FE5656FB439B049DF33D8CD5857 /* PNObject+PNObjectConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = E0313CAEAAB995D3E3B8BDC53F978BF1 /* PNObject+PNObjectConnection.m */; }; - CEA33D025567CBD7BA480680EE5155D4 /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 897162B6B9D1ADADAEBC3ECC01B27AE7 /* FBSDKAppGroupJoinDialog.m */; }; - CFFC1615431F962973EBF97147D9F9C6 /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 89DC8847612A5AB4B27182CD26A19A76 /* BFURL_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D09583AB4C7EB67FDDBBD816E3D00772 /* PNObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = B2C893DAD391E87E8A4A1A581DADDB1E /* PNObjectUtilities.m */; }; - D18BD7987D2CA65008AE124484765BC5 /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = C9E20AA73ED43F96743A6B0090627D94 /* FBSDKAppEvents.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D19E441F3323329722629EF0AAAFE2CB /* PureLayout+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0261380939A77EA9E7D9F9C73B948DE9 /* PureLayout+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D1FB09E6227F5F596C07468BCFBD7165 /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 18BEBF8BED1319225F8546240158824B /* FBSDKShareOpenGraphValueContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D1FBE3E2B04D6961B08D4859CB79EFB8 /* FBSDKDeviceLoginManagerResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 149C3CE987355271447E21C7D65C6762 /* FBSDKDeviceLoginManagerResult.m */; }; - D22BBEE4E9A6F0D6CE505B5F5B038F99 /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E58111244B04B80DFF62AC8B4F6EB56B /* FBSDKLikeControl+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D237129D7173A137ADFEBC3AB1CD6DB5 /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = EB5B907BC96C09D6BB405190C882BBD5 /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D27998A5D70CDFECD6215ED2D001AFAC /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = E65882AA0565553B48541CD07055A7F5 /* BFURL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D300575510C95C1B143422392CE52070 /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7371F8850210EAA2725BBBAE33355C08 /* AFNetworkReachabilityManager.m */; }; - D34C710467282F4B6769AD9FDBB46B8C /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 24E61FE78C6598F0089A36428F1DD048 /* FBSDKSystemAccountStoreAdapter.m */; }; - D4EE59FAC1241AA395EA48C2815687B6 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2598C4C9811FCBD7CCBFD97D7268398C /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D58BD72826927EDB727E3C1AC28E18DA /* UIDevice-Hardware.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B879F919DEDACAC5C1C25842290A8F /* UIDevice-Hardware.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D67D67B12F46354719F13F401866FA2C /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = E63D6E4DE52529EAD9459120A230E416 /* FBSDKBridgeAPIProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D6A37D98D7F4B1F3E6BCABC252708FA3 /* EXPMatchers+raise.h in Headers */ = {isa = PBXBuildFile; fileRef = 48EDB67FEAA6908810F10C1EF4059E0B /* EXPMatchers+raise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D6B0E1F1F7350E9E185C7E7C3A5497CE /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = F1965FFF8D5A2E0C288D9A560FCFEDCE /* FBSDKLikeDialog.m */; }; - D6C6543A6E64AF372F94310EAEAACADB /* FBSDKShareMessengerContentUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 168389A483EE1A2FFB33EAD7A72599E0 /* FBSDKShareMessengerContentUtility.m */; }; - D6E1856128BBBA14F707E98BB604EC93 /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = A71F32979088B96559A98FB6021081D1 /* FBSDKAccessTokenCacheV3_17.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D728200841DAF28BBAFA715C27EE08CB /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C705C9C2D61894D5869A2198F62607 /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D7405ADE0E61A53C4D53CDE45B98D124 /* FBSDKViewHierarchy.m in Sources */ = {isa = PBXBuildFile; fileRef = 58C10B7ED365FB6C3FC5BF7C540812B8 /* FBSDKViewHierarchy.m */; }; - D772B9EAAD53EE795989F4980949367A /* FBSDKSharingValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8624E8CEF200BAFC250C1F71250D0786 /* FBSDKSharingValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D86876EFBE692F33A371E6F5F03DDD0F /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C89C465DA4E5F451869D6A411A7A9A /* FBSDKTimeSpentData.m */; }; - D8D7E54B80DAA1E55FE055E6D99F0D58 /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = DFE97F191775602DFEAE6E206DA38BBB /* ExpectaObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D94DBEAF9BA2CA5C9EE33857DF7AD2A6 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 69A248BFCCB5D4AE6EE2607BA308DBA7 /* BFMeasurementEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D9BE0B9B91D0C624AE71E09E800A1496 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = F41E58C8325EB10B4B63392FD847BAC6 /* FBSDKShareAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D9C2977315727943B95783191594F4BA /* FBSDKSharingScheme.h in Headers */ = {isa = PBXBuildFile; fileRef = 6932BABFB9914AE06E34FF9EC3FB6099 /* FBSDKSharingScheme.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D9F69F13B40DC9DB196645DC5CBEE6AC /* EXPMatchers+contain.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DCA1FB1D85806F924962DB918031C6C /* EXPMatchers+contain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - DA95222E5B79F198BA9DEFADDE6AD3A0 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = EE55C4283AF5E8AD1B4721099DF4C764 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DA9DFA194BC2AE32325A7B91FDEE82AB /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = C08EBEEB85A2C61F7C4454A227DD0BF3 /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - DAE3672406C3D69A54E3314F294B889B /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = F17BB7C782512DC313E03E2EC880AB33 /* FBSDKShareVideoContent.m */; }; - DC358C30D45F03939F47285CF07EB319 /* PNAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 25D8F4929C2A75DC37221A0AA12824E1 /* PNAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DC669F3DADABC97D51AE04F8D26450C9 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 097219E7D000D1D18B00390AF04655BC /* Security.framework */; }; - DD8868A75ECDBCEAF52390B813FF6529 /* NSData+SHA.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BEA087FAA2D12FF5E9BB0B6A376D8DD /* NSData+SHA.m */; }; - DDE3042B112193419BA74F254269B9D2 /* FBSDKShareMessengerGenericTemplateElement.m in Sources */ = {isa = PBXBuildFile; fileRef = C51B5C8D42BB2FCA4FDFB6DB12343DF1 /* FBSDKShareMessengerGenericTemplateElement.m */; }; - DE5557BAD5A0E74C498553437B36AD95 /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = F8061B3868BDAD11CE1E886FBC87A507 /* FBSDKLikeActionController.m */; }; - DE6B05817658FA630B754D05421587D8 /* StrongestPasswordValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA278F288AAA30155CD1A0E2692CB62 /* StrongestPasswordValidator.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DE904AF6BDFFB74ABA599FA9B172098F /* PNObjectModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DDE2ACF69D44496ACAABE1B1FBB2EFA /* PNObjectModel.m */; }; - DED86949F2EA996D06BB9F4A107E855A /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F4F2911C50F7A10EA4CD2EABA60A49 /* BFAppLinkResolving.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF1417108793761811DD0234FCB488E7 /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF47E5D4FDE9BED9604D0D40DBB3A5C /* FBSDKShareAPI.m */; }; - DF2CD8858A3F0E265D27D91895B6656A /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE543CFC04F0279346707BD5FE5A8DB /* FBSDKTestUsersManager.m */; }; - DF73F09FCA1704506EE7E0BF00CD42EB /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D4C3620B470F0BE002263030752F9B9 /* FBSDKGraphRequest.m */; }; - DFD829C488857DF5E6AF3EF01E0DC849 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = F0DE0DF8D914E38271859E2DC3FFAB1D /* FBSDKMessageDialog.m */; }; - DFFE4A79C08EBBEA4A9FF707A8E053DA /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = C1C2CA015EB5FB6D0D7D1E529440594C /* FBSDKSharing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E00CBCA8D11F3B297B594BC1EB0A946C /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = D217711660E1C424F327E5DEFF4DEB5F /* FBSDKBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E012F56169477B39357852DEA9ED4567 /* EXPMatchers+beInTheRangeOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 610B3F3EB62EDF675253EC2EC174742B /* EXPMatchers+beInTheRangeOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E03E56B2C755C083A8FD9F7518CB695F /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 422228405026B213960E61CE3699D6CF /* UIActivityIndicatorView+AFNetworking.m */; }; - E0E020B91D1787D0F9D2A43A59564397 /* PNObject+PNObjectPOSTConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = DD35899D8CC1BFD3DA8589534E8377F2 /* PNObject+PNObjectPOSTConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E155E59C839A05C01878A9630051B628 /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 921954198F5E18C5FB71E329721B3574 /* FBSDKShareKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E1AF014E9751C5E5497BE55247B37775 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = EB03E9ADFEAA91D13AD2155E49EFAC59 /* FBSDKLoginManagerLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E1F5159C91E75C703F981D976A55FD0B /* NSDataAESCipher.h in Headers */ = {isa = PBXBuildFile; fileRef = CAEBDEB3253090886D136A519B999CD9 /* NSDataAESCipher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E282A5F1E1D7D5172562141D53A4F1CC /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 062D98265A110DA997A2F5C88D7BC54C /* FBSDKUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E3562A44D795D0A7E599FD2E90FD2029 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E184A6E100068DE232EEE9238820E8D /* FBSDKShareUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E3DBEE41F7561C185CD715D00AB1B99A /* FBSDKShareCameraEffectContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 77FB2688DB92ACD34FD173329000B6F0 /* FBSDKShareCameraEffectContent.m */; }; - E46299E8D5384050881242D7672B425C /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 35851A4867C0A3869015CB9897C6113B /* FBSDKErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E498771AE0D01B72AD777A84821F6FC5 /* ResponseConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C643735F7E92D45BEA621C1ABBCBF3DA /* ResponseConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E52D40C69C9451A95D4EB12E55F0C1B5 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E34818E402DEACB3E6B52D25C9EAC64D /* FBSDKLikeActionControllerCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E58D3CB8F9931D3436E6C6CE67C718CC /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = D73898976CB279C5DCCEBAE629A98B92 /* FBSDKAppEventsUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E67A8234481FA50D5980A24AD2AF4AA2 /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = B1042C4A000AF83F8B9EEEE20CD52608 /* FBSDKBridgeAPICrypto.m */; }; - E71F169F9EE2D9A0D1C3BFD707EBC597 /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E97A54636CC271E5BC33FC8F2AD411F /* FBSDKLoginTooltipView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7328026D755F191C97DDF1584204722 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = E8E98FAA016C6137D77701FC438F8705 /* Bolts.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E742F9FCAA56C970BCC0568FCC6A7725 /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = A76088022DFD59817505A370A8613F5D /* FBSDKAppLinkUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E76C9020FCD6C28A26C533600E50332A /* FBSDKShareMessengerMediaTemplateContent.m in Sources */ = {isa = PBXBuildFile; fileRef = FD37A75E3B04A194B8A7DF3E67156907 /* FBSDKShareMessengerMediaTemplateContent.m */; }; - E81D9CAD6E38E6A11EE835CC45943CF9 /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 7703EBD91F030530D391B9311BBE7284 /* FBSDKAppInviteDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E88E4C1BCB1CBA2A553235BB712DD5DA /* EXPMatchers+beGreaterThan.m in Sources */ = {isa = PBXBuildFile; fileRef = E8FF921CC0A5BF5881CB0A658CAC6F7D /* EXPMatchers+beGreaterThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E89CDC617E8F7654DADDAF195A813F76 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = A4AA503239425F3D877CFF2FE3814BBF /* FBSDKDialogConfiguration.m */; }; - E8D3A9E9EDF9A53A2D687E868CDF2F56 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C53704366AC8BB3E2D54F6F50F20D59D /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E94AC102014ABE5C8D37A0A7B465E523 /* EXPMatchers+beGreaterThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 4268EDC447EE59BDBB8ABBC399FE5188 /* EXPMatchers+beGreaterThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E965406F721EA9256CBFD9EF82DF07EA /* NSData+AES.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B9D1C914C0CA7355777345FD1C453E8 /* NSData+AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E9946CCF56CB845277D2646DA1B96C1E /* FBSDKAccessTokenExpirer.m in Sources */ = {isa = PBXBuildFile; fileRef = DA654D0F6B5BD3708C8A32ABCAB7F357 /* FBSDKAccessTokenExpirer.m */; }; - EA09268C95CFB9491A86BA3214B901BF /* NSData+AES.m in Sources */ = {isa = PBXBuildFile; fileRef = 9760CF6845E5C00E61FFC02E89A275C8 /* NSData+AES.m */; }; - EA5836F626F702E4380128EE8B51B111 /* VatNumber+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 3232F7829A1283E3AF2D1C4E6E9CBC3B /* VatNumber+Helper.m */; }; - EA99CE0C44219ED43BA58D6B822FA535 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E3E19E0D76816F64A6F358938AA2BC7 /* FBSDKLoginKit-dummy.m */; }; - EAD1758DA7AB856D50047EA8465DEB32 /* CodFis+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 945553D4E0D0A23E3A6D9AFE6D11DE59 /* CodFis+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB6A54166A817E3E3D45BBE7EF30D550 /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 451DE67489762E7BF4872982818685DF /* FBSDKAppInviteDialog.m */; }; - EB6D9A8D925F6815C154269253739597 /* FBSDKEventBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 038CD0BC7F1EB85889C5F6485FCE82E2 /* FBSDKEventBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB7295A0DC35A67A1747CC7A4BCCD85B /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 5ECDADF39BFF0422B052C8AF0281341F /* FBSDKLoginCompletion.m */; }; - EBB345AE250E2766618063FC6ACD5931 /* FBSDKDeviceLoginCodeInfo+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 410011B50EE53E54B3FE68221E7AB585 /* FBSDKDeviceLoginCodeInfo+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EC4CA3E90D2E68CEB1A16146BA5DF58B /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 36730929D0B3CB2AC41BF100F89ACA3B /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EC954F98976DBCD2C5E5811605BB46A6 /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = 521DC8C943ADDC23A72DB305ED5CB36A /* FBSDKKeychainStoreViaBundleID.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ECD308C08C8456FC6B2A4BA1BC9902B1 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 52E0074F55BA1EC501E0972582CE4284 /* FBSDKLikeBoxBorderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ED073B849AE889A12A4305CF57818780 /* FBSDKDeviceLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E32798AA3060928B31D6D2414AE6CF7E /* FBSDKDeviceLoginManager.m */; }; - ED77A4CF2F0B97B6A0DEF913199402AD /* FBSDKDeviceLoginCodeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ED5839BD70E5166E50524F5A135BEF7 /* FBSDKDeviceLoginCodeInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EDE5C02715557E5CEA92915847FF2AE3 /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 712F3FF5530F663771950BCC0CF0B2D4 /* FBSDKTypeUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EEE7B1E3153CFC7CB68036ADB52213B4 /* PNLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = C5E5518C24ABEF56D055C449B0853253 /* PNLocation.m */; }; - EEE90A804A9D9C45B6FAAE59AF648A37 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 152F87FDA18CCB12396926DB0DFF6EA1 /* FBSDKBridgeAPIProtocolNativeV1.m */; }; - EEEE790F4AA17DB682FDB4B385EB7C47 /* FBSDKCameraEffectArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = DC189E040D574F2A4945517C0A1F0802 /* FBSDKCameraEffectArguments.m */; }; - EF04C640BA7EEEB81446613F22E96774 /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEF0C66CA8D1E28D60B2C75C55CE9A0 /* EXPMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF4D23FC58F9782C3EAE252D5447F2F2 /* FBSDKShareMediaContent.h in Headers */ = {isa = PBXBuildFile; fileRef = D6C8F624B454CFAC87AE5FB889B4728C /* FBSDKShareMediaContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F085E2BCC622A96E91213ADFFD1E3953 /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 50B432BB73B3BB63AB5FD7534F7D1B38 /* FBSDKTimeSpentData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F0D2B51A842A3C2252D76C832058EA2E /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = ED9E4D474B9CAC5DDD2A39AD25683A14 /* FBSDKErrorRecoveryConfiguration.m */; }; - F0E536CBC0AB099E0B143547EFAAD6C2 /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DE8E9D0C166D342CA5EA91030B92A5D /* FBSDKSettings.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F15D027606061CC85404F7B42DCC4B76 /* EXPBlockDefinedMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F337357C275445D11C05C3D05412409 /* EXPBlockDefinedMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F16026745667552F96933AE3FF637272 /* SpectaDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C83C3A12D9A0C7152215476E20751EC /* SpectaDSL.m */; }; - F20E895881CD1819ECEE12DC011C6724 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E65A5B341221CBEEF0E88382CDB87241 /* Foundation.framework */; }; - F2A1A98C9D1CC9B5D873BB7D1FBE2B9A /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C4F7BEF57EDE8480EF5D3BB0038A9A9 /* FBSDKSharePhoto.m */; }; - F3750DCD37E60C5EE8D8401B83B9F86E /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8968CB9A6DE68B4B5677DBBDE983BE39 /* FBSDKShareButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F3A372FEDCAF8F9890FCB5D28F529247 /* PNObject-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C30F58DA20C9E3C4C6D00D79F4434E2 /* PNObject-dummy.m */; }; - F3E714996397702AFA717A6034F89EA5 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 91B843E9A83B5038ED6DD189A70F48C6 /* FBSDKBridgeAPIProtocolWebV1.m */; }; - F435D89A9B19BF74EFC3637565394BBB /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = EA10A2832C986A5E90B8DA412A574AD6 /* FBSDKSendButton.m */; }; - F46DB3DC34D1614CAE76A906CC47E075 /* NSString-Helper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B4C7FA8DA604D0615DD16136A5FE4F1 /* NSString-Helper-dummy.m */; }; - F473AB7AFAD698FA08CAADB2A7B2C7FF /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 67886D657034CA4A926FDFA702319389 /* FBSDKCheckmarkIcon.m */; }; - F49906976C1669DDF4D88F8904C8617E /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 450032CE5D7BD2E90B3183935D3758A6 /* FBSDKAccessTokenCacheV4.m */; }; - F4E0AD7567C1BFF3D9709BA5810907DF /* PNObjectConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E58254A18A1B3A2F552E1886D9B7BAA2 /* PNObjectConfig.m */; }; - F5034BD1BF1179DCC3C22ABBF887F8BF /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228290CCA9AB8436577C8CC4F7AF1C06 /* CoreGraphics.framework */; }; - F50941D5934274FBA2BEA0A289CC39C3 /* FBSDKAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = CF14E773AD209A4DBC35D768C2F689FF /* FBSDKAppLinkNavigation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F57A53A72B4869B03D6D11E48FC32FA8 /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D8B4922E95788F5B6D84BD95973C201 /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F653602DDC5621262A51E07F860C57F2 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = CB33BC990E6388D94448D83125E942C3 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F6FEEE8069B653ADF74319553881FC38 /* SPTCompiledExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 32A4312242020248E5076096163D4572 /* SPTCompiledExample.m */; }; - F714FEE048F7550293C8383C834E6919 /* RZDataBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F0896E256DA1F53B7235EB9C4C1205 /* RZDataBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F73327D72228AE97BFE9F5600E5855D0 /* PEAR-FileManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AFFF12E2E0C503E8EF4EBB4AF4EBA402 /* PEAR-FileManager-iOS-dummy.m */; }; - F7491890DCB4D7E298F15902820BCA0F /* RZDBMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C510C630A4C17612F4CEF4569C285F7C /* RZDBMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F862133FFC4970CE1E7049B3F64E99EB /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD0B5A748C81355837677EBC835CD84 /* FBSDKButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F8913FB5AA599DB79465591ADA9DEFB2 /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 0999C5B871B290CD16A0DD8EC0D54670 /* FBSDKPaymentObserver.m */; }; - F8F4BCF0BF9B40161D16D28F44BB4DB3 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 76FBF95528DC39D92FE22C0EA4AC7E7C /* FBSDKShareDialogMode.m */; }; - F9792E591C89A2DB1AC8FA28F383E3DE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC6CBD664A2CBD2083B8BA395BFEDF5E /* UIKit.framework */; }; - F9AD97244E916DBC6000C7E2EE146E38 /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EB6967181467BED4492732D1D4705DC6 /* Bolts-dummy.m */; }; - F9B545C30B1E4CD25DF7D3A49CC14DF3 /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 74634C2DC0DA90642585261C51C96620 /* FBSDKShareLinkContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9BCE07797B19F778A9E7100E4A9AF72 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 20A06BD9E7B94EE8EDE93D8132A6477B /* FBSDKServerConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FAA4F33836850A5C1A2E7E7AABBFFC46 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6435D1C81D2CCBF8334F92E3678802 /* FBSDKCopying.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FAF562AFA2369A2465D3A3B75B0EA939 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = CAE9492312C126DB3DCD486FF4353C55 /* FBSDKGraphRequestBody.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB0446F2F8C6170EE3E66BA826130E2F /* StrongestPasswordValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = BE5D48F63E4D98DF26F93806FDA6E607 /* StrongestPasswordValidator.m */; }; - FB1C06DEA18A3F43E40E1FB8E311623E /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = BD93892679A0E8925992B5C843C04755 /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FB6E7FBAF9F3350D2EFCE428BAE57289 /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = E23ABD68532554C46F8B5E911765A163 /* FBSDKAccessToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FD4EA33D2F522E56F079677C55419981 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 21AD0E47271019E55E663568E2B00521 /* FBSDKMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FD560570B3E7568E94FA503EE24A1087 /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = 64E9867518D59755916C982BC35CF161 /* FBSDKAccessTokenCacheV3.m */; }; - FD7959AE4ED808E106CED3E794AE82A2 /* FBSDKAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = CDF86883A595780271A818F99992EE1B /* FBSDKAppLinkResolving.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FDD7419049586E6232B659EC95DC5AF1 /* PNObjectFormData.m in Sources */ = {isa = PBXBuildFile; fileRef = 70B6EFE36F3843A1CEBD39DDD20322A1 /* PNObjectFormData.m */; }; - FE07B7E252B3635ABBCD49455CE83AA6 /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 44B5F73B49B2F5CD6A2A7696618A8931 /* FBSDKShareOpenGraphAction.m */; }; - FE623762B1E5D0FEB3625D5B819E8FF8 /* EXPMatchers+match.m in Sources */ = {isa = PBXBuildFile; fileRef = 34FCBE7D1D77C32B559F05E07654D2A3 /* EXPMatchers+match.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FE6D38499076BD23BF81A1490B551C21 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EC2A85F7CB62517F814A1B26EC514E99 /* FBSDKCoreKit-dummy.m */; }; - FE73C08B35D0D8E1836A30E1325A67DE /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 8171265156664F0907696D211D002E6B /* BFTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FF80DB2AB04646EF29DDA19BA77D61FD /* RZDBTransforms.h in Headers */ = {isa = PBXBuildFile; fileRef = 5862C90EFD738F31E09EB762AAEB0FCF /* RZDBTransforms.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FFE90F9273AC79D083D598DF2F8861EE /* DJLocalization-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 29FFE39BB9744FB477E9BD45281C4E20 /* DJLocalization-dummy.m */; }; + B434FB5FA1CB698777FAA0EC7CF93D54 /* FBSDKAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = AD0C046DCDA81E4A1AF7E93D308FF2FD /* FBSDKAppLinkNavigation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B4C7B543C4543A80A3043F3537E13745 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FBB7581B3AC543B0DD8F845BDFCDAC7 /* AFNetworking-dummy.m */; }; + B5AD0D307881854215E130A0246A81E7 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = D593CAEBAAC12FC5165D3F98366FDAD4 /* FBSDKProfile.m */; }; + B60DED481B8C9145ED79C156F76E4FCF /* EXPBlockDefinedMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = A57AE603FE1573C4316738EA3B67EA47 /* EXPBlockDefinedMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B66F4468EE55CEDF9DE9E0AD067572E0 /* FBSDKAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 121C8A0ECC80BE585FD4A730A100FD0F /* FBSDKAppLinkReturnToRefererView.m */; }; + B67E5C353B849EE14AB231F4B6300202 /* EXPMatchers+beFalsy.h in Headers */ = {isa = PBXBuildFile; fileRef = 27C59B5B11568E3C9A26FDB2058487C2 /* EXPMatchers+beFalsy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B82AF7B41008A52C3AC8CD8F966847C2 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 673CC74EB7BA89ABA32F2A7AB0DCC25D /* FBSDKBridgeAPIProtocolWebV2.m */; }; + B86B9AAC6FE6D749B2809A4547F16E91 /* StrongestPasswordValidator-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B9C4C857FE11E8538A359C64429837B9 /* StrongestPasswordValidator-dummy.m */; }; + B93A615A86ABFFAB3D0CF5A94130F439 /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 77A6E8BD608D173DFB68960F838AEADC /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + BA2164DF087EF99B88E70A5E1F656EF3 /* FBSDKAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE2233237B62458DFA0E63C379DB8EC /* FBSDKAppLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA5857AC8307D7A38C36532511BB6D84 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03E5451DC47BE87809A74157B93B4B6B /* XCTest.framework */; }; + BA7FDA4FBE08D8538A578557CBA6DD4D /* NSDate+NSDate_Util.h in Headers */ = {isa = PBXBuildFile; fileRef = D45E4CB71CF6834638A7E5FB3A6AA658 /* NSDate+NSDate_Util.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BB4BCFE450EA1F4CBCAA2C1E415065B6 /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4641DE8A1AECD93540A1398B11FD6328 /* FBSDKAppLinkResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BB6B4EFC5C91AABA8DBF94C64E688952 /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 01BC45AD58138BABB85F6740996816FA /* FBSDKContainerViewController.m */; }; + BBE7545BEEACFCF76F08408031875870 /* FBSDKMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CBF07DD243A64FC003AE5D8DC6AF80E0 /* FBSDKMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BC2BC4395DD346253548C4A56D9C0CF2 /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = BFB465FEE0F879B0C7518369A2014718 /* FBSDKAccessToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD513782772FB9C8D088EECEB26994CA /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = B8D0361D6C2648956D8B785258C23B09 /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD58D4D69591EF9F011927C37B2614E9 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E85CDDD6E6B68C045A5391D0C3AE10B3 /* FBSDKCoreKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD999AF96970AA00FA8E946619D45AB6 /* SPTExcludeGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 34DB827F6DA82855B6D492B17DDA3B91 /* SPTExcludeGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BDDB1F5D66FFF46AC15B13F74D65FA07 /* EXPMatchers+beCloseTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C524C5B0E1E4717A5F50F77E5078E49 /* EXPMatchers+beCloseTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BE0CE8D41323A25B70F039BFB7037F07 /* FBSDKUserDataStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 15DA8AF2920D6E35F1C9AF9A80780FD0 /* FBSDKUserDataStore.m */; }; + BE14473DEDAD7850A96E9EE6BC1423B5 /* nv_ios_http_status.h in Headers */ = {isa = PBXBuildFile; fileRef = 6329F96C2823EA696DCACC33DA57CDBA /* nv_ios_http_status.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BE3079B7E88A97359AFA5A382E54C229 /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE9711C8DC7FC7028985982F9773366 /* FBSDKContainerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BE54A0902E6EB79861B5BCA6990FF0FF /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 33586B8B5672E5632F691003D629AFBE /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BECBF0D0881A11C4CB893040F3BC6E50 /* UIDevice-Utils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8400A0180F303153ECFEC289F63BA3E7 /* UIDevice-Utils-dummy.m */; }; + BF0236A4E80A93AD277A8CE46B0F983B /* UIStoryboard+DJLocalization.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B62ADB4C1CA537282E6E11BA93F66A9 /* UIStoryboard+DJLocalization.m */; }; + BFB95EF7E9D91ACFF230A61EF5274AB2 /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 317C9DDA49939960F85B33DA232F29DE /* BFAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C01E0E8018888555C456BB57CE6C032C /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B0D6DAA93F41734BC67BF47FD0E9D45 /* FBSDKGraphRequestPiggybackManager.m */; }; + C1C824B655656D6CD5F1F5DD11C29144 /* SPTTestSuite.h in Headers */ = {isa = PBXBuildFile; fileRef = F02883982EA500BCB791B6B67C15BA49 /* SPTTestSuite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C1EB4DAB79037286B468228A394383C2 /* EXPMatchers+beInstanceOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D2100D5BBD932CD3109682D22218061 /* EXPMatchers+beInstanceOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C2B68344FD47E6858D5E4334F0613EE6 /* EXPMatchers+beNil.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6E513FE21B9CA58F416017BB838021 /* EXPMatchers+beNil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C2E2A7A3651EA92318AED45B4431B3C1 /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AAB06DEF12C90E826CE14183B842CC /* BFAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C54B30A0EDEA70A617C5E38B165E7BA0 /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C0D33F8EDB97D1BB3A6698D0969E48A /* FBSDKAccessTokenCacheV3_17.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C639AEC65E071F50582B05D632780677 /* CodFis-Helper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 471646B56DD1296C56383A12835F8B29 /* CodFis-Helper-dummy.m */; }; + C6DA0DDEDF28D634002BECBC9EC1682A /* SPTSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 272B18779A99FD0F77A751D85E86213B /* SPTSpec.m */; }; + C6E4AFFCF5DFEBEA9619B9ECBB505236 /* UIImage+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0566FE5243B81F27259DCEB7306D50C0 /* UIImage+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C7712DED5239B6760E136922EAF9E723 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = FF64CF5B6F0022DBC823A11729A45FF5 /* Bolts.m */; }; + C7856D541CA8451DA020A79FA20C3EAC /* NSData+AESValue.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D35A4709B9105B818F9FF1BE45B0DD /* NSData+AESValue.m */; }; + C78819F154442FAC6C260A8393D733BA /* PNObjectFormData.m in Sources */ = {isa = PBXBuildFile; fileRef = 70B6EFE36F3843A1CEBD39DDD20322A1 /* PNObjectFormData.m */; }; + C81A1DB73312FEEAA34D09324000B55D /* EXPMatchers+equal.h in Headers */ = {isa = PBXBuildFile; fileRef = A1C6DFE8E7E3B5575F6EDE37A28BE8AC /* EXPMatchers+equal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C97610ED487DC718F1F8C6C0DF4740E7 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 71EF74E8306F1274A920B9A8996BF784 /* FBSDKServerConfiguration+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C97D36C406B96387DD167709920BD8B0 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B07B08A44901B442EE332A9C0BDB37 /* FBSDKDialogConfiguration.m */; }; + C98721120AA130804106F8DE44DCA31A /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF5F1C383E4C559F000758027223782 /* UIButton+AFNetworking.m */; }; + C989BECBB7EAC0BF548A725B7950B784 /* NSMutableData+AES.h in Headers */ = {isa = PBXBuildFile; fileRef = E28070F476452DD82E5466EA55B21F27 /* NSMutableData+AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CA211FF274BDACAB9A0812DAB7DD6FDA /* FBSDKAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 671E9A37F3BF51A1FEA82A709ECB5C18 /* FBSDKAppLink_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CA4CBBB9D9DAEF8174BABB823407FD72 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 84097C1575F396B3E36596CFF14ADB4A /* BFExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CAD614C557E87939DA2B205FA0F4C449 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A08F91664E13013EB05A4A119C356282 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB338E3D650EEEF7B36A48033CCAC36B /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 27806C21F50C74897AC9FF8EA8B2A547 /* FBSDKMaleSilhouetteIcon.m */; }; + CB3682266535621C3A27C76EF64E9867 /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = D4DFD085EBD6EFC60EE0F97541D6FFE8 /* EXPMatchers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CC0B7721E511B0FB4654E16B232C7666 /* FBSDKEventBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A6176A09A35B2F5F9F20DA1ED081E48 /* FBSDKEventBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CC39389A92B2237302704FB67E807BAC /* PNObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 16CEDCF52A7FE56873DA10A71C1834E4 /* PNObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CCA944C1829F3BA46BBC9BFBDE9D414D /* DDDKeychainWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CD8469C29525DCAB8089CEE688A6D20 /* DDDKeychainWrapper.m */; }; + CD01D797BC5A6BB35E767A96C5D661F0 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 6929B670458A6799FB0B396BC7450EBD /* FBSDKInternalUtility.m */; }; + CDAED28AE489B2B5F3C42E1DAAFE3619 /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = 702693C46328669C71367D27FB8C8711 /* FBSDKAccessTokenCacheV3_21.m */; }; + CE40041013F91D5669A44A2DDE101DC9 /* AFOAuth2Manager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2EE15DA3B2D963CF915EE5204C254F /* AFOAuth2Manager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CEAB259BF518EE73EF34CEAF53CCE282 /* FBSDKURLSessionTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BE97ACA41424B6A98E3ABC7E4E7F6E3 /* FBSDKURLSessionTask.m */; }; + CFFC1615431F962973EBF97147D9F9C6 /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E555F9526014825E9D9978649E8ABDCC /* BFURL_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CFFD5106B44370A6F5E4701AC8EAD9C0 /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CD56E4434B18BEDB65AC4DE56E327AC /* FBSDKBoltsMeasurementEventListener.m */; }; + D0942B800B59BDB9302C3BD0841F2101 /* PNObject+PNObjectPOSTConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = DD35899D8CC1BFD3DA8589534E8377F2 /* PNObject+PNObjectPOSTConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D17EC9B6A83EB16B6749381CBECE3C93 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 762B12634DC393E3D87C439EBB48574A /* FBSDKKeychainStore.m */; }; + D1902CBED2DCB57FD790C2BC2214A832 /* PNObjectModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DDE2ACF69D44496ACAABE1B1FBB2EFA /* PNObjectModel.m */; }; + D237129D7173A137ADFEBC3AB1CD6DB5 /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = FA8F3E6209A5346784AD541313DC0DF6 /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D2732227E474940C94411413284108E7 /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = A32830FEA8080DB1E9454687EEFE4739 /* FBSDKTriStateBOOL.m */; }; + D27998A5D70CDFECD6215ED2D001AFAC /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = E88CCB368E9928553AE326AF7F243143 /* BFURL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D29CD851BCA36EB4946431A5E3FD2CCC /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = F42CA6A86C8B7F58A44B8C4D8CC96063 /* FBSDKProfilePictureView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D300575510C95C1B143422392CE52070 /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B9E40594B1CEA38655A1C7AAB818F5E /* AFNetworkReachabilityManager.m */; }; + D37BAB174EB0F132D439A5D05F94E227 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D6A47036C2A694D1BB86F6AB2ADDF43 /* FBSDKAppEventsUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D3AFF1756E31A09DF11FEC4B71CD2157 /* FBSDKEventBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = EFC9AD8BC8F6BEFDBC761B005AD2E167 /* FBSDKEventBinding.m */; }; + D40BEAE665E7A15CEDF767788F30CD2F /* FBSDKImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B03F353C5B6D73421D4D4D4A1F4FCD9 /* FBSDKImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D47E651F893A933FAF131E6C1242C937 /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 452C7FD4F4980E034D8F3625E6802B23 /* FBSDKAppEvents.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D4EE59FAC1241AA395EA48C2815687B6 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = C6C8EC1D0378E44D64DD8352BAE88503 /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D52354833B9A2FACBB9C1D5C578B5A3C /* FBSDKAccessTokenExpirer.m in Sources */ = {isa = PBXBuildFile; fileRef = DB024A1E154953B89051547C10E4301A /* FBSDKAccessTokenExpirer.m */; }; + D6A37D98D7F4B1F3E6BCABC252708FA3 /* EXPMatchers+raise.h in Headers */ = {isa = PBXBuildFile; fileRef = 482E9E8C012AF293E41D3DE21D83CFDE /* EXPMatchers+raise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D728200841DAF28BBAFA715C27EE08CB /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D4C072523B6B74D55026171111C2BC4 /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D81A42DFBA242CAFC2ABAA7D55153110 /* RZDBCoalesce.m in Sources */ = {isa = PBXBuildFile; fileRef = D947735D3CE13D9E22597E9BF2FBFD13 /* RZDBCoalesce.m */; }; + D849369D5C51B7755A7243B13F11E607 /* FBSDKURLSessionTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DB8C63409A51C7B95D0D503F5EDE43 /* FBSDKURLSessionTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D871E80BD748C578D368E3AAA0EA3E38 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F3895328093DB3335B2CC8C510ED4B4 /* FBSDKServerConfigurationManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D8AF5871EB2B4BE4106A902441B87581 /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = BBE54080F26800F1C54978D03CB38395 /* FBSDKBridgeAPICrypto.m */; }; + D8D7E54B80DAA1E55FE055E6D99F0D58 /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 4066FCE4D9A353535164ECD6CAF8C060 /* ExpectaObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D90B33201F030360BB14679219CF6EBF /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 360B7473368AC1C3C811FC1F03AB2744 /* FBSDKProfile+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D94DBEAF9BA2CA5C9EE33857DF7AD2A6 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = CFA9F1F614B10DB5193835F6CA1CE645 /* BFMeasurementEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D9D8302A9555135AD948D440BF3AB827 /* FBSDKCodelessIndexer.m in Sources */ = {isa = PBXBuildFile; fileRef = FEABE49D563B0FD8D448C09E863E70CB /* FBSDKCodelessIndexer.m */; }; + D9F69F13B40DC9DB196645DC5CBEE6AC /* EXPMatchers+contain.m in Sources */ = {isa = PBXBuildFile; fileRef = 26AF01EAAE8808D08B19B6F245CDFC75 /* EXPMatchers+contain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + DA95222E5B79F198BA9DEFADDE6AD3A0 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F03C9B01D12F7775C5487517B510D61 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DA9DFA194BC2AE32325A7B91FDEE82AB /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BF7FBFBBF098A5683BBC10D4A97C10A /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + DAD0614843413D90ADC4CD0B6CD1B085 /* PNLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 68758C3411A71AEED45A7CC14C650578 /* PNLocation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DB440AA69A6052B92C05AD110911AF79 /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 45E4CC2B2EFD832DC8DF377A7C60E866 /* FBSDKMaleSilhouetteIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DBF61CF976AFB7BA508910F2C6B42E35 /* FBSDKAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 654EA83F4A6CF0F0BAC50997B02472E0 /* FBSDKAppLinkTarget.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DC6A3A028D90BD20C78ABA2E1C18C1C4 /* FBSDKUserDataStore.h in Headers */ = {isa = PBXBuildFile; fileRef = F5ED466A1933E1C0CA01011797556CA7 /* FBSDKUserDataStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DD8868A75ECDBCEAF52390B813FF6529 /* NSData+SHA.m in Sources */ = {isa = PBXBuildFile; fileRef = A4D936FF31963976CAC4B6C87F2C7B6A /* NSData+SHA.m */; }; + DD927FCB260C9FF2F3D4CAAA5B7D855E /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = EF8ECFEDAEA8949608A114BA9DC9953A /* FBSDKAppEvents.m */; }; + DED86949F2EA996D06BB9F4A107E855A /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = 48F8B518BC8B986B921179F6F9240DDB /* BFAppLinkResolving.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DF20DFB835A253CC1E648808798F6800 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = BF6E36849D45C54AF16BC7613DA07389 /* FBSDKAccessTokenCacheV3_21.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E012F56169477B39357852DEA9ED4567 /* EXPMatchers+beInTheRangeOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 5599600676B1456215FE054F4631F4D3 /* EXPMatchers+beInTheRangeOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E03E56B2C755C083A8FD9F7518CB695F /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D2189B89ABCCEE870CB7D265899CA21 /* UIActivityIndicatorView+AFNetworking.m */; }; + E06EB1EAE7A25512F7C834A064643A4B /* FBSDKAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = 95CC9B2059E9A9EE830937457877E555 /* FBSDKAppLinkResolving.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E15BD764C291E0DEFE714D724D71057B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63E8FDB14E177C5030A60739394E9A0F /* Security.framework */; }; + E18F63C28E508F8B0597F03E87AE0727 /* PNObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = D527AA5FFEAFD1EA9BDEEB3573A1DC51 /* PNObjectUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1F5159C91E75C703F981D976A55FD0B /* NSDataAESCipher.h in Headers */ = {isa = PBXBuildFile; fileRef = 39740EE51A5C51414658A8F12B85DEE4 /* NSDataAESCipher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E481CD7F90636B39BB1A11D32C28DD76 /* StrongestPasswordValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 370A59955EAF7E77A26E872704D5388F /* StrongestPasswordValidator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E498771AE0D01B72AD777A84821F6FC5 /* ResponseConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EC807D489E1D2A0DAC2D6316EAC21EE /* ResponseConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E49A3E990C646DCF34222A85F759ED21 /* AFHTTPRequestSerializer+OAuth2.h in Headers */ = {isa = PBXBuildFile; fileRef = F76C90725C029275161554BC0426191A /* AFHTTPRequestSerializer+OAuth2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E49ED417AB20B25AABA50D5BF4106ED3 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = ED99F7451BFE99DFB7D32716F261E80B /* FBSDKViewImpressionTracker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E5846A28333DD67BA0D29FEC25FFD106 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6573349E7506EF7195DC6A61B7B9BBC1 /* FBSDKAppEvents+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E69AC7DF56475FD15E3460C3C6EE9F13 /* PNObject+Protected.m in Sources */ = {isa = PBXBuildFile; fileRef = 91DFFD5F597BE0B703594690DB976C8F /* PNObject+Protected.m */; }; + E7033DDCAF7C22F9802FEECE2C3A78E5 /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A035E62F3EA8A3A9D03CB85F803E00 /* FBSDKGraphRequestPiggybackManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7328026D755F191C97DDF1584204722 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = D338EC40F6F6FE448B94EB39922C41BA /* Bolts.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7792B3391A4622EC4E2031837DF998F /* FBSDKAccessTokenExpirer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B71E258EBC4E3E8111A9DBC91E5C732 /* FBSDKAccessTokenExpirer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7CED8C953735B5DD8F6FEF33F3D9E59 /* AFHTTPRequestSerializer+OAuth2.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF3EFF42698A9901B54C38949D90B56 /* AFHTTPRequestSerializer+OAuth2.m */; }; + E7F992E916E99D9A795AA664F621E385 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = C811548BBAD66F3A22BAB320366CB9E2 /* FBSDKError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E829BB93966FE1C5B22E99984E6160A3 /* FBSDKCodelessParameterComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 59CEC6EF96D22D27B07018193AEDD9CF /* FBSDKCodelessParameterComponent.m */; }; + E88E4C1BCB1CBA2A553235BB712DD5DA /* EXPMatchers+beGreaterThan.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DE0410856F73F8696FAD3552F44D0F9 /* EXPMatchers+beGreaterThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E8D3A9E9EDF9A53A2D687E868CDF2F56 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B026AC10A4E42DF368F9398E82DDCBDD /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E91337A3E5D16A1F6C5A8A65C623D8F9 /* FBSDKDeviceRequestsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DC3AF20751CE66E2D57A518D67CACF1 /* FBSDKDeviceRequestsHelper.m */; }; + E94519EA4DAE956D3F66DF9861815B69 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = FD7DA77F4C2F9A340BA2DA0CC08AA2E9 /* FBSDKBridgeAPIProtocolNativeV1.m */; }; + E94AC102014ABE5C8D37A0A7B465E523 /* EXPMatchers+beGreaterThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D40050457D1C9BBD50975F780AD000F /* EXPMatchers+beGreaterThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E965406F721EA9256CBFD9EF82DF07EA /* NSData+AES.h in Headers */ = {isa = PBXBuildFile; fileRef = 0068017BC0821494D8687C85E8964E02 /* NSData+AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E9DB50621A4CC8E51953EACCCB858A7D /* PNObjectConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E58254A18A1B3A2F552E1886D9B7BAA2 /* PNObjectConfig.m */; }; + EA09268C95CFB9491A86BA3214B901BF /* NSData+AES.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C260FA017BC3E8B376A1793BC87D5D9 /* NSData+AES.m */; }; + EA0D3725ADA64CFBB48445D872E75E48 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BA030F0908B6174F2965B6975DD76A17 /* FBSDKCoreKit-dummy.m */; }; + EA2219989272495E8E8823B5256F5BF2 /* NSObject+RZDataBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = C4A9C9E6E085645138CF9B074E2B789C /* NSObject+RZDataBinding.m */; }; + EA5836F626F702E4380128EE8B51B111 /* VatNumber+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DA4E17A97F60A55F0664CC4CAFB5273 /* VatNumber+Helper.m */; }; + EAD1758DA7AB856D50047EA8465DEB32 /* CodFis+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FEBFDB889106151937BCB050AFFF1F5 /* CodFis+Helper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EAF457B84DA98B3CA8BE7AADEBD2E307 /* PNInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 97334F9A318D4EA1E45EC3E7B4D6EEEC /* PNInstallation.m */; }; + EC4CA3E90D2E68CEB1A16146BA5DF58B /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F4BF097BD0BD858426E729760DA23C5 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EEF094508FB458DBC8844EFAA8D39545 /* UIDevice-Hardware.h in Headers */ = {isa = PBXBuildFile; fileRef = A13EAD73BFB5BFDE48A7B27C8F3EC6A5 /* UIDevice-Hardware.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF04C640BA7EEEB81446613F22E96774 /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 48E1A84A638E7070A9FBDE2154A67250 /* EXPMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF70C512B221894B2860DD83D4ED7FDB /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 52D9A1261A586186736ABD7EE48B5D5E /* FBSDKLogo.m */; }; + F030FFCEB647F088B9A007DA76E8D046 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63E8FDB14E177C5030A60739394E9A0F /* Security.framework */; }; + F15D027606061CC85404F7B42DCC4B76 /* EXPBlockDefinedMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CBB4258D4121B0FC04CC22B757818D1 /* EXPBlockDefinedMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F16026745667552F96933AE3FF637272 /* SpectaDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 1926B30C2B4DD86AE7AC851C5FA653B6 /* SpectaDSL.m */; }; + F2EAAE0FD2863C05C72CD78C378CBB6F /* FBSDKHybridAppEventsScriptMessageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = FFD231C49FD1E829D3CE97F7E68D3887 /* FBSDKHybridAppEventsScriptMessageHandler.m */; }; + F3444AC0AE496121201866D805D26F4C /* FBSDKCodelessIndexer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8092094B355092F88A0B6DFB5811F5 /* FBSDKCodelessIndexer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F46DB3DC34D1614CAE76A906CC47E075 /* NSString-Helper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BDE137BB44CFF08F8AF9B2116275D99 /* NSString-Helper-dummy.m */; }; + F48DAA38A3BEEB44DABF5EBAEF32B8A3 /* FBSDKCodelessMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = B380C3EF31E744E68A14563A92BD6111 /* FBSDKCodelessMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F57A53A72B4869B03D6D11E48FC32FA8 /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = CFE937B4155B29916673639D59B46FE2 /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F59F041A226721F85A5808290E4C1A76 /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BE971BA40C25C7BF9DD99A9D19C81DD /* FBSDKButton+Subclass.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F5B90521845B408CCF41FABB24F31914 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 175EF8AA06AD1DA1C88A393B862851B0 /* FBSDKServerConfigurationManager.m */; }; + F5D1A93865F7365F0C109E20739247D3 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E7B3406B271F3C8121536E6E3F869EC0 /* FBSDKLogger.m */; }; + F6FEEE8069B653ADF74319553881FC38 /* SPTCompiledExample.m in Sources */ = {isa = PBXBuildFile; fileRef = A05517C4229BC102C79EA6C3FE2A7973 /* SPTCompiledExample.m */; }; + F73327D72228AE97BFE9F5600E5855D0 /* PEAR-FileManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E11CCF6BD0966E6C4B4E2603305F81AD /* PEAR-FileManager-iOS-dummy.m */; }; + F81E62446F079E140B67205229D8BC98 /* FBSDKAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AD69651EADB994203ABEA64FF4C118 /* FBSDKAppLinkTarget.m */; }; + F885194357A4447719B0B760E5918A49 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 94ADF1D980C8E5B569010B49E4E71E13 /* FBSDKKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F9583EBE46EE7F031196D2C620FC4590 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = F4087E88D44F30E3CEE8AA774C04E83C /* FBSDKURLOpening.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F9AD97244E916DBC6000C7E2EE146E38 /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B4D47F6BB08E1E27D1330FF081E7CAE0 /* Bolts-dummy.m */; }; + FA019E109DFDDD43D65E5B1B628570CB /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ADA3B66518956C1B98FC6A0458074251 /* FBSDKAppEventsDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FACF57EABD121B3AF175703F8A1E2DF4 /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E522933450F1EABB48BC039889B9342 /* FBSDKUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FAF97DF7E23C9D28D905C839BF0EDFB4 /* PNUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3508A777B47A718379F2EAF4270531DF /* PNUser.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB1C06DEA18A3F43E40E1FB8E311623E /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E913A2C6D0AD599815BEF8C5E5BBBA /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + FB9F2C8268EBC4861E3137A17977E374 /* PNObject+PNObjectGETConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 408972FACA5A1B21A155BCAEE932439B /* PNObject+PNObjectGETConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FBE75F7E04D62DB5FDFA01C26F68D69E /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = BAEC1D04287E7AB01D4D8CF62DED3495 /* FBSDKErrorConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FC10DB654865E9F761801091BBFE07F6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C85D9CEDCB95BB4A71EA215C8B90FF8 /* Foundation.framework */; }; + FD5DF0C25E9FA1440F483897C87423D1 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = DEA316C6C79E14D12E1E12D76ED79F1C /* FBSDKMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FDA0CDF8ECA4EE835CB07AE3DFDC1118 /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = FE3D6D5ACFE33655DA9382DE563ADDEC /* FBSDKSettings.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE3E49E542CDC7E98F88AFE496233714 /* PureLayoutDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = CACADFC6276DE36113F53E85090A48CF /* PureLayoutDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE52B9CCCC1BD53FE5D210A4B8967847 /* ALView+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = B91B06065F5CB603A371C004A0FC3376 /* ALView+PureLayout.m */; }; + FE623762B1E5D0FEB3625D5B819E8FF8 /* EXPMatchers+match.m in Sources */ = {isa = PBXBuildFile; fileRef = 09EBEB675B1369A35FD3793AFE6F5CC6 /* EXPMatchers+match.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + FE73C08B35D0D8E1836A30E1325A67DE /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D2250C71F28AE981666D1B87E599907 /* BFTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FEFD7B134083D66C70D1B9D6E6E8DFB5 /* AFJSONResponseSerializerWithData.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEF0C3BFA8D3894AF5D67B207904D92 /* AFJSONResponseSerializerWithData.m */; }; + FFE90F9273AC79D083D598DF2F8861EE /* DJLocalization-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 84E8AE35B5FE89A5C04732BE26EEB99C /* DJLocalization-dummy.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 01B113C34FAA406DB4A6CDF20DCB8B9B /* PBXContainerItemProxy */ = { + 10B9850C32130012496F47E8711234A4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 6493D0116FE1BA5F8BB4133D819DF3C8; - remoteInfo = Bolts; - }; - 04F8D4266069070FFE805EC907ED2BE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0FE145A63419906335F165B953111B50; - remoteInfo = FBSDKShareKit; - }; - 0559C89F6A3C9DB982C028011B4F7274 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 6E6F78D1E706987F92C1C61F6B619A67; - remoteInfo = "nv-ios-http-status"; - }; - 0833FDF10922F9602D680C4261DC73AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = A7ABB589D7269F28501753691B0189FB; - remoteInfo = "UIDevice-Utils"; - }; - 0985AB55C2B0EF728F93BD29CE93A98C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = D71965AADCF27F9F922926F15DAA80A7; - remoteInfo = FBSDKCoreKit; - }; - 0C178B7D964BFA9F25A449C638F1A53E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0EABDFFFE1E889B87B1197D012AD068A; - remoteInfo = AFNetworking; - }; - 1031B538176B5540A222382EA20A6415 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26069BE91A9928289B1454877B6683E5; - remoteInfo = StrongestPasswordValidator; + remoteGlobalIDString = C784B90D59D6E06A6468ADC0F4E51429; + remoteInfo = DJLocalization; }; 10E96630EA055E3B97CE3CB8D42C5126 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 63178740FD447D2079BFABBA20ADEF1E; + remoteGlobalIDString = B38C006CE78F17EF19EA707B05114A38; remoteInfo = "Pods-PNObject_Example"; }; - 1874734BD9109688C762D22A600B3550 /* PBXContainerItemProxy */ = { + 162CA67D66F3D80E827398340E7BE854 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 6E14B2EB890E5F1C28CB981EFB57CB3E; remoteInfo = "CodFis-Helper"; }; - 1E73446C51436201237C441EC6DE7E6D /* PBXContainerItemProxy */ = { + 2DADE0882541EA69E6073CA3DE7D7573 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 6493D0116FE1BA5F8BB4133D819DF3C8; - remoteInfo = Bolts; + remoteGlobalIDString = 25CAB725512C8BCE062BEA3A8B1774C6; + remoteInfo = RZDataBinding; }; - 1E8BBCDEE24A8B32BFFC9E34F47F93FB /* PBXContainerItemProxy */ = { + 342972E407B6AD757F383FD4A7866E1F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A7ABB589D7269F28501753691B0189FB; - remoteInfo = "UIDevice-Utils"; + remoteGlobalIDString = B636D5CA7BFECB99A182D63A69EA5720; + remoteInfo = "NSString-Helper"; }; - 23EB32719EE6056D7806344434FDA68B /* PBXContainerItemProxy */ = { + 36BBD286CD94CDB46D9DCB7D0296C410 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = D71965AADCF27F9F922926F15DAA80A7; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = B05A83813FBAAA90F28FBB951DAE33D4; + remoteInfo = StrongestPasswordValidator; }; - 278965677B6D0B828227E563A4EB8FED /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 23677D10DAFC9612279D0C04E8F822F0; - remoteInfo = PureLayout; - }; - 2AC3865612BE6F9667AE367795D9769D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = BF3423B26285A217899170780715FAFC; - remoteInfo = DDDKeychainWrapper; - }; - 3C2BE651535437F593E96BA6F86C81B5 /* PBXContainerItemProxy */ = { + 3B38839FD5A9FDEC4CC15E346D423ED3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = ADBBB3E85D1E2F795520A8939751318B; remoteInfo = "PEAR-FileManager-iOS"; }; - 3C7B24FA99915350892228A4F243F962 /* PBXContainerItemProxy */ = { + 3FEDFF394AA3E4281E9BEE84B742F664 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 6E14B2EB890E5F1C28CB981EFB57CB3E; - remoteInfo = "CodFis-Helper"; - }; - 40054265102AED3C5889EBCF80B22A59 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0EABDFFFE1E889B87B1197D012AD068A; - remoteInfo = AFNetworking; - }; - 4151E7B95097069198D6F5B3C87A7414 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = ADBBB3E85D1E2F795520A8939751318B; - remoteInfo = "PEAR-FileManager-iOS"; + remoteGlobalIDString = F23086A6598C6BAA8DAF542D4A03059D; + remoteInfo = NSDate_Utils; }; 4564C74DBDD944982494F574EAF254AA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -805,96 +582,89 @@ remoteGlobalIDString = C784B90D59D6E06A6468ADC0F4E51429; remoteInfo = DJLocalization; }; - 4E9D471F61BDC0C0C489A5ADB75216C4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8499AC93B286F5F061A552CBC893C989; - remoteInfo = PNObject; - }; - 5810721FCBB27E7156001056608264FA /* PBXContainerItemProxy */ = { + 48BD2C818B1009779BACD940C2D3CEAF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 6E6F78D1E706987F92C1C61F6B619A67; remoteInfo = "nv-ios-http-status"; }; - 58EC99B1214E7FE5E2C4BADE28D11170 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26069BE91A9928289B1454877B6683E5; - remoteInfo = StrongestPasswordValidator; - }; - 59D97A59206C2207FA9592FAB2D8B236 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = A7334FDC353B84921762C535B7E01EA0; - remoteInfo = NSDataAES; - }; - 6F8EE45D209E05A3632FAA8DAE834776 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0FE145A63419906335F165B953111B50; - remoteInfo = FBSDKShareKit; - }; - 7A9273A3C23D6A92531B5B84D870262F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = B636D5CA7BFECB99A182D63A69EA5720; - remoteInfo = "NSString-Helper"; - }; - 7C2E116E66661D9429ED10896D99260F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = F23086A6598C6BAA8DAF542D4A03059D; - remoteInfo = NSDate_Utils; - }; - 7E44AD6A0717588657CD01C68ED90AE8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 65B039250BC589E46F912B1B0C2AE01B; - remoteInfo = RZDataBinding; - }; - 828F4903FF4383A9B1BA1C7A246CF368 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 428487CF01476A350D641A9BB0599574; - remoteInfo = FBSDKLoginKit; - }; - 868D6684B4362CF516BB786685C12423 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = BF3423B26285A217899170780715FAFC; - remoteInfo = DDDKeychainWrapper; - }; - 95952E01EF08C3E4AA3A0FF89704D9A0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 6493D0116FE1BA5F8BB4133D819DF3C8; - remoteInfo = Bolts; - }; - 981DC05198880419D2E3DE4455FEE0E7 /* PBXContainerItemProxy */ = { + 5C03861E200BA8D98201992267471729 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = D71965AADCF27F9F922926F15DAA80A7; remoteInfo = FBSDKCoreKit; }; - 9A8FA569E6BFA00B337E6954A449A30D /* PBXContainerItemProxy */ = { + 5D8FB167B8AED7FB3467C856D9D17893 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 428487CF01476A350D641A9BB0599574; - remoteInfo = FBSDKLoginKit; + remoteGlobalIDString = 0EABDFFFE1E889B87B1197D012AD068A; + remoteInfo = AFNetworking; + }; + 5DB748759E9835155F41CAB3E5B27107 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = B636D5CA7BFECB99A182D63A69EA5720; + remoteInfo = "NSString-Helper"; + }; + 5FF38609FE4FD504486A8A7961078B4D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = A7334FDC353B84921762C535B7E01EA0; + remoteInfo = NSDataAES; + }; + 6806F6E82B966C99D2801F3C0758350E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = BF3423B26285A217899170780715FAFC; + remoteInfo = DDDKeychainWrapper; + }; + 6B9D366A6504E865FF9986C23DA7785A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6493D0116FE1BA5F8BB4133D819DF3C8; + remoteInfo = Bolts; + }; + 7CCC4FA5054018B2C07AFC4501A3C7B0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 25CAB725512C8BCE062BEA3A8B1774C6; + remoteInfo = RZDataBinding; + }; + 7E63BE24D7F8C1CEF6EE949A8A822885 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = BF3423B26285A217899170780715FAFC; + remoteInfo = DDDKeychainWrapper; + }; + 8457652AC327A5F2238C4B902212D539 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = A7334FDC353B84921762C535B7E01EA0; + remoteInfo = NSDataAES; + }; + 92F632D6FEA6A5BD9AA7D426B88A4EC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0EABDFFFE1E889B87B1197D012AD068A; + remoteInfo = AFNetworking; + }; + 98DB286F424338873026AEE0F3DA2B16 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4DB6037421D42C3F0B181DE36F1682C9; + remoteInfo = "UIDevice-Utils"; }; 9C511BA8666D7472E8A88AAFE61C793D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -903,48 +673,76 @@ remoteGlobalIDString = 6493D0116FE1BA5F8BB4133D819DF3C8; remoteInfo = Bolts; }; - 9E1D8E066ADB83124E0D55B2933C65BA /* PBXContainerItemProxy */ = { + A626360FC1F49C7CC04D1B40A089F8C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 26109B56473A736BBF412A1200D8B418; + remoteInfo = PNObject; + }; + AEF8B0A77462B7C4277E43838774466F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = F23086A6598C6BAA8DAF542D4A03059D; remoteInfo = NSDate_Utils; }; - 9F075EF5EFC86BA8B44E5959B1C59566 /* PBXContainerItemProxy */ = { + B3B2C0DEE219FAFFF98D36693DB45488 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = D1BA6BA6A87F8CB0F814F63ED4F639C3; + remoteInfo = PureLayout; + }; + B4D5CD9FFFD1C9CE4C98DDB95FD69CB6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = C784B90D59D6E06A6468ADC0F4E51429; remoteInfo = DJLocalization; }; - BA22E019BF58184538B1D947ED17A4BF /* PBXContainerItemProxy */ = { + B5435D14878EEF0A908E874A347F7DE3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = B636D5CA7BFECB99A182D63A69EA5720; - remoteInfo = "NSString-Helper"; + remoteGlobalIDString = B05A83813FBAAA90F28FBB951DAE33D4; + remoteInfo = StrongestPasswordValidator; }; - BF1A88ADFAD9650D61F8FC0499ABCC88 /* PBXContainerItemProxy */ = { + BA94068F6C4297D689BF9922FE553095 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C784B90D59D6E06A6468ADC0F4E51429; - remoteInfo = DJLocalization; + remoteGlobalIDString = 6E14B2EB890E5F1C28CB981EFB57CB3E; + remoteInfo = "CodFis-Helper"; }; - C92918F85AD8F4ADDFF3258E567C34F0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = A7334FDC353B84921762C535B7E01EA0; - remoteInfo = NSDataAES; - }; - D4F07391719B5468DF3B71C7E325496C /* PBXContainerItemProxy */ = { + C63DA91E81379EA2AAA7FECD056E79E4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 6493D0116FE1BA5F8BB4133D819DF3C8; remoteInfo = Bolts; }; + C95DCF24C47DC51178B800D24E40A055 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4DB6037421D42C3F0B181DE36F1682C9; + remoteInfo = "UIDevice-Utils"; + }; + CF6C88A0FD65473E6CF129F9BF245A20 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = ADBBB3E85D1E2F795520A8939751318B; + remoteInfo = "PEAR-FileManager-iOS"; + }; + D6A6B0E216D8103BD43740435EFADB18 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6E6F78D1E706987F92C1C61F6B619A67; + remoteInfo = "nv-ios-http-status"; + }; F48C433CE6B0DAE8E8422A254EAD604D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; @@ -952,763 +750,585 @@ remoteGlobalIDString = 2F76C4DEAE2007246BF4FBF8967B2FA3; remoteInfo = Expecta; }; - FA1C7670EF71574F7C438A17CD4F49FF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = D71965AADCF27F9F922926F15DAA80A7; - remoteInfo = FBSDKCoreKit; - }; - FC83AC3110B1A0C3638AF9A4CC558536 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 65B039250BC589E46F912B1B0C2AE01B; - remoteInfo = RZDataBinding; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 000F1CF748EBFB206133755B1FF1DF13 /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; + 0068017BC0821494D8687C85E8964E02 /* NSData+AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AES.h"; path = "NSDataAES/Classes/NSData+AES.h"; sourceTree = ""; }; 00C6A0D70D0B027EF3BC2D2DCA4A3D9D /* PNObject.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PNObject.xcconfig; sourceTree = ""; }; - 00CAC1E14DB79A2B3778FA8099224F62 /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; - 0203FB378E2F15AE5A113A383BC90619 /* SpectaTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaTypes.h; path = Specta/Specta/SpectaTypes.h; sourceTree = ""; }; + 011EADDC040E3725A1BA572AE33F2004 /* libSpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSpecta.a; path = libSpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 014E4C12967BEE2D261667092D214CB0 /* CodFis-Helper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CodFis-Helper-prefix.pch"; sourceTree = ""; }; + 015C55CC7496765F59115C2D0ABFE3F0 /* CodFisResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CodFisResponse.h; path = "CodFis-Helper/CodFisResponse.h"; sourceTree = ""; }; + 016C6F7C8A40FD73841130A33A381F63 /* NSDate_Utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDate_Utils-dummy.m"; sourceTree = ""; }; + 0170FB4571D1DE543DCDD05866D304FD /* NSValue+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+Expecta.h"; path = "Expecta/NSValue+Expecta.h"; sourceTree = ""; }; + 0174B2E79D6C36F4FC35BD5F12C8DB88 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = ""; }; + 0194AAE82EE02294FBF03732E0314254 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + 01BC45AD58138BABB85F6740996816FA /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; + 01D145C12D119AE56EC1613D66D72B39 /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; 0227F4D40A4916468A40CAFC2C96FEDE /* Pods-PNObject_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNObject_Example-resources.sh"; sourceTree = ""; }; - 0261380939A77EA9E7D9F9C73B948DE9 /* PureLayout+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PureLayout+Internal.h"; path = "PureLayout/PureLayout/PureLayout+Internal.h"; sourceTree = ""; }; - 03544C46C5B4889BCB1205F7BF2604A1 /* FBSDKEventBinding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKEventBinding.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m; sourceTree = ""; }; - 038CD0BC7F1EB85889C5F6485FCE82E2 /* FBSDKEventBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKEventBinding.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.h; sourceTree = ""; }; - 03C681477C9407E00FE027DB25A56590 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; - 04E2BABEA53E3363A9BC0F646F4BBCE3 /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; - 0504389A5BE500DFAF6462082446D938 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; - 0520C7E3795A436FFB2969476664B7D9 /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; - 057B5D00B60E06F193E8BC4B3E2444C3 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = ""; }; - 062D98265A110DA997A2F5C88D7BC54C /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; - 06475B8A4E97FA30A4B8FEEDCB4EAF7F /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = ""; }; - 07F635318349C3CA4CE2CBCE9E58A983 /* DDDKeychainWrapper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DDDKeychainWrapper-prefix.pch"; sourceTree = ""; }; - 083753C776988E690880CA346ABF5823 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; - 084AE6ECA57A970F74C4109DC3D26042 /* libNSString-Helper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libNSString-Helper.a"; path = "libNSString-Helper.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 087B6006953245BE2307CFE4FE8A79C5 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; - 08C8C47139DE7A2034FF8DAFB81C47AD /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; - 08FCBEFF7147CA5ADDE141AAE8CFEA4E /* FBSDKAppEventsUninstall.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUninstall.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.m; sourceTree = ""; }; - 0927668E0C2C5C5630C5BD9F8AEFF05B /* FBSDKDeviceLoginManagerResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKDeviceLoginManagerResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginManagerResult+Internal.h"; sourceTree = ""; }; - 097219E7D000D1D18B00390AF04655BC /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - 09760B847BD503A2045C772B3ED2E2B2 /* EXPMatchers+haveCountOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+haveCountOf.h"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.h"; sourceTree = ""; }; - 098D32B91683044612866E4D6B655190 /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; - 0999C5B871B290CD16A0DD8EC0D54670 /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; - 09FC8EE3328476939506F0CAD81A6757 /* ExpectaObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaObject.m; path = Expecta/ExpectaObject.m; sourceTree = ""; }; - 0AA8B735DA45CEAD444BE76EBAD0A239 /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; + 02462456D584F14A5BED1946168948FB /* CodFisResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CodFisResponse.m; path = "CodFis-Helper/CodFisResponse.m"; sourceTree = ""; }; + 0320AB889A5F756C6180D95467F45BC9 /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; + 03321EB295089087235FD1C62963C992 /* ALView+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ALView+PureLayout.h"; path = "PureLayout/PureLayout/ALView+PureLayout.h"; sourceTree = ""; }; + 03E5451DC47BE87809A74157B93B4B6B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 0566FE5243B81F27259DCEB7306D50C0 /* UIImage+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+AFNetworking.h"; path = "UIKit+AFNetworking/UIImage+AFNetworking.h"; sourceTree = ""; }; + 058B8504288A93E1C2BCA07E4C01BCDE /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; + 0646A926CA42E57A5BCF976CCB05110B /* VatNumber+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "VatNumber+Helper.h"; path = "CodFis-Helper/VatNumber+Helper.h"; sourceTree = ""; }; + 07586B8A2F580D9D57878CF276CF8B47 /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; + 08004EE10CD42AB6608277E07ED59BEC /* NSDataAESCipher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NSDataAESCipher.m; path = NSDataAES/Classes/NSDataAESCipher.m; sourceTree = ""; }; + 083682A84322B9FB603A63D433260F39 /* FBSDKViewHierarchy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewHierarchy.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m; sourceTree = ""; }; + 08888F77B7559F806A516C24FC8D1CEB /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; }; + 09A76BA64EDFC80D659AAEC83BD6AE35 /* DJLocalizationSystem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DJLocalizationSystem.m; path = DJLocalization/DJLocalizationSystem.m; sourceTree = ""; }; + 09EBEB675B1369A35FD3793AFE6F5CC6 /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; }; 0AC7DF341C5ADF18C839B25F23CB9302 /* Pods-PNObject_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Tests.debug.xcconfig"; sourceTree = ""; }; - 0AC895753CD9C702066BD2354EFB381B /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; - 0B243224F6E2B01B74C79F0377139E80 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 0B85BFC6FDA0BBCDF52F9B150C0F94CB /* FBSDKCameraEffectArguments+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCameraEffectArguments+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectArguments+Internal.h"; sourceTree = ""; }; - 0B90DE54CC161DDA1C75DDD40CF7FDA1 /* FBSDKHybridAppEventsScriptMessageHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKHybridAppEventsScriptMessageHandler.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m; sourceTree = ""; }; - 0BB2B82D03CB3906ABDE6669ED9D833A /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; - 0C03F27BB1C39FD44794CD971653F9B8 /* FBSDKVideoUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKVideoUploader.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.h; sourceTree = ""; }; - 0C3B3777C1B965AB8BB35AE83D4436BA /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; - 0C4F7BEF57EDE8480EF5D3BB0038A9A9 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; - 0C739A4DC5B7A154D06B71411E01459C /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libAFNetworking.a; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 0CD3FCF450E8C38314DB299B1C7AD6C6 /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; - 0D74D80556E8DC3CCFB397594080ECFE /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; - 0E00D21E56F405766DF0B9B5832FDAA4 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; - 0E2135D9F38B34065389530EF9C89743 /* PEARFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PEARFileManager.m; path = "PEAR-FileManager-iOS/PEARFileManager.m"; sourceTree = ""; }; - 0ED5839BD70E5166E50524F5A135BEF7 /* FBSDKDeviceLoginCodeInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginCodeInfo.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.h; sourceTree = ""; }; - 104339D4CF0D1ACF34BD94ECBF7750A1 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = ""; }; + 0C0D33F8EDB97D1BB3A6698D0969E48A /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; + 0C524C5B0E1E4717A5F50F77E5078E49 /* EXPMatchers+beCloseTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beCloseTo.h"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.h"; sourceTree = ""; }; + 0D4FA2A9CC60BC348A6623694DC18D9A /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; + 0D6BD89269A6DD8558CCEFB8B8582B93 /* EXPFloatTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPFloatTuple.m; path = Expecta/EXPFloatTuple.m; sourceTree = ""; }; + 0D904820105D537D53D9CDAA0F4B0390 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; + 0D9AE264A8F9F920F0874CDF977D370D /* ExpectaSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaSupport.h; path = Expecta/ExpectaSupport.h; sourceTree = ""; }; + 0E7817995CA8E82F8CA7970DB4DC37A6 /* EXPMatchers+conformTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+conformTo.m"; path = "Expecta/Matchers/EXPMatchers+conformTo.m"; sourceTree = ""; }; + 0E7DE8887FB3D62BD49E328FBCED36F7 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; + 0ED37A225C9435173CDF3B2E6FB9303A /* NSDataAES.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSDataAES.xcconfig; sourceTree = ""; }; + 0F3ED38E28BFF5C699CE4885714C3E88 /* SpectaUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaUtility.h; path = Specta/Specta/SpectaUtility.h; sourceTree = ""; }; + 0F8092094B355092F88A0B6DFB5811F5 /* FBSDKCodelessIndexer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessIndexer.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.h; sourceTree = ""; }; + 0FA70C1224F57397D80DD41931C3B1C5 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; + 0FE2233237B62458DFA0E63C379DB8EC /* FBSDKAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLink.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.h; sourceTree = ""; }; + 10AA4623E8F05E9766FD267C34BB489C /* StrongestPasswordValidator-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StrongestPasswordValidator-prefix.pch"; sourceTree = ""; }; 10BA568F71A4B331D86EED3F308E65DA /* Pods-PNObject_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNObject_Tests-resources.sh"; sourceTree = ""; }; - 115C678BF96C98C00C9F1103DBBD9F9B /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; - 116BDADEF0E5671E2778C019325BDDC9 /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; - 118E6026F09B98DA73AFA88047CC0B74 /* SPTSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSpec.m; path = Specta/Specta/SPTSpec.m; sourceTree = ""; }; - 12DBABF54A0D1A13073266DEAF71AB5F /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; - 12E33E70801A48C06920A1C5A947D38F /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; - 13211D855E5293A4E7B68979B3927B79 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; - 149C3CE987355271447E21C7D65C6762 /* FBSDKDeviceLoginManagerResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginManagerResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.m; sourceTree = ""; }; - 14D9DD4A903CFB812BED1D10CF39FA42 /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKLoginKit.a; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 152F87FDA18CCB12396926DB0DFF6EA1 /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; - 157C7F2CDCAFB2C0654489B1DE32558F /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; - 15ADDF66D61DF3F757DC15DD22960A85 /* EXPMatchers+beTruthy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beTruthy.h"; path = "Expecta/Matchers/EXPMatchers+beTruthy.h"; sourceTree = ""; }; - 15BA90E35C2DEF377C5A730CB5D9FF5A /* libPNObject.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPNObject.a; path = libPNObject.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 16102F175FCEF915822BF8406CA5D2B2 /* 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 = ""; }; - 161DDD68AD6642631788D91C227710A2 /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; - 16462DED9F55E0ED16FFE38C1ED53CD1 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; - 168389A483EE1A2FFB33EAD7A72599E0 /* FBSDKShareMessengerContentUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerContentUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.m; sourceTree = ""; }; + 10E26528C336427F30503DE4A1011920 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; + 121C8A0ECC80BE585FD4A730A100FD0F /* FBSDKAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkReturnToRefererView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m; sourceTree = ""; }; + 12A5EA8EA3E20FA8292818DD0658894B /* NSLayoutConstraint+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+PureLayout.h"; path = "PureLayout/PureLayout/NSLayoutConstraint+PureLayout.h"; sourceTree = ""; }; + 12DE2FF5B3A0AD9E1F9DBC9F2290C5B4 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; + 13B7AB4D7E1AAB4D06CEAFFCA1E9A155 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; + 14E0671FE5A61649B1C76CEE43476EB0 /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; + 1502F66B6DF47240BECBA7DAF52792D4 /* NSValue+Expecta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Expecta.m"; path = "Expecta/NSValue+Expecta.m"; sourceTree = ""; }; + 15DA8AF2920D6E35F1C9AF9A80780FD0 /* FBSDKUserDataStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUserDataStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m; sourceTree = ""; }; + 1650AC4C4981BEE6422FAD5953F3BACB /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; + 165CF624A84179950C6FDE0A73AB35B4 /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; }; 16CEDCF52A7FE56873DA10A71C1834E4 /* PNObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObject.h; path = PNObject/Classes/PNObject.h; sourceTree = ""; }; - 172CA916B01ADF01834F21D4BBC99E7F /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; - 176E870DCB3AF59CD26DB552E58F97DE /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; - 1798DBD97EF8F8F206F34CCF900897F6 /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; - 17B7F258ADC3CB1852D6BF95616AE754 /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; - 17B879F919DEDACAC5C1C25842290A8F /* UIDevice-Hardware.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIDevice-Hardware.h"; path = "Pod/Classes/UIDevice-Hardware.h"; sourceTree = ""; }; - 1823C6C3EDE6A438390AF42376A3B429 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; - 18BEBF8BED1319225F8546240158824B /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; - 18E3F2D763C0560879C54D3E19F7D46F /* EXPMatchers+endWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+endWith.h"; path = "Expecta/Matchers/EXPMatchers+endWith.h"; sourceTree = ""; }; - 193E4E44508695DE7A55DB438C385177 /* FBSDKDeviceRequestsHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceRequestsHelper.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.h; sourceTree = ""; }; - 1A1F5AFFD86438D32B457856F1C59628 /* ALView+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ALView+PureLayout.m"; path = "PureLayout/PureLayout/ALView+PureLayout.m"; sourceTree = ""; }; + 175EF8AA06AD1DA1C88A393B862851B0 /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; + 1769FEF7D2E02007FE3D8ACA91F935EB /* FBSDKAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkNavigation.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m; sourceTree = ""; }; + 178B9C0FDEE0457A3F981794A4826081 /* EXPMatchers+beLessThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThan.m"; path = "Expecta/Matchers/EXPMatchers+beLessThan.m"; sourceTree = ""; }; + 17B07B08A44901B442EE332A9C0BDB37 /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; + 1926B30C2B4DD86AE7AC851C5FA653B6 /* SpectaDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaDSL.m; path = Specta/Specta/SpectaDSL.m; sourceTree = ""; }; + 19733680C010A769F600B8B7ADD1E09A /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; + 19F19F5B077D4973A0CCCF126880FE82 /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; 1A2EE15DA3B2D963CF915EE5204C254F /* AFOAuth2Manager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AFOAuth2Manager.h; sourceTree = ""; }; - 1A3FB96D1F6A7EF08A000F86B2C6E5F6 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; - 1AEF0C66CA8D1E28D60B2C75C55CE9A0 /* EXPMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcher.h; path = Expecta/EXPMatcher.h; sourceTree = ""; }; - 1BA4A045DAB6043B53CE15EDF906D10C /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; - 1C281D535337DDB08FADBA3886092C98 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; - 1D63D39F5A65930A719EB5CA354755F9 /* CodFisResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CodFisResponse.m; path = "CodFis-Helper/CodFisResponse.m"; sourceTree = ""; }; - 1DD181996D4B1D7A965555F0BD9DACCF /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; - 1E15D107A27585EB378759650D71B11E /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; + 1A3C32898DC0EEBDBE77CAB1B4600672 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; + 1B8E843F02992F19DE425D86E28546DB /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; + 1B9E40594B1CEA38655A1C7AAB818F5E /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + 1C187085E02BD1208D982095A76F6866 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; + 1C9803B51A670EF5D318E5A04E6E0524 /* PureLayout+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PureLayout+Internal.h"; path = "PureLayout/PureLayout/PureLayout+Internal.h"; sourceTree = ""; }; + 1CD8469C29525DCAB8089CEE688A6D20 /* DDDKeychainWrapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDDKeychainWrapper.m; path = Pod/Classes/DDDKeychainWrapper.m; sourceTree = ""; }; + 1D2100D5BBD932CD3109682D22218061 /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; }; + 1D2FAA475E195F7FDB9C14388A0CB4FB /* NSData+AESValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AESValue.h"; path = "NSDataAES/Classes/NSData+AESValue.h"; sourceTree = ""; }; + 1DE0410856F73F8696FAD3552F44D0F9 /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; }; + 1E057CFAFE6D8AF73684B5D93F4DADF4 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; 1E3A9409D147611CC6CEFC013FF45FBA /* PNObject.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = PNObject.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 1E40C5CA1634FBE648F7631DA237EDE0 /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; - 1E83C4F995602150C30446C7C75BEDC3 /* libRZDataBinding.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRZDataBinding.a; path = libRZDataBinding.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 1F1D6EF45199DB45509D1E7117799302 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; - 1F544822CB217B6B1ABDF563043A86A3 /* FBSDKAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkNavigation.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.m; sourceTree = ""; }; - 1FA46E687E1312187756E021E50CD42E /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; + 1E7F45333DDB870BCE9AF8768954BD3F /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; + 1EC807D489E1D2A0DAC2D6316EAC21EE /* ResponseConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ResponseConstants.h; path = "CodFis-Helper/ResponseConstants.h"; sourceTree = ""; }; + 1F7FD350E74EAE9A5918211972FEFCA3 /* DJLocalization-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DJLocalization-prefix.pch"; sourceTree = ""; }; 1FF3EFF42698A9901B54C38949D90B56 /* AFHTTPRequestSerializer+OAuth2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFHTTPRequestSerializer+OAuth2.m"; sourceTree = ""; }; - 207EE05BFBF535B0FBCC1B4F35245968 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; - 20A06BD9E7B94EE8EDE93D8132A6477B /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; - 21382B817A2018EE60879362EEAA5FE3 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; - 2153DF21CC1242FEC6CEAFC1D4C2B1F9 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/Internal/BFAppLink_Internal.h; sourceTree = ""; }; + 20384C33BEE2F81896DFF7ADAEDF2CBF /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libBolts.a; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; 2188B59C0DAFD7EDFB9D610675470885 /* PNObjectFormData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectFormData.h; path = PNObject/Classes/PNObjectFormData.h; sourceTree = ""; }; - 21A4A321D36F5A7AD77F203FBB536116 /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; - 21AD0E47271019E55E663568E2B00521 /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; - 21EE23B56B6160B8FF9892C879BF17BF /* EXPMatchers+beginWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beginWith.m"; path = "Expecta/Matchers/EXPMatchers+beginWith.m"; sourceTree = ""; }; - 2219D5C06179BD9C93CC2B7E8E7CD4DD /* EXPMatchers+beGreaterThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m"; sourceTree = ""; }; + 2219317883A77BB64723FA78EDD93B03 /* Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expecta.h; path = Expecta/Expecta.h; sourceTree = ""; }; + 22447F856E4F94AE2C8C7FECED411A11 /* PureLayout.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PureLayout.xcconfig; sourceTree = ""; }; 2259653BA47063BB08391397AA4D6B29 /* PNObject+Protected.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+Protected.h"; path = "PNObject/Classes/PNObject+Protected.h"; sourceTree = ""; }; - 228290CCA9AB8436577C8CC4F7AF1C06 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 235BE4AB4998A621A73ED2BF118F0A7F /* 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; }; - 23B0C08AA81CFF7D87EC3BD5D0CE1B4B /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; - 23C7228C5DDC140432CF41CC12A34201 /* 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 = ""; }; - 24E61FE78C6598F0089A36428F1DD048 /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; - 255326F6938207707C684919F7491B1A /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; - 2562B5BCB3BB4273DD636EBF7CF6D668 /* EXPMatchers+raiseWithReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raiseWithReason.h"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.h"; sourceTree = ""; }; - 2598C4C9811FCBD7CCBFD97D7268398C /* EXPMatchers+respondTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+respondTo.m"; path = "Expecta/Matchers/EXPMatchers+respondTo.m"; sourceTree = ""; }; + 23628EF3FD25B246CE001581C88C984A /* UIWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWebView+AFNetworking.m"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.m"; sourceTree = ""; }; + 24F09EF994A067478CB514410AA34AF3 /* FBSDKMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMeasurementEvent.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h; sourceTree = ""; }; + 25A577668D9BE62DECC875B19A98C779 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; 25D8F4929C2A75DC37221A0AA12824E1 /* PNAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNAddress.h; sourceTree = ""; }; - 264E69028A0C84EABC73E28CFA284AE3 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; - 2697FCCB73BA3609AEBDD786D5234175 /* FBSDKMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMeasurementEvent.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m; sourceTree = ""; }; - 27A1D7637BB2132A3F444F156482E184 /* NSDate_Utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDate_Utils-dummy.m"; sourceTree = ""; }; - 28A68BE6ACD020D05F047DD6D0F256F7 /* FBSDKEventBindingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKEventBindingManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m; sourceTree = ""; }; - 2964338CB51713FCF4178C7C529ACCAD /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; - 29FFE39BB9744FB477E9BD45281C4E20 /* DJLocalization-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DJLocalization-dummy.m"; sourceTree = ""; }; - 2A047C05FBFBE85A1CE33DE614DF3F33 /* FBSDKSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSwizzler.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m; sourceTree = ""; }; - 2A4BB22F95B6AD65A989E687D5806FFC /* 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; }; - 2A615662CD3D253D18C81ACEB4D51FEA /* EXPMatchers+beInTheRangeOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInTheRangeOf.h"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.h"; sourceTree = ""; }; - 2A8C19BF201CB6D0FEAE915501EAB18B /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; - 2B67BCDA25FB657CCDB23961B3E77CDF /* NSMutableData+AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableData+AES.h"; path = "NSDataAES/Classes/NSMutableData+AES.h"; sourceTree = ""; }; - 2D257A2F765F81E2A8F1698939933D63 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; - 2E4EE4E3A82F63F42815DE3E8CD55193 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; - 2E7F2F46D7D93AFC302D7C7045F11BA4 /* XCTestCase+Specta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestCase+Specta.m"; path = "Specta/Specta/XCTestCase+Specta.m"; sourceTree = ""; }; - 2ECF7B3E0E8A8B859C7A2F89B06AAA26 /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; }; - 2F5C77D4033571915F1514FFA13A7AC6 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; - 2FC55FE8353DEA67B0C980579730F822 /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; - 2FCE5603E1AAE87305D1570E294967EB /* libNSDate_Utils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libNSDate_Utils.a; path = libNSDate_Utils.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 2FFB25E6B9D88368697A01736E84DAF5 /* CodFis-Helper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CodFis-Helper-dummy.m"; sourceTree = ""; }; - 3181B47B45E3776B3AB0FAFC6DE02069 /* FBSDKDeviceLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.m; sourceTree = ""; }; - 31AC3BF6268C5138FFE5B801AAED212D /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; - 3232F7829A1283E3AF2D1C4E6E9CBC3B /* VatNumber+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "VatNumber+Helper.m"; path = "CodFis-Helper/VatNumber+Helper.m"; sourceTree = ""; }; - 323BE48D55B39D125EAB374652FBB6E2 /* NSLayoutConstraint+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+PureLayout.h"; path = "PureLayout/PureLayout/NSLayoutConstraint+PureLayout.h"; sourceTree = ""; }; - 3278C19DB886D77F2D550A9BBEDFB91A /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; - 32A4312242020248E5076096163D4572 /* SPTCompiledExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCompiledExample.m; path = Specta/Specta/SPTCompiledExample.m; sourceTree = ""; }; - 32A83024C86330332FE1464C4AD7953C /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; - 33066B4FAF93E2F3564F1B2C745A7128 /* DDDKeychainWrapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDDKeychainWrapper.m; path = Pod/Classes/DDDKeychainWrapper.m; sourceTree = ""; }; - 34FCBE7D1D77C32B559F05E07654D2A3 /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; }; + 26AF01EAAE8808D08B19B6F245CDFC75 /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; }; + 272B18779A99FD0F77A751D85E86213B /* SPTSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSpec.m; path = Specta/Specta/SPTSpec.m; sourceTree = ""; }; + 27806C21F50C74897AC9FF8EA8B2A547 /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; + 278ACC5AADD0F5559FE842BF192588B3 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; + 27C59B5B11568E3C9A26FDB2058487C2 /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; }; + 286F1697FD7C5628424DF2BAB4A1277F /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; + 289E3A20F1A86561270D02B85D1B4997 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; + 28DA6EFDA7EE38714A86AD2C2B12C40A /* FBSDKImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKImageDownloader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.m; sourceTree = ""; }; + 294FAA371210175694E4B8BFBCB7CBB9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 29CAA7D9F787A2A120080AC6FC88E236 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; + 2AB62E52B89B05D507636607A1611EFB /* 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; }; + 2ABD3C066C9577CD58761179AA0C798A /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + 2AE5B2BF1A66904BDD595369B06633E9 /* EXPMatchers+beLessThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThan.h"; path = "Expecta/Matchers/EXPMatchers+beLessThan.h"; sourceTree = ""; }; + 2B62ADB4C1CA537282E6E11BA93F66A9 /* UIStoryboard+DJLocalization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIStoryboard+DJLocalization.m"; path = "DJLocalization/UIStoryboard+DJLocalization.m"; sourceTree = ""; }; + 2B71E258EBC4E3E8111A9DBC91E5C732 /* FBSDKAccessTokenExpirer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenExpirer.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.h; sourceTree = ""; }; + 2C2C5B0BE0CA5002795E39FACF35433C /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; }; + 2CBB4258D4121B0FC04CC22B757818D1 /* EXPBlockDefinedMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPBlockDefinedMatcher.h; path = Expecta/EXPBlockDefinedMatcher.h; sourceTree = ""; }; + 2CD0F9B6480334A437F00EAFB30C5490 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; + 2CD56E4434B18BEDB65AC4DE56E327AC /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; + 2D4513F2D820F16881A1C4C1E3097C57 /* EXPMatchers+conformTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+conformTo.h"; path = "Expecta/Matchers/EXPMatchers+conformTo.h"; sourceTree = ""; }; + 2D4C072523B6B74D55026171111C2BC4 /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; }; + 2D6A47036C2A694D1BB86F6AB2ADDF43 /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; + 2DC961768C16B735AD04D0D2AD74AF8A /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; + 2E277A61994B6505F265B96493D2F82B /* libNSDate_Utils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libNSDate_Utils.a; path = libNSDate_Utils.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2E8382E098B0ABAF91909E30F6C711AF /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; + 2F178C88F2A7C0B9E96D92CF14D88A6C /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; + 2FEB333B891FDB0A0369287A18F40372 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; + 2FF247BD248692D6F5E815E389F39D61 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; + 30027D05854975EFC23B4C890C8022C4 /* DJLocalizationSystem+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DJLocalizationSystem+Private.h"; path = "DJLocalization/DJLocalizationSystem+Private.h"; sourceTree = ""; }; + 3153FE2486FEC2BF286C9A3D1945D053 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; + 317C9DDA49939960F85B33DA232F29DE /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; + 322BB0A537527FA0994A50156B99CBC7 /* FBSDKMarketingKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMarketingKit.h; path = FBSDKMarketingKit.framework/Headers/FBSDKMarketingKit.h; sourceTree = ""; }; + 3340B284F5A4B1101B2EA55D03F67179 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; + 33586B8B5672E5632F691003D629AFBE /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; }; + 335E80A801C5F0B8EA0C340F6A2DA1B4 /* FBSDKCodelessPathComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessPathComponent.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.m; sourceTree = ""; }; + 33CB6A8AB8A00F2435EC6FD2E5C4153A /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; + 3463CBC1F71C1CF5C51BF0A374F8B6D0 /* Expecta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Expecta-dummy.m"; sourceTree = ""; }; + 34DB827F6DA82855B6D492B17DDA3B91 /* SPTExcludeGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExcludeGlobalBeforeAfterEach.h; path = Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h; sourceTree = ""; }; 3508A777B47A718379F2EAF4270531DF /* PNUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNUser.h; sourceTree = ""; }; - 3551BEEAC27EF8D09CD29F52E558D806 /* EXPDoubleTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPDoubleTuple.m; path = Expecta/EXPDoubleTuple.m; sourceTree = ""; }; - 35804B3CEE4F9061640C2881234D0B6A /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; }; - 35851A4867C0A3869015CB9897C6113B /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; - 35989139B1DC8A2CC3405DD43A49B197 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; 35A037F447D034CE82D96A453455219E /* PNObject-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PNObject-prefix.pch"; sourceTree = ""; }; - 35B32CAC5F01D66EA844A8CC98A49175 /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = ""; }; - 35BE26673679AF3E2590326B5CA04ECA /* FBSDKURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURL_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKURL_Internal.h; sourceTree = ""; }; - 35F30F50F4924304799BACA865C94A99 /* NSString+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Helper.h"; path = "NSString-Helper/NSString+Helper.h"; sourceTree = ""; }; - 35F4F2911C50F7A10EA4CD2EABA60A49 /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; - 36730929D0B3CB2AC41BF100F89ACA3B /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; - 369556203A1B8AC26266ABF8A2697A2A /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; - 36C15D5B7538C6F932A0E92F0CD7778D /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; - 375620A2EF26926B58593F4262BDB803 /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; }; - 379C348EB2F9F418F970768DEB673F2F /* Specta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Specta.xcconfig; sourceTree = ""; }; - 382F7323EE572C7B5BEEE17B4A8BC464 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; - 384BF2ED884F26B398ECBCFA92CF6E14 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; - 3947CAB7BA76C2DCF9C1AC6C4B8B9816 /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; }; - 3AC81A0D2E762BD988AF1E7E0BBC1AEE /* EXPMatchers+beIdenticalTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beIdenticalTo.h"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.h"; sourceTree = ""; }; - 3B5C70CFEC8F44CE8FD10524DEEC7A6F /* libDJLocalization.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDJLocalization.a; path = libDJLocalization.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B8947C04C451A0A2DF29B3CBAB3F9D6 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; - 3BBE8F3262FA519552E8C2072923D34C /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; + 360B7473368AC1C3C811FC1F03AB2744 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; + 361754E20DAC382E2D061EFC136F5E20 /* NSLayoutConstraint+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+PureLayout.m"; path = "PureLayout/PureLayout/NSLayoutConstraint+PureLayout.m"; sourceTree = ""; }; + 363B154B56E9E7803745A62413950CDF /* SPTExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExample.h; path = Specta/Specta/SPTExample.h; sourceTree = ""; }; + 36F3F210A7A242FE1FD916F37CBADDCD /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; + 3703664A695762CB09F0E7E2E833D796 /* libNSDataAES.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libNSDataAES.a; path = libNSDataAES.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 370A59955EAF7E77A26E872704D5388F /* StrongestPasswordValidator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StrongestPasswordValidator.h; path = Pod/Classes/StrongestPasswordValidator.h; sourceTree = ""; }; + 3716F02B4752231340F0F59CFC2AB263 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; + 389CFEACA7C9B76D0F3920359DB54CC8 /* PEARFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PEARFileManager.h; path = "PEAR-FileManager-iOS/PEARFileManager.h"; sourceTree = ""; }; + 38D9E442F484C4F1DC9544D140367F44 /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; + 38E6B5920B345E361E5BE6310096446C /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; + 3900C9A84CF29C766612D6C79740823F /* PEAR-FileManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PEAR-FileManager-iOS-prefix.pch"; sourceTree = ""; }; + 39740EE51A5C51414658A8F12B85DEE4 /* NSDataAESCipher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NSDataAESCipher.h; path = NSDataAES/Classes/NSDataAESCipher.h; sourceTree = ""; }; + 39A0E708D67DF3D162AE8EA6BB54D30C /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/Internal/BFAppLink_Internal.h; sourceTree = ""; }; + 39FE593DE930BA78D4BDA0F3C5F10E58 /* UIStoryboard+DJLocalization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIStoryboard+DJLocalization.h"; path = "DJLocalization/UIStoryboard+DJLocalization.h"; sourceTree = ""; }; + 3A1695794226E0FEBAB9495DBB5A8709 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + 3B03F353C5B6D73421D4D4D4A1F4FCD9 /* FBSDKImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKImageDownloader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.h; sourceTree = ""; }; + 3B724A4508AEEDF70BA5BCA12D50B6DA /* DJLocalizableString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DJLocalizableString.m; path = DJLocalization/DJLocalizableString.m; sourceTree = ""; }; + 3B8D4D510E39D0DE364AF4503AECDAFF /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libAFNetworking.a; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 3BDE137BB44CFF08F8AF9B2116275D99 /* NSString-Helper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSString-Helper-dummy.m"; sourceTree = ""; }; 3BEF0C3BFA8D3894AF5D67B207904D92 /* AFJSONResponseSerializerWithData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = AFJSONResponseSerializerWithData.m; sourceTree = ""; }; - 3BF274BD1AD934B41EBF4A67A2FC6E93 /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; - 3CCF53AEBA6B2AA7D485B661C65FD727 /* CodFisResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CodFisResponse.h; path = "CodFis-Helper/CodFisResponse.h"; sourceTree = ""; }; - 3D0DF3729BE6BBEEE00F9B91E3D1674F /* ExpectaSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaSupport.h; path = Expecta/ExpectaSupport.h; sourceTree = ""; }; - 3D21A5C3093EAFB3E12E7F651A3A132A /* SPTTestSuite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTTestSuite.h; path = Specta/Specta/SPTTestSuite.h; sourceTree = ""; }; - 3DA4EF941F355AF232E76D0362583A7A /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; - 3DFF53BB878A43B652F3626FE15D5FBE /* SPTExcludeGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExcludeGlobalBeforeAfterEach.h; path = Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h; sourceTree = ""; }; - 3ECC32889FE623554A78B0832BFC075D /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; - 3ED6A22CEB2E40168F13BFCD2FC0DBC3 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; - 3EE551CD8266F254A5DAA54EDB79C7BA /* FBSDKURLSessionTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLSessionTask.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h; sourceTree = ""; }; - 3F49F1FD84C52521B107B72B7B54DA72 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; - 3FB864BD98F199EA7151B86D7776B8C3 /* FBSDKAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererView_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; - 3FE24076474E62A09BCA909DA1A68CF2 /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; - 3FF9058171819AA185761AE2B04EA055 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; - 40847E3530278BABA50E27F042C4A6D4 /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; }; + 3C035D4B7C25EB6D02048E013706A803 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; + 3C85D9CEDCB95BB4A71EA215C8B90FF8 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 3C96440D9185AE3A941678207B763B99 /* FBSDKAutoLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAutoLog.h; path = FBSDKMarketingKit.framework/Headers/FBSDKAutoLog.h; sourceTree = ""; }; + 3CCCD71B7B317367C3A26040E746CFAA /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; + 3D10C44817DB43A6E8F62B37FF8FCC7E /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; + 3D2553C93DE666C6DC8243EA12538803 /* NSString+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Helper.m"; path = "NSString-Helper/NSString+Helper.m"; sourceTree = ""; }; + 3D48B413F6CD76474420CD78F10AFF38 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + 3E4FF31D3743D9127CF19D30BF976D6B /* 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 = ""; }; + 3F268AE2267944D18C9103B4A3D961FD /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; + 3F3895328093DB3335B2CC8C510ED4B4 /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; + 40363262E3D2C4DDEACB42DC9E2EAD79 /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; + 4066FCE4D9A353535164ECD6CAF8C060 /* ExpectaObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaObject.h; path = Expecta/ExpectaObject.h; sourceTree = ""; }; + 4071F2008C1E37A5F2EEC91C94D2461E /* FBSDKMarketingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FBSDKMarketingKit.framework; sourceTree = ""; }; 408972FACA5A1B21A155BCAEE932439B /* PNObject+PNObjectGETConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectGETConnection.h"; path = "PNObject/Classes/PNObject+PNObjectGETConnection.h"; sourceTree = ""; }; - 40D0360875987A8961CE4CDC11E76684 /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; - 410011B50EE53E54B3FE68221E7AB585 /* FBSDKDeviceLoginCodeInfo+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKDeviceLoginCodeInfo+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginCodeInfo+Internal.h"; sourceTree = ""; }; - 41D7537A4D4D5D37F50A1831829FD47A /* FBSDKURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURL.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m; sourceTree = ""; }; - 41EA81D366F1C2DA0E3C48520066FE1B /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; - 422228405026B213960E61CE3699D6CF /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - 4268EDC447EE59BDBB8ABBC399FE5188 /* EXPMatchers+beGreaterThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThan.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.h"; sourceTree = ""; }; - 42853A0181BFFC8BD67A522A40B3D75C /* FBSDKDeviceRequestsHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceRequestsHelper.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m; sourceTree = ""; }; - 43075ED41EDAC5215E93E64528886C1B /* UIStoryboard+DJLocalization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIStoryboard+DJLocalization.m"; path = "DJLocalization/UIStoryboard+DJLocalization.m"; sourceTree = ""; }; - 43FDACBDC768982815404996FC3041F0 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; - 4428B42610AB0FB470CE8A9F571BE487 /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = ""; }; - 444FFF855F5ABFFFF0A7C42DC70E79CB /* PureLayout.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PureLayout.xcconfig; sourceTree = ""; }; - 4499DF8459C8D2AF31AA71B9AE675D1D /* Specta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Specta-dummy.m"; sourceTree = ""; }; - 44B271AE2F41468F2DA5075E3F378680 /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; - 44B5F73B49B2F5CD6A2A7696618A8931 /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; - 44E358B4FA39962000122487194B2760 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = ""; }; - 450032CE5D7BD2E90B3183935D3758A6 /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; - 451DE67489762E7BF4872982818685DF /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = ""; }; - 452E64327494846C3D2E7CAF2898AFDC /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; - 4536743F73315987683C3324B01D7139 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - 45D55B98448A8CF5BEC142E2BBB0FA71 /* SpectaDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaDSL.h; path = Specta/Specta/SpectaDSL.h; sourceTree = ""; }; - 46035459CD822676C43AC57A7C17623B /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; - 4609ED5B43147AB345743308F07A18A4 /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; - 46E25B94A00EC37D77852BB2423511D5 /* DJLocalizableString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalizableString.h; path = DJLocalization/DJLocalizableString.h; sourceTree = ""; }; - 46F22A2A8EF3BD4B1F683B08B3956F91 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; - 47529291057D7967C6EC1395C1D3517E /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; - 48930B14EAE31BA46846BE06AE185384 /* FBSDKURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURL.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.h; sourceTree = ""; }; - 48EAEA1A387E7483A605AB622EAB91B8 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - 48EDB67FEAA6908810F10C1EF4059E0B /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; }; - 4A9179BB63F92444BB2D72730D28C05F /* FBSDKShareMessengerContentUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerContentUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareMessengerContentUtility.h; sourceTree = ""; }; - 4B3CF9BC60882B5CABB7C29219C1A5F5 /* EXPMatchers+beLessThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThan.m"; path = "Expecta/Matchers/EXPMatchers+beLessThan.m"; sourceTree = ""; }; + 40CB89F9717C62EB8957785A6EB3FCF7 /* EXPMatchers+beSubclassOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSubclassOf.h"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.h"; sourceTree = ""; }; + 416DA3C85DF3A756FB16ADB890777586 /* FBSDKSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSwizzler.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.m; sourceTree = ""; }; + 41A6FC6A658296BE9D7A339CB81EAD43 /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; + 41EBA549F8235DA37DD70326A1AB21B5 /* FBSDKURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURL_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKURL_Internal.h; sourceTree = ""; }; + 42D3A07B9E2A9F0BAA94A49E29DC0289 /* NSDataAES-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDataAES-dummy.m"; sourceTree = ""; }; + 431D9D75B33961C44984665FCC4143B2 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; + 4384BD4D2EBA42B4DB88C818E5DFF02C /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; + 44AAB06DEF12C90E826CE14183B842CC /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; + 452C7FD4F4980E034D8F3625E6802B23 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; + 45E4CC2B2EFD832DC8DF377A7C60E866 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; + 461F225C10C831BF56A7A0642884B232 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; + 4641DE8A1AECD93540A1398B11FD6328 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; + 46F8A260556054D99729150E532B7909 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; + 471646B56DD1296C56383A12835F8B29 /* CodFis-Helper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CodFis-Helper-dummy.m"; sourceTree = ""; }; + 482729C64A5AA1E97993393D357C317E /* PEAR-FileManager-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "PEAR-FileManager-iOS.xcconfig"; sourceTree = ""; }; + 482E9E8C012AF293E41D3DE21D83CFDE /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; }; + 485B5A26EA002FAA88FC2BE02C63F8F3 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; + 485FDE7300A8557FBE3C82FC07576F1B /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; + 4890ECB8F3F7FE2FF6A5F281D7A7F31A /* RZDBTransforms.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RZDBTransforms.m; path = RZDataBinding/RZDBTransforms.m; sourceTree = ""; }; + 48E1A84A638E7070A9FBDE2154A67250 /* EXPMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcher.h; path = Expecta/EXPMatcher.h; sourceTree = ""; }; + 48F8B518BC8B986B921179F6F9240DDB /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; + 490065D128802441BB1FB732F56D40A1 /* SpectaTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaTypes.h; path = Specta/Specta/SpectaTypes.h; sourceTree = ""; }; + 490E4BA82FF5E83ACB0A9E2DD8CEE169 /* Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Specta.h; path = Specta/Specta/Specta.h; sourceTree = ""; }; + 4934336C1F61E006BCD0B2A11BB701EA /* UIWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWebView+AFNetworking.h"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.h"; sourceTree = ""; }; + 4A2E3485F3C660F0B0EB6CE227843E9B /* FBSDKAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLink.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m; sourceTree = ""; }; + 4B6ED2EA6001D4C2DC4C030A5408F3EA /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; 4B85BD068FB8EF8539E17A298F917865 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - 4BB34A34410BB0E2237F80F427197302 /* UIDevice-Utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIDevice-Utils-dummy.m"; sourceTree = ""; }; - 4C33A3E7DEF95301AA59E97BEAE14668 /* PureLayout-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PureLayout-prefix.pch"; sourceTree = ""; }; - 4C6C846D234A6F018B473255B0F47201 /* EXPMatchers+beInstanceOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInstanceOf.h"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.h"; sourceTree = ""; }; - 4CC2B7BDEE80DDFF3EA3524AB6E7999D /* FBSDKMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMeasurementEvent_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMeasurementEvent_Internal.h; sourceTree = ""; }; - 4CDB54ACD6F9DCEE318FD3F032FC7E4B /* PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PureLayout.h; path = PureLayout/PureLayout/PureLayout.h; sourceTree = ""; }; - 4D9C88EC650ED2970A74902F58713724 /* Expecta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Expecta-dummy.m"; sourceTree = ""; }; - 4E184A6E100068DE232EEE9238820E8D /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; - 4E58EFDBC0BD5FC5AA09EF2E78FA9FC6 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - 4E93CE678CED3D184D0F8007F9391C4B /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; - 4EA1A58C1768B29C459BE6D58062AC94 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; - 4F541374C8430DA0077106D6E5F1DA26 /* FBSDKShareMessengerURLActionButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerURLActionButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.m; sourceTree = ""; }; - 4FD2F4B240BEA72CCF0601DEFB7DF452 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - 4FD38A9226FE7FDA838763FAA4056722 /* EXPMatchers+beCloseTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beCloseTo.m"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.m"; sourceTree = ""; }; - 50035DCF1A752411360B10EFFC35F0BD /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; }; - 50297A9E224149D1E8A31E0C13343402 /* DJLocalizationSystem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DJLocalizationSystem.m; path = DJLocalization/DJLocalizationSystem.m; sourceTree = ""; }; - 50AF06AE6DE7B9BAEEA4794F8B2A879B /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; - 50B432BB73B3BB63AB5FD7534F7D1B38 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; - 50F1A0E415C3F797F256FED40444E2DD /* NSData+SHA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+SHA.h"; path = "NSDataAES/Classes/NSData+SHA.h"; sourceTree = ""; }; - 51584A1ACF25CB49347808148BBCEC99 /* UIImage+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+AFNetworking.h"; path = "UIKit+AFNetworking/UIImage+AFNetworking.h"; sourceTree = ""; }; - 516C170C34D2B97E2B3F13FB5D3B92E2 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; - 51B137C5DB9EE4C34F0784B0E2300B45 /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; }; - 51C40578330A9198354C2DCB5AFC5785 /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; - 51EBFAD0C0E40885ED2A77D75DE53222 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; - 521DC8C943ADDC23A72DB305ED5CB36A /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; - 52B84C79443639E710D5300A19CF7D6F /* NSDataAES.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSDataAES.xcconfig; sourceTree = ""; }; - 52E0074F55BA1EC501E0972582CE4284 /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; - 5337B1EBF72D885EDB2CA3F253FC5B37 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; - 536F022E7BC8A34B94D3EC1E16FA0C13 /* FBSDKHashtag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKHashtag.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h; sourceTree = ""; }; - 538C17A97ECA9192B8A93A339933238C /* SPTExampleGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExampleGroup.h; path = Specta/Specta/SPTExampleGroup.h; sourceTree = ""; }; - 53DCE1D82D923DC94A1EC30D71C8F023 /* nv-ios-http-status-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nv-ios-http-status-dummy.m"; sourceTree = ""; }; - 544310B55950B4943152573ED2AFFE8B /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; }; + 4B9E944DABDFA7F4DD79C993D9E70E32 /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; + 4C260FA017BC3E8B376A1793BC87D5D9 /* NSData+AES.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AES.m"; path = "NSDataAES/Classes/NSData+AES.m"; sourceTree = ""; }; + 4CC8BE4BC81727568FEF5A2CD6DEBFE6 /* XCTest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTest+Private.h"; path = "Specta/Specta/XCTest+Private.h"; sourceTree = ""; }; + 4D2189B89ABCCEE870CB7D265899CA21 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + 4D40050457D1C9BBD50975F780AD000F /* EXPMatchers+beGreaterThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThan.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.h"; sourceTree = ""; }; + 4D54A9F46B6EB907BCD2C84BDC8EFABF /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; + 4DC3AF20751CE66E2D57A518D67CACF1 /* FBSDKDeviceRequestsHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceRequestsHelper.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.m; sourceTree = ""; }; + 4E5C73A34BB2A13E5A8AE866E6F02D54 /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; + 4F03C9B01D12F7775C5487517B510D61 /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; + 4F3F5F3BDA07EC4ECE61A1B0E4D70395 /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; + 4FEF225FC599C9FEE209D0725906EA86 /* NSArray+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+PureLayout.h"; path = "PureLayout/PureLayout/NSArray+PureLayout.h"; sourceTree = ""; }; + 52D54A1262183BE2303202BC73DEC049 /* FBSDKGateKeeperManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGateKeeperManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.m; sourceTree = ""; }; + 52D9A1261A586186736ABD7EE48B5D5E /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; + 5369FE224A2A381FB95EC2120A973CCE /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; + 53A54C74047B217C4204A767B03867BC /* DJLocalization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalization.h; path = DJLocalization/DJLocalization.h; sourceTree = ""; }; + 541ED8FD87561470666421B17341AE24 /* SPTGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTGlobalBeforeAfterEach.h; path = Specta/Specta/SPTGlobalBeforeAfterEach.h; sourceTree = ""; }; 54EE5407AE0AC49B2A28B4953A66E61C /* PNUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNUser.m; sourceTree = ""; }; - 54EF2C419EDEC0E3FCE2864C5F40C795 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; - 5591BB007FC9E3071D990D1CF0A52C23 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - 55AA69666FEF4E24F23A163FD1B0E843 /* libUIDevice-Utils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libUIDevice-Utils.a"; path = "libUIDevice-Utils.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 55AD2686F264B001D9B23B2E667BDC0A /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; - 5619B1BEE713E742B53D6FDA6C86B8C0 /* FBSDKSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSwizzler.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.h; sourceTree = ""; }; - 565ADF0C1EA97B982FEB1A8BC05B7C2E /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; + 5599600676B1456215FE054F4631F4D3 /* EXPMatchers+beInTheRangeOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInTheRangeOf.m"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.m"; sourceTree = ""; }; + 56C717938F4C6620F2E518EB2C21CB82 /* RZDBMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBMacros.h; path = RZDataBinding/RZDBMacros.h; sourceTree = ""; }; 57350A0FB1DCF1849369CA5A30E6D256 /* PNObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectConstants.h; path = PNObject/Classes/PNObjectConstants.h; sourceTree = ""; }; - 57BC6CFE2FF77A0D657A729BB2CFCAF5 /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; - 5853A3C027EF3C086C98DF233E21B3C5 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - 5862C90EFD738F31E09EB762AAEB0FCF /* RZDBTransforms.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBTransforms.h; path = RZDataBinding/RZDBTransforms.h; sourceTree = ""; }; - 5870AC01A2B66DACFB5EF8DF86F3A3E9 /* FBSDKShareMessengerGenericTemplateContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerGenericTemplateContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.h; sourceTree = ""; }; - 588036BA015152EA49785DA03F133B1D /* FBSDKAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h; sourceTree = ""; }; - 58924C097629393B47F8913C206AB1DB /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; - 58C10B7ED365FB6C3FC5BF7C540812B8 /* FBSDKViewHierarchy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewHierarchy.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.m; sourceTree = ""; }; - 5AC0138A592F04FD4FC9F9A9BB3A0B99 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; - 5B7C69B54E006EECF1C28F66946D96EF /* FBSDKShareMessengerGenericTemplateContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerGenericTemplateContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateContent.m; sourceTree = ""; }; + 579D3460161136F30D8823384E6BED3F /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; + 57C83F37F9D7191D64044FEA1C2C4A14 /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; + 57CFE9FB987472AA48B7CE19CE7DC5EA /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + 584248C5CD7B315AF5246B8C364DC902 /* XCTestCase+Specta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestCase+Specta.m"; path = "Specta/Specta/XCTestCase+Specta.m"; sourceTree = ""; }; + 58573C9A78CAA88BB5168416F7995F24 /* XCTestCase+Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTestCase+Specta.h"; path = "Specta/Specta/XCTestCase+Specta.h"; sourceTree = ""; }; + 58EE28538DC768AED75EC8F88A6C5D17 /* PureLayout-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PureLayout-dummy.m"; sourceTree = ""; }; + 59CEC6EF96D22D27B07018193AEDD9CF /* FBSDKCodelessParameterComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessParameterComponent.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.m; sourceTree = ""; }; + 5B436B6A42B9B4BDFB99DB1F3EC44A7B /* DJLocalizableString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalizableString.h; path = DJLocalization/DJLocalizableString.h; sourceTree = ""; }; 5BB30C0BCCE010C3483BCB26EC8864B3 /* AFOAuth2Manager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = AFOAuth2Manager.m; sourceTree = ""; }; - 5BB9A02B49FC5E7C8A2B9A5D4DA1F980 /* FBSDKEventBindingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKEventBindingManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.h; sourceTree = ""; }; - 5BE543CFC04F0279346707BD5FE5A8DB /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; - 5C1F83A82EF1E725A2A7424E4FC2641E /* RZDBTransforms.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RZDBTransforms.m; path = RZDataBinding/RZDBTransforms.m; sourceTree = ""; }; - 5D200A199F3480AC54156D74567862E5 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; - 5D4138F15DE6BC317FEE875C58D5E9DF /* FBSDKShareMediaContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMediaContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.m; sourceTree = ""; }; - 5D49012A51A1B5C9ABD583D3B12D61E1 /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = ""; }; - 5D5D5A109336011BE64863B8BBDCF230 /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; - 5D9112F85BC4C12A79ADCAFEBD6501AD /* FBSDKImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKImageDownloader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.h; sourceTree = ""; }; - 5D9B4847D4B627158FFC1A63EA6DC80F /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; - 5E19E7F2A879610962D09F17D159E49C /* SPTCallSite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCallSite.h; path = Specta/Specta/SPTCallSite.h; sourceTree = ""; }; - 5E41BAE09E8F96F1CC0C694C0A13330B /* EXPMatchers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatchers.h; path = Expecta/Matchers/EXPMatchers.h; sourceTree = ""; }; + 5BF7FBFBBF098A5683BBC10D4A97C10A /* EXPMatchers+postNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+postNotification.m"; path = "Expecta/Matchers/EXPMatchers+postNotification.m"; sourceTree = ""; }; + 5C2702D997A5C5C9445826543EA9B51A /* NSString-Helper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "NSString-Helper.xcconfig"; sourceTree = ""; }; + 5D4A1B06096D3624B7AF5E4F03EAC457 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; + 5E34AD2C1453EC0C20F9C2731AF11063 /* CodFis-Helper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CodFis-Helper.xcconfig"; sourceTree = ""; }; + 5E638E4E812BAD1DDB8ED88531DCBEEB /* DJLocalization.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DJLocalization.xcconfig; sourceTree = ""; }; 5E7CC90E7578D0A264BEAFA3DEDE7ACE /* Pods-PNObject_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PNObject_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 5ECDADF39BFF0422B052C8AF0281341F /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; - 5FFDDE1BDCD388670D4D56FA7A5837D7 /* FBSDKAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkTarget.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.h; sourceTree = ""; }; - 600F03DF58A86C9F7FE46DFD525FD1DF /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; - 6085CE9C47854FC205AA516CE066CE0F /* FBSDKShareMessengerActionButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerActionButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerActionButton.h; sourceTree = ""; }; - 610B3F3EB62EDF675253EC2EC174742B /* EXPMatchers+beInTheRangeOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInTheRangeOf.m"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.m"; sourceTree = ""; }; - 61AEAF3AAE7DB3790BF72EB0A31909EB /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; + 60481B8A2E41827C43F71D6971F1B76C /* libRZDataBinding.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRZDataBinding.a; path = libRZDataBinding.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 60FA2B7810F7D78E9D4A9C844A4EF183 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 612F262688422A838FBD8457582F09F3 /* NSObject+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Expecta.h"; path = "Expecta/NSObject+Expecta.h"; sourceTree = ""; }; 61D7FE355C0183E56F6F8AB1CD700538 /* Pods-PNObject_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PNObject_Example-acknowledgements.markdown"; sourceTree = ""; }; - 626329BFEA37AF9E99A2ABC7DFF906C3 /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; + 61E1D0F3409E4792D81E841ABEB2B71D /* Specta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Specta.xcconfig; sourceTree = ""; }; + 61F4EB45E0D70DF1C15C5E1396FF36C0 /* FBSDKAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererView_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; + 6285184D424D8B500578979EB3BCAAAF /* StrongestPasswordValidator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = StrongestPasswordValidator.m; path = Pod/Classes/StrongestPasswordValidator.m; sourceTree = ""; }; + 6329F96C2823EA696DCACC33DA57CDBA /* 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 = ""; }; + 63E8FDB14E177C5030A60739394E9A0F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; 640975C4F30DA8E78437AA8D79746559 /* PNInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNInstallation.h; sourceTree = ""; }; - 64D7FF50177AB684897EFA94FCCD615D /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; - 64E9867518D59755916C982BC35CF161 /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; - 662CB4A93808AEAC21BCD400DC311E45 /* NSData+AESValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AESValue.m"; path = "NSDataAES/Classes/NSData+AESValue.m"; sourceTree = ""; }; - 6658A8EB3EE225F944B76265B3FE95CD /* CodFis-Helper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CodFis-Helper.xcconfig"; sourceTree = ""; }; - 66CE6A6C55FF062323C0728E0A293795 /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; - 6727A49F23F5D0E57AD124C38F13BFE8 /* EXPMatchers+postNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+postNotification.h"; path = "Expecta/Matchers/EXPMatchers+postNotification.h"; sourceTree = ""; }; - 6732E2A7357018A011AC949878023A74 /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; - 67886D657034CA4A926FDFA702319389 /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; - 6858509AE4AB5B41576F24603F15520C /* FBSDKAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkReturnToRefererController.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.m; sourceTree = ""; }; + 64A54F9B05C5BC6EC4D3ED3ED6E31663 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; + 64AF2E5E93CD0F51FCC5C417AA5254C7 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; + 64D1B47152DC334661A7C9426021D280 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; + 6515F05B30E44361827C3A533E8CF0F3 /* nv-ios-http-status-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nv-ios-http-status-dummy.m"; sourceTree = ""; }; + 653BAC33D44AB2E4F138F12134718430 /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; + 654EA83F4A6CF0F0BAC50997B02472E0 /* FBSDKAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkTarget.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.h; sourceTree = ""; }; + 656001A3D96976072BAC29FA16251DDC /* DDDKeychainWrapper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DDDKeychainWrapper-dummy.m"; sourceTree = ""; }; + 6573349E7506EF7195DC6A61B7B9BBC1 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; + 657D97DDD493FB72F983D3A29CD5B2A3 /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; + 6590B91A0B3DE7B70BF5BDD27B9A7997 /* Expecta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Expecta.xcconfig; sourceTree = ""; }; + 65DB8C63409A51C7B95D0D503F5EDE43 /* FBSDKURLSessionTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLSessionTask.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.h; sourceTree = ""; }; + 662C7CEA5DD968B32F1B8682D7EEE8AE /* EXPMatchers+beTruthy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beTruthy.m"; path = "Expecta/Matchers/EXPMatchers+beTruthy.m"; sourceTree = ""; }; + 670DD800EE70F43E4275DED5BE72A491 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; + 671E9A37F3BF51A1FEA82A709ECB5C18 /* FBSDKAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLink_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLink_Internal.h; sourceTree = ""; }; + 673CC74EB7BA89ABA32F2A7AB0DCC25D /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; + 677236E9F8E56E2EED7E7B340ED191F9 /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; + 67F11EE028D9C48A8BA8812ABDEA5078 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; + 67FB21CF1D8CFEF98F752ED2CBDF78A4 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; 68758C3411A71AEED45A7CC14C650578 /* PNLocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNLocation.h; sourceTree = ""; }; - 68851197844455F40E4C06D94EA40DB6 /* HTTPStatusCodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPStatusCodes.h; path = "nv-ios-http-status/HTTPStatusCodes.h"; sourceTree = ""; }; - 6932BABFB9914AE06E34FF9EC3FB6099 /* FBSDKSharingScheme.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingScheme.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingScheme.h; sourceTree = ""; }; - 696A3A1D99A35202B4526CF2357B74A5 /* FBSDKMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMeasurementEvent.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.h; sourceTree = ""; }; - 69A248BFCCB5D4AE6EE2607BA308DBA7 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; - 69BB3407552D83DCDB500A2BCAC62AA9 /* FBSDKAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererController.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h; sourceTree = ""; }; - 6A02AB7FDED3B5C6D22B85644965FF2B /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; - 6A090559352B38A5116A2F0A8B9C1497 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; - 6B5DD49FEDCD3CD1BCA1ED51D8365DEB /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; }; - 6B80C2A86E5412DD2870FA63E06F6E33 /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; }; - 6BC8DD89E498C32B266891C23AB6FDC5 /* EXPBlockDefinedMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPBlockDefinedMatcher.m; path = Expecta/EXPBlockDefinedMatcher.m; sourceTree = ""; }; + 68D64A1F9DC4EB4F1017B0BC9B432FB8 /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; + 6929B670458A6799FB0B396BC7450EBD /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; + 69FAA147816DD9762907F65823ED2BFB /* Expecta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Expecta-prefix.pch"; sourceTree = ""; }; + 6A6176A09A35B2F5F9F20DA1ED081E48 /* FBSDKEventBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKEventBinding.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.h; sourceTree = ""; }; + 6B3D7D81F0079CA5AFFB6E83752F9170 /* RZDBTransforms.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBTransforms.h; path = RZDataBinding/RZDBTransforms.h; sourceTree = ""; }; 6C775F44E2FBA24D38FF9B7D0B1D0435 /* PNObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObject.m; path = PNObject/Classes/PNObject.m; sourceTree = ""; }; - 6C83C3A12D9A0C7152215476E20751EC /* SpectaDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaDSL.m; path = Specta/Specta/SpectaDSL.m; sourceTree = ""; }; - 6CFFE266989CAEEB105125FDA511198E /* EXPMatchers+beIdenticalTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beIdenticalTo.m"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.m"; sourceTree = ""; }; - 6D751AFFF300A2F684AE78260EB03685 /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; - 6DBECFE13698D4D8DDED7724E25BFCDA /* XCTest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTest+Private.h"; path = "Specta/Specta/XCTest+Private.h"; sourceTree = ""; }; - 6DD323D7262AD60915043E23337D9F24 /* UIDevice-Utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIDevice-Utils-prefix.pch"; sourceTree = ""; }; - 6E61444B20CBFB611DB03797D93038E0 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - 6E774A5077A3054A8BBA9C022C1E29F4 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerOpenGraphMusicTemplateContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.m; sourceTree = ""; }; - 6F337357C275445D11C05C3D05412409 /* EXPBlockDefinedMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPBlockDefinedMatcher.h; path = Expecta/EXPBlockDefinedMatcher.h; sourceTree = ""; }; - 6F6FFF41F5657EF1F9999F87B32D0ACE /* NSValue+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+Expecta.h"; path = "Expecta/NSValue+Expecta.h"; sourceTree = ""; }; - 6F7FC7C9360DC60E43AFA5DAC5FDE0DD /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; - 70809CF813292F967C2F301B243571FB /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; + 6D05E1EE033D6F80BA1D0B98AAFED36F /* SpectaDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaDSL.h; path = Specta/Specta/SpectaDSL.h; sourceTree = ""; }; + 6D6F2D19BDEF7351A7D3AC3C578FEAE4 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; + 6E522933450F1EABB48BC039889B9342 /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; + 6F0752E58A5EAA30AD58F145FD43B738 /* EXPExpect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPExpect.h; path = Expecta/EXPExpect.h; sourceTree = ""; }; + 6F252CCAAE16FC4699E054C0F24C6A7D /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; + 6F4BF097BD0BD858426E729760DA23C5 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; + 702693C46328669C71367D27FB8C8711 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; 70B6EFE36F3843A1CEBD39DDD20322A1 /* PNObjectFormData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectFormData.m; path = PNObject/Classes/PNObjectFormData.m; sourceTree = ""; }; - 710A0BE4E9782F28B5400B86A0F9E4B8 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; - 71113CD9E60F21CD6045F396953DCB2A /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; - 712F3FF5530F663771950BCC0CF0B2D4 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; - 718E9C888B54AD428B7A5D9DF4D5ED56 /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; - 72B47B0724761B2B22F82B85F19F2633 /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = ""; }; - 73093867BFAE6EBBDF7A5D9F91A222CA /* CodFis+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CodFis+Helper.m"; path = "CodFis-Helper/CodFis+Helper.m"; sourceTree = ""; }; - 73168AB5AEFEF68BF6160910269CA1CE /* FBSDKUserDataStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUserDataStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h; sourceTree = ""; }; - 7332C1E49582D8BB28F10D054D709139 /* SPTGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTGlobalBeforeAfterEach.h; path = Specta/Specta/SPTGlobalBeforeAfterEach.h; sourceTree = ""; }; - 73517324CA450DAF3250DB48CDA3182B /* libCodFis-Helper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCodFis-Helper.a"; path = "libCodFis-Helper.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7371F8850210EAA2725BBBAE33355C08 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; - 739BA53B10D2894EFCF6A2AF08454C11 /* RZDataBinding-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RZDataBinding-dummy.m"; sourceTree = ""; }; + 7113609688C45AD2C38B06A469142179 /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; + 71EF74E8306F1274A920B9A8996BF784 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; + 726E7FF9F534B6024C21CC8ECA817B1C /* UIDevice-Hardware.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIDevice-Hardware.m"; path = "Pod/Classes/UIDevice-Hardware.m"; sourceTree = ""; }; 73B30F1E60DA52CB98F98C8708976D8F /* Pods-PNObject_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PNObject_Example-dummy.m"; sourceTree = ""; }; - 73C4CA0DDD20C9404F022699B69E1C8F /* NSData+AESKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AESKey.m"; path = "NSDataAES/Classes/NSData+AESKey.m"; sourceTree = ""; }; - 74634C2DC0DA90642585261C51C96620 /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; - 746988DB73522DD2D4EB7DFEC771D31A /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; - 748A5B4FCF6878E666806705BA41E859 /* EXPExpect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPExpect.h; path = Expecta/EXPExpect.h; sourceTree = ""; }; - 75DDA03055953C05A58106E8AC33C3FF /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; - 7642275934E424A63198BB2B53B41144 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; - 76DE5D8DE9038186BAF45C3051D74179 /* FBSDKHashtag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKHashtag.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.m; sourceTree = ""; }; - 76FBF95528DC39D92FE22C0EA4AC7E7C /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; - 7703EBD91F030530D391B9311BBE7284 /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = ""; }; - 77AFBC5B46A02911078C7A0E7E9BB0F6 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; - 77FB2688DB92ACD34FD173329000B6F0 /* FBSDKShareCameraEffectContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareCameraEffectContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.m; sourceTree = ""; }; - 78ADC27CAD5317640AD7062E17593E6A /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; }; - 7A7FDB37BF24244A3C52060B82A5DB49 /* FBSDKCodelessParameterComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessParameterComponent.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.h; sourceTree = ""; }; - 7ADED0A7769310FE904BC209FDA425FA /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; - 7B4C7FA8DA604D0615DD16136A5FE4F1 /* NSString-Helper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSString-Helper-dummy.m"; sourceTree = ""; }; - 7B5A30A9EC17834C60F15FCD8D5862EA /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = ""; }; - 7BA24DC711C9A9BF728E911963B7D295 /* FBSDKCameraEffectTextures+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCameraEffectTextures+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCameraEffectTextures+Internal.h"; sourceTree = ""; }; - 7BEA087FAA2D12FF5E9BB0B6A376D8DD /* NSData+SHA.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+SHA.m"; path = "NSDataAES/Classes/NSData+SHA.m"; sourceTree = ""; }; - 7D3A8E17950CDFC3ADE5016E9EB1F8B5 /* libPureLayout.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPureLayout.a; path = libPureLayout.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 7D4C3620B470F0BE002263030752F9B9 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; - 7D59F55316C71363EBAE55121B468EE8 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - 7DE8E9D0C166D342CA5EA91030B92A5D /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; - 7E5C60BEF924ADC12560A04F338BBB59 /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; - 7E73B3A37690059AD6CD0A5E0C51DC60 /* FBSDKAppEventsUninstall.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUninstall.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUninstall.h; sourceTree = ""; }; - 7F888E9855668DCC7F64E0402CBE13CB /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; - 7FC7136D3F9BCE9D3D11238C1EEDF91E /* NSString-Helper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSString-Helper-prefix.pch"; sourceTree = ""; }; - 7FFD442C08D07342BF2D569764C17502 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; - 800D7827EDE27C97F6CF2751A65EAC01 /* EXPMatchers+conformTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+conformTo.h"; path = "Expecta/Matchers/EXPMatchers+conformTo.h"; sourceTree = ""; }; - 801E0A9A89866BB1388463D16126A85A /* StrongestPasswordValidator-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "StrongestPasswordValidator-dummy.m"; sourceTree = ""; }; - 8027B64849AE705283D770AE136C543C /* EXPMatchers+beKindOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beKindOf.h"; path = "Expecta/Matchers/EXPMatchers+beKindOf.h"; sourceTree = ""; }; - 803FFB178186C751D5B8D54CA328423A /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; - 805B50B7ED432F0E73C491477AA168B5 /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; - 807B96CAC1ED20D949D005D57A05B2B5 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = ""; }; - 8090ACCF98C8E565350440301F977D9A /* SPTExampleGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExampleGroup.m; path = Specta/Specta/SPTExampleGroup.m; sourceTree = ""; }; - 8171265156664F0907696D211D002E6B /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; - 82A9CE801509DD721875DFD93FE32730 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; - 82F6CC1ACAF6F27C6A111F34E7731E6A /* DJLocalizableString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DJLocalizableString.m; path = DJLocalization/DJLocalizableString.m; sourceTree = ""; }; - 830B66BF541F04CDE6617EDD6538B1D9 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = ""; }; - 8364047D4C435ABFE5C89C5D44227EE8 /* EXPMatchers+equal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+equal.m"; path = "Expecta/Matchers/EXPMatchers+equal.m"; sourceTree = ""; }; - 83C5495006CAFA9B3AD7DDB0535CA4CD /* SPTSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSpec.h; path = Specta/Specta/SPTSpec.h; sourceTree = ""; }; - 85E562A612CB4F467213BE91B2F766A9 /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; - 8624E8CEF200BAFC250C1F71250D0786 /* FBSDKSharingValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingValidation.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingValidation.h; sourceTree = ""; }; - 86B02ADE54AD8160AA7985E20874AC2F /* 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; }; - 87083AC80734642A6AC8137D00D7B141 /* FacebookSDKStrings.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; path = FacebookSDKStrings.bundle; sourceTree = ""; }; - 8714BC79FC4AE625BF543612A8626CDE /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; - 872397B71CB788624C68B559D4C409E2 /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; - 8734D2AD92DE52FFB555643C20A74AD2 /* Expecta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Expecta.xcconfig; sourceTree = ""; }; + 74969D001959CAFCF9E294DE2790B848 /* libUIDevice-Utils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libUIDevice-Utils.a"; path = "libUIDevice-Utils.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 752D97D6051447FA1D520A1D682AF84D /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; + 762B12634DC393E3D87C439EBB48574A /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; + 770095613E5B5A03B157948E02F77487 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; + 775D1E1B5C8150DD7BD0F21CDD958388 /* NSData+AESKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AESKey.h"; path = "NSDataAES/Classes/NSData+AESKey.h"; sourceTree = ""; }; + 77A6E8BD608D173DFB68960F838AEADC /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; }; + 785562DEEBF5BC0A7C950B934440E40C /* FBSDKMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMeasurementEvent.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMeasurementEvent.m; sourceTree = ""; }; + 78B6CE2F982824ECDDB62EDFA68DBF72 /* EXPMatchers+beGreaterThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m"; sourceTree = ""; }; + 7973413B8C74EAF016C4C64DCCD1B1A8 /* SPTCallSite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCallSite.h; path = Specta/Specta/SPTCallSite.h; sourceTree = ""; }; + 7988B8E9E7F035F5D366BA10590CBB37 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; + 7A0417A45A2F49FDAA0A36C09FC3E187 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + 7B0D6DAA93F41734BC67BF47FD0E9D45 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; + 7BE97ACA41424B6A98E3ABC7E4E7F6E3 /* FBSDKURLSessionTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLSessionTask.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m; sourceTree = ""; }; + 7D29E8B3F08B0F6A6CEEABD5866689D4 /* Specta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Specta-prefix.pch"; sourceTree = ""; }; + 7E4572D806AA1BBC81969ADFB3DDCF50 /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; + 7E91846F5FC7A6C73BFD33DF61939034 /* DDDKeychainWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDDKeychainWrapper.h; path = Pod/Classes/DDDKeychainWrapper.h; sourceTree = ""; }; + 7E9657037019A3652D78224AAEF0B514 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + 7F96E6A0967EE7E39AB0EF85C14505B3 /* HTTPStatusCodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPStatusCodes.h; path = "nv-ios-http-status/HTTPStatusCodes.h"; sourceTree = ""; }; + 7FEBFDB889106151937BCB050AFFF1F5 /* CodFis+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CodFis+Helper.h"; path = "CodFis-Helper/CodFis+Helper.h"; sourceTree = ""; }; + 8034D248C388C25F4A2F229BCFDCE2BD /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; + 80EF578708C3C8E74246CC1C2DA6335F /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; + 82FD9D340118B39EF705BF5AB916C9EA /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; + 8400A0180F303153ECFEC289F63BA3E7 /* UIDevice-Utils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIDevice-Utils-dummy.m"; sourceTree = ""; }; + 84097C1575F396B3E36596CFF14ADB4A /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; + 84E8AE35B5FE89A5C04732BE26EEB99C /* DJLocalization-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DJLocalization-dummy.m"; sourceTree = ""; }; + 859B23362F4273474F1FF2202824CACB /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; + 86DBEE22F90A25649F8A23C69D2CB5AA /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; 873CFF1D9529B6114BA69362D3FB5F5C /* PNObject+PNObjectPOSTConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectPOSTConnection.m"; path = "PNObject/Classes/PNObject+PNObjectPOSTConnection.m"; sourceTree = ""; }; - 876647EB967D4F5CEB7CB8F4FBB79757 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; 8766997BC0347060CA9AB363D89F270A /* PNObjectModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectModel.h; path = PNObject/Classes/PNObjectModel.h; sourceTree = ""; }; - 876AAB1DC6ECA290A5C79CB04A9291D2 /* PEAR-FileManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PEAR-FileManager-iOS-prefix.pch"; sourceTree = ""; }; - 876BEDE992F7C6D99443EF18BFE22429 /* FBSDKWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebViewAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m; sourceTree = ""; }; 87AAC9B7E486DDDEEFD4F57F7AECF48F /* PNAddress.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNAddress.m; sourceTree = ""; }; - 87ED635594827F2E8464EDA2788E6D55 /* FBSDKCodelessMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h; sourceTree = ""; }; - 87F16AC73F6DC5DC5D2C30FC2F111C10 /* EXPMatchers+beNil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beNil.h"; path = "Expecta/Matchers/EXPMatchers+beNil.h"; sourceTree = ""; }; - 8847F10A21BF43DFF71395A3E1AB5A59 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; - 88CABB3CA14023398BAF033A078AEDCE /* UIStoryboard+DJLocalization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIStoryboard+DJLocalization.h"; path = "DJLocalization/UIStoryboard+DJLocalization.h"; sourceTree = ""; }; - 894A257D948EE417BCF17996CA3F53CE /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; - 8963B8734D6A668C052D29DFAFA4F085 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; - 8968CB9A6DE68B4B5677DBBDE983BE39 /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; - 897162B6B9D1ADADAEBC3ECC01B27AE7 /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = ""; }; - 8980D6FAE79CA78C7001A8EA2BC3E1C4 /* EXPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDefines.h; path = Expecta/EXPDefines.h; sourceTree = ""; }; - 898F592C01E433162EEF7551D2AAEFB6 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; - 89DC8847612A5AB4B27182CD26A19A76 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/Internal/BFURL_Internal.h; sourceTree = ""; }; - 8B56D76D2BF08891F4D7012036DCE314 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; - 8CAF11D909749FDA9F2ED0794DBFE7AE /* FBSDKWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebViewAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h; sourceTree = ""; }; - 8CF110C040A6C071E0CCA79CE2745EE0 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; - 8D0E30867072236A95E7876836C8F4A4 /* SPTCompiledExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCompiledExample.h; path = Specta/Specta/SPTCompiledExample.h; sourceTree = ""; }; - 8D5C4E9E659DF465CEACD70EDC09E5DF /* StrongestPasswordValidator.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = StrongestPasswordValidator.xcconfig; sourceTree = ""; }; - 8D6C25CEF86D625B2705257253DAD8BE /* PureLayout-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PureLayout-dummy.m"; sourceTree = ""; }; - 8D8B4922E95788F5B6D84BD95973C201 /* EXPMatchers+raiseWithReason.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raiseWithReason.m"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.m"; sourceTree = ""; }; + 88B24CBD3D048F362BC22183941A2179 /* NSObject+RZDataBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+RZDataBinding.h"; path = "RZDataBinding/NSObject+RZDataBinding.h"; sourceTree = ""; }; + 88C2F4FA76F01022B37B706FD918FBD1 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + 88FFBAC8BDB65FD09ED3E9B84B1614CB /* libDDDKeychainWrapper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDDDKeychainWrapper.a; path = libDDDKeychainWrapper.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8A160288374D399361D96BB87C0F0389 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; + 8A77ADBE8D4830B102F91F72EE93376D /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; }; + 8AA8B738B89B1B2DBBE7390C9258C0CD /* FBSDKViewHierarchy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewHierarchy.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h; sourceTree = ""; }; + 8AC6DB2CE93C86FE2BFFA87107CCE05B /* CodFis+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CodFis+Helper.m"; path = "CodFis-Helper/CodFis+Helper.m"; sourceTree = ""; }; + 8AD4BB858FAD421FFED79A6FA590B68C /* EXPMatchers+beKindOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beKindOf.h"; path = "Expecta/Matchers/EXPMatchers+beKindOf.h"; sourceTree = ""; }; + 8B540B0E52E9950F9224BC7DCDB4AD77 /* SPTCallSite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCallSite.m; path = Specta/Specta/SPTCallSite.m; sourceTree = ""; }; + 8B6E513FE21B9CA58F416017BB838021 /* EXPMatchers+beNil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beNil.h"; path = "Expecta/Matchers/EXPMatchers+beNil.h"; sourceTree = ""; }; + 8B9D7A713D36784BE4EDA637A92BC827 /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; + 8CF46963F5DBECA8F990D664E78244DF /* FBSDKURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURL.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.h; sourceTree = ""; }; + 8D2250C71F28AE981666D1B87E599907 /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; + 8D42F1517CD3CBCD0BC1A82B4348A5FA /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; }; + 8DB74D19D498C0E48971AC94032AED38 /* PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PureLayout.h; path = PureLayout/PureLayout/PureLayout.h; sourceTree = ""; }; 8DDE2ACF69D44496ACAABE1B1FBB2EFA /* PNObjectModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectModel.m; path = PNObject/Classes/PNObjectModel.m; sourceTree = ""; }; - 8E97A54636CC271E5BC33FC8F2AD411F /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; - 8EF80CAB2F23373F48E87570F7ECC5A9 /* NSDataAES-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSDataAES-dummy.m"; sourceTree = ""; }; - 8F2186D54B2A440BC97AFEBCB1544D9B /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; - 8F6435D1C81D2CCBF8334F92E3678802 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; - 8FA08EC0714F4A88BF630D3F963EB509 /* NSObject+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Expecta.h"; path = "Expecta/NSObject+Expecta.h"; sourceTree = ""; }; - 8FC98C93277D7E6BF8CA5D23CB43D95C /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; - 91B843E9A83B5038ED6DD189A70F48C6 /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; - 91D597045A0BDA11505525EF9C97D548 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + 8EB72B6C78DE70A0C02D1B5DBFD02466 /* nv-ios-http-status.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "nv-ios-http-status.xcconfig"; sourceTree = ""; }; + 8FBB7581B3AC543B0DD8F845BDFCDAC7 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; 91DFFD5F597BE0B703594690DB976C8F /* PNObject+Protected.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+Protected.m"; path = "PNObject/Classes/PNObject+Protected.m"; sourceTree = ""; }; - 921954198F5E18C5FB71E329721B3574 /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; - 92C705C9C2D61894D5869A2198F62607 /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; }; - 9302213966977B870A5EDA47DC66C8AD /* FBSDKCodelessPathComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessPathComponent.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.h; sourceTree = ""; }; + 91F1A51E5822337B24C5E3E864B398A7 /* SPTExampleGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExampleGroup.h; path = Specta/Specta/SPTExampleGroup.h; sourceTree = ""; }; + 92CD58E200B787BAAE825A1FA8E39242 /* NSArray+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+PureLayout.m"; path = "PureLayout/PureLayout/NSArray+PureLayout.m"; sourceTree = ""; }; + 93098FE37E7E5400834CFB5D30CBAE5A /* Specta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Specta-dummy.m"; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 93AD73B1077B7352ED7AC7FCAF654105 /* FBSDKDeviceLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKDeviceLoginError.h; sourceTree = ""; }; - 942CD0883F237C1B6475AB8084F6CBDD /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; - 945553D4E0D0A23E3A6D9AFE6D11DE59 /* CodFis+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CodFis+Helper.h"; path = "CodFis-Helper/CodFis+Helper.h"; sourceTree = ""; }; - 949B94603FCE91B73D37C7942A1DC84A /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; - 952BCB39B0D72AA10B61D9439887C180 /* UIWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWebView+AFNetworking.m"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.m"; sourceTree = ""; }; - 955C1438A6C55A109024ECFE0E59F2A6 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; - 95CE3638CD655496A931B5F3D3EE6709 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; - 96469ECD1F7F9EE7F98E75A3797FDB8E /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; + 94790902DBEF7F1FDA96953FC4E64F56 /* EXPMatchers+beIdenticalTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beIdenticalTo.h"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.h"; sourceTree = ""; }; + 94ADF1D980C8E5B569010B49E4E71E13 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; + 95BCAA71AA2FF99269064E43A0F45113 /* 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; }; + 95CC9B2059E9A9EE830937457877E555 /* FBSDKAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolving.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolving.h; sourceTree = ""; }; 96E5917B63E153423DDD5B68ECC67E22 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 97235C98D0D6BE67142911F95065B66A /* FBSDKDeviceLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.h; sourceTree = ""; }; 97334F9A318D4EA1E45EC3E7B4D6EEEC /* PNInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNInstallation.m; sourceTree = ""; }; - 9760CF6845E5C00E61FFC02E89A275C8 /* NSData+AES.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AES.m"; path = "NSDataAES/Classes/NSData+AES.m"; sourceTree = ""; }; - 97652E23694192076D88B7C98EA13878 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; - 978F9D4BBECDC7A7F151BB55D0C12299 /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; - 98D13612C91E439241652D6BD5ECFB8B /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = ""; }; - 9969A5355EA68D96AEC6594E6A5E9069 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; - 9B179CB1A2CAA77714778F5DB7EB59D2 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; - 9B9D1C914C0CA7355777345FD1C453E8 /* NSData+AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AES.h"; path = "NSDataAES/Classes/NSData+AES.h"; sourceTree = ""; }; - 9BEAA00A8F442A2E842E01807C16C275 /* CodFis-Helper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CodFis-Helper-prefix.pch"; sourceTree = ""; }; - 9BF13BC3B2D76E147316C276AC692F1E /* StrongestPasswordValidator-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StrongestPasswordValidator-prefix.pch"; sourceTree = ""; }; + 9762245771C377B128624C23655321FF /* libPNObject.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPNObject.a; path = libPNObject.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 980BE1AD67D110D1788859B542CCB1F5 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; + 98C87D8204E8239B6D9C648F1EC4C4DB /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; + 995E14547E0A7F21450289297BF529EE /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; + 996396F3434F55E3BC30E200D2133FE5 /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; + 9BE971BA40C25C7BF9DD99A9D19C81DD /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; 9C30F58DA20C9E3C4C6D00D79F4434E2 /* PNObject-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PNObject-dummy.m"; sourceTree = ""; }; - 9C99F264193E3ADE6EAA13156157DFD8 /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; - 9CF9487BD2BD29A89969AFDC1E824BF9 /* EXPMatchers+haveCountOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+haveCountOf.m"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.m"; sourceTree = ""; }; - 9D2D8AC6F61FDC1242D2122868466363 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; - 9D5E98EF533DB073454B50533F063ACE /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; - 9D6CB9BAB3FC03DEEC9B261FC2A7FDBA /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; - 9DCA1FB1D85806F924962DB918031C6C /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; }; - 9E3E19E0D76816F64A6F358938AA2BC7 /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; - 9FC6CB7CF81A4D88DDFFCA3A269B7F29 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerOpenGraphMusicTemplateContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerOpenGraphMusicTemplateContent.h; sourceTree = ""; }; - A0392097A153840E34B245E5BC8B3EF4 /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = ""; }; + 9D3E9404B03949F39EB6C1AE034D3527 /* EXPMatchers+raiseWithReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raiseWithReason.h"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.h"; sourceTree = ""; }; + 9DA4E17A97F60A55F0664CC4CAFB5273 /* VatNumber+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "VatNumber+Helper.m"; path = "CodFis-Helper/VatNumber+Helper.m"; sourceTree = ""; }; + 9DA70D814036C015181CDFD29F020C55 /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; + 9DC115ED6A14503C4E09249342311C70 /* NSDataAES-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDataAES-prefix.pch"; sourceTree = ""; }; + 9DEFE2D0367E8F4D9B99253AA6D3D3C7 /* DDDKeychainWrapper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DDDKeychainWrapper.xcconfig; sourceTree = ""; }; + 9FFC61D9E9C72B0BE6BA9353CAA3F476 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; + A05517C4229BC102C79EA6C3FE2A7973 /* SPTCompiledExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCompiledExample.m; path = Specta/Specta/SPTCompiledExample.m; sourceTree = ""; }; A08AE125079B781AFAD3479BC84A9403 /* PNObject+PNObjectDELETEConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectDELETEConnection.h"; path = "PNObject/Classes/PNObject+PNObjectDELETEConnection.h"; sourceTree = ""; }; - A0E40EF9DC8E81ADFAF25AC32D7EABB2 /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; - A0E9946A5BA7F2E0540229B719AD8A8E /* FBSDKShareCameraEffectContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareCameraEffectContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareCameraEffectContent.h; sourceTree = ""; }; - A166368F7803FF5D28A6F926C6EA624E /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - A189CCFF17CA7A7B9FFE7F300CF2F715 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - A1A885E6A01CE0321DD46209AEAC8A56 /* SPTSharedExampleGroups.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSharedExampleGroups.h; path = Specta/Specta/SPTSharedExampleGroups.h; sourceTree = ""; }; - A20E26A23FB1A3AD970DC56195FABB73 /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; - A2ABDF177C47796393C929E00486BBD2 /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; - A2B994B4672A9C954B3718919B483170 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - A2C3EC08D3C5AB7F67EF98D3DF744910 /* NSDataAESCipher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NSDataAESCipher.m; path = NSDataAES/Classes/NSDataAESCipher.m; sourceTree = ""; }; + A08F91664E13013EB05A4A119C356282 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + A0A30EA7D3C07597C704B556AA795310 /* FBSDKGateKeeperManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGateKeeperManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKGateKeeperManager.h; sourceTree = ""; }; + A0CC2E228E2C2712B4CAFE870E91A503 /* EXPMatchers+haveCountOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+haveCountOf.h"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.h"; sourceTree = ""; }; + A122AD9A7691D3ED99823E518BE681D6 /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = ""; }; + A13EAD73BFB5BFDE48A7B27C8F3EC6A5 /* UIDevice-Hardware.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIDevice-Hardware.h"; path = "Pod/Classes/UIDevice-Hardware.h"; sourceTree = ""; }; + A15BD8FDD2243D9BF14DDE5C44E49496 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; + A19BE0F838DD001133112E6196D6566C /* 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; }; + A1B5C59D4E929E27E274D161365F623D /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; + A1C6DFE8E7E3B5575F6EDE37A28BE8AC /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; }; + A2B7E375386A4AE6FA17EFC9427E1F7A /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; A2DF4A77D1D9958186177B1D8CEB3C31 /* AFJSONResponseSerializerWithData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AFJSONResponseSerializerWithData.h; sourceTree = ""; }; - A2F2629D5E6336FD8A4E7A0CD2C69259 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; - A373CB0170E3799074B8D43A97F6C3DE /* EXPDoubleTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDoubleTuple.h; path = Expecta/EXPDoubleTuple.h; sourceTree = ""; }; - A387993C7396BA018A78B182545014E7 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; - A3F0896E256DA1F53B7235EB9C4C1205 /* RZDataBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDataBinding.h; path = RZDataBinding/RZDataBinding.h; sourceTree = ""; }; - A4A34BDF7F1C2EF28E102545830C36B4 /* PEARFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PEARFileManager.h; path = "PEAR-FileManager-iOS/PEARFileManager.h"; sourceTree = ""; }; - A4A3712E9464769F7B299FFD4429F1B8 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; - A4AA503239425F3D877CFF2FE3814BBF /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; + A311E4E7DAE3E607DD369E764B42AD25 /* EXPMatchers+haveCountOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+haveCountOf.m"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.m"; sourceTree = ""; }; + A32830FEA8080DB1E9454687EEFE4739 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; + A39897F17E8BC2DE3AD4A201E27B9062 /* FBSDKAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkReturnToRefererController.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.m; sourceTree = ""; }; + A3B7E755B0BC9F40D51031611DCE0B35 /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; + A3FC262E39538F9FA107E93E8BFF7330 /* EXPMatcherHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcherHelpers.h; path = Expecta/Matchers/EXPMatcherHelpers.h; sourceTree = ""; }; + A44629F01442571502F7E767A7AB1331 /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKCoreKit.a; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + A4816B197A4DA843B5BAE6D7B991B453 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; A4B0787C01AC5B6B4208D5A4AE5A99AF /* Pods-PNObject_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNObject_Example-frameworks.sh"; sourceTree = ""; }; - A521C2D47CBEF1F451C6C19EF4BDF952 /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKShareKit.a; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A56F16109927B5D358D193F6A4BB3426 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; - A5738F31E7FA35B142C111B2013AACF1 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - A5A21E87FC761D2AB2656E8E2DBC885F /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; - A5BFAF03F4C3972E82C33C9CC26CDEBD /* FBSDKAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLink.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.m; sourceTree = ""; }; - A5F7CA78CB70B76E563566A7973AAC60 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; - A664539EAC41F63765859137D417FA54 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; - A71F32979088B96559A98FB6021081D1 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; - A76088022DFD59817505A370A8613F5D /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; - A78D0197FB7F04FEFE361A9DF89ECC1A /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = ""; }; - A7A9C72854AB6B24B7EDC326DA284454 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; - A8BB7CB0268D269DBE4F5B0469EBA1EA /* VatNumber+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "VatNumber+Helper.h"; path = "CodFis-Helper/VatNumber+Helper.h"; sourceTree = ""; }; + A4D936FF31963976CAC4B6C87F2C7B6A /* NSData+SHA.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+SHA.m"; path = "NSDataAES/Classes/NSData+SHA.m"; sourceTree = ""; }; + A57AE603FE1573C4316738EA3B67EA47 /* EXPBlockDefinedMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPBlockDefinedMatcher.m; path = Expecta/EXPBlockDefinedMatcher.m; sourceTree = ""; }; + A6A035E62F3EA8A3A9D03CB85F803E00 /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; + A6E8130DA123697A53FA2CB8521B2867 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; + A7337468F16E656419B1EB01E404F626 /* EXPMatchers+beIdenticalTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beIdenticalTo.m"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.m"; sourceTree = ""; }; A8D49478D57BB6B6FB40C1ADA4AFE932 /* PNObject+PNObjectConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectConnection.h"; path = "PNObject/Classes/PNObject+PNObjectConnection.h"; sourceTree = ""; }; - A8F263620BD0322B0E0D02C9CBB7E057 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libBolts.a; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A9160080FFF62168E4051663683EC394 /* Expecta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Expecta-prefix.pch"; sourceTree = ""; }; - A97FC406D15CA4B86550A496F6988BF2 /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; - A99EA254D66D2678098821F32E154DEF /* DJLocalization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalization.h; path = DJLocalization/DJLocalization.h; sourceTree = ""; }; - AA77261700278C71645546302461BF34 /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; - AA7D9A7CB43B42B8194FDB3FC3BFA0F7 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; AAC8666F362600E8954A21949E4EE65D /* Pods-PNObject_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Example.debug.xcconfig"; sourceTree = ""; }; - AAD0B5A748C81355837677EBC835CD84 /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; - AB9AFF952B2628EEF3D2785E78D3666C /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; - AC0454B2B1FCCBFAFF0A59DD5E5C4F52 /* 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 = ""; }; - AC0C36F361714BF3701DBE769DCC4D51 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; - AC1561C48A0E5AA9B22C0A48189E239A /* DJLocalizationSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalizationSystem.h; path = DJLocalization/DJLocalizationSystem.h; sourceTree = ""; }; - ACB25F02D87081973482D519F2156D5C /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; - AD279EE06DA2DC38AEC49D7F19A0A2BC /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - ADDE93AA0657112092BB44CD65D006EF /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; - AE4EEE301DC50F594D9F70CCA22FD21B /* FBSDKDeviceLoginManagerResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceLoginManagerResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManagerResult.h; sourceTree = ""; }; - AE91203791D4B728219D544E4464FE87 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; - AEE4441C0BEC052CFBAE042BF924FACE /* NSLayoutConstraint+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+PureLayout.m"; path = "PureLayout/PureLayout/NSLayoutConstraint+PureLayout.m"; sourceTree = ""; }; - AFFF12E2E0C503E8EF4EBB4AF4EBA402 /* PEAR-FileManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PEAR-FileManager-iOS-dummy.m"; sourceTree = ""; }; - B0430D0D9ECF06A2CE776A09363ADA27 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; - B1042C4A000AF83F8B9EEEE20CD52608 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; - B108E25F23F3FF0B5A268E471281C15A /* NSString+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Helper.m"; path = "NSString-Helper/NSString+Helper.m"; sourceTree = ""; }; - B12311AD0419602DF0FDD90C95BAE7F3 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; - B13B325A3DE8D33ECA3430517021C0F8 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; - B147DE1A7260EFF4D15C8B36FF290A4E /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; - B184E5094AB0B36173233CACA23FAD11 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; - B19299E53733482BCF184D69D0D9D4F4 /* FBSDKImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKImageDownloader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKImageDownloader.m; sourceTree = ""; }; - B22E0A3A9166CC492A6B1197C5CEBFF8 /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; - B2ADEF6DE2A753024D7EE6BB62C12A0C /* EXPMatchers+beCloseTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beCloseTo.h"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.h"; sourceTree = ""; }; + ABF5F1C383E4C559F000758027223782 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + AC9B65AA3E6DE33D83D54630E769C436 /* StrongestPasswordValidator.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = StrongestPasswordValidator.xcconfig; sourceTree = ""; }; + ACA36DB0C619A910989BF280D0DF59AD /* EXPMatchers+beInTheRangeOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInTheRangeOf.h"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.h"; sourceTree = ""; }; + AD0C046DCDA81E4A1AF7E93D308FF2FD /* FBSDKAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkNavigation.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h; sourceTree = ""; }; + ADA3B66518956C1B98FC6A0458074251 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; + AF0641978DE2E2E138B79745F3250987 /* EXPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDefines.h; path = Expecta/EXPDefines.h; sourceTree = ""; }; + B026AC10A4E42DF368F9398E82DDCBDD /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + B0FC7D94698334D0BBC3EC267ACF3015 /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; + B10F4EFCD20F9BF3AD7AD2CA65A38D24 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; + B2817CB6A61A68540B51B6D215B82C75 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; B2C893DAD391E87E8A4A1A581DADDB1E /* PNObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectUtilities.m; path = PNObject/Classes/PNObjectUtilities.m; sourceTree = ""; }; - B2FEF6ABC1EA5C7650FB77F74C69D1D2 /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; - B31A3DA2188BE0FC38C6889CC1B9DCDA /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; - B33648BCE03F8F323A600AFB2C4184B1 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = ""; }; - B367F401FD4702B3206026DF4F75F33D /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; - B3B28FA59F82B358B1D10BD0A881E27E /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; + B380C3EF31E744E68A14563A92BD6111 /* FBSDKCodelessMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessMacros.h; sourceTree = ""; }; + B386F32BA189CDE63C05CEDFCBEEDCAC /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; + B48536D934E898ABDE7CEE57D95E5991 /* RZDataBinding.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RZDataBinding.xcconfig; sourceTree = ""; }; + B4A98C0B59FEC0349F4C4B75BD6EDBB7 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; + B4D47F6BB08E1E27D1330FF081E7CAE0 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; B52A626CE55E09268E47AAA82D1F702A /* PNObjcPassword.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNObjcPassword.m; sourceTree = ""; }; - B57448B7171E54F316A32FF4FC68CD47 /* NSString-Helper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "NSString-Helper.xcconfig"; sourceTree = ""; }; - B63D6D1A539902429FE51B2BF2A53071 /* EXPMatchers+beLessThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m"; sourceTree = ""; }; - B6459BA3D7319F3DBD101EA52CDAEC4D /* SPTTestSuite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTTestSuite.m; path = Specta/Specta/SPTTestSuite.m; sourceTree = ""; }; - B6C6178EFF740B1770E47181E2D755AD /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = ""; }; - B729151CBE9D4D3FCA84A885A7FA8AF1 /* XCTestCase+Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTestCase+Specta.h"; path = "Specta/Specta/XCTestCase+Specta.h"; sourceTree = ""; }; - B73DD86758DE5ACBED70C091FC8F5087 /* NSDate_Utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDate_Utils-prefix.pch"; sourceTree = ""; }; - B7877ED51692A3542CF09D985F7F4943 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; - B926D05DE0F6797BC2493E0BBC663EE5 /* SPTExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExample.m; path = Specta/Specta/SPTExample.m; sourceTree = ""; }; - B946E6678D6085D230EDD6B927817340 /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - B9A245ECDD956B80B4E44A642331EF83 /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; - B9A66D1BA73BBAAF86C6CF4CD6BEE54D /* Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expecta.h; path = Expecta/Expecta.h; sourceTree = ""; }; - B9AEE51E846500100F68164B7E238349 /* BFGeneric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFGeneric.h; path = Bolts/Common/BFGeneric.h; sourceTree = ""; }; - BAB42CCC406C6A5E4743ED0336157DA1 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; - BBD3EC1F0D7D8327357AA769BBD293AC /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; - BC1E39658FAE36DE0487BC875B578D96 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; - BC8982068C4262C37B85828DADB96866 /* FBSDKURLSessionTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLSessionTask.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLSessionTask.m; sourceTree = ""; }; - BD0EDE71BBA1CCD2D49375A35F02988C /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; + B57BD272FDCBE8BC82C09FFC50A9C18A /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; + B60A2EC0A74153D3BF10596C0E97F49E /* EXPMatchers+equal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+equal.m"; path = "Expecta/Matchers/EXPMatchers+equal.m"; sourceTree = ""; }; + B6F2A4C4D0967284E0D0FAC0BF68CE4A /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; + B7ED03638FBAF3D71B5F318304C7768E /* FacebookSDKStrings.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; path = FacebookSDKStrings.bundle; sourceTree = ""; }; + B812F23AB8D4F223C79DF9E41C418DBB /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; + B8D0361D6C2648956D8B785258C23B09 /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; }; + B8D399040D4E42EB282B029396E10A4A /* NSMutableData+AES.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableData+AES.m"; path = "NSDataAES/Classes/NSMutableData+AES.m"; sourceTree = ""; }; + B8DE5017B46F7603F67BE5E2C6480425 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + B91B06065F5CB603A371C004A0FC3376 /* ALView+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ALView+PureLayout.m"; path = "PureLayout/PureLayout/ALView+PureLayout.m"; sourceTree = ""; }; + B9C4C857FE11E8538A359C64429837B9 /* StrongestPasswordValidator-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "StrongestPasswordValidator-dummy.m"; sourceTree = ""; }; + B9F7937AACA50141FC8E4E3252B6E1F2 /* FBSDKCodelessPathComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessPathComponent.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.h; sourceTree = ""; }; + BA030F0908B6174F2965B6975DD76A17 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; + BA239773AEE9DB5E3C63C024061F5CF5 /* EXPMatchers+beTruthy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beTruthy.h"; path = "Expecta/Matchers/EXPMatchers+beTruthy.h"; sourceTree = ""; }; + BAEC1D04287E7AB01D4D8CF62DED3495 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; + BBE54080F26800F1C54978D03CB38395 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; + BC8D591D56FFE0908DA9373ADF38FD69 /* EXPMatchers+beginWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beginWith.h"; path = "Expecta/Matchers/EXPMatchers+beginWith.h"; sourceTree = ""; }; + BCA5CAE31536E1E27629A11BCB4CF168 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; + BCF9BFE12EC560CB974852D1647A5FCE /* SPTSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSpec.h; path = Specta/Specta/SPTSpec.h; sourceTree = ""; }; + BD0AD1AD177A3C0238CF0A0C8449A22B /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; BD34E4911A8C97EA3C3543FD49C2D096 /* PNObject+PNObjectGETConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectGETConnection.m"; path = "PNObject/Classes/PNObject+PNObjectGETConnection.m"; sourceTree = ""; }; - BD93892679A0E8925992B5C843C04755 /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; }; - BDF47E5D4FDE9BED9604D0D40DBB3A5C /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; - BE26F71E3C57510BE75F06CA83292052 /* FBSDKAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLink.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLink.h; sourceTree = ""; }; - BE5D48F63E4D98DF26F93806FDA6E607 /* StrongestPasswordValidator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = StrongestPasswordValidator.m; path = Pod/Classes/StrongestPasswordValidator.m; sourceTree = ""; }; - BE635994183DF4CE80601C6FB12722E3 /* NSArray+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+PureLayout.m"; path = "PureLayout/PureLayout/NSArray+PureLayout.m"; sourceTree = ""; }; - BED4CE54AC8106A6864F85607C1A6976 /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; }; - BEEF5F450117F10026EC99F89C596C84 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; - BF510F166B6FC7160538AC711EAC68A1 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; - BFD2E4193FCBADCB13E557AEDEE981BA /* FBSDKUserDataStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUserDataStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.m; sourceTree = ""; }; - C05C6907571617EC014518E10073274C /* NSMutableData+AES.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableData+AES.m"; path = "NSDataAES/Classes/NSMutableData+AES.m"; sourceTree = ""; }; - C06378B48C7515ABB5B949DE8B63375D /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; - C08EBEEB85A2C61F7C4454A227DD0BF3 /* EXPMatchers+postNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+postNotification.m"; path = "Expecta/Matchers/EXPMatchers+postNotification.m"; sourceTree = ""; }; - C18D28F8319BFCC61B6C109FFEF432CC /* NSObject+RZDataBinding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+RZDataBinding.m"; path = "RZDataBinding/NSObject+RZDataBinding.m"; sourceTree = ""; }; - C1C2CA015EB5FB6D0D7D1E529440594C /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; - C31FA8102DF83AC01E794EEEE51AB787 /* FBSDKDeviceLoginCodeInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginCodeInfo.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginCodeInfo.m; sourceTree = ""; }; - C36D0990929ACC7C7E57A00EA14900CB /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; - C3E3FF9898F600C508E5121B11879A62 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; - C4133B738A4980DB8CFA963ED740C59C /* EXPMatchers+beTruthy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beTruthy.m"; path = "Expecta/Matchers/EXPMatchers+beTruthy.m"; sourceTree = ""; }; - C42A7B280E657A70E6DF71DAB0887DB3 /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; - C4A1E4B2A8DB166BCFF636128277BAA5 /* libExpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libExpecta.a; path = libExpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; - C4AE2EB524458DF5D3195C2082156FDE /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - C510C630A4C17612F4CEF4569C285F7C /* RZDBMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBMacros.h; path = RZDataBinding/RZDBMacros.h; sourceTree = ""; }; - C51B5C8D42BB2FCA4FDFB6DB12343DF1 /* FBSDKShareMessengerGenericTemplateElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerGenericTemplateElement.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.m; sourceTree = ""; }; - C53704366AC8BB3E2D54F6F50F20D59D /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + BD44FBD619782C7C9C2602E36A854326 /* EXPDoubleTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPDoubleTuple.m; path = Expecta/EXPDoubleTuple.m; sourceTree = ""; }; + BDC9472C9B9C63426705F0C9BC0706BC /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; + BDCFE78A9B7338D71EF10611286942EF /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; + BEFF36676C4B701528EA8455A54038C8 /* EXPMatchers+postNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+postNotification.h"; path = "Expecta/Matchers/EXPMatchers+postNotification.h"; sourceTree = ""; }; + BF6E36849D45C54AF16BC7613DA07389 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; + BF87EA89298D0CC3B0A9CF1DAAC1FA9C /* FBSDKDeviceRequestsHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDeviceRequestsHelper.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDeviceRequestsHelper.h; sourceTree = ""; }; + BFB465FEE0F879B0C7518369A2014718 /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; + BFE984503E6165E0649B53AE9BF49BF2 /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; + C0C580581B1648EB29BAF15596AC30A7 /* EXPMatchers+beInstanceOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInstanceOf.h"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.h"; sourceTree = ""; }; + C0CB6ED130C6BDC9CEE414E576D37AFA /* DDDKeychainWrapper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DDDKeychainWrapper-prefix.pch"; sourceTree = ""; }; + C2B72F1647DE757CB0BF9D0C01397FE6 /* FBSDKEventBindingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKEventBindingManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.m; sourceTree = ""; }; + C2CED6A861BAF4CC033E7EF4C7E62E36 /* PEARFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PEARFileManager.m; path = "PEAR-FileManager-iOS/PEARFileManager.m"; sourceTree = ""; }; + C2DC5E9F159D344A67D6569916FB180D /* NSString+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Helper.h"; path = "NSString-Helper/NSString+Helper.h"; sourceTree = ""; }; + C4A9C9E6E085645138CF9B074E2B789C /* NSObject+RZDataBinding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+RZDataBinding.m"; path = "RZDataBinding/NSObject+RZDataBinding.m"; sourceTree = ""; }; + C4D35A4709B9105B818F9FF1BE45B0DD /* NSData+AESValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AESValue.m"; path = "NSDataAES/Classes/NSData+AESValue.m"; sourceTree = ""; }; + C5304D5A185D69A482777C150506A2BA /* 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 = ""; }; + C54A3D5DFA79A22C7935EE0CD80898B2 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; + C58EE65AE76FB96E9215E13D996D4D7C /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; + C5A9F9D51250FA03D62340CB0C404777 /* NSData+AESKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+AESKey.m"; path = "NSDataAES/Classes/NSData+AESKey.m"; sourceTree = ""; }; C5E5518C24ABEF56D055C449B0853253 /* PNLocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PNLocation.m; sourceTree = ""; }; - C5F23AC255A5CC190D702640CF82EEFC /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; - C643735F7E92D45BEA621C1ABBCBF3DA /* ResponseConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ResponseConstants.h; path = "CodFis-Helper/ResponseConstants.h"; sourceTree = ""; }; - C685DA7E3C04F35929DAAF2AA6845DBC /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; C6A7875971DFD8B00865186211FBD472 /* Pods-PNObject_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PNObject_Tests-dummy.m"; sourceTree = ""; }; - C72E97BE66A5B29F0A07C26872D0713A /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; }; + C6C8EC1D0378E44D64DD8352BAE88503 /* EXPMatchers+respondTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+respondTo.m"; path = "Expecta/Matchers/EXPMatchers+respondTo.m"; sourceTree = ""; }; C73C6EA2E857706C62F6B73C63D5B8E1 /* Pods-PNObject_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Example.release.xcconfig"; sourceTree = ""; }; - C74DE409E2F8EB010B597C7B60FC2295 /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; - C7B095BFA92E7D5342D36E7B4BEFA6CC /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; + C75DB7C4004F6284A7A6CC0375A9A252 /* libStrongestPasswordValidator.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libStrongestPasswordValidator.a; path = libStrongestPasswordValidator.a; sourceTree = BUILT_PRODUCTS_DIR; }; + C762D8D04881F3CB10A2A0EC699EEA50 /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; + C785165311ED4D6C4EC7BFA0E953B2C2 /* NSData+SHA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+SHA.h"; path = "NSDataAES/Classes/NSData+SHA.h"; sourceTree = ""; }; + C811548BBAD66F3A22BAB320366CB9E2 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; C838E3FDEBB793985B8728BC91CF91CF /* Pods-PNObject_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNObject_Tests-frameworks.sh"; sourceTree = ""; }; - C84799466FAEA7DDEA9DD46620CA93E6 /* RZDataBinding.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RZDataBinding.xcconfig; sourceTree = ""; }; - C9E20AA73ED43F96743A6B0090627D94 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; - CA6815C15E4DF3E1D99EFC04DE634168 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; - CAE9492312C126DB3DCD486FF4353C55 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; - CAE94A7CEF07674CA5A9504B98BB4B9D /* FBSDKShareMessengerGenericTemplateElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerGenericTemplateElement.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerGenericTemplateElement.h; sourceTree = ""; }; - CAEBDEB3253090886D136A519B999CD9 /* NSDataAESCipher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NSDataAESCipher.h; path = NSDataAES/Classes/NSDataAESCipher.h; sourceTree = ""; }; - CB33BC990E6388D94448D83125E942C3 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal_NoARC/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; - CB62F7CE20B50C030CBE53D47D42937F /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; - CC6CBD664A2CBD2083B8BA395BFEDF5E /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - CC7C2F2E2DE9B376DAAC74105A9F6666 /* FBSDKCodelessParameterComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessParameterComponent.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.m; sourceTree = ""; }; - CCC8C2A264D659D0F1394CD30CB0CFAF /* libDDDKeychainWrapper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDDDKeychainWrapper.a; path = libDDDKeychainWrapper.a; sourceTree = BUILT_PRODUCTS_DIR; }; - CD0505928D66817CBB6EF5B7DE3C9CFB /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; - CD9D6CD3E31885EA3B12EB1BC27DEAD5 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; - CDF86883A595780271A818F99992EE1B /* FBSDKAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolving.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolving.h; sourceTree = ""; }; - CE2C67768601CAAF60233B174DB92151 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; - CEC4A68EEF98409FF99D2648CB675D88 /* Specta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Specta-prefix.pch"; sourceTree = ""; }; - CEE7900090D53530DA111253F2CB6043 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; + C87EF2B762F2DB877803CF34F613FC3C /* FBSDKAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.h; sourceTree = ""; }; + C996090B13A384767CD1D174BC7C93FE /* RZDataBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDataBinding.h; path = RZDataBinding/RZDataBinding.h; sourceTree = ""; }; + CA4B3B1E2DC384D754F5F1E6F415285A /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/Internal/BFMeasurementEvent_Internal.h; sourceTree = ""; }; + CACADFC6276DE36113F53E85090A48CF /* PureLayoutDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PureLayoutDefines.h; path = PureLayout/PureLayout/PureLayoutDefines.h; sourceTree = ""; }; + CAF2CBBBAF5ADC862D5BACCC4996077D /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; + CB04AB2F151597DDE35ABB4444ED59DB /* SPTExampleGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExampleGroup.m; path = Specta/Specta/SPTExampleGroup.m; sourceTree = ""; }; + CB2DA88A317AD09A2551C77FBB019836 /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; + CB5A23D7CAB1F7D76E196945926CE000 /* RZDBCoalesce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBCoalesce.h; path = RZDataBinding/RZDBCoalesce.h; sourceTree = ""; }; + CBD19A36E25066B29EA821819854C135 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal_NoARC/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; + CBF07DD243A64FC003AE5D8DC6AF80E0 /* FBSDKMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMeasurementEvent_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMeasurementEvent_Internal.h; sourceTree = ""; }; + CD2E613C5270A1BA9626010AE5BC9820 /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; + CDFA2D80B9175C43B70783FFA8D28F5D /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; + CE1E3FED54C9FDB7750B2C61B469E9D3 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + CE4B797D6FFA8E39076D94474C4CFF86 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; CF0CCCDF4C0E2DCF3CB409210373C0D6 /* Pods-PNObject_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNObject_Tests.release.xcconfig"; sourceTree = ""; }; - CF14E773AD209A4DBC35D768C2F689FF /* FBSDKAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkNavigation.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkNavigation.h; sourceTree = ""; }; - CF88175A2DD02EC3A3D4FA839735203D /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; + CF48680A6189A72332AD76B9B13FF39C /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; + CFA9F1F614B10DB5193835F6CA1CE645 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; + CFE82247C6FB8543708571E0D8D64B1D /* libExpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libExpecta.a; path = libExpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; + CFE937B4155B29916673639D59B46FE2 /* EXPMatchers+raiseWithReason.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raiseWithReason.m"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.m"; sourceTree = ""; }; + CFED1553744DB17CCC9EAF9970D7ADB9 /* ExpectaObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaObject.m; path = Expecta/ExpectaObject.m; sourceTree = ""; }; + D00073415D26535814DA1E68C7D75C68 /* SPTCompiledExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCompiledExample.h; path = Specta/Specta/SPTCompiledExample.h; sourceTree = ""; }; + D01C290E1CB24CC044945B126541FAF7 /* BFGeneric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFGeneric.h; path = Bolts/Common/BFGeneric.h; sourceTree = ""; }; D0360D5C3D67C35BB3071F13B4EAF7B3 /* Pods-PNObject_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PNObject_Tests-acknowledgements.plist"; sourceTree = ""; }; - D0439D5A4E46C28BEDE7B249A11B358A /* FBSDKShareMessengerMediaTemplateContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerMediaTemplateContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.h; sourceTree = ""; }; - D0D00D31B319D6657AF1BFB3622F4819 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; - D0D5B66973CF80A3988FB78B6DCA4342 /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBSDKCoreKit.a; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - D0E9C7B7B50E52257245C7FCE81EAC42 /* EXPMatchers+conformTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+conformTo.m"; path = "Expecta/Matchers/EXPMatchers+conformTo.m"; sourceTree = ""; }; - D130FE1B704C334E307D8657EAF37098 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; - D1D89136781DE0949112D15F9A3DD031 /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; - D217711660E1C424F327E5DEFF4DEB5F /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; - D29168074700CD130E3196CF5B50654D /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; - D29203C6537617FB954FDD799C384F58 /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; - D3091B1C12A13E5647BD49E81D3CF04B /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; + D07F27FC215C101F755B0F2D7CDBACE3 /* UIDevice-Utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIDevice-Utils-prefix.pch"; sourceTree = ""; }; + D220B834A39FAB9DD3F2CEFB81B1F433 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; + D2B5E233273B5134306EBC65D2CB19DF /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = ""; }; + D2DE562258E02C8B31B463F219B25B03 /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; + D2E3C6C127D655EB3C996164F51FD610 /* UIDevice-Utils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "UIDevice-Utils.xcconfig"; sourceTree = ""; }; + D338EC40F6F6FE448B94EB39922C41BA /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; + D343872EEBAF43CE0DC2F119F06F9039 /* RZDataBinding-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RZDataBinding-dummy.m"; sourceTree = ""; }; + D379952EE9B1CC53D49E8D28922CA33A /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; D42FD38E24E40D4390E6E20CB316304F /* PNObjcPassword.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PNObjcPassword.h; sourceTree = ""; }; - D441D2DF6D2DC0EFA6139912F83A816E /* NSData+AESValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AESValue.h"; path = "NSDataAES/Classes/NSData+AESValue.h"; sourceTree = ""; }; - D46A64ECBFB90E6F8FA173DA56993314 /* SPTExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExample.h; path = Specta/Specta/SPTExample.h; sourceTree = ""; }; + D45E4CB71CF6834638A7E5FB3A6AA658 /* 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 = ""; }; + D4BBE93131759240C836DD271A320B12 /* 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; }; + D4CB6BCFE93681C2148DFC2B8F3E17F0 /* RZDataBinding-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RZDataBinding-prefix.pch"; sourceTree = ""; }; + D4DFD085EBD6EFC60EE0F97541D6FFE8 /* EXPMatchers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatchers.h; path = Expecta/Matchers/EXPMatchers.h; sourceTree = ""; }; D527AA5FFEAFD1EA9BDEEB3573A1DC51 /* PNObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectUtilities.h; path = PNObject/Classes/PNObjectUtilities.h; sourceTree = ""; }; - D56E1741F8C7E0E3D263D5B58F460EC3 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - D638C12B68218651E52AA8E3C94B2413 /* 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 = ""; }; - D6687C4432E52053F517767D035DB259 /* EXPMatchers+beLessThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThan.h"; path = "Expecta/Matchers/EXPMatchers+beLessThan.h"; sourceTree = ""; }; - D67B3C8C11BB65F8C4C53C7A4AE87EAC /* SpectaUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaUtility.m; path = Specta/Specta/SpectaUtility.m; sourceTree = ""; }; + D593CAEBAAC12FC5165D3F98366FDAD4 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; + D5AD69651EADB994203ABEA64FF4C118 /* FBSDKAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkTarget.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.m; sourceTree = ""; }; D6A7B40713301CF757DF94819D33A124 /* Pods-PNObject_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PNObject_Example-acknowledgements.plist"; sourceTree = ""; }; - D6C8F624B454CFAC87AE5FB889B4728C /* FBSDKShareMediaContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMediaContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMediaContent.h; sourceTree = ""; }; - D6ED2B9CE5879E41B3C1304415AF0AE4 /* NSDate_Utils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSDate_Utils.xcconfig; sourceTree = ""; }; - D6F306826C82D3D7DCBEF677A85120BB /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; - D73898976CB279C5DCCEBAE629A98B92 /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; - D74836342AF2D5E5345284CF3393FDCE /* UIDevice-Utils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "UIDevice-Utils.xcconfig"; sourceTree = ""; }; - D7F72703BE3D6FC73268CEC1B54CE873 /* FBSDKAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLink_Internal.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAppLink_Internal.h; sourceTree = ""; }; - D91E6EFB912D50035F95B3A10A3CA1FE /* Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Specta.h; path = Specta/Specta/Specta.h; sourceTree = ""; }; - D9926F43895CDB2B741DEFB8D9D8AE66 /* DJLocalization.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DJLocalization.xcconfig; sourceTree = ""; }; - D9B0A8327D068FA57F56B1F1D70964EE /* nv-ios-http-status-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nv-ios-http-status-prefix.pch"; sourceTree = ""; }; - DA654D0F6B5BD3708C8A32ABCAB7F357 /* FBSDKAccessTokenExpirer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenExpirer.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m; sourceTree = ""; }; - DAB35FF89153EE0C74104A17970026A4 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; - DC189E040D574F2A4945517C0A1F0802 /* FBSDKCameraEffectArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCameraEffectArguments.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.m; sourceTree = ""; }; + D732C9CD35343E4257B34510E1C44BC5 /* EXPMatchers+beginWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beginWith.m"; path = "Expecta/Matchers/EXPMatchers+beginWith.m"; sourceTree = ""; }; + D7651BF565230AC7C42B4C8AACCB71E2 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; + D7CC5370B98917F533F5C705FB0A5995 /* NSString-Helper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSString-Helper-prefix.pch"; sourceTree = ""; }; + D947735D3CE13D9E22597E9BF2FBFD13 /* RZDBCoalesce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RZDBCoalesce.m; path = RZDataBinding/RZDBCoalesce.m; sourceTree = ""; }; + D97F92F3E2E397D4BE297A9C791C5057 /* EXPMatchers+beCloseTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beCloseTo.m"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.m"; sourceTree = ""; }; + DAE9711C8DC7FC7028985982F9773366 /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; + DB024A1E154953B89051547C10E4301A /* FBSDKAccessTokenExpirer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenExpirer.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.m; sourceTree = ""; }; + DB07A2A496833FE81867521D39D2FF91 /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; + DB7FD328AF97B85C0DFEA22287D84F64 /* DJLocalizationSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DJLocalizationSystem.h; path = DJLocalization/DJLocalizationSystem.h; sourceTree = ""; }; + DBC2ABA53C27A4FA2A06BD4D313524B5 /* FBSDKHybridAppEventsScriptMessageHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKHybridAppEventsScriptMessageHandler.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.h; sourceTree = ""; }; + DBF8CA1EBE5D22972FE5D11E5D3FAE50 /* nv-ios-http-status-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nv-ios-http-status-prefix.pch"; sourceTree = ""; }; + DC22675D40DB2EA22CD300BAC3988061 /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; DD35899D8CC1BFD3DA8589534E8377F2 /* PNObject+PNObjectPOSTConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PNObject+PNObjectPOSTConnection.h"; path = "PNObject/Classes/PNObject+PNObjectPOSTConnection.h"; sourceTree = ""; }; - DD515BEE94EE644F9B8BBE4A92E294CA /* SPTSharedExampleGroups.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSharedExampleGroups.m; path = Specta/Specta/SPTSharedExampleGroups.m; sourceTree = ""; }; - DD53C695F3ECDB80A46506C6E2F9A25A /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; - DD66E6FED006CAC3550B19E204BEC63C /* FBSDKCameraEffectTextures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCameraEffectTextures.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.h; sourceTree = ""; }; - DE0802BEA45CBF21D91724CA980C8B91 /* DDDKeychainWrapper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DDDKeychainWrapper-dummy.m"; sourceTree = ""; }; - DE60FB232ECB173CC83D28B8E9FD5C37 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; - DE67682584A286D51ED20B31D084E028 /* EXPMatchers+beginWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beginWith.h"; path = "Expecta/Matchers/EXPMatchers+beginWith.h"; sourceTree = ""; }; - DEAEF601660FF4DF3234E9612BDE6814 /* FBSDKViewHierarchy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewHierarchy.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKViewHierarchy.h; sourceTree = ""; }; - DEB52BB2809F059D93B9F3616B2C905D /* NSValue+Expecta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Expecta.m"; path = "Expecta/NSValue+Expecta.m"; sourceTree = ""; }; - DEF1943D8DBFABAA3F0637F6D1638364 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - DF997915633455E830598962FABE969F /* EXPMatchers+beNil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beNil.m"; path = "Expecta/Matchers/EXPMatchers+beNil.m"; sourceTree = ""; }; - DFE97F191775602DFEAE6E206DA38BBB /* ExpectaObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaObject.h; path = Expecta/ExpectaObject.h; sourceTree = ""; }; + DD5CAD3D437EB8D22A3FFB4418C856D9 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; + DD98A59BB406DEA3321CB51AB21D8017 /* FBSDKSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSwizzler.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSwizzler.h; sourceTree = ""; }; + DE4DEBDAA197887EC06CB600F6048E0C /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; + DEA316C6C79E14D12E1E12D76ED79F1C /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; + DF0CD69D89A711481A13C38FA50BA927 /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; + DF3026E23C27D70F04297FC288C0FF3D /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; }; + DFD6B459CDADF5A779016A8B51D7B27A /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; E0313CAEAAB995D3E3B8BDC53F978BF1 /* PNObject+PNObjectConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectConnection.m"; path = "PNObject/Classes/PNObject+PNObjectConnection.m"; sourceTree = ""; }; - E0FF3EC47A42286B181021A479DD1803 /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; - E103652089DD85A4A5A16985A7C35A23 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; - E10EB47C52E20EA119D6B514049F55F8 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = ""; }; - E143D035B5419A69F443580FA66D752F /* libStrongestPasswordValidator.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libStrongestPasswordValidator.a; path = libStrongestPasswordValidator.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E1A28981401446572FE29DAC9570ECC5 /* ExpectaSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaSupport.m; path = Expecta/ExpectaSupport.m; sourceTree = ""; }; - E2164C3CCF342AB7241FC9A9B7E17F36 /* DJLocalizationSystem+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DJLocalizationSystem+Private.h"; path = "DJLocalization/DJLocalizationSystem+Private.h"; sourceTree = ""; }; - E223594B1999E026FF4F52CACA9DDA9F /* 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; }; - E22E9CCF0015069EC4DA801689A00653 /* FBSDKShareMessengerURLActionButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareMessengerURLActionButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerURLActionButton.h; sourceTree = ""; }; - E23ABD68532554C46F8B5E911765A163 /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; - E251366A8B36B8B9C9DC672E8D750278 /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; - E32798AA3060928B31D6D2414AE6CF7E /* FBSDKDeviceLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDeviceLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKDeviceLoginManager.m; sourceTree = ""; }; - E34818E402DEACB3E6B52D25C9EAC64D /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; - E357E32EA8D6A9B3888D3596C3AA3776 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; - E3891458C3A4B448665461397F352DA7 /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/Internal/BFMeasurementEvent_Internal.h; sourceTree = ""; }; - E3B47E60EDE1E9A02809DEF9923F4931 /* PureLayoutDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PureLayoutDefines.h; path = PureLayout/PureLayout/PureLayoutDefines.h; sourceTree = ""; }; - E3DB002F04E427756444ACE788547734 /* FBSDKAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkReturnToRefererView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererView.m; sourceTree = ""; }; - E4A6EFA4A917599F12C0B7DB90CE41C9 /* libSpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSpecta.a; path = libSpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E4E6332A344B4A0932629526E8E6C9CC /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; - E53045B6A07A7DC12896641929D0A42B /* PEAR-FileManager-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "PEAR-FileManager-iOS.xcconfig"; sourceTree = ""; }; - E5426E047B8483C151AF23A6C16A5096 /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; - E58111244B04B80DFF62AC8B4F6EB56B /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = ""; }; + E11CCF6BD0966E6C4B4E2603305F81AD /* PEAR-FileManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PEAR-FileManager-iOS-dummy.m"; sourceTree = ""; }; + E15D7924EBB89041DD689B419DB0DDDB /* EXPMatchers+contain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+contain.h"; path = "Expecta/Matchers/EXPMatchers+contain.h"; sourceTree = ""; }; + E1BC5DBB5D548FD1B646BDB961D94149 /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; + E241EB0EAB5D7131EB15B8B647EF8DAE /* SPTExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExample.m; path = Specta/Specta/SPTExample.m; sourceTree = ""; }; + E28070F476452DD82E5466EA55B21F27 /* NSMutableData+AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableData+AES.h"; path = "NSDataAES/Classes/NSMutableData+AES.h"; sourceTree = ""; }; + E31B8B89E1ADF6AF6FBEC5E06171EEE3 /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; + E409953C74E4DB7333D72C876F9BA009 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; + E445C84C631F2F60D38E4AB52E4FD184 /* libNSString-Helper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libNSString-Helper.a"; path = "libNSString-Helper.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E4587E09E096B4F966A188FF1E974E70 /* libPureLayout.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPureLayout.a; path = libPureLayout.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E4A63B8B67E63E3B938D6AE92FA3ABF3 /* EXPMatchers+beLessThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m"; sourceTree = ""; }; + E4DE7E50173DD75846A4AFF27735D3C0 /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = ""; }; + E530614B1ABA80A13A95356A991B8B5E /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; + E555F9526014825E9D9978649E8ABDCC /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/Internal/BFURL_Internal.h; sourceTree = ""; }; + E55F7EDA314738FA02044CEA17817FFF /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; + E5630EDFC38C502EA515AF1A19289B39 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; E58254A18A1B3A2F552E1886D9B7BAA2 /* PNObjectConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PNObjectConfig.m; path = PNObject/Classes/PNObjectConfig.m; sourceTree = ""; }; - E63D6E4DE52529EAD9459120A230E416 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; - E65882AA0565553B48541CD07055A7F5 /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; - E65A5B341221CBEEF0E88382CDB87241 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - E69FA403CBE830954F8F4CFF54FDD34D /* DJLocalization-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DJLocalization-prefix.pch"; sourceTree = ""; }; - E6E1817B1A9A7142269AD887653D5838 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; - E70EB6CB87C778ADC5A4325EEFF99B01 /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; - E712FB17B0B0BF56ED405AF90AB9E748 /* SpectaUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaUtility.h; path = Specta/Specta/SpectaUtility.h; sourceTree = ""; }; - E77872ABBDE104DEF1B32A3F930E6FCE /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = ""; }; - E7B7AB25D5DD7C7CB8A762BDAC5BA64F /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; - E7CB4A36C71DCA9004167558E6FFB3DE /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; - E8125DFB41A764986449B5FFD87065B1 /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; }; - E82E129D6FE596D85CDF967D18298D39 /* RZDBCoalesce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RZDBCoalesce.h; path = RZDataBinding/RZDBCoalesce.h; sourceTree = ""; }; - E863438AB7FA603ABBF228C1972C62E3 /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; - E8E98FAA016C6137D77701FC438F8705 /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; - E8FF921CC0A5BF5881CB0A658CAC6F7D /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; }; - E94C13ABE0366ABA3DE88BB136000108 /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; - E9C89C465DA4E5F451869D6A411A7A9A /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; - E9D17E600DCFB32A0E02AAEF855AAFEE /* UIDevice-Hardware.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIDevice-Hardware.m"; path = "Pod/Classes/UIDevice-Hardware.m"; sourceTree = ""; }; - E9D3C0E09FD3CC25C5D3A478EA531702 /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = ""; }; - EA10A2832C986A5E90B8DA412A574AD6 /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; - EA6EB31152E17AD260E9078B9EF5B971 /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; - EA897AA5523D9BBF72539EE0EEDE87A9 /* NSObject+RZDataBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+RZDataBinding.h"; path = "RZDataBinding/NSObject+RZDataBinding.h"; sourceTree = ""; }; - EB03E9ADFEAA91D13AD2155E49EFAC59 /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; + E5AF211F0B66AD29F5E545B08E5B8FF1 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + E5DE6868349BC3A8C692E9F7B55A7B10 /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; + E5E939C2339B718507CA2D5FCA69B5C0 /* libCodFis-Helper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCodFis-Helper.a"; path = "libCodFis-Helper.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E5EBF82A2572FE1FDD7925CE28E95237 /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; }; + E6DE64501D9A617BC0052FB3EC5F98AE /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; + E6EFA89BA8656B849DDFDB267185CFDD /* NSDate_Utils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSDate_Utils.xcconfig; sourceTree = ""; }; + E7AD97EFD9264A7C82BA037AF359BE3D /* SPTTestSuite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTTestSuite.m; path = Specta/Specta/SPTTestSuite.m; sourceTree = ""; }; + E7B3406B271F3C8121536E6E3F869EC0 /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; + E83104FA9E0105DAC57B3D1062029649 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + E85CDDD6E6B68C045A5391D0C3AE10B3 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; + E88CCB368E9928553AE326AF7F243143 /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; + E8CFDBC024987EFC67CB0D852D0112B0 /* SPTSharedExampleGroups.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSharedExampleGroups.h; path = Specta/Specta/SPTSharedExampleGroups.h; sourceTree = ""; }; + E940BB3B7637A14064336685794BF7E0 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; + E952FECC9010F2150703CEEFBCC1ADAA /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = ""; }; + EACF20C7F52EBA30680C8ACB3102B846 /* libDJLocalization.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDJLocalization.a; path = libDJLocalization.a; sourceTree = BUILT_PRODUCTS_DIR; }; + EAF9D928B205ECEF1E1AC6010234DB66 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; EB3D2F853F93E1C5DD8686BB8FCE0297 /* PNObjectConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PNObjectConfig.h; path = PNObject/Classes/PNObjectConfig.h; sourceTree = ""; }; - EB5B907BC96C09D6BB405190C882BBD5 /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; }; - EB6967181467BED4492732D1D4705DC6 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; - EBB4AC8A822AA58630CAC4468B0B14ED /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; - EBB57EC1C4725BDEC0C2D9A90660ACAE /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; + EB408E69B1B8079E81A5B47D7C42E525 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; + EBDE76588719717B85EEA3CFE6CBBA5A /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; EC027B83CF68F1B70BFB4195B3D50010 /* PNObject+PNObjectDELETEConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PNObject+PNObjectDELETEConnection.m"; path = "PNObject/Classes/PNObject+PNObjectDELETEConnection.m"; sourceTree = ""; }; - EC0CCAE8180310F27F4D45B4C566DFFD /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; - EC2A85F7CB62517F814A1B26EC514E99 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; - EC3FEF4D8E0DC876D4BEC311CFC5D274 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; - EC8B465D31717139A016A12D2FFB2744 /* ALView+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ALView+PureLayout.h"; path = "PureLayout/PureLayout/ALView+PureLayout.h"; sourceTree = ""; }; - ECB10B1A166604998038F053373E7420 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = ""; }; - ECB1D7720A8CF797BE0808D89E06D033 /* RZDBCoalesce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RZDBCoalesce.m; path = RZDataBinding/RZDBCoalesce.m; sourceTree = ""; }; - ED9E4D474B9CAC5DDD2A39AD25683A14 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; - EDA278F288AAA30155CD1A0E2692CB62 /* StrongestPasswordValidator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = StrongestPasswordValidator.h; path = Pod/Classes/StrongestPasswordValidator.h; sourceTree = ""; }; - EDC28F0107C2466419BBD9DE692C5399 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; - EDFB9389E6BC749689DAF1C72BD35634 /* EXPMatchers+beSubclassOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSubclassOf.h"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.h"; sourceTree = ""; }; - EE0AC7D4EEAD02045DC937D7BD2C1C23 /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = ""; }; - EE55C4283AF5E8AD1B4721099DF4C764 /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; - EEC193E3F520E1B6AB4F3372A37E4BAE /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = ""; }; - EF207F7E0D5311B1FF52C426AEE0A0C5 /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; - F04DCF6C3EF993D25317DBCB0D789345 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; - F05B4186BB3B1AAE47C0F25011FE071A /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - F094D8A53A77AFCF246030E5859876BE /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; - F0DE0DF8D914E38271859E2DC3FFAB1D /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; - F1406D8AC4FA98818B9092CEA3E20A29 /* NSArray+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+PureLayout.h"; path = "PureLayout/PureLayout/NSArray+PureLayout.h"; sourceTree = ""; }; - F17BB7C782512DC313E03E2EC880AB33 /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; - F1965FFF8D5A2E0C288D9A560FCFEDCE /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; - F1BF5543D80B51DF0A66E88F653F3435 /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; - F1E075C82DF8DE948E2EC4A3B63A3C0A /* FBSDKHybridAppEventsScriptMessageHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKHybridAppEventsScriptMessageHandler.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.h; sourceTree = ""; }; - F2399C18A88B380AD1FBABFD1ADC63B7 /* EXPMatcherHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcherHelpers.h; path = Expecta/Matchers/EXPMatcherHelpers.h; sourceTree = ""; }; - F3C4A3461A90A87F919F4C075AED6B06 /* UIWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWebView+AFNetworking.h"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.h"; sourceTree = ""; }; - F3C7BC76A5F427D2951B7C3F2DB7CEFC /* FBSDKCameraEffectArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCameraEffectArguments.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectArguments.h; sourceTree = ""; }; - F3DEC48A4806C456BF7333F05402A123 /* libNSDataAES.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libNSDataAES.a; path = libNSDataAES.a; sourceTree = BUILT_PRODUCTS_DIR; }; - F41E58C8325EB10B4B63392FD847BAC6 /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; - F49BAD09C3436DEC8C12A3D333EBFA44 /* nv-ios-http-status.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "nv-ios-http-status.xcconfig"; sourceTree = ""; }; - F50D11F39AE29BB5A0578C32B1DD4D06 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; - F595D724DDAEC4AAEAC9F66C11999838 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; - F5D2FFE55155C7A7943B0D43B2ED6874 /* FBSDKCodelessPathComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessPathComponent.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessPathComponent.m; sourceTree = ""; }; - F69FF63557810B667D967581618582B5 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; + EC4B71AE96D1A5D627E72497D1DC6C23 /* FBSDKCodelessParameterComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCodelessParameterComponent.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessParameterComponent.h; sourceTree = ""; }; + EC5D78051729C73CF93EB317E6E565F2 /* ExpectaSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaSupport.m; path = Expecta/ExpectaSupport.m; sourceTree = ""; }; + EC64DCF50E636893C5B7603C9750658F /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; + EC6F59C205AF23ABEA19AA731A6E8609 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + ECBD9A733ABEE5212AE355EE55A02915 /* EXPDoubleTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDoubleTuple.h; path = Expecta/EXPDoubleTuple.h; sourceTree = ""; }; + ECC8916A1AC1D14DF3C1C92229B40214 /* NSDate_Utils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDate_Utils-prefix.pch"; sourceTree = ""; }; + ED6D51F798683F56C36591205BA05DB5 /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; }; + ED99F7451BFE99DFB7D32716F261E80B /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; + EDE7C37FF7DD0312B72C40B60D0C9DC5 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; + EEB4B944F703E86FB6328A72D391C38E /* FBSDKWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebViewAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.h; sourceTree = ""; }; + EED4C5A1701B547498F82AE3B18B1292 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; + EF8ECFEDAEA8949608A114BA9DC9953A /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; + EFC9AD8BC8F6BEFDBC761B005AD2E167 /* FBSDKEventBinding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKEventBinding.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBinding.m; sourceTree = ""; }; + F02883982EA500BCB791B6B67C15BA49 /* SPTTestSuite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTTestSuite.h; path = Specta/Specta/SPTTestSuite.h; sourceTree = ""; }; + F0AAED51171EAC5942700BC2218C89D2 /* FBSDKEventBindingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKEventBindingManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKEventBindingManager.h; sourceTree = ""; }; + F2383083267CAD2E43713143955EE386 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; + F2B4D21CE71172A01AD428FA5B0250D6 /* SpectaUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaUtility.m; path = Specta/Specta/SpectaUtility.m; sourceTree = ""; }; + F2D4951CDBB16ACA06C05E8650AAB14F /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; + F32FCB8E3AAC327AB06D88FAEFD089B6 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; + F4087E88D44F30E3CEE8AA774C04E83C /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; + F42CA6A86C8B7F58A44B8C4D8CC96063 /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; + F5CDC80BF7428CE92D164FD10F91A6A9 /* FBSDKWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebViewAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKWebViewAppLinkResolver.m; sourceTree = ""; }; + F5ED466A1933E1C0CA01011797556CA7 /* FBSDKUserDataStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUserDataStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKUserDataStore.h; sourceTree = ""; }; + F62C482EE90A46966BA5B12D96878AAE /* EXPMatchers+beNil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beNil.m"; path = "Expecta/Matchers/EXPMatchers+beNil.m"; sourceTree = ""; }; + F6E913A2C6D0AD599815BEF8C5E5BBBA /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; }; F76C90725C029275161554BC0426191A /* AFHTTPRequestSerializer+OAuth2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFHTTPRequestSerializer+OAuth2.h"; sourceTree = ""; }; - F7864DD1693A7A235C28BC7C4D10B58E /* NSData+AESKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+AESKey.h"; path = "NSDataAES/Classes/NSData+AESKey.h"; sourceTree = ""; }; - F7AFC8A7A5AE5F65B91A38EE8CD0E02B /* FBSDKCameraEffectTextures.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCameraEffectTextures.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKCameraEffectTextures.m; sourceTree = ""; }; - F8061B3868BDAD11CE1E886FBC87A507 /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; - F887AE57AD2A49338ED76686CC4DD718 /* FBSDKAccessTokenExpirer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenExpirer.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenExpirer.h; sourceTree = ""; }; - F9624A50537E9F441B415BC1794085B8 /* NSDataAES-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSDataAES-prefix.pch"; sourceTree = ""; }; + F7FFB211E02B400D0F1B911B5476C751 /* FBSDKURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURL.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKURL.m; sourceTree = ""; }; F997A285593487CF4D2467662618064D /* AFOAuthCredential.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AFOAuthCredential.h; sourceTree = ""; }; - F9A441E9586B3C8581D76BC1E0A03671 /* DDDKeychainWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDDKeychainWrapper.h; path = Pod/Classes/DDDKeychainWrapper.h; sourceTree = ""; }; - FA043EAD1C57E2A9165D7691DC1DCD15 /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; - FA1CA53BC015968B8A7D5A2281145D6C /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; - FA7EE8D5280ACA9545EB0F4B0F4138EA /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; - FB72119DFFE43FFB9BF49600A12E9063 /* DDDKeychainWrapper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DDDKeychainWrapper.xcconfig; sourceTree = ""; }; - FC174185FAB7A4F971B645D5474701EF /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; - FC1C84083C56DEA9692B2856DE211395 /* EXPMatchers+contain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+contain.h"; path = "Expecta/Matchers/EXPMatchers+contain.h"; sourceTree = ""; }; - FC325C3C3D911B47F0AA694DA05BD71B /* FBSDKAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkTarget.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkTarget.m; sourceTree = ""; }; - FC73FA0EC9903EFA53286D879E678FA9 /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; - FC9787E13A62A239A3C6CD21A98AF9E0 /* SPTCallSite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCallSite.m; path = Specta/Specta/SPTCallSite.m; sourceTree = ""; }; - FC9BBD4529783C71966EC576E224DB8B /* EXPFloatTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPFloatTuple.m; path = Expecta/EXPFloatTuple.m; sourceTree = ""; }; - FCD1EA6A6A7C243E0424BB20F7AB9F52 /* FBSDKVideoUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKVideoUploader.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKVideoUploader.m; sourceTree = ""; }; - FD37A75E3B04A194B8A7DF3E67156907 /* FBSDKShareMessengerMediaTemplateContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareMessengerMediaTemplateContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareMessengerMediaTemplateContent.m; sourceTree = ""; }; - FD85A1234712148DBB0F85A07FF3DCE7 /* RZDataBinding-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RZDataBinding-prefix.pch"; sourceTree = ""; }; + F9F3F51028FF3A97837DA90F7A32F64B /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + FA8F3E6209A5346784AD541313DC0DF6 /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; }; + FACD35B872D5260C84424DEDD0F0684E /* PureLayout-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PureLayout-prefix.pch"; sourceTree = ""; }; + FAD1BDBB0FB7D500AC2C5F94035C962B /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; + FD78411329920E587B7AFF79A4FB2134 /* FBSDKAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkReturnToRefererController.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkReturnToRefererController.h; sourceTree = ""; }; + FD7DA77F4C2F9A340BA2DA0CC08AA2E9 /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; + FDE981D03BCA1801082CECF58AA2154A /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; FE13F68BA7E00A87F6382640DA4031B8 /* AFOAuthCredential.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = AFOAuthCredential.m; sourceTree = ""; }; - FE242ABAC176E657012AB92CBE4DDB4F /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = ""; }; - FE6EABB3BDE91D97C148A51DE2050436 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; - FED8B893DA37A3224223A9BFB0E51281 /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; - FF2A391F4328DB787D7D6C604A041035 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; - FF5BDB925B9438AB881A5CE3EC32A419 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; - FFAF6BD0022B3CEDB7E260EF8F44B4FB /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; + FE3D6D5ACFE33655DA9382DE563ADDEC /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; + FEABE49D563B0FD8D448C09E863E70CB /* FBSDKCodelessIndexer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCodelessIndexer.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/Codeless/FBSDKCodelessIndexer.m; sourceTree = ""; }; + FF64CF5B6F0022DBC823A11729A45FF5 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; + FF6DA530E8AADD78DEF49D2321BA23DE /* SPTSharedExampleGroups.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSharedExampleGroups.m; path = Specta/Specta/SPTSharedExampleGroups.m; sourceTree = ""; }; + FFC91391FB0F38A92CB464EFE66C96C6 /* EXPMatchers+endWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+endWith.h"; path = "Expecta/Matchers/EXPMatchers+endWith.h"; sourceTree = ""; }; + FFD231C49FD1E829D3CE97F7E68D3887 /* FBSDKHybridAppEventsScriptMessageHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKHybridAppEventsScriptMessageHandler.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKHybridAppEventsScriptMessageHandler.m; sourceTree = ""; }; + FFF1870FC011A05291F60D4D70A70E89 /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1620C9079759C4431D1DA8FC4BAB5039 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B5023F69DFBFE68C058D189C112AFE94 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 183D8B39A377C80256E80C5E7CE0EFC6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1720,14 +1340,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B0E254530E432BA0E54C65D1CF86DEBC /* Security.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2CC988D65D245DEFA0E35C6D21B06A8F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + E15BD764C291E0DEFE714D724D71057B /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1742,15 +1355,16 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F20E895881CD1819ECEE12DC011C6724 /* Foundation.framework in Frameworks */, - 6A42EC6B2A721B0FEC8CADDB441FF130 /* XCTest.framework in Frameworks */, + 8DFFD5984190D2EE669224BA497B4054 /* Foundation.framework in Frameworks */, + 7C450A1740A23144EB8386C9CE61357E /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 363A1F5DC0AA283A9CE90E738C8DB9EB /* Frameworks */ = { + 3A472BFBB620932C5869B08D4D552B4C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 8254DD6462D680D89B2DF314A136411A /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1768,7 +1382,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 834759D2B85F882D0F8D01D07E8C2881 /* Frameworks */ = { + 55DF6EA36AA21472C15B80D0D2D8CACF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58F64E3F1ABF3976A56FFA5D3F35ABEB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8144B440C88BFD23EDE28A95719A9B10 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1779,21 +1407,14 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F5034BD1BF1179DCC3C22ABBF887F8BF /* CoreGraphics.framework in Frameworks */, - 38DEA83415273708C683A11099389EDE /* MobileCoreServices.framework in Frameworks */, - DC669F3DADABC97D51AE04F8D26450C9 /* Security.framework in Frameworks */, - 15BCB2AF5FB6BC37B64AA1FF69CB31E3 /* SystemConfiguration.framework in Frameworks */, + 3C8A66633C216FF1DC87C35974B8C871 /* CoreGraphics.framework in Frameworks */, + 3505DE9E19A5C0CEA67456D9AD6F7F0D /* MobileCoreServices.framework in Frameworks */, + F030FFCEB647F088B9A007DA76E8D046 /* Security.framework in Frameworks */, + 5743A9734FFAB2419676E36064913A43 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8ACE5D363E68267FC6642B20866636E2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9E361E01B513237B3C62235AA01160F7 /* Frameworks */ = { + 9B158D7D36116719CB3074E22640EA4C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1814,19 +1435,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C22BD4FE3380B2A965FE9401168E0EE3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; C612259F05A2C8B976735ABC62436A36 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5CDA68EF888D84B0B24D7D7EA044A17C /* Foundation.framework in Frameworks */, - 0152742AA1857092355DF70B672D46F6 /* XCTest.framework in Frameworks */, + 83BEC211C2359FAF1ABF087FF3A89426 /* Foundation.framework in Frameworks */, + BA5857AC8307D7A38C36532511BB6D84 /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1834,19 +1448,19 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2405168C50070FEC7A7C15EF29083177 /* Foundation.framework in Frameworks */, - F9792E591C89A2DB1AC8FA28F383E3DE /* UIKit.framework in Frameworks */, + FC10DB654865E9F761801091BBFE07F6 /* Foundation.framework in Frameworks */, + 98AE287D8461DCB483F70251BA9C8D8B /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - E0B8A662FCE8C34AC8F8BA57367B28CF /* Frameworks */ = { + D7A744BD58A6A10DD44CECEF8BA6474E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - EBEF0006E610BD8A277F6C8DB149B1F6 /* Frameworks */ = { + E0B8A662FCE8C34AC8F8BA57367B28CF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1870,89 +1484,133 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0B0892DA30CD9297FD42F8CEB802385C /* Support Files */ = { + 01F6826077D606D0EEBF5E7D4A4AFE0D /* Tasks */ = { isa = PBXGroup; children = ( - E10EB47C52E20EA119D6B514049F55F8 /* FBSDKShareKit.xcconfig */, - E863438AB7FA603ABBF228C1972C62E3 /* FBSDKShareKit-dummy.m */, - 98D13612C91E439241652D6BD5ECFB8B /* FBSDKShareKit-prefix.pch */, + DF0CD69D89A711481A13C38FA50BA927 /* BFCancellationToken.h */, + CF48680A6189A72332AD76B9B13FF39C /* BFCancellationToken.m */, + 2FF247BD248692D6F5E815E389F39D61 /* BFCancellationTokenRegistration.h */, + A15BD8FDD2243D9BF14DDE5C44E49496 /* BFCancellationTokenRegistration.m */, + 4F03C9B01D12F7775C5487517B510D61 /* BFCancellationTokenSource.h */, + 2FEB333B891FDB0A0369287A18F40372 /* BFCancellationTokenSource.m */, + 84097C1575F396B3E36596CFF14ADB4A /* BFExecutor.h */, + 19733680C010A769F600B8B7ADD1E09A /* BFExecutor.m */, + D01C290E1CB24CC044945B126541FAF7 /* BFGeneric.h */, + 8D2250C71F28AE981666D1B87E599907 /* BFTask.h */, + 752D97D6051447FA1D520A1D682AF84D /* BFTask.m */, + 3340B284F5A4B1101B2EA55D03F67179 /* BFTaskCompletionSource.h */, + 07586B8A2F580D9D57878CF276CF8B47 /* BFTaskCompletionSource.m */, + D338EC40F6F6FE448B94EB39922C41BA /* Bolts.h */, + FF64CF5B6F0022DBC823A11729A45FF5 /* Bolts.m */, + ); + name = Tasks; + sourceTree = ""; + }; + 067592F30E3CD5876DF1D7CD98FF06E9 /* Support Files */ = { + isa = PBXGroup; + children = ( + 8EB72B6C78DE70A0C02D1B5DBFD02466 /* nv-ios-http-status.xcconfig */, + 6515F05B30E44361827C3A533E8CF0F3 /* nv-ios-http-status-dummy.m */, + DBF8CA1EBE5D22972FE5D11E5D3FAE50 /* nv-ios-http-status-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/FBSDKShareKit"; + path = "../Target Support Files/nv-ios-http-status"; sourceTree = ""; }; - 11F1F6BD9389C2268BA65BC3B6348E33 /* Support Files */ = { + 0719EA25A640F380A06EDBDC1B04A5F9 /* NSURLSession */ = { isa = PBXGroup; children = ( - D9926F43895CDB2B741DEFB8D9D8AE66 /* DJLocalization.xcconfig */, - 29FFE39BB9744FB477E9BD45281C4E20 /* DJLocalization-dummy.m */, - E69FA403CBE830954F8F4CFF54FDD34D /* DJLocalization-prefix.pch */, + 3716F02B4752231340F0F59CFC2AB263 /* AFCompatibilityMacros.h */, + E5AF211F0B66AD29F5E545B08E5B8FF1 /* AFHTTPSessionManager.h */, + 3D48B413F6CD76474420CD78F10AFF38 /* AFHTTPSessionManager.m */, + B026AC10A4E42DF368F9398E82DDCBDD /* AFURLSessionManager.h */, + 64D1B47152DC334661A7C9426021D280 /* AFURLSessionManager.m */, + ); + name = NSURLSession; + sourceTree = ""; + }; + 071CE81B439FF1A53AA62540AAA78E5B /* Support Files */ = { + isa = PBXGroup; + children = ( + BDC9472C9B9C63426705F0C9BC0706BC /* FBSDKCoreKit.xcconfig */, + BA030F0908B6174F2965B6975DD76A17 /* FBSDKCoreKit-dummy.m */, + 40363262E3D2C4DDEACB42DC9E2EAD79 /* FBSDKCoreKit-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/DJLocalization"; + path = "../Target Support Files/FBSDKCoreKit"; sourceTree = ""; }; - 1508EFE08549FE4D5114F0EBBEECC305 /* RZDataBinding */ = { + 0FF0FE0F82C484B8B88F2EA5ECBD8306 /* Specta */ = { isa = PBXGroup; children = ( - EA897AA5523D9BBF72539EE0EEDE87A9 /* NSObject+RZDataBinding.h */, - C18D28F8319BFCC61B6C109FFEF432CC /* NSObject+RZDataBinding.m */, - A3F0896E256DA1F53B7235EB9C4C1205 /* RZDataBinding.h */, - E82E129D6FE596D85CDF967D18298D39 /* RZDBCoalesce.h */, - ECB1D7720A8CF797BE0808D89E06D033 /* RZDBCoalesce.m */, - C510C630A4C17612F4CEF4569C285F7C /* RZDBMacros.h */, - 5862C90EFD738F31E09EB762AAEB0FCF /* RZDBTransforms.h */, - 5C1F83A82EF1E725A2A7424E4FC2641E /* RZDBTransforms.m */, - 5AB9ADA6439A3FF01A954CC1958FAEBB /* Support Files */, + 490E4BA82FF5E83ACB0A9E2DD8CEE169 /* Specta.h */, + 6D05E1EE033D6F80BA1D0B98AAFED36F /* SpectaDSL.h */, + 1926B30C2B4DD86AE7AC851C5FA653B6 /* SpectaDSL.m */, + 490065D128802441BB1FB732F56D40A1 /* SpectaTypes.h */, + 0F3ED38E28BFF5C699CE4885714C3E88 /* SpectaUtility.h */, + F2B4D21CE71172A01AD428FA5B0250D6 /* SpectaUtility.m */, + 7973413B8C74EAF016C4C64DCCD1B1A8 /* SPTCallSite.h */, + 8B540B0E52E9950F9224BC7DCDB4AD77 /* SPTCallSite.m */, + D00073415D26535814DA1E68C7D75C68 /* SPTCompiledExample.h */, + A05517C4229BC102C79EA6C3FE2A7973 /* SPTCompiledExample.m */, + 363B154B56E9E7803745A62413950CDF /* SPTExample.h */, + E241EB0EAB5D7131EB15B8B647EF8DAE /* SPTExample.m */, + 91F1A51E5822337B24C5E3E864B398A7 /* SPTExampleGroup.h */, + CB04AB2F151597DDE35ABB4444ED59DB /* SPTExampleGroup.m */, + 34DB827F6DA82855B6D492B17DDA3B91 /* SPTExcludeGlobalBeforeAfterEach.h */, + 541ED8FD87561470666421B17341AE24 /* SPTGlobalBeforeAfterEach.h */, + E8CFDBC024987EFC67CB0D852D0112B0 /* SPTSharedExampleGroups.h */, + FF6DA530E8AADD78DEF49D2321BA23DE /* SPTSharedExampleGroups.m */, + BCF9BFE12EC560CB974852D1647A5FCE /* SPTSpec.h */, + 272B18779A99FD0F77A751D85E86213B /* SPTSpec.m */, + F02883982EA500BCB791B6B67C15BA49 /* SPTTestSuite.h */, + E7AD97EFD9264A7C82BA037AF359BE3D /* SPTTestSuite.m */, + 4CC8BE4BC81727568FEF5A2CD6DEBFE6 /* XCTest+Private.h */, + 58573C9A78CAA88BB5168416F7995F24 /* XCTestCase+Specta.h */, + 584248C5CD7B315AF5246B8C364DC902 /* XCTestCase+Specta.m */, + 11B4E568BA37145076C12C805E6F5990 /* Support Files */, ); - name = RZDataBinding; - path = RZDataBinding; + name = Specta; + path = Specta; sourceTree = ""; }; - 15C7D54B6FC00D857FC5E8C31EFBA941 /* NSDataAES */ = { + 11B4E568BA37145076C12C805E6F5990 /* Support Files */ = { isa = PBXGroup; children = ( - 9B9D1C914C0CA7355777345FD1C453E8 /* NSData+AES.h */, - 9760CF6845E5C00E61FFC02E89A275C8 /* NSData+AES.m */, - F7864DD1693A7A235C28BC7C4D10B58E /* NSData+AESKey.h */, - 73C4CA0DDD20C9404F022699B69E1C8F /* NSData+AESKey.m */, - D441D2DF6D2DC0EFA6139912F83A816E /* NSData+AESValue.h */, - 662CB4A93808AEAC21BCD400DC311E45 /* NSData+AESValue.m */, - 50F1A0E415C3F797F256FED40444E2DD /* NSData+SHA.h */, - 7BEA087FAA2D12FF5E9BB0B6A376D8DD /* NSData+SHA.m */, - CAEBDEB3253090886D136A519B999CD9 /* NSDataAESCipher.h */, - A2C3EC08D3C5AB7F67EF98D3DF744910 /* NSDataAESCipher.m */, - 2B67BCDA25FB657CCDB23961B3E77CDF /* NSMutableData+AES.h */, - C05C6907571617EC014518E10073274C /* NSMutableData+AES.m */, - 79874668D4138BB864060F811EEC7964 /* Support Files */, + 61E1D0F3409E4792D81E841ABEB2B71D /* Specta.xcconfig */, + 93098FE37E7E5400834CFB5D30CBAE5A /* Specta-dummy.m */, + 7D29E8B3F08B0F6A6CEEABD5866689D4 /* Specta-prefix.pch */, ); - name = NSDataAES; - path = NSDataAES; + name = "Support Files"; + path = "../Target Support Files/Specta"; sourceTree = ""; }; - 16BA332108214A120047C1528A07333A /* nv-ios-http-status */ = { + 16F1B28B307B4AEA16014CF4ACC987CA /* iOS */ = { isa = PBXGroup; children = ( - 68851197844455F40E4C06D94EA40DB6 /* HTTPStatusCodes.h */, - 16102F175FCEF915822BF8406CA5D2B2 /* nv_ios_http_status.h */, - AC0454B2B1FCCBFAFF0A59DD5E5C4F52 /* nv_ios_http_status.m */, - B4BE5B5E4D32DCB472616D4DD7181A5A /* Support Files */, + 7A0417A45A2F49FDAA0A36C09FC3E187 /* CoreGraphics.framework */, + 3C85D9CEDCB95BB4A71EA215C8B90FF8 /* Foundation.framework */, + 6F252CCAAE16FC4699E054C0F24C6A7D /* MobileCoreServices.framework */, + 63E8FDB14E177C5030A60739394E9A0F /* Security.framework */, + B10F4EFCD20F9BF3AD7AD2CA65A38D24 /* SystemConfiguration.framework */, + 294FAA371210175694E4B8BFBCB7CBB9 /* UIKit.framework */, + 03E5451DC47BE87809A74157B93B4B6B /* XCTest.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 190B0C00100C8F6BECD66D82879C3DE5 /* nv-ios-http-status */ = { + isa = PBXGroup; + children = ( + 7F96E6A0967EE7E39AB0EF85C14505B3 /* HTTPStatusCodes.h */, + 6329F96C2823EA696DCACC33DA57CDBA /* nv_ios_http_status.h */, + 3E4FF31D3743D9127CF19D30BF976D6B /* nv_ios_http_status.m */, + 067592F30E3CD5876DF1D7CD98FF06E9 /* Support Files */, ); name = "nv-ios-http-status"; path = "nv-ios-http-status"; sourceTree = ""; }; - 18E40FE79CF2AADE3062B20A5D737D76 /* Support Files */ = { - isa = PBXGroup; - children = ( - 6658A8EB3EE225F944B76265B3FE95CD /* CodFis-Helper.xcconfig */, - 2FFB25E6B9D88368697A01736E84DAF5 /* CodFis-Helper-dummy.m */, - 9BEAA00A8F442A2E842E01807C16C275 /* CodFis-Helper-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/CodFis-Helper"; - sourceTree = ""; - }; 1D6101F2970774DC431E568CD58CD5DD /* Pods-PNObject_Example */ = { isa = PBXGroup; children = ( @@ -2001,6 +1659,114 @@ path = ../..; sourceTree = ""; }; + 2A372C0BABDB2FB032541034B3EBCC36 /* AFNetworking */ = { + isa = PBXGroup; + children = ( + 60FA2B7810F7D78E9D4A9C844A4EF183 /* AFNetworking.h */, + 0719EA25A640F380A06EDBDC1B04A5F9 /* NSURLSession */, + 39D39C29A7E65B4FABAD90FD19A06DB1 /* Reachability */, + CC009EC27FC9151DB08334C1860F0606 /* Security */, + D480B4504CBDDBEDD639A89038502513 /* Serialization */, + 6D7B052DFCAB22E527E5ADF1BC5689C5 /* Support Files */, + 6F26751542C9522586944562D70EE356 /* UIKit */, + ); + name = AFNetworking; + path = AFNetworking; + sourceTree = ""; + }; + 2B817C460B4B65AFC574DECEE5C0F70C /* Support Files */ = { + isa = PBXGroup; + children = ( + D2B5E233273B5134306EBC65D2CB19DF /* Bolts.xcconfig */, + B4D47F6BB08E1E27D1330FF081E7CAE0 /* Bolts-dummy.m */, + 0174B2E79D6C36F4FC35BD5F12C8DB88 /* Bolts-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/Bolts"; + sourceTree = ""; + }; + 2DF79A7008CA68D2A88301DFB8EB13F0 /* Expecta */ = { + isa = PBXGroup; + children = ( + 2CBB4258D4121B0FC04CC22B757818D1 /* EXPBlockDefinedMatcher.h */, + A57AE603FE1573C4316738EA3B67EA47 /* EXPBlockDefinedMatcher.m */, + AF0641978DE2E2E138B79745F3250987 /* EXPDefines.h */, + ECBD9A733ABEE5212AE355EE55A02915 /* EXPDoubleTuple.h */, + BD44FBD619782C7C9C2602E36A854326 /* EXPDoubleTuple.m */, + 2219317883A77BB64723FA78EDD93B03 /* Expecta.h */, + 4066FCE4D9A353535164ECD6CAF8C060 /* ExpectaObject.h */, + CFED1553744DB17CCC9EAF9970D7ADB9 /* ExpectaObject.m */, + 0D9AE264A8F9F920F0874CDF977D370D /* ExpectaSupport.h */, + EC5D78051729C73CF93EB317E6E565F2 /* ExpectaSupport.m */, + 6F0752E58A5EAA30AD58F145FD43B738 /* EXPExpect.h */, + ED6D51F798683F56C36591205BA05DB5 /* EXPExpect.m */, + FA8F3E6209A5346784AD541313DC0DF6 /* EXPFloatTuple.h */, + 0D6BD89269A6DD8558CCEFB8B8582B93 /* EXPFloatTuple.m */, + 48E1A84A638E7070A9FBDE2154A67250 /* EXPMatcher.h */, + A3FC262E39538F9FA107E93E8BFF7330 /* EXPMatcherHelpers.h */, + F6E913A2C6D0AD599815BEF8C5E5BBBA /* EXPMatcherHelpers.m */, + D4DFD085EBD6EFC60EE0F97541D6FFE8 /* EXPMatchers.h */, + 0C524C5B0E1E4717A5F50F77E5078E49 /* EXPMatchers+beCloseTo.h */, + D97F92F3E2E397D4BE297A9C791C5057 /* EXPMatchers+beCloseTo.m */, + 27C59B5B11568E3C9A26FDB2058487C2 /* EXPMatchers+beFalsy.h */, + 2D4C072523B6B74D55026171111C2BC4 /* EXPMatchers+beFalsy.m */, + BC8D591D56FFE0908DA9373ADF38FD69 /* EXPMatchers+beginWith.h */, + D732C9CD35343E4257B34510E1C44BC5 /* EXPMatchers+beginWith.m */, + 4D40050457D1C9BBD50975F780AD000F /* EXPMatchers+beGreaterThan.h */, + 1DE0410856F73F8696FAD3552F44D0F9 /* EXPMatchers+beGreaterThan.m */, + 33586B8B5672E5632F691003D629AFBE /* EXPMatchers+beGreaterThanOrEqualTo.h */, + 78B6CE2F982824ECDDB62EDFA68DBF72 /* EXPMatchers+beGreaterThanOrEqualTo.m */, + 94790902DBEF7F1FDA96953FC4E64F56 /* EXPMatchers+beIdenticalTo.h */, + A7337468F16E656419B1EB01E404F626 /* EXPMatchers+beIdenticalTo.m */, + C0C580581B1648EB29BAF15596AC30A7 /* EXPMatchers+beInstanceOf.h */, + 1D2100D5BBD932CD3109682D22218061 /* EXPMatchers+beInstanceOf.m */, + ACA36DB0C619A910989BF280D0DF59AD /* EXPMatchers+beInTheRangeOf.h */, + 5599600676B1456215FE054F4631F4D3 /* EXPMatchers+beInTheRangeOf.m */, + 8AD4BB858FAD421FFED79A6FA590B68C /* EXPMatchers+beKindOf.h */, + E952FECC9010F2150703CEEFBCC1ADAA /* EXPMatchers+beKindOf.m */, + 2AE5B2BF1A66904BDD595369B06633E9 /* EXPMatchers+beLessThan.h */, + 178B9C0FDEE0457A3F981794A4826081 /* EXPMatchers+beLessThan.m */, + B8D0361D6C2648956D8B785258C23B09 /* EXPMatchers+beLessThanOrEqualTo.h */, + E4A63B8B67E63E3B938D6AE92FA3ABF3 /* EXPMatchers+beLessThanOrEqualTo.m */, + 8B6E513FE21B9CA58F416017BB838021 /* EXPMatchers+beNil.h */, + F62C482EE90A46966BA5B12D96878AAE /* EXPMatchers+beNil.m */, + 40CB89F9717C62EB8957785A6EB3FCF7 /* EXPMatchers+beSubclassOf.h */, + 77A6E8BD608D173DFB68960F838AEADC /* EXPMatchers+beSubclassOf.m */, + DF3026E23C27D70F04297FC288C0FF3D /* EXPMatchers+beSupersetOf.h */, + E4DE7E50173DD75846A4AFF27735D3C0 /* EXPMatchers+beSupersetOf.m */, + BA239773AEE9DB5E3C63C024061F5CF5 /* EXPMatchers+beTruthy.h */, + 662C7CEA5DD968B32F1B8682D7EEE8AE /* EXPMatchers+beTruthy.m */, + 2D4513F2D820F16881A1C4C1E3097C57 /* EXPMatchers+conformTo.h */, + 0E7817995CA8E82F8CA7970DB4DC37A6 /* EXPMatchers+conformTo.m */, + E15D7924EBB89041DD689B419DB0DDDB /* EXPMatchers+contain.h */, + 26AF01EAAE8808D08B19B6F245CDFC75 /* EXPMatchers+contain.m */, + FFC91391FB0F38A92CB464EFE66C96C6 /* EXPMatchers+endWith.h */, + 08888F77B7559F806A516C24FC8D1CEB /* EXPMatchers+endWith.m */, + A1C6DFE8E7E3B5575F6EDE37A28BE8AC /* EXPMatchers+equal.h */, + B60A2EC0A74153D3BF10596C0E97F49E /* EXPMatchers+equal.m */, + A0CC2E228E2C2712B4CAFE870E91A503 /* EXPMatchers+haveCountOf.h */, + A311E4E7DAE3E607DD369E764B42AD25 /* EXPMatchers+haveCountOf.m */, + 165CF624A84179950C6FDE0A73AB35B4 /* EXPMatchers+match.h */, + 09EBEB675B1369A35FD3793AFE6F5CC6 /* EXPMatchers+match.m */, + BEFF36676C4B701528EA8455A54038C8 /* EXPMatchers+postNotification.h */, + 5BF7FBFBBF098A5683BBC10D4A97C10A /* EXPMatchers+postNotification.m */, + 482E9E8C012AF293E41D3DE21D83CFDE /* EXPMatchers+raise.h */, + 8A77ADBE8D4830B102F91F72EE93376D /* EXPMatchers+raise.m */, + 9D3E9404B03949F39EB6C1AE034D3527 /* EXPMatchers+raiseWithReason.h */, + CFE937B4155B29916673639D59B46FE2 /* EXPMatchers+raiseWithReason.m */, + 8D42F1517CD3CBCD0BC1A82B4348A5FA /* EXPMatchers+respondTo.h */, + C6C8EC1D0378E44D64DD8352BAE88503 /* EXPMatchers+respondTo.m */, + E5EBF82A2572FE1FDD7925CE28E95237 /* EXPUnsupportedObject.h */, + 2C2C5B0BE0CA5002795E39FACF35433C /* EXPUnsupportedObject.m */, + 612F262688422A838FBD8457582F09F3 /* NSObject+Expecta.h */, + 0170FB4571D1DE543DCDD05866D304FD /* NSValue+Expecta.h */, + 1502F66B6DF47240BECBA7DAF52792D4 /* NSValue+Expecta.m */, + 6FBD1A9159333588D27AEA2DFE810758 /* Support Files */, + ); + name = Expecta; + path = Expecta; + sourceTree = ""; + }; 328535619609C660020CFB604AFF9CEF /* AFJSONResponseSerializerWithData */ = { isa = PBXGroup; children = ( @@ -2011,120 +1777,46 @@ path = AFJSONResponseSerializerWithData; sourceTree = ""; }; - 330CB4FA6779FCC1AA43BE9BB3F713DE /* Support Files */ = { + 39BB3E29A557C0A3BDFB04D453FF7E0C /* Support Files */ = { isa = PBXGroup; children = ( - 72B47B0724761B2B22F82B85F19F2633 /* AFNetworking.xcconfig */, - 4536743F73315987683C3324B01D7139 /* AFNetworking-dummy.m */, - 35989139B1DC8A2CC3405DD43A49B197 /* AFNetworking-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/AFNetworking"; - sourceTree = ""; - }; - 3691E310572BDF11F2BE2327EBE14D34 /* Support Files */ = { - isa = PBXGroup; - children = ( - 8734D2AD92DE52FFB555643C20A74AD2 /* Expecta.xcconfig */, - 4D9C88EC650ED2970A74902F58713724 /* Expecta-dummy.m */, - A9160080FFF62168E4051663683EC394 /* Expecta-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/Expecta"; - sourceTree = ""; - }; - 3771BBC4CDD47037A3919293A4022823 /* StrongestPasswordValidator */ = { - isa = PBXGroup; - children = ( - EDA278F288AAA30155CD1A0E2692CB62 /* StrongestPasswordValidator.h */, - BE5D48F63E4D98DF26F93806FDA6E607 /* StrongestPasswordValidator.m */, - 4DE9667A673F78B67F7C03B3B4BAE7F7 /* Support Files */, - ); - name = StrongestPasswordValidator; - path = StrongestPasswordValidator; - sourceTree = ""; - }; - 37FCC04DA649647BFEA7F426F329F169 /* Support Files */ = { - isa = PBXGroup; - children = ( - D74836342AF2D5E5345284CF3393FDCE /* UIDevice-Utils.xcconfig */, - 4BB34A34410BB0E2237F80F427197302 /* UIDevice-Utils-dummy.m */, - 6DD323D7262AD60915043E23337D9F24 /* UIDevice-Utils-prefix.pch */, + D2E3C6C127D655EB3C996164F51FD610 /* UIDevice-Utils.xcconfig */, + 8400A0180F303153ECFEC289F63BA3E7 /* UIDevice-Utils-dummy.m */, + D07F27FC215C101F755B0F2D7CDBACE3 /* UIDevice-Utils-prefix.pch */, ); name = "Support Files"; path = "../Target Support Files/UIDevice-Utils"; sourceTree = ""; }; - 3A0FAC47DCD22A13F92609F6105DE0D8 /* AFNetworking */ = { + 39D39C29A7E65B4FABAD90FD19A06DB1 /* Reachability */ = { isa = PBXGroup; children = ( - 5853A3C027EF3C086C98DF233E21B3C5 /* AFNetworking.h */, - 8D261190023C219FEA42C620BD691B54 /* NSURLSession */, - 7D915E76D877912F297EFE4BB4D89DBC /* Reachability */, - 8CF31700F05E13D8128C5EA3516450DE /* Security */, - 413F17C338982D2C5D175743FED4E54C /* Serialization */, - 330CB4FA6779FCC1AA43BE9BB3F713DE /* Support Files */, - 851451DFB466AF790E81EB2547EF78AC /* UIKit */, + 3A1695794226E0FEBAB9495DBB5A8709 /* AFNetworkReachabilityManager.h */, + 1B9E40594B1CEA38655A1C7AAB818F5E /* AFNetworkReachabilityManager.m */, ); - name = AFNetworking; - path = AFNetworking; + name = Reachability; sourceTree = ""; }; - 4064C3DE42D2C087E4581B9245C47AFE /* FBSDKLoginKit */ = { + 3FDA5E256A064D0C711CA95BEDD9D3CA /* FBSDKMarketingKit */ = { isa = PBXGroup; children = ( - 452E64327494846C3D2E7CAF2898AFDC /* _FBSDKLoginRecoveryAttempter.h */, - C06378B48C7515ABB5B949DE8B63375D /* _FBSDKLoginRecoveryAttempter.m */, - 0ED5839BD70E5166E50524F5A135BEF7 /* FBSDKDeviceLoginCodeInfo.h */, - C31FA8102DF83AC01E794EEEE51AB787 /* FBSDKDeviceLoginCodeInfo.m */, - 410011B50EE53E54B3FE68221E7AB585 /* FBSDKDeviceLoginCodeInfo+Internal.h */, - 93AD73B1077B7352ED7AC7FCAF654105 /* FBSDKDeviceLoginError.h */, - 3181B47B45E3776B3AB0FAFC6DE02069 /* FBSDKDeviceLoginError.m */, - 97235C98D0D6BE67142911F95065B66A /* FBSDKDeviceLoginManager.h */, - E32798AA3060928B31D6D2414AE6CF7E /* FBSDKDeviceLoginManager.m */, - AE4EEE301DC50F594D9F70CCA22FD21B /* FBSDKDeviceLoginManagerResult.h */, - 149C3CE987355271447E21C7D65C6762 /* FBSDKDeviceLoginManagerResult.m */, - 0927668E0C2C5C5630C5BD9F8AEFF05B /* FBSDKDeviceLoginManagerResult+Internal.h */, - 6A090559352B38A5116A2F0A8B9C1497 /* FBSDKLoginButton.h */, - 172CA916B01ADF01834F21D4BBC99E7F /* FBSDKLoginButton.m */, - 66CE6A6C55FF062323C0728E0A293795 /* FBSDKLoginCompletion.h */, - 5ECDADF39BFF0422B052C8AF0281341F /* FBSDKLoginCompletion.m */, - 71113CD9E60F21CD6045F396953DCB2A /* FBSDKLoginCompletion+Internal.h */, - 626329BFEA37AF9E99A2ABC7DFF906C3 /* FBSDKLoginConstants.h */, - A97FC406D15CA4B86550A496F6988BF2 /* FBSDKLoginConstants.m */, - 7F888E9855668DCC7F64E0402CBE13CB /* FBSDKLoginError.h */, - 2FC55FE8353DEA67B0C980579730F822 /* FBSDKLoginError.m */, - E7CB4A36C71DCA9004167558E6FFB3DE /* FBSDKLoginKit.h */, - D29203C6537617FB954FDD799C384F58 /* FBSDKLoginKit+Internal.h */, - D3091B1C12A13E5647BD49E81D3CF04B /* FBSDKLoginManager.h */, - 1FA46E687E1312187756E021E50CD42E /* FBSDKLoginManager.m */, - ACB25F02D87081973482D519F2156D5C /* FBSDKLoginManager+Internal.h */, - EB03E9ADFEAA91D13AD2155E49EFAC59 /* FBSDKLoginManagerLogger.h */, - FFAF6BD0022B3CEDB7E260EF8F44B4FB /* FBSDKLoginManagerLogger.m */, - 0D74D80556E8DC3CCFB397594080ECFE /* FBSDKLoginManagerLoginResult.h */, - 4EA1A58C1768B29C459BE6D58062AC94 /* FBSDKLoginManagerLoginResult.m */, - 4609ED5B43147AB345743308F07A18A4 /* FBSDKLoginManagerLoginResult+Internal.h */, - 8E97A54636CC271E5BC33FC8F2AD411F /* FBSDKLoginTooltipView.h */, - E94C13ABE0366ABA3DE88BB136000108 /* FBSDKLoginTooltipView.m */, - D130FE1B704C334E307D8657EAF37098 /* FBSDKLoginUtility.h */, - E70EB6CB87C778ADC5A4325EEFF99B01 /* FBSDKLoginUtility.m */, - 3BF274BD1AD934B41EBF4A67A2FC6E93 /* FBSDKTooltipView.h */, - D0D00D31B319D6657AF1BFB3622F4819 /* FBSDKTooltipView.m */, - 6D8EB9D4EFB061BAB7BDBB7950198671 /* Support Files */, + 3C96440D9185AE3A941678207B763B99 /* FBSDKAutoLog.h */, + 322BB0A537527FA0994A50156B99CBC7 /* FBSDKMarketingKit.h */, + AAB48253A189A48F5698BF255E19D18C /* Frameworks */, ); - name = FBSDKLoginKit; - path = FBSDKLoginKit; + name = FBSDKMarketingKit; + path = FBSDKMarketingKit; sourceTree = ""; }; - 413F17C338982D2C5D175743FED4E54C /* Serialization */ = { + 404085CF285AC639C5E9E129089F5EDC /* Support Files */ = { isa = PBXGroup; children = ( - 03C681477C9407E00FE027DB25A56590 /* AFURLRequestSerialization.h */, - A166368F7803FF5D28A6F926C6EA624E /* AFURLRequestSerialization.m */, - 4FD2F4B240BEA72CCF0601DEFB7DF452 /* AFURLResponseSerialization.h */, - BC1E39658FAE36DE0487BC875B578D96 /* AFURLResponseSerialization.m */, + E6EFA89BA8656B849DDFDB267185CFDD /* NSDate_Utils.xcconfig */, + 016C6F7C8A40FD73841130A33A381F63 /* NSDate_Utils-dummy.m */, + ECC8916A1AC1D14DF3C1C92229B40214 /* NSDate_Utils-prefix.pch */, ); - name = Serialization; + name = "Support Files"; + path = "../Target Support Files/NSDate_Utils"; sourceTree = ""; }; 414B65071B6BFD5138E7885FB570F282 /* Targets Support Files */ = { @@ -2136,257 +1828,34 @@ name = "Targets Support Files"; sourceTree = ""; }; - 4DE9667A673F78B67F7C03B3B4BAE7F7 /* Support Files */ = { + 458E19C0F01BD5F617A5919AF14E1D10 /* Resources */ = { isa = PBXGroup; children = ( - 8D5C4E9E659DF465CEACD70EDC09E5DF /* StrongestPasswordValidator.xcconfig */, - 801E0A9A89866BB1388463D16126A85A /* StrongestPasswordValidator-dummy.m */, - 9BF13BC3B2D76E147316C276AC692F1E /* StrongestPasswordValidator-prefix.pch */, + B7ED03638FBAF3D71B5F318304C7768E /* FacebookSDKStrings.bundle */, + ); + name = Resources; + sourceTree = ""; + }; + 4B776994E1743CCF7CFCD5CA11956BDD /* Support Files */ = { + isa = PBXGroup; + children = ( + B48536D934E898ABDE7CEE57D95E5991 /* RZDataBinding.xcconfig */, + D343872EEBAF43CE0DC2F119F06F9039 /* RZDataBinding-dummy.m */, + D4CB6BCFE93681C2148DFC2B8F3E17F0 /* RZDataBinding-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/StrongestPasswordValidator"; + path = "../Target Support Files/RZDataBinding"; sourceTree = ""; }; - 4E0C64C667DD93592FCDE26AC4C6C2BA /* FBSDKCoreKit */ = { + 4EFABB97E16545E4CCA8CE5C3D24B23C /* NSDate_Utils */ = { isa = PBXGroup; children = ( - CEE7900090D53530DA111253F2CB6043 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, - CE2C67768601CAAF60233B174DB92151 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, - E23ABD68532554C46F8B5E911765A163 /* FBSDKAccessToken.h */, - E251366A8B36B8B9C9DC672E8D750278 /* FBSDKAccessToken.m */, - 207EE05BFBF535B0FBCC1B4F35245968 /* FBSDKAccessTokenCache.h */, - 5D200A199F3480AC54156D74567862E5 /* FBSDKAccessTokenCache.m */, - 872397B71CB788624C68B559D4C409E2 /* FBSDKAccessTokenCacheV3.h */, - 64E9867518D59755916C982BC35CF161 /* FBSDKAccessTokenCacheV3.m */, - A71F32979088B96559A98FB6021081D1 /* FBSDKAccessTokenCacheV3_17.h */, - E7B7AB25D5DD7C7CB8A762BDAC5BA64F /* FBSDKAccessTokenCacheV3_17.m */, - B184E5094AB0B36173233CACA23FAD11 /* FBSDKAccessTokenCacheV3_21.h */, - AB9AFF952B2628EEF3D2785E78D3666C /* FBSDKAccessTokenCacheV3_21.m */, - 1DD181996D4B1D7A965555F0BD9DACCF /* FBSDKAccessTokenCacheV4.h */, - 450032CE5D7BD2E90B3183935D3758A6 /* FBSDKAccessTokenCacheV4.m */, - 46035459CD822676C43AC57A7C17623B /* FBSDKAccessTokenCaching.h */, - F887AE57AD2A49338ED76686CC4DD718 /* FBSDKAccessTokenExpirer.h */, - DA654D0F6B5BD3708C8A32ABCAB7F357 /* FBSDKAccessTokenExpirer.m */, - C9E20AA73ED43F96743A6B0090627D94 /* FBSDKAppEvents.h */, - F69FF63557810B667D967581618582B5 /* FBSDKAppEvents.m */, - F094D8A53A77AFCF246030E5859876BE /* FBSDKAppEvents+Internal.h */, - 43FDACBDC768982815404996FC3041F0 /* FBSDKAppEventsDeviceInfo.h */, - 876647EB967D4F5CEB7CB8F4FBB79757 /* FBSDKAppEventsDeviceInfo.m */, - B2FEF6ABC1EA5C7650FB77F74C69D1D2 /* FBSDKAppEventsState.h */, - 0504389A5BE500DFAF6462082446D938 /* FBSDKAppEventsState.m */, - 46F22A2A8EF3BD4B1F683B08B3956F91 /* FBSDKAppEventsStateManager.h */, - 21382B817A2018EE60879362EEAA5FE3 /* FBSDKAppEventsStateManager.m */, - 7E73B3A37690059AD6CD0A5E0C51DC60 /* FBSDKAppEventsUninstall.h */, - 08FCBEFF7147CA5ADDE141AAE8CFEA4E /* FBSDKAppEventsUninstall.m */, - D73898976CB279C5DCCEBAE629A98B92 /* FBSDKAppEventsUtility.h */, - 8B56D76D2BF08891F4D7012036DCE314 /* FBSDKAppEventsUtility.m */, - 3ECC32889FE623554A78B0832BFC075D /* FBSDKApplicationDelegate.h */, - EDC28F0107C2466419BBD9DE692C5399 /* FBSDKApplicationDelegate.m */, - 1E40C5CA1634FBE648F7631DA237EDE0 /* FBSDKApplicationDelegate+Internal.h */, - BE26F71E3C57510BE75F06CA83292052 /* FBSDKAppLink.h */, - A5BFAF03F4C3972E82C33C9CC26CDEBD /* FBSDKAppLink.m */, - D7F72703BE3D6FC73268CEC1B54CE873 /* FBSDKAppLink_Internal.h */, - CF14E773AD209A4DBC35D768C2F689FF /* FBSDKAppLinkNavigation.h */, - 1F544822CB217B6B1ABDF563043A86A3 /* FBSDKAppLinkNavigation.m */, - 898F592C01E433162EEF7551D2AAEFB6 /* FBSDKAppLinkResolver.h */, - AA7D9A7CB43B42B8194FDB3FC3BFA0F7 /* FBSDKAppLinkResolver.m */, - CDF86883A595780271A818F99992EE1B /* FBSDKAppLinkResolving.h */, - 69BB3407552D83DCDB500A2BCAC62AA9 /* FBSDKAppLinkReturnToRefererController.h */, - 6858509AE4AB5B41576F24603F15520C /* FBSDKAppLinkReturnToRefererController.m */, - 588036BA015152EA49785DA03F133B1D /* FBSDKAppLinkReturnToRefererView.h */, - E3DB002F04E427756444ACE788547734 /* FBSDKAppLinkReturnToRefererView.m */, - 3FB864BD98F199EA7151B86D7776B8C3 /* FBSDKAppLinkReturnToRefererView_Internal.h */, - 5FFDDE1BDCD388670D4D56FA7A5837D7 /* FBSDKAppLinkTarget.h */, - FC325C3C3D911B47F0AA694DA05BD71B /* FBSDKAppLinkTarget.m */, - A76088022DFD59817505A370A8613F5D /* FBSDKAppLinkUtility.h */, - FF5BDB925B9438AB881A5CE3EC32A419 /* FBSDKAppLinkUtility.m */, - 710A0BE4E9782F28B5400B86A0F9E4B8 /* FBSDKAudioResourceLoader.h */, - 3F49F1FD84C52521B107B72B7B54DA72 /* FBSDKAudioResourceLoader.m */, - D217711660E1C424F327E5DEFF4DEB5F /* FBSDKBase64.h */, - 955C1438A6C55A109024ECFE0E59F2A6 /* FBSDKBase64.m */, - 77AFBC5B46A02911078C7A0E7E9BB0F6 /* FBSDKBoltsMeasurementEventListener.h */, - 161DDD68AD6642631788D91C227710A2 /* FBSDKBoltsMeasurementEventListener.m */, - 00CAC1E14DB79A2B3778FA8099224F62 /* FBSDKBridgeAPICrypto.h */, - B1042C4A000AF83F8B9EEEE20CD52608 /* FBSDKBridgeAPICrypto.m */, - E63D6E4DE52529EAD9459120A230E416 /* FBSDKBridgeAPIProtocol.h */, - 116BDADEF0E5671E2778C019325BDDC9 /* FBSDKBridgeAPIProtocolNativeV1.h */, - 152F87FDA18CCB12396926DB0DFF6EA1 /* FBSDKBridgeAPIProtocolNativeV1.m */, - 098D32B91683044612866E4D6B655190 /* FBSDKBridgeAPIProtocolType.h */, - 0CD3FCF450E8C38314DB299B1C7AD6C6 /* FBSDKBridgeAPIProtocolWebV1.h */, - 91B843E9A83B5038ED6DD189A70F48C6 /* FBSDKBridgeAPIProtocolWebV1.m */, - DD53C695F3ECDB80A46506C6E2F9A25A /* FBSDKBridgeAPIProtocolWebV2.h */, - 0AC895753CD9C702066BD2354EFB381B /* FBSDKBridgeAPIProtocolWebV2.m */, - C42A7B280E657A70E6DF71DAB0887DB3 /* FBSDKBridgeAPIRequest.h */, - 9D5E98EF533DB073454B50533F063ACE /* FBSDKBridgeAPIRequest.m */, - E103652089DD85A4A5A16985A7C35A23 /* FBSDKBridgeAPIRequest+Private.h */, - 8847F10A21BF43DFF71395A3E1AB5A59 /* FBSDKBridgeAPIResponse.h */, - 3ED6A22CEB2E40168F13BFCD2FC0DBC3 /* FBSDKBridgeAPIResponse.m */, - AAD0B5A748C81355837677EBC835CD84 /* FBSDKButton.h */, - A4A3712E9464769F7B299FFD4429F1B8 /* FBSDKButton.m */, - F1BF5543D80B51DF0A66E88F653F3435 /* FBSDKButton+Subclass.h */, - 1C281D535337DDB08FADBA3886092C98 /* FBSDKCloseIcon.h */, - 97652E23694192076D88B7C98EA13878 /* FBSDKCloseIcon.m */, - 87ED635594827F2E8464EDA2788E6D55 /* FBSDKCodelessMacros.h */, - 7A7FDB37BF24244A3C52060B82A5DB49 /* FBSDKCodelessParameterComponent.h */, - CC7C2F2E2DE9B376DAAC74105A9F6666 /* FBSDKCodelessParameterComponent.m */, - 9302213966977B870A5EDA47DC66C8AD /* FBSDKCodelessPathComponent.h */, - F5D2FFE55155C7A7943B0D43B2ED6874 /* FBSDKCodelessPathComponent.m */, - B12311AD0419602DF0FDD90C95BAE7F3 /* FBSDKColor.h */, - 82A9CE801509DD721875DFD93FE32730 /* FBSDKColor.m */, - 369556203A1B8AC26266ABF8A2697A2A /* FBSDKConstants.h */, - 2D257A2F765F81E2A8F1698939933D63 /* FBSDKConstants.m */, - 8F2186D54B2A440BC97AFEBCB1544D9B /* FBSDKContainerViewController.h */, - BF510F166B6FC7160538AC711EAC68A1 /* FBSDKContainerViewController.m */, - 8F6435D1C81D2CCBF8334F92E3678802 /* FBSDKCopying.h */, - C74DE409E2F8EB010B597C7B60FC2295 /* FBSDKCoreKit.h */, - FA1CA53BC015968B8A7D5A2281145D6C /* FBSDKCoreKit+Internal.h */, - C5F23AC255A5CC190D702640CF82EEFC /* FBSDKCrypto.h */, - 08C8C47139DE7A2034FF8DAFB81C47AD /* FBSDKCrypto.m */, - 193E4E44508695DE7A55DB438C385177 /* FBSDKDeviceRequestsHelper.h */, - 42853A0181BFFC8BD67A522A40B3D75C /* FBSDKDeviceRequestsHelper.m */, - DE60FB232ECB173CC83D28B8E9FD5C37 /* FBSDKDialogConfiguration.h */, - A4AA503239425F3D877CFF2FE3814BBF /* FBSDKDialogConfiguration.m */, - AC0C36F361714BF3701DBE769DCC4D51 /* FBSDKDynamicFrameworkLoader.h */, - CB33BC990E6388D94448D83125E942C3 /* FBSDKDynamicFrameworkLoader.m */, - CA6815C15E4DF3E1D99EFC04DE634168 /* FBSDKError.h */, - 3BBE8F3262FA519552E8C2072923D34C /* FBSDKError.m */, - 516C170C34D2B97E2B3F13FB5D3B92E2 /* FBSDKErrorConfiguration.h */, - 9D2D8AC6F61FDC1242D2122868466363 /* FBSDKErrorConfiguration.m */, - 35851A4867C0A3869015CB9897C6113B /* FBSDKErrorRecoveryAttempter.h */, - 1823C6C3EDE6A438390AF42376A3B429 /* FBSDKErrorRecoveryAttempter.m */, - FED8B893DA37A3224223A9BFB0E51281 /* FBSDKErrorRecoveryConfiguration.h */, - ED9E4D474B9CAC5DDD2A39AD25683A14 /* FBSDKErrorRecoveryConfiguration.m */, - 038CD0BC7F1EB85889C5F6485FCE82E2 /* FBSDKEventBinding.h */, - 03544C46C5B4889BCB1205F7BF2604A1 /* FBSDKEventBinding.m */, - 5BB9A02B49FC5E7C8A2B9A5D4DA1F980 /* FBSDKEventBindingManager.h */, - 28A68BE6ACD020D05F047DD6D0F256F7 /* FBSDKEventBindingManager.m */, - 95CE3638CD655496A931B5F3D3EE6709 /* FBSDKGraphErrorRecoveryProcessor.h */, - 382F7323EE572C7B5BEEE17B4A8BC464 /* FBSDKGraphErrorRecoveryProcessor.m */, - 718E9C888B54AD428B7A5D9DF4D5ED56 /* FBSDKGraphRequest.h */, - 7D4C3620B470F0BE002263030752F9B9 /* FBSDKGraphRequest.m */, - CD0505928D66817CBB6EF5B7DE3C9CFB /* FBSDKGraphRequest+Internal.h */, - CAE9492312C126DB3DCD486FF4353C55 /* FBSDKGraphRequestBody.h */, - 96469ECD1F7F9EE7F98E75A3797FDB8E /* FBSDKGraphRequestBody.m */, - A664539EAC41F63765859137D417FA54 /* FBSDKGraphRequestConnection.h */, - 942CD0883F237C1B6475AB8084F6CBDD /* FBSDKGraphRequestConnection.m */, - 805B50B7ED432F0E73C491477AA168B5 /* FBSDKGraphRequestConnection+Internal.h */, - 0AA8B735DA45CEAD444BE76EBAD0A239 /* FBSDKGraphRequestDataAttachment.h */, - 31AC3BF6268C5138FFE5B801AAED212D /* FBSDKGraphRequestDataAttachment.m */, - 41EA81D366F1C2DA0E3C48520066FE1B /* FBSDKGraphRequestMetadata.h */, - EA6EB31152E17AD260E9078B9EF5B971 /* FBSDKGraphRequestMetadata.m */, - 0520C7E3795A436FFB2969476664B7D9 /* FBSDKGraphRequestPiggybackManager.h */, - 255326F6938207707C684919F7491B1A /* FBSDKGraphRequestPiggybackManager.m */, - F1E075C82DF8DE948E2EC4A3B63A3C0A /* FBSDKHybridAppEventsScriptMessageHandler.h */, - 0B90DE54CC161DDA1C75DDD40CF7FDA1 /* FBSDKHybridAppEventsScriptMessageHandler.m */, - 21A4A321D36F5A7AD77F203FBB536116 /* FBSDKIcon.h */, - B3B28FA59F82B358B1D10BD0A881E27E /* FBSDKIcon.m */, - 5D9112F85BC4C12A79ADCAFEBD6501AD /* FBSDKImageDownloader.h */, - B19299E53733482BCF184D69D0D9D4F4 /* FBSDKImageDownloader.m */, - 3278C19DB886D77F2D550A9BBEDFB91A /* FBSDKInternalUtility.h */, - C7B095BFA92E7D5342D36E7B4BEFA6CC /* FBSDKInternalUtility.m */, - A2F2629D5E6336FD8A4E7A0CD2C69259 /* FBSDKKeychainStore.h */, - 176E870DCB3AF59CD26DB552E58F97DE /* FBSDKKeychainStore.m */, - 521DC8C943ADDC23A72DB305ED5CB36A /* FBSDKKeychainStoreViaBundleID.h */, - A20E26A23FB1A3AD970DC56195FABB73 /* FBSDKKeychainStoreViaBundleID.m */, - 949B94603FCE91B73D37C7942A1DC84A /* FBSDKLogger.h */, - 1798DBD97EF8F8F206F34CCF900897F6 /* FBSDKLogger.m */, - EBB57EC1C4725BDEC0C2D9A90660ACAE /* FBSDKLogo.h */, - 32A83024C86330332FE1464C4AD7953C /* FBSDKLogo.m */, - 5D5D5A109336011BE64863B8BBDCF230 /* FBSDKMacros.h */, - FE6EABB3BDE91D97C148A51DE2050436 /* FBSDKMaleSilhouetteIcon.h */, - 978F9D4BBECDC7A7F151BB55D0C12299 /* FBSDKMaleSilhouetteIcon.m */, - 21AD0E47271019E55E663568E2B00521 /* FBSDKMath.h */, - B22E0A3A9166CC492A6B1197C5CEBFF8 /* FBSDKMath.m */, - 696A3A1D99A35202B4526CF2357B74A5 /* FBSDKMeasurementEvent.h */, - 2697FCCB73BA3609AEBDD786D5234175 /* FBSDKMeasurementEvent.m */, - 4CC2B7BDEE80DDFF3EA3524AB6E7999D /* FBSDKMeasurementEvent_Internal.h */, - F50D11F39AE29BB5A0578C32B1DD4D06 /* FBSDKMonotonicTime.h */, - 803FFB178186C751D5B8D54CA328423A /* FBSDKMonotonicTime.m */, - EC3FEF4D8E0DC876D4BEC311CFC5D274 /* FBSDKMutableCopying.h */, - 1E15D107A27585EB378759650D71B11E /* FBSDKPaymentObserver.h */, - 0999C5B871B290CD16A0DD8EC0D54670 /* FBSDKPaymentObserver.m */, - A2ABDF177C47796393C929E00486BBD2 /* FBSDKProfile.h */, - 16462DED9F55E0ED16FFE38C1ED53CD1 /* FBSDKProfile.m */, - 9B179CB1A2CAA77714778F5DB7EB59D2 /* FBSDKProfile+Internal.h */, - D1D89136781DE0949112D15F9A3DD031 /* FBSDKProfilePictureView.h */, - FC174185FAB7A4F971B645D5474701EF /* FBSDKProfilePictureView.m */, - 20A06BD9E7B94EE8EDE93D8132A6477B /* FBSDKServerConfiguration.h */, - C3E3FF9898F600C508E5121B11879A62 /* FBSDKServerConfiguration.m */, - E357E32EA8D6A9B3888D3596C3AA3776 /* FBSDKServerConfiguration+Internal.h */, - 2A8C19BF201CB6D0FEAE915501EAB18B /* FBSDKServerConfigurationManager.h */, - D29168074700CD130E3196CF5B50654D /* FBSDKServerConfigurationManager.m */, - EF207F7E0D5311B1FF52C426AEE0A0C5 /* FBSDKServerConfigurationManager+Internal.h */, - 7DE8E9D0C166D342CA5EA91030B92A5D /* FBSDKSettings.h */, - 23B0C08AA81CFF7D87EC3BD5D0CE1B4B /* FBSDKSettings.m */, - 8CF110C040A6C071E0CCA79CE2745EE0 /* FBSDKSettings+Internal.h */, - 5619B1BEE713E742B53D6FDA6C86B8C0 /* FBSDKSwizzler.h */, - 2A047C05FBFBE85A1CE33DE614DF3F33 /* FBSDKSwizzler.m */, - B13B325A3DE8D33ECA3430517021C0F8 /* FBSDKSystemAccountStoreAdapter.h */, - 24E61FE78C6598F0089A36428F1DD048 /* FBSDKSystemAccountStoreAdapter.m */, - 40D0360875987A8961CE4CDC11E76684 /* FBSDKTestUsersManager.h */, - 5BE543CFC04F0279346707BD5FE5A8DB /* FBSDKTestUsersManager.m */, - 50B432BB73B3BB63AB5FD7534F7D1B38 /* FBSDKTimeSpentData.h */, - E9C89C465DA4E5F451869D6A411A7A9A /* FBSDKTimeSpentData.m */, - EC0CCAE8180310F27F4D45B4C566DFFD /* FBSDKTriStateBOOL.h */, - 51EBFAD0C0E40885ED2A77D75DE53222 /* FBSDKTriStateBOOL.m */, - 712F3FF5530F663771950BCC0CF0B2D4 /* FBSDKTypeUtility.h */, - 1F1D6EF45199DB45509D1E7117799302 /* FBSDKTypeUtility.m */, - 894A257D948EE417BCF17996CA3F53CE /* FBSDKUIUtility.h */, - 48930B14EAE31BA46846BE06AE185384 /* FBSDKURL.h */, - 41D7537A4D4D5D37F50A1831829FD47A /* FBSDKURL.m */, - 35BE26673679AF3E2590326B5CA04ECA /* FBSDKURL_Internal.h */, - 057B5D00B60E06F193E8BC4B3E2444C3 /* FBSDKURLConnection.h */, - 44E358B4FA39962000122487194B2760 /* FBSDKURLConnection.m */, - 75DDA03055953C05A58106E8AC33C3FF /* FBSDKURLOpening.h */, - 3EE551CD8266F254A5DAA54EDB79C7BA /* FBSDKURLSessionTask.h */, - BC8982068C4262C37B85828DADB96866 /* FBSDKURLSessionTask.m */, - 73168AB5AEFEF68BF6160910269CA1CE /* FBSDKUserDataStore.h */, - BFD2E4193FCBADCB13E557AEDEE981BA /* FBSDKUserDataStore.m */, - 062D98265A110DA997A2F5C88D7BC54C /* FBSDKUtility.h */, - 36C15D5B7538C6F932A0E92F0CD7778D /* FBSDKUtility.m */, - DEAEF601660FF4DF3234E9612BDE6814 /* FBSDKViewHierarchy.h */, - 58C10B7ED365FB6C3FC5BF7C540812B8 /* FBSDKViewHierarchy.m */, - BD0EDE71BBA1CCD2D49375A35F02988C /* FBSDKViewImpressionTracker.h */, - 8963B8734D6A668C052D29DFAFA4F085 /* FBSDKViewImpressionTracker.m */, - 55AD2686F264B001D9B23B2E667BDC0A /* FBSDKWebDialog.h */, - 9C99F264193E3ADE6EAA13156157DFD8 /* FBSDKWebDialog.m */, - F04DCF6C3EF993D25317DBCB0D789345 /* FBSDKWebDialogView.h */, - A5A21E87FC761D2AB2656E8E2DBC885F /* FBSDKWebDialogView.m */, - 8CAF11D909749FDA9F2ED0794DBFE7AE /* FBSDKWebViewAppLinkResolver.h */, - 876BEDE992F7C6D99443EF18BFE22429 /* FBSDKWebViewAppLinkResolver.m */, - 9D7F7AB5505D9267E26E5F245D033DC1 /* Resources */, - 613EE9CFF68BEE578D4A84BAC82FADA5 /* Support Files */, + D45E4CB71CF6834638A7E5FB3A6AA658 /* NSDate+NSDate_Util.h */, + C5304D5A185D69A482777C150506A2BA /* NSDate+NSDate_Util.m */, + 404085CF285AC639C5E9E129089F5EDC /* Support Files */, ); - name = FBSDKCoreKit; - path = FBSDKCoreKit; - sourceTree = ""; - }; - 4FE67B89F7A94CE787A4D27629F1EAD8 /* AppLinks */ = { - isa = PBXGroup; - children = ( - FF2A391F4328DB787D7D6C604A041035 /* BFAppLink.h */, - 6A02AB7FDED3B5C6D22B85644965FF2B /* BFAppLink.m */, - 2153DF21CC1242FEC6CEAFC1D4C2B1F9 /* BFAppLink_Internal.h */, - 7E5C60BEF924ADC12560A04F338BBB59 /* BFAppLinkNavigation.h */, - 6D751AFFF300A2F684AE78260EB03685 /* BFAppLinkNavigation.m */, - 35F4F2911C50F7A10EA4CD2EABA60A49 /* BFAppLinkResolving.h */, - 2964338CB51713FCF4178C7C529ACCAD /* BFAppLinkReturnToRefererController.h */, - AA77261700278C71645546302461BF34 /* BFAppLinkReturnToRefererController.m */, - 087B6006953245BE2307CFE4FE8A79C5 /* BFAppLinkReturnToRefererView.h */, - A0E40EF9DC8E81ADFAF25AC32D7EABB2 /* BFAppLinkReturnToRefererView.m */, - 4E93CE678CED3D184D0F8007F9391C4B /* BFAppLinkReturnToRefererView_Internal.h */, - 746988DB73522DD2D4EB7DFEC771D31A /* BFAppLinkTarget.h */, - 9D6CB9BAB3FC03DEEC9B261FC2A7FDBA /* BFAppLinkTarget.m */, - 69A248BFCCB5D4AE6EE2607BA308DBA7 /* BFMeasurementEvent.h */, - 5AC0138A592F04FD4FC9F9A9BB3A0B99 /* BFMeasurementEvent.m */, - E3891458C3A4B448665461397F352DA7 /* BFMeasurementEvent_Internal.h */, - E65882AA0565553B48541CD07055A7F5 /* BFURL.h */, - 47529291057D7967C6EC1395C1D3517E /* BFURL.m */, - 89DC8847612A5AB4B27182CD26A19A76 /* BFURL_Internal.h */, - DAB35FF89153EE0C74104A17970026A4 /* BFWebViewAppLinkResolver.h */, - 51C40578330A9198354C2DCB5AFC5785 /* BFWebViewAppLinkResolver.m */, - ); - name = AppLinks; + name = NSDate_Utils; + path = NSDate_Utils; sourceTree = ""; }; 56E3498721C07CEBAD1B748137B62CBA /* PNClasses */ = { @@ -2407,118 +1876,267 @@ path = PNObject/Classes/PNClasses; sourceTree = ""; }; - 58DE1F13715D0AE6CA8A279D32F3832D /* UIDevice-Utils */ = { + 598F78F17A5253CD929D93B8F1FDF185 /* Support Files */ = { isa = PBXGroup; children = ( - 17B879F919DEDACAC5C1C25842290A8F /* UIDevice-Hardware.h */, - E9D17E600DCFB32A0E02AAEF855AAFEE /* UIDevice-Hardware.m */, - 37FCC04DA649647BFEA7F426F329F169 /* Support Files */, - ); - name = "UIDevice-Utils"; - path = "UIDevice-Utils"; - sourceTree = ""; - }; - 5AB9ADA6439A3FF01A954CC1958FAEBB /* Support Files */ = { - isa = PBXGroup; - children = ( - C84799466FAEA7DDEA9DD46620CA93E6 /* RZDataBinding.xcconfig */, - 739BA53B10D2894EFCF6A2AF08454C11 /* RZDataBinding-dummy.m */, - FD85A1234712148DBB0F85A07FF3DCE7 /* RZDataBinding-prefix.pch */, + 22447F856E4F94AE2C8C7FECED411A11 /* PureLayout.xcconfig */, + 58EE28538DC768AED75EC8F88A6C5D17 /* PureLayout-dummy.m */, + FACD35B872D5260C84424DEDD0F0684E /* PureLayout-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/RZDataBinding"; + path = "../Target Support Files/PureLayout"; sourceTree = ""; }; - 5DAEAE5182B6663A676D609E4A2C1E57 /* CodFis-Helper */ = { + 5A3702D0A2A2227A8F3A1BC6A1B0A6AF /* FBSDKCoreKit */ = { isa = PBXGroup; children = ( - 945553D4E0D0A23E3A6D9AFE6D11DE59 /* CodFis+Helper.h */, - 73093867BFAE6EBBDF7A5D9F91A222CA /* CodFis+Helper.m */, - 3CCF53AEBA6B2AA7D485B661C65FD727 /* CodFisResponse.h */, - 1D63D39F5A65930A719EB5CA354755F9 /* CodFisResponse.m */, - C643735F7E92D45BEA621C1ABBCBF3DA /* ResponseConstants.h */, - A8BB7CB0268D269DBE4F5B0469EBA1EA /* VatNumber+Helper.h */, - 3232F7829A1283E3AF2D1C4E6E9CBC3B /* VatNumber+Helper.m */, - 18E40FE79CF2AADE3062B20A5D737D76 /* Support Files */, + 286F1697FD7C5628424DF2BAB4A1277F /* _FBSDKTemporaryErrorRecoveryAttempter.h */, + 1E057CFAFE6D8AF73684B5D93F4DADF4 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, + BFB465FEE0F879B0C7518369A2014718 /* FBSDKAccessToken.h */, + 7E4572D806AA1BBC81969ADFB3DDCF50 /* FBSDKAccessToken.m */, + E409953C74E4DB7333D72C876F9BA009 /* FBSDKAccessTokenCache.h */, + 485FDE7300A8557FBE3C82FC07576F1B /* FBSDKAccessTokenCache.m */, + 657D97DDD493FB72F983D3A29CD5B2A3 /* FBSDKAccessTokenCacheV3.h */, + B386F32BA189CDE63C05CEDFCBEEDCAC /* FBSDKAccessTokenCacheV3.m */, + 0C0D33F8EDB97D1BB3A6698D0969E48A /* FBSDKAccessTokenCacheV3_17.h */, + 2F178C88F2A7C0B9E96D92CF14D88A6C /* FBSDKAccessTokenCacheV3_17.m */, + BF6E36849D45C54AF16BC7613DA07389 /* FBSDKAccessTokenCacheV3_21.h */, + 702693C46328669C71367D27FB8C8711 /* FBSDKAccessTokenCacheV3_21.m */, + 10E26528C336427F30503DE4A1011920 /* FBSDKAccessTokenCacheV4.h */, + 1E7F45333DDB870BCE9AF8768954BD3F /* FBSDKAccessTokenCacheV4.m */, + BDCFE78A9B7338D71EF10611286942EF /* FBSDKAccessTokenCaching.h */, + 2B71E258EBC4E3E8111A9DBC91E5C732 /* FBSDKAccessTokenExpirer.h */, + DB024A1E154953B89051547C10E4301A /* FBSDKAccessTokenExpirer.m */, + 452C7FD4F4980E034D8F3625E6802B23 /* FBSDKAppEvents.h */, + EF8ECFEDAEA8949608A114BA9DC9953A /* FBSDKAppEvents.m */, + 6573349E7506EF7195DC6A61B7B9BBC1 /* FBSDKAppEvents+Internal.h */, + ADA3B66518956C1B98FC6A0458074251 /* FBSDKAppEventsDeviceInfo.h */, + 13B7AB4D7E1AAB4D06CEAFFCA1E9A155 /* FBSDKAppEventsDeviceInfo.m */, + 0320AB889A5F756C6180D95467F45BC9 /* FBSDKAppEventsState.h */, + CDFA2D80B9175C43B70783FFA8D28F5D /* FBSDKAppEventsState.m */, + 36F3F210A7A242FE1FD916F37CBADDCD /* FBSDKAppEventsStateManager.h */, + 67F11EE028D9C48A8BA8812ABDEA5078 /* FBSDKAppEventsStateManager.m */, + 2D6A47036C2A694D1BB86F6AB2ADDF43 /* FBSDKAppEventsUtility.h */, + A4816B197A4DA843B5BAE6D7B991B453 /* FBSDKAppEventsUtility.m */, + F32FCB8E3AAC327AB06D88FAEFD089B6 /* FBSDKApplicationDelegate.h */, + B57BD272FDCBE8BC82C09FFC50A9C18A /* FBSDKApplicationDelegate.m */, + 7113609688C45AD2C38B06A469142179 /* FBSDKApplicationDelegate+Internal.h */, + 0FE2233237B62458DFA0E63C379DB8EC /* FBSDKAppLink.h */, + 4A2E3485F3C660F0B0EB6CE227843E9B /* FBSDKAppLink.m */, + 671E9A37F3BF51A1FEA82A709ECB5C18 /* FBSDKAppLink_Internal.h */, + AD0C046DCDA81E4A1AF7E93D308FF2FD /* FBSDKAppLinkNavigation.h */, + 1769FEF7D2E02007FE3D8ACA91F935EB /* FBSDKAppLinkNavigation.m */, + 4641DE8A1AECD93540A1398B11FD6328 /* FBSDKAppLinkResolver.h */, + B2817CB6A61A68540B51B6D215B82C75 /* FBSDKAppLinkResolver.m */, + 95CC9B2059E9A9EE830937457877E555 /* FBSDKAppLinkResolving.h */, + FD78411329920E587B7AFF79A4FB2134 /* FBSDKAppLinkReturnToRefererController.h */, + A39897F17E8BC2DE3AD4A201E27B9062 /* FBSDKAppLinkReturnToRefererController.m */, + C87EF2B762F2DB877803CF34F613FC3C /* FBSDKAppLinkReturnToRefererView.h */, + 121C8A0ECC80BE585FD4A730A100FD0F /* FBSDKAppLinkReturnToRefererView.m */, + 61F4EB45E0D70DF1C15C5E1396FF36C0 /* FBSDKAppLinkReturnToRefererView_Internal.h */, + 654EA83F4A6CF0F0BAC50997B02472E0 /* FBSDKAppLinkTarget.h */, + D5AD69651EADB994203ABEA64FF4C118 /* FBSDKAppLinkTarget.m */, + D2DE562258E02C8B31B463F219B25B03 /* FBSDKAppLinkUtility.h */, + 46F8A260556054D99729150E532B7909 /* FBSDKAppLinkUtility.m */, + 6D6F2D19BDEF7351A7D3AC3C578FEAE4 /* FBSDKAudioResourceLoader.h */, + 289E3A20F1A86561270D02B85D1B4997 /* FBSDKAudioResourceLoader.m */, + D7651BF565230AC7C42B4C8AACCB71E2 /* FBSDKBase64.h */, + FDE981D03BCA1801082CECF58AA2154A /* FBSDKBase64.m */, + 579D3460161136F30D8823384E6BED3F /* FBSDKBoltsMeasurementEventListener.h */, + 2CD56E4434B18BEDB65AC4DE56E327AC /* FBSDKBoltsMeasurementEventListener.m */, + C762D8D04881F3CB10A2A0EC699EEA50 /* FBSDKBridgeAPICrypto.h */, + BBE54080F26800F1C54978D03CB38395 /* FBSDKBridgeAPICrypto.m */, + 98C87D8204E8239B6D9C648F1EC4C4DB /* FBSDKBridgeAPIProtocol.h */, + 995E14547E0A7F21450289297BF529EE /* FBSDKBridgeAPIProtocolNativeV1.h */, + FD7DA77F4C2F9A340BA2DA0CC08AA2E9 /* FBSDKBridgeAPIProtocolNativeV1.m */, + BFE984503E6165E0649B53AE9BF49BF2 /* FBSDKBridgeAPIProtocolType.h */, + 38D9E442F484C4F1DC9544D140367F44 /* FBSDKBridgeAPIProtocolWebV1.h */, + F2D4951CDBB16ACA06C05E8650AAB14F /* FBSDKBridgeAPIProtocolWebV1.m */, + 4384BD4D2EBA42B4DB88C818E5DFF02C /* FBSDKBridgeAPIProtocolWebV2.h */, + 673CC74EB7BA89ABA32F2A7AB0DCC25D /* FBSDKBridgeAPIProtocolWebV2.m */, + 68D64A1F9DC4EB4F1017B0BC9B432FB8 /* FBSDKBridgeAPIRequest.h */, + 1C187085E02BD1208D982095A76F6866 /* FBSDKBridgeAPIRequest.m */, + 3C035D4B7C25EB6D02048E013706A803 /* FBSDKBridgeAPIRequest+Private.h */, + EBDE76588719717B85EEA3CFE6CBBA5A /* FBSDKBridgeAPIResponse.h */, + 64AF2E5E93CD0F51FCC5C417AA5254C7 /* FBSDKBridgeAPIResponse.m */, + 82FD9D340118B39EF705BF5AB916C9EA /* FBSDKButton.h */, + B4A98C0B59FEC0349F4C4B75BD6EDBB7 /* FBSDKButton.m */, + 9BE971BA40C25C7BF9DD99A9D19C81DD /* FBSDKButton+Subclass.h */, + EAF9D928B205ECEF1E1AC6010234DB66 /* FBSDKCloseIcon.h */, + 64A54F9B05C5BC6EC4D3ED3ED6E31663 /* FBSDKCloseIcon.m */, + 0F8092094B355092F88A0B6DFB5811F5 /* FBSDKCodelessIndexer.h */, + FEABE49D563B0FD8D448C09E863E70CB /* FBSDKCodelessIndexer.m */, + B380C3EF31E744E68A14563A92BD6111 /* FBSDKCodelessMacros.h */, + EC4B71AE96D1A5D627E72497D1DC6C23 /* FBSDKCodelessParameterComponent.h */, + 59CEC6EF96D22D27B07018193AEDD9CF /* FBSDKCodelessParameterComponent.m */, + B9F7937AACA50141FC8E4E3252B6E1F2 /* FBSDKCodelessPathComponent.h */, + 335E80A801C5F0B8EA0C340F6A2DA1B4 /* FBSDKCodelessPathComponent.m */, + 2CD0F9B6480334A437F00EAFB30C5490 /* FBSDKColor.h */, + 0D904820105D537D53D9CDAA0F4B0390 /* FBSDKColor.m */, + 19F19F5B077D4973A0CCCF126880FE82 /* FBSDKConstants.h */, + A1B5C59D4E929E27E274D161365F623D /* FBSDKConstants.m */, + DAE9711C8DC7FC7028985982F9773366 /* FBSDKContainerViewController.h */, + 01BC45AD58138BABB85F6740996816FA /* FBSDKContainerViewController.m */, + EB408E69B1B8079E81A5B47D7C42E525 /* FBSDKCopying.h */, + 4F3F5F3BDA07EC4ECE61A1B0E4D70395 /* FBSDKCoreKit.h */, + E85CDDD6E6B68C045A5391D0C3AE10B3 /* FBSDKCoreKit+Internal.h */, + D220B834A39FAB9DD3F2CEFB81B1F433 /* FBSDKCrypto.h */, + 4E5C73A34BB2A13E5A8AE866E6F02D54 /* FBSDKCrypto.m */, + BF87EA89298D0CC3B0A9CF1DAAC1FA9C /* FBSDKDeviceRequestsHelper.h */, + 4DC3AF20751CE66E2D57A518D67CACF1 /* FBSDKDeviceRequestsHelper.m */, + 058B8504288A93E1C2BCA07E4C01BCDE /* FBSDKDialogConfiguration.h */, + 17B07B08A44901B442EE332A9C0BDB37 /* FBSDKDialogConfiguration.m */, + 485B5A26EA002FAA88FC2BE02C63F8F3 /* FBSDKDynamicFrameworkLoader.h */, + CBD19A36E25066B29EA821819854C135 /* FBSDKDynamicFrameworkLoader.m */, + C811548BBAD66F3A22BAB320366CB9E2 /* FBSDKError.h */, + 8A160288374D399361D96BB87C0F0389 /* FBSDKError.m */, + BAEC1D04287E7AB01D4D8CF62DED3495 /* FBSDKErrorConfiguration.h */, + 770095613E5B5A03B157948E02F77487 /* FBSDKErrorConfiguration.m */, + 3D10C44817DB43A6E8F62B37FF8FCC7E /* FBSDKErrorRecoveryAttempter.h */, + DE4DEBDAA197887EC06CB600F6048E0C /* FBSDKErrorRecoveryAttempter.m */, + DB07A2A496833FE81867521D39D2FF91 /* FBSDKErrorRecoveryConfiguration.h */, + 8034D248C388C25F4A2F229BCFDCE2BD /* FBSDKErrorRecoveryConfiguration.m */, + 6A6176A09A35B2F5F9F20DA1ED081E48 /* FBSDKEventBinding.h */, + EFC9AD8BC8F6BEFDBC761B005AD2E167 /* FBSDKEventBinding.m */, + F0AAED51171EAC5942700BC2218C89D2 /* FBSDKEventBindingManager.h */, + C2B72F1647DE757CB0BF9D0C01397FE6 /* FBSDKEventBindingManager.m */, + A0A30EA7D3C07597C704B556AA795310 /* FBSDKGateKeeperManager.h */, + 52D54A1262183BE2303202BC73DEC049 /* FBSDKGateKeeperManager.m */, + C54A3D5DFA79A22C7935EE0CD80898B2 /* FBSDKGraphErrorRecoveryProcessor.h */, + 4D54A9F46B6EB907BCD2C84BDC8EFABF /* FBSDKGraphErrorRecoveryProcessor.m */, + E1BC5DBB5D548FD1B646BDB961D94149 /* FBSDKGraphRequest.h */, + 2DC961768C16B735AD04D0D2AD74AF8A /* FBSDKGraphRequest.m */, + 14E0671FE5A61649B1C76CEE43476EB0 /* FBSDKGraphRequest+Internal.h */, + 12DE2FF5B3A0AD9E1F9DBC9F2290C5B4 /* FBSDKGraphRequestBody.h */, + E6DE64501D9A617BC0052FB3EC5F98AE /* FBSDKGraphRequestBody.m */, + B6F2A4C4D0967284E0D0FAC0BF68CE4A /* FBSDKGraphRequestConnection.h */, + 461F225C10C831BF56A7A0642884B232 /* FBSDKGraphRequestConnection.m */, + 1B8E843F02992F19DE425D86E28546DB /* FBSDKGraphRequestConnection+Internal.h */, + A3B7E755B0BC9F40D51031611DCE0B35 /* FBSDKGraphRequestDataAttachment.h */, + 859B23362F4273474F1FF2202824CACB /* FBSDKGraphRequestDataAttachment.m */, + 3153FE2486FEC2BF286C9A3D1945D053 /* FBSDKGraphRequestMetadata.h */, + 5369FE224A2A381FB95EC2120A973CCE /* FBSDKGraphRequestMetadata.m */, + A6A035E62F3EA8A3A9D03CB85F803E00 /* FBSDKGraphRequestPiggybackManager.h */, + 7B0D6DAA93F41734BC67BF47FD0E9D45 /* FBSDKGraphRequestPiggybackManager.m */, + DBC2ABA53C27A4FA2A06BD4D313524B5 /* FBSDKHybridAppEventsScriptMessageHandler.h */, + FFD231C49FD1E829D3CE97F7E68D3887 /* FBSDKHybridAppEventsScriptMessageHandler.m */, + EC64DCF50E636893C5B7603C9750658F /* FBSDKIcon.h */, + 996396F3434F55E3BC30E200D2133FE5 /* FBSDKIcon.m */, + 3B03F353C5B6D73421D4D4D4A1F4FCD9 /* FBSDKImageDownloader.h */, + 28DA6EFDA7EE38714A86AD2C2B12C40A /* FBSDKImageDownloader.m */, + 01D145C12D119AE56EC1613D66D72B39 /* FBSDKInternalUtility.h */, + 6929B670458A6799FB0B396BC7450EBD /* FBSDKInternalUtility.m */, + 94ADF1D980C8E5B569010B49E4E71E13 /* FBSDKKeychainStore.h */, + 762B12634DC393E3D87C439EBB48574A /* FBSDKKeychainStore.m */, + E31B8B89E1ADF6AF6FBEC5E06171EEE3 /* FBSDKKeychainStoreViaBundleID.h */, + 3CCCD71B7B317367C3A26040E746CFAA /* FBSDKKeychainStoreViaBundleID.m */, + 278ACC5AADD0F5559FE842BF192588B3 /* FBSDKLogger.h */, + E7B3406B271F3C8121536E6E3F869EC0 /* FBSDKLogger.m */, + E530614B1ABA80A13A95356A991B8B5E /* FBSDKLogo.h */, + 52D9A1261A586186736ABD7EE48B5D5E /* FBSDKLogo.m */, + CD2E613C5270A1BA9626010AE5BC9820 /* FBSDKMacros.h */, + 45E4CC2B2EFD832DC8DF377A7C60E866 /* FBSDKMaleSilhouetteIcon.h */, + 27806C21F50C74897AC9FF8EA8B2A547 /* FBSDKMaleSilhouetteIcon.m */, + DEA316C6C79E14D12E1E12D76ED79F1C /* FBSDKMath.h */, + B0FC7D94698334D0BBC3EC267ACF3015 /* FBSDKMath.m */, + 24F09EF994A067478CB514410AA34AF3 /* FBSDKMeasurementEvent.h */, + 785562DEEBF5BC0A7C950B934440E40C /* FBSDKMeasurementEvent.m */, + CBF07DD243A64FC003AE5D8DC6AF80E0 /* FBSDKMeasurementEvent_Internal.h */, + F2383083267CAD2E43713143955EE386 /* FBSDKMonotonicTime.h */, + 653BAC33D44AB2E4F138F12134718430 /* FBSDKMonotonicTime.m */, + B812F23AB8D4F223C79DF9E41C418DBB /* FBSDKMutableCopying.h */, + C58EE65AE76FB96E9215E13D996D4D7C /* FBSDKPaymentObserver.h */, + 3F268AE2267944D18C9103B4A3D961FD /* FBSDKPaymentObserver.m */, + 4B9E944DABDFA7F4DD79C993D9E70E32 /* FBSDKProfile.h */, + D593CAEBAAC12FC5165D3F98366FDAD4 /* FBSDKProfile.m */, + 360B7473368AC1C3C811FC1F03AB2744 /* FBSDKProfile+Internal.h */, + F42CA6A86C8B7F58A44B8C4D8CC96063 /* FBSDKProfilePictureView.h */, + 41A6FC6A658296BE9D7A339CB81EAD43 /* FBSDKProfilePictureView.m */, + 1650AC4C4981BEE6422FAD5953F3BACB /* FBSDKServerConfiguration.h */, + E55F7EDA314738FA02044CEA17817FFF /* FBSDKServerConfiguration.m */, + 71EF74E8306F1274A920B9A8996BF784 /* FBSDKServerConfiguration+Internal.h */, + EED4C5A1701B547498F82AE3B18B1292 /* FBSDKServerConfigurationManager.h */, + 175EF8AA06AD1DA1C88A393B862851B0 /* FBSDKServerConfigurationManager.m */, + 3F3895328093DB3335B2CC8C510ED4B4 /* FBSDKServerConfigurationManager+Internal.h */, + FE3D6D5ACFE33655DA9382DE563ADDEC /* FBSDKSettings.h */, + EDE7C37FF7DD0312B72C40B60D0C9DC5 /* FBSDKSettings.m */, + A6E8130DA123697A53FA2CB8521B2867 /* FBSDKSettings+Internal.h */, + DD98A59BB406DEA3321CB51AB21D8017 /* FBSDKSwizzler.h */, + 416DA3C85DF3A756FB16ADB890777586 /* FBSDKSwizzler.m */, + 9FFC61D9E9C72B0BE6BA9353CAA3F476 /* FBSDKSystemAccountStoreAdapter.h */, + 57C83F37F9D7191D64044FEA1C2C4A14 /* FBSDKSystemAccountStoreAdapter.m */, + 0D4FA2A9CC60BC348A6623694DC18D9A /* FBSDKTestUsersManager.h */, + BD0AD1AD177A3C0238CF0A0C8449A22B /* FBSDKTestUsersManager.m */, + 80EF578708C3C8E74246CC1C2DA6335F /* FBSDKTimeSpentData.h */, + 7988B8E9E7F035F5D366BA10590CBB37 /* FBSDKTimeSpentData.m */, + 8B9D7A713D36784BE4EDA637A92BC827 /* FBSDKTriStateBOOL.h */, + A32830FEA8080DB1E9454687EEFE4739 /* FBSDKTriStateBOOL.m */, + 33CB6A8AB8A00F2435EC6FD2E5C4153A /* FBSDKTypeUtility.h */, + BCA5CAE31536E1E27629A11BCB4CF168 /* FBSDKTypeUtility.m */, + FFF1870FC011A05291F60D4D70A70E89 /* FBSDKUIUtility.h */, + 8CF46963F5DBECA8F990D664E78244DF /* FBSDKURL.h */, + F7FFB211E02B400D0F1B911B5476C751 /* FBSDKURL.m */, + 41EBA549F8235DA37DD70326A1AB21B5 /* FBSDKURL_Internal.h */, + F4087E88D44F30E3CEE8AA774C04E83C /* FBSDKURLOpening.h */, + 65DB8C63409A51C7B95D0D503F5EDE43 /* FBSDKURLSessionTask.h */, + 7BE97ACA41424B6A98E3ABC7E4E7F6E3 /* FBSDKURLSessionTask.m */, + F5ED466A1933E1C0CA01011797556CA7 /* FBSDKUserDataStore.h */, + 15DA8AF2920D6E35F1C9AF9A80780FD0 /* FBSDKUserDataStore.m */, + 6E522933450F1EABB48BC039889B9342 /* FBSDKUtility.h */, + 0FA70C1224F57397D80DD41931C3B1C5 /* FBSDKUtility.m */, + 8AA8B738B89B1B2DBBE7390C9258C0CD /* FBSDKViewHierarchy.h */, + 083682A84322B9FB603A63D433260F39 /* FBSDKViewHierarchy.m */, + ED99F7451BFE99DFB7D32716F261E80B /* FBSDKViewImpressionTracker.h */, + 431D9D75B33961C44984665FCC4143B2 /* FBSDKViewImpressionTracker.m */, + A2B7E375386A4AE6FA17EFC9427E1F7A /* FBSDKWebDialog.h */, + E5DE6868349BC3A8C692E9F7B55A7B10 /* FBSDKWebDialog.m */, + E940BB3B7637A14064336685794BF7E0 /* FBSDKWebDialogView.h */, + 0E7DE8887FB3D62BD49E328FBCED36F7 /* FBSDKWebDialogView.m */, + EEB4B944F703E86FB6328A72D391C38E /* FBSDKWebViewAppLinkResolver.h */, + F5CDC80BF7428CE92D164FD10F91A6A9 /* FBSDKWebViewAppLinkResolver.m */, + 458E19C0F01BD5F617A5919AF14E1D10 /* Resources */, + 071CE81B439FF1A53AA62540AAA78E5B /* Support Files */, + ); + name = FBSDKCoreKit; + path = FBSDKCoreKit; + sourceTree = ""; + }; + 5F54A09653334774CB603251AB89F074 /* CodFis-Helper */ = { + isa = PBXGroup; + children = ( + 7FEBFDB889106151937BCB050AFFF1F5 /* CodFis+Helper.h */, + 8AC6DB2CE93C86FE2BFFA87107CCE05B /* CodFis+Helper.m */, + 015C55CC7496765F59115C2D0ABFE3F0 /* CodFisResponse.h */, + 02462456D584F14A5BED1946168948FB /* CodFisResponse.m */, + 1EC807D489E1D2A0DAC2D6316EAC21EE /* ResponseConstants.h */, + 0646A926CA42E57A5BCF976CCB05110B /* VatNumber+Helper.h */, + 9DA4E17A97F60A55F0664CC4CAFB5273 /* VatNumber+Helper.m */, + 6DA98AA53EA20239A87415A370518611 /* Support Files */, ); name = "CodFis-Helper"; path = "CodFis-Helper"; sourceTree = ""; }; - 60B0F756033CA76A19662DF7D639624D /* DDDKeychainWrapper */ = { + 6D7B052DFCAB22E527E5ADF1BC5689C5 /* Support Files */ = { isa = PBXGroup; children = ( - F9A441E9586B3C8581D76BC1E0A03671 /* DDDKeychainWrapper.h */, - 33066B4FAF93E2F3564F1B2C745A7128 /* DDDKeychainWrapper.m */, - 7453B62343287F0C6762425434413EF2 /* Support Files */, - ); - name = DDDKeychainWrapper; - path = DDDKeychainWrapper; - sourceTree = ""; - }; - 613EE9CFF68BEE578D4A84BAC82FADA5 /* Support Files */ = { - isa = PBXGroup; - children = ( - 12E33E70801A48C06920A1C5A947D38F /* FBSDKCoreKit.xcconfig */, - EC2A85F7CB62517F814A1B26EC514E99 /* FBSDKCoreKit-dummy.m */, - CF88175A2DD02EC3A3D4FA839735203D /* FBSDKCoreKit-prefix.pch */, + A122AD9A7691D3ED99823E518BE681D6 /* AFNetworking.xcconfig */, + 8FBB7581B3AC543B0DD8F845BDFCDAC7 /* AFNetworking-dummy.m */, + 57CFE9FB987472AA48B7CE19CE7DC5EA /* AFNetworking-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/FBSDKCoreKit"; + path = "../Target Support Files/AFNetworking"; sourceTree = ""; }; - 623B6AF09BBC3ADBE71F57413533EB19 /* NSString-Helper */ = { + 6DA98AA53EA20239A87415A370518611 /* Support Files */ = { isa = PBXGroup; children = ( - 35F30F50F4924304799BACA865C94A99 /* NSString+Helper.h */, - B108E25F23F3FF0B5A268E471281C15A /* NSString+Helper.m */, - 661033AFF1E05229EE76FCC55D1D0D6B /* Support Files */, - ); - name = "NSString-Helper"; - path = "NSString-Helper"; - sourceTree = ""; - }; - 62B61C6988B360DD52758DBC7222FBFE /* DJLocalization */ = { - isa = PBXGroup; - children = ( - 91D787847F6ACE3507A58D105730075E /* Core */, - 11F1F6BD9389C2268BA65BC3B6348E33 /* Support Files */, - ); - name = DJLocalization; - path = DJLocalization; - sourceTree = ""; - }; - 661033AFF1E05229EE76FCC55D1D0D6B /* Support Files */ = { - isa = PBXGroup; - children = ( - B57448B7171E54F316A32FF4FC68CD47 /* NSString-Helper.xcconfig */, - 7B4C7FA8DA604D0615DD16136A5FE4F1 /* NSString-Helper-dummy.m */, - 7FC7136D3F9BCE9D3D11238C1EEDF91E /* NSString-Helper-prefix.pch */, + 5E34AD2C1453EC0C20F9C2731AF11063 /* CodFis-Helper.xcconfig */, + 471646B56DD1296C56383A12835F8B29 /* CodFis-Helper-dummy.m */, + 014E4C12967BEE2D261667092D214CB0 /* CodFis-Helper-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/NSString-Helper"; - sourceTree = ""; - }; - 6D7D2F27984B47AA4DC26F2042AE6E9D /* Bolts */ = { - isa = PBXGroup; - children = ( - 4FE67B89F7A94CE787A4D27629F1EAD8 /* AppLinks */, - AB75237EDE6D45AC6911C7C9EC94EEFD /* Support Files */, - 85E0B4E18EE031E5D922801C1DA682E8 /* Tasks */, - ); - name = Bolts; - path = Bolts; - sourceTree = ""; - }; - 6D8EB9D4EFB061BAB7BDBB7950198671 /* Support Files */ = { - isa = PBXGroup; - children = ( - E77872ABBDE104DEF1B32A3F930E6FCE /* FBSDKLoginKit.xcconfig */, - 9E3E19E0D76816F64A6F358938AA2BC7 /* FBSDKLoginKit-dummy.m */, - 104339D4CF0D1ACF34BD94ECBF7750A1 /* FBSDKLoginKit-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/FBSDKLoginKit"; + path = "../Target Support Files/CodFis-Helper"; sourceTree = ""; }; 6E03DBA8E2B3252BA582D6D168710AFD /* Vendors */ = { @@ -2531,15 +2149,42 @@ path = PNObject/Classes/Vendors; sourceTree = ""; }; - 7453B62343287F0C6762425434413EF2 /* Support Files */ = { + 6F26751542C9522586944562D70EE356 /* UIKit */ = { isa = PBXGroup; children = ( - FB72119DFFE43FFB9BF49600A12E9063 /* DDDKeychainWrapper.xcconfig */, - DE0802BEA45CBF21D91724CA980C8B91 /* DDDKeychainWrapper-dummy.m */, - 07F635318349C3CA4CE2CBCE9E58A983 /* DDDKeychainWrapper-prefix.pch */, + 25A577668D9BE62DECC875B19A98C779 /* AFAutoPurgingImageCache.h */, + 29CAA7D9F787A2A120080AC6FC88E236 /* AFAutoPurgingImageCache.m */, + 6F4BF097BD0BD858426E729760DA23C5 /* AFImageDownloader.h */, + DD5CAD3D437EB8D22A3FFB4418C856D9 /* AFImageDownloader.m */, + A08F91664E13013EB05A4A119C356282 /* AFNetworkActivityIndicatorManager.h */, + E83104FA9E0105DAC57B3D1062029649 /* AFNetworkActivityIndicatorManager.m */, + 2E8382E098B0ABAF91909E30F6C711AF /* UIActivityIndicatorView+AFNetworking.h */, + 4D2189B89ABCCEE870CB7D265899CA21 /* UIActivityIndicatorView+AFNetworking.m */, + 7E9657037019A3652D78224AAEF0B514 /* UIButton+AFNetworking.h */, + ABF5F1C383E4C559F000758027223782 /* UIButton+AFNetworking.m */, + 0566FE5243B81F27259DCEB7306D50C0 /* UIImage+AFNetworking.h */, + 88C2F4FA76F01022B37B706FD918FBD1 /* UIImageView+AFNetworking.h */, + DFD6B459CDADF5A779016A8B51D7B27A /* UIImageView+AFNetworking.m */, + CE4B797D6FFA8E39076D94474C4CFF86 /* UIKit+AFNetworking.h */, + EC6F59C205AF23ABEA19AA731A6E8609 /* UIProgressView+AFNetworking.h */, + 2ABD3C066C9577CD58761179AA0C798A /* UIProgressView+AFNetworking.m */, + 0194AAE82EE02294FBF03732E0314254 /* UIRefreshControl+AFNetworking.h */, + F9F3F51028FF3A97837DA90F7A32F64B /* UIRefreshControl+AFNetworking.m */, + 4934336C1F61E006BCD0B2A11BB701EA /* UIWebView+AFNetworking.h */, + 23628EF3FD25B246CE001581C88C984A /* UIWebView+AFNetworking.m */, + ); + name = UIKit; + sourceTree = ""; + }; + 6FBD1A9159333588D27AEA2DFE810758 /* Support Files */ = { + isa = PBXGroup; + children = ( + 6590B91A0B3DE7B70BF5BDD27B9A7997 /* Expecta.xcconfig */, + 3463CBC1F71C1CF5C51BF0A374F8B6D0 /* Expecta-dummy.m */, + 69FAA147816DD9762907F65823ED2BFB /* Expecta-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/DDDKeychainWrapper"; + path = "../Target Support Files/Expecta"; sourceTree = ""; }; 7815B12811ECA8994710D40F7B54643E /* AFOAuth2Manager */ = { @@ -2556,229 +2201,118 @@ path = AFOAuth2Manager; sourceTree = ""; }; - 79874668D4138BB864060F811EEC7964 /* Support Files */ = { - isa = PBXGroup; - children = ( - 52B84C79443639E710D5300A19CF7D6F /* NSDataAES.xcconfig */, - 8EF80CAB2F23373F48E87570F7ECC5A9 /* NSDataAES-dummy.m */, - F9624A50537E9F441B415BC1794085B8 /* NSDataAES-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/NSDataAES"; - sourceTree = ""; - }; - 7D915E76D877912F297EFE4BB4D89DBC /* Reachability */ = { - isa = PBXGroup; - children = ( - A2B994B4672A9C954B3718919B483170 /* AFNetworkReachabilityManager.h */, - 7371F8850210EAA2725BBBAE33355C08 /* AFNetworkReachabilityManager.m */, - ); - name = Reachability; - sourceTree = ""; - }; 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, D5D27757BE31D2E1125B1DE683D3A505 /* Development Pods */, F4CDA5FA9197A41E0081E84F932906EB /* Frameworks */, - 9A6A7DC20DEDBE2CE7D6360C1910A761 /* Pods */, - C480B5F01E58D59EDA927E3EC6A18A0E /* Products */, + 8891BFB65AA1F8890D8F4B8ABBAA70EA /* Pods */, + 9E4E22C2CE8B32F5012F84B56AB7116C /* Products */, 414B65071B6BFD5138E7885FB570F282 /* Targets Support Files */, ); sourceTree = ""; }; - 80CD6F9E4A2683131C7CE8EFB100849C /* Support Files */ = { + 8280AB8AA67CFA35AC3C0433958785B8 /* UIDevice-Utils */ = { isa = PBXGroup; children = ( - 379C348EB2F9F418F970768DEB673F2F /* Specta.xcconfig */, - 4499DF8459C8D2AF31AA71B9AE675D1D /* Specta-dummy.m */, - CEC4A68EEF98409FF99D2648CB675D88 /* Specta-prefix.pch */, + A13EAD73BFB5BFDE48A7B27C8F3EC6A5 /* UIDevice-Hardware.h */, + 726E7FF9F534B6024C21CC8ECA817B1C /* UIDevice-Hardware.m */, + 39BB3E29A557C0A3BDFB04D453FF7E0C /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Specta"; + name = "UIDevice-Utils"; + path = "UIDevice-Utils"; sourceTree = ""; }; - 83573D2A7A69A7FBDC5817812857DAFF /* Support Files */ = { + 8891BFB65AA1F8890D8F4B8ABBAA70EA /* Pods */ = { isa = PBXGroup; children = ( - 444FFF855F5ABFFFF0A7C42DC70E79CB /* PureLayout.xcconfig */, - 8D6C25CEF86D625B2705257253DAD8BE /* PureLayout-dummy.m */, - 4C33A3E7DEF95301AA59E97BEAE14668 /* PureLayout-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/PureLayout"; - sourceTree = ""; - }; - 851451DFB466AF790E81EB2547EF78AC /* UIKit */ = { - isa = PBXGroup; - children = ( - 12DBABF54A0D1A13073266DEAF71AB5F /* AFAutoPurgingImageCache.h */, - 9969A5355EA68D96AEC6594E6A5E9069 /* AFAutoPurgingImageCache.m */, - 36730929D0B3CB2AC41BF100F89ACA3B /* AFImageDownloader.h */, - 58924C097629393B47F8913C206AB1DB /* AFImageDownloader.m */, - AE91203791D4B728219D544E4464FE87 /* AFNetworkActivityIndicatorManager.h */, - D56E1741F8C7E0E3D263D5B58F460EC3 /* AFNetworkActivityIndicatorManager.m */, - 7D59F55316C71363EBAE55121B468EE8 /* UIActivityIndicatorView+AFNetworking.h */, - 422228405026B213960E61CE3699D6CF /* UIActivityIndicatorView+AFNetworking.m */, - 91D597045A0BDA11505525EF9C97D548 /* UIButton+AFNetworking.h */, - 5337B1EBF72D885EDB2CA3F253FC5B37 /* UIButton+AFNetworking.m */, - 51584A1ACF25CB49347808148BBCEC99 /* UIImage+AFNetworking.h */, - A5738F31E7FA35B142C111B2013AACF1 /* UIImageView+AFNetworking.h */, - 5591BB007FC9E3071D990D1CF0A52C23 /* UIImageView+AFNetworking.m */, - AD279EE06DA2DC38AEC49D7F19A0A2BC /* UIKit+AFNetworking.h */, - C685DA7E3C04F35929DAAF2AA6845DBC /* UIProgressView+AFNetworking.h */, - B946E6678D6085D230EDD6B927817340 /* UIProgressView+AFNetworking.m */, - DEF1943D8DBFABAA3F0637F6D1638364 /* UIRefreshControl+AFNetworking.h */, - 48EAEA1A387E7483A605AB622EAB91B8 /* UIRefreshControl+AFNetworking.m */, - F3C4A3461A90A87F919F4C075AED6B06 /* UIWebView+AFNetworking.h */, - 952BCB39B0D72AA10B61D9439887C180 /* UIWebView+AFNetworking.m */, - ); - name = UIKit; - sourceTree = ""; - }; - 85E0B4E18EE031E5D922801C1DA682E8 /* Tasks */ = { - isa = PBXGroup; - children = ( - 50AF06AE6DE7B9BAEEA4794F8B2A879B /* BFCancellationToken.h */, - 13211D855E5293A4E7B68979B3927B79 /* BFCancellationToken.m */, - E6E1817B1A9A7142269AD887653D5838 /* BFCancellationTokenRegistration.h */, - 1BA4A045DAB6043B53CE15EDF906D10C /* BFCancellationTokenRegistration.m */, - EE55C4283AF5E8AD1B4721099DF4C764 /* BFCancellationTokenSource.h */, - BEEF5F450117F10026EC99F89C596C84 /* BFCancellationTokenSource.m */, - 600F03DF58A86C9F7FE46DFD525FD1DF /* BFExecutor.h */, - FA043EAD1C57E2A9165D7691DC1DCD15 /* BFExecutor.m */, - B9AEE51E846500100F68164B7E238349 /* BFGeneric.h */, - 8171265156664F0907696D211D002E6B /* BFTask.h */, - 3B8947C04C451A0A2DF29B3CBAB3F9D6 /* BFTask.m */, - 1A3FB96D1F6A7EF08A000F86B2C6E5F6 /* BFTaskCompletionSource.h */, - B9A245ECDD956B80B4E44A642331EF83 /* BFTaskCompletionSource.m */, - E8E98FAA016C6137D77701FC438F8705 /* Bolts.h */, - 64D7FF50177AB684897EFA94FCCD615D /* Bolts.m */, - ); - name = Tasks; - sourceTree = ""; - }; - 8CF31700F05E13D8128C5EA3516450DE /* Security */ = { - isa = PBXGroup; - children = ( - A7A9C72854AB6B24B7EDC326DA284454 /* AFSecurityPolicy.h */, - 6E61444B20CBFB611DB03797D93038E0 /* AFSecurityPolicy.m */, - ); - name = Security; - sourceTree = ""; - }; - 8D261190023C219FEA42C620BD691B54 /* NSURLSession */ = { - isa = PBXGroup; - children = ( - 3DA4EF941F355AF232E76D0362583A7A /* AFCompatibilityMacros.h */, - C4AE2EB524458DF5D3195C2082156FDE /* AFHTTPSessionManager.h */, - 4E58EFDBC0BD5FC5AA09EF2E78FA9FC6 /* AFHTTPSessionManager.m */, - C53704366AC8BB3E2D54F6F50F20D59D /* AFURLSessionManager.h */, - F05B4186BB3B1AAE47C0F25011FE071A /* AFURLSessionManager.m */, - ); - name = NSURLSession; - sourceTree = ""; - }; - 91D787847F6ACE3507A58D105730075E /* Core */ = { - isa = PBXGroup; - children = ( - 46E25B94A00EC37D77852BB2423511D5 /* DJLocalizableString.h */, - 82F6CC1ACAF6F27C6A111F34E7731E6A /* DJLocalizableString.m */, - A99EA254D66D2678098821F32E154DEF /* DJLocalization.h */, - AC1561C48A0E5AA9B22C0A48189E239A /* DJLocalizationSystem.h */, - 50297A9E224149D1E8A31E0C13343402 /* DJLocalizationSystem.m */, - E2164C3CCF342AB7241FC9A9B7E17F36 /* DJLocalizationSystem+Private.h */, - 88CABB3CA14023398BAF033A078AEDCE /* UIStoryboard+DJLocalization.h */, - 43075ED41EDAC5215E93E64528886C1B /* UIStoryboard+DJLocalization.m */, - ); - name = Core; - sourceTree = ""; - }; - 9A6A7DC20DEDBE2CE7D6360C1910A761 /* Pods */ = { - isa = PBXGroup; - children = ( - 3A0FAC47DCD22A13F92609F6105DE0D8 /* AFNetworking */, - 6D7D2F27984B47AA4DC26F2042AE6E9D /* Bolts */, - 5DAEAE5182B6663A676D609E4A2C1E57 /* CodFis-Helper */, - 60B0F756033CA76A19662DF7D639624D /* DDDKeychainWrapper */, - 62B61C6988B360DD52758DBC7222FBFE /* DJLocalization */, - F660A2C0AF25A9B6114650DE91F3C822 /* Expecta */, - 4E0C64C667DD93592FCDE26AC4C6C2BA /* FBSDKCoreKit */, - 4064C3DE42D2C087E4581B9245C47AFE /* FBSDKLoginKit */, - DAE21669EA3E17A44FF000000542CF09 /* FBSDKShareKit */, - 15C7D54B6FC00D857FC5E8C31EFBA941 /* NSDataAES */, - BF8D2A1AAB5D1B8A4FD2B10E7CA31C73 /* NSDate_Utils */, - 623B6AF09BBC3ADBE71F57413533EB19 /* NSString-Helper */, - 16BA332108214A120047C1528A07333A /* nv-ios-http-status */, - E5F7749B19D7F3F11554A2F54C646863 /* PEAR-FileManager-iOS */, - 9FB737A35BF7603E7649FCCAAD54576B /* PureLayout */, - 1508EFE08549FE4D5114F0EBBEECC305 /* RZDataBinding */, - 9EC5A3744CFFE16A0C6BEF347E80BDB5 /* Specta */, - 3771BBC4CDD47037A3919293A4022823 /* StrongestPasswordValidator */, - 58DE1F13715D0AE6CA8A279D32F3832D /* UIDevice-Utils */, + 2A372C0BABDB2FB032541034B3EBCC36 /* AFNetworking */, + C54C001B5A8BC34F4D1AF6DB5E457748 /* Bolts */, + 5F54A09653334774CB603251AB89F074 /* CodFis-Helper */, + B08AA112E2012FA084031FD5EAEEA749 /* DDDKeychainWrapper */, + 9B3786E8D655B57BAFDF7081E657E602 /* DJLocalization */, + 2DF79A7008CA68D2A88301DFB8EB13F0 /* Expecta */, + D8087B704C20AC504D9C2A6FB744B720 /* Facebook-iOS-SDK */, + 5A3702D0A2A2227A8F3A1BC6A1B0A6AF /* FBSDKCoreKit */, + 3FDA5E256A064D0C711CA95BEDD9D3CA /* FBSDKMarketingKit */, + BDD22CCB3BCBEA29A5FA25C0EBA54A5E /* NSDataAES */, + 4EFABB97E16545E4CCA8CE5C3D24B23C /* NSDate_Utils */, + BA7BEBAF7609D4EDFDAD9BE54CA09C5A /* NSString-Helper */, + 190B0C00100C8F6BECD66D82879C3DE5 /* nv-ios-http-status */, + C1B0CC850E2047E0A533F43087B720F3 /* PEAR-FileManager-iOS */, + A49FEB6A8FA2CBDFD10A65D16AC1972C /* PureLayout */, + 8A14A1E946C3A78100F1AABDB1CC0D16 /* RZDataBinding */, + 0FF0FE0F82C484B8B88F2EA5ECBD8306 /* Specta */, + B4DDDF623F2ED279A3014B084AED0197 /* StrongestPasswordValidator */, + 8280AB8AA67CFA35AC3C0433958785B8 /* UIDevice-Utils */, ); name = Pods; sourceTree = ""; }; - 9D7F7AB5505D9267E26E5F245D033DC1 /* Resources */ = { + 8A14A1E946C3A78100F1AABDB1CC0D16 /* RZDataBinding */ = { isa = PBXGroup; children = ( - 87083AC80734642A6AC8137D00D7B141 /* FacebookSDKStrings.bundle */, + 88B24CBD3D048F362BC22183941A2179 /* NSObject+RZDataBinding.h */, + C4A9C9E6E085645138CF9B074E2B789C /* NSObject+RZDataBinding.m */, + C996090B13A384767CD1D174BC7C93FE /* RZDataBinding.h */, + CB5A23D7CAB1F7D76E196945926CE000 /* RZDBCoalesce.h */, + D947735D3CE13D9E22597E9BF2FBFD13 /* RZDBCoalesce.m */, + 56C717938F4C6620F2E518EB2C21CB82 /* RZDBMacros.h */, + 6B3D7D81F0079CA5AFFB6E83752F9170 /* RZDBTransforms.h */, + 4890ECB8F3F7FE2FF6A5F281D7A7F31A /* RZDBTransforms.m */, + 4B776994E1743CCF7CFCD5CA11956BDD /* Support Files */, ); - name = Resources; + name = RZDataBinding; + path = RZDataBinding; sourceTree = ""; }; - 9EC5A3744CFFE16A0C6BEF347E80BDB5 /* Specta */ = { + 8B130790B98B9AACEC694E62095B9F9B /* Support Files */ = { isa = PBXGroup; children = ( - D91E6EFB912D50035F95B3A10A3CA1FE /* Specta.h */, - 45D55B98448A8CF5BEC142E2BBB0FA71 /* SpectaDSL.h */, - 6C83C3A12D9A0C7152215476E20751EC /* SpectaDSL.m */, - 0203FB378E2F15AE5A113A383BC90619 /* SpectaTypes.h */, - E712FB17B0B0BF56ED405AF90AB9E748 /* SpectaUtility.h */, - D67B3C8C11BB65F8C4C53C7A4AE87EAC /* SpectaUtility.m */, - 5E19E7F2A879610962D09F17D159E49C /* SPTCallSite.h */, - FC9787E13A62A239A3C6CD21A98AF9E0 /* SPTCallSite.m */, - 8D0E30867072236A95E7876836C8F4A4 /* SPTCompiledExample.h */, - 32A4312242020248E5076096163D4572 /* SPTCompiledExample.m */, - D46A64ECBFB90E6F8FA173DA56993314 /* SPTExample.h */, - B926D05DE0F6797BC2493E0BBC663EE5 /* SPTExample.m */, - 538C17A97ECA9192B8A93A339933238C /* SPTExampleGroup.h */, - 8090ACCF98C8E565350440301F977D9A /* SPTExampleGroup.m */, - 3DFF53BB878A43B652F3626FE15D5FBE /* SPTExcludeGlobalBeforeAfterEach.h */, - 7332C1E49582D8BB28F10D054D709139 /* SPTGlobalBeforeAfterEach.h */, - A1A885E6A01CE0321DD46209AEAC8A56 /* SPTSharedExampleGroups.h */, - DD515BEE94EE644F9B8BBE4A92E294CA /* SPTSharedExampleGroups.m */, - 83C5495006CAFA9B3AD7DDB0535CA4CD /* SPTSpec.h */, - 118E6026F09B98DA73AFA88047CC0B74 /* SPTSpec.m */, - 3D21A5C3093EAFB3E12E7F651A3A132A /* SPTTestSuite.h */, - B6459BA3D7319F3DBD101EA52CDAEC4D /* SPTTestSuite.m */, - 6DBECFE13698D4D8DDED7724E25BFCDA /* XCTest+Private.h */, - B729151CBE9D4D3FCA84A885A7FA8AF1 /* XCTestCase+Specta.h */, - 2E7F2F46D7D93AFC302D7C7045F11BA4 /* XCTestCase+Specta.m */, - 80CD6F9E4A2683131C7CE8EFB100849C /* Support Files */, + 5C2702D997A5C5C9445826543EA9B51A /* NSString-Helper.xcconfig */, + 3BDE137BB44CFF08F8AF9B2116275D99 /* NSString-Helper-dummy.m */, + D7CC5370B98917F533F5C705FB0A5995 /* NSString-Helper-prefix.pch */, ); - name = Specta; - path = Specta; + name = "Support Files"; + path = "../Target Support Files/NSString-Helper"; sourceTree = ""; }; - 9FB737A35BF7603E7649FCCAAD54576B /* PureLayout */ = { + 9B3786E8D655B57BAFDF7081E657E602 /* DJLocalization */ = { isa = PBXGroup; children = ( - EC8B465D31717139A016A12D2FFB2744 /* ALView+PureLayout.h */, - 1A1F5AFFD86438D32B457856F1C59628 /* ALView+PureLayout.m */, - F1406D8AC4FA98818B9092CEA3E20A29 /* NSArray+PureLayout.h */, - BE635994183DF4CE80601C6FB12722E3 /* NSArray+PureLayout.m */, - 323BE48D55B39D125EAB374652FBB6E2 /* NSLayoutConstraint+PureLayout.h */, - AEE4441C0BEC052CFBAE042BF924FACE /* NSLayoutConstraint+PureLayout.m */, - 4CDB54ACD6F9DCEE318FD3F032FC7E4B /* PureLayout.h */, - 0261380939A77EA9E7D9F9C73B948DE9 /* PureLayout+Internal.h */, - E3B47E60EDE1E9A02809DEF9923F4931 /* PureLayoutDefines.h */, - 83573D2A7A69A7FBDC5817812857DAFF /* Support Files */, + AA13C491A0059D9E019FDBEA20301464 /* Core */, + DB4763EE1D2010720571A54C2DE30E13 /* Support Files */, ); - name = PureLayout; - path = PureLayout; + name = DJLocalization; + path = DJLocalization; + sourceTree = ""; + }; + 9E4E22C2CE8B32F5012F84B56AB7116C /* Products */ = { + isa = PBXGroup; + children = ( + 3B8D4D510E39D0DE364AF4503AECDAFF /* libAFNetworking.a */, + 20384C33BEE2F81896DFF7ADAEDF2CBF /* libBolts.a */, + E5E939C2339B718507CA2D5FCA69B5C0 /* libCodFis-Helper.a */, + 88FFBAC8BDB65FD09ED3E9B84B1614CB /* libDDDKeychainWrapper.a */, + EACF20C7F52EBA30680C8ACB3102B846 /* libDJLocalization.a */, + CFE82247C6FB8543708571E0D8D64B1D /* libExpecta.a */, + A44629F01442571502F7E767A7AB1331 /* libFBSDKCoreKit.a */, + 3703664A695762CB09F0E7E2E833D796 /* libNSDataAES.a */, + 2E277A61994B6505F265B96493D2F82B /* libNSDate_Utils.a */, + E445C84C631F2F60D38E4AB52E4FD184 /* libNSString-Helper.a */, + 2AB62E52B89B05D507636607A1611EFB /* libnv-ios-http-status.a */, + D4BBE93131759240C836DD271A320B12 /* libPEAR-FileManager-iOS.a */, + 9762245771C377B128624C23655321FF /* libPNObject.a */, + A19BE0F838DD001133112E6196D6566C /* libPods-PNObject_Example.a */, + 95BCAA71AA2FF99269064E43A0F45113 /* libPods-PNObject_Tests.a */, + E4587E09E096B4F966A188FF1E974E70 /* libPureLayout.a */, + 60481B8A2E41827C43F71D6971F1B76C /* libRZDataBinding.a */, + 011EADDC040E3725A1BA572AE33F2004 /* libSpecta.a */, + C75DB7C4004F6284A7A6CC0375A9A252 /* libStrongestPasswordValidator.a */, + 74969D001959CAFCF9E294DE2790B848 /* libUIDevice-Utils.a */, + ); + name = Products; sourceTree = ""; }; A494D25BFD3A9F31C3ADB9EE2E2F2C7E /* Pods-PNObject_Tests */ = { @@ -2796,6 +2330,24 @@ path = "Target Support Files/Pods-PNObject_Tests"; sourceTree = ""; }; + A49FEB6A8FA2CBDFD10A65D16AC1972C /* PureLayout */ = { + isa = PBXGroup; + children = ( + 03321EB295089087235FD1C62963C992 /* ALView+PureLayout.h */, + B91B06065F5CB603A371C004A0FC3376 /* ALView+PureLayout.m */, + 4FEF225FC599C9FEE209D0725906EA86 /* NSArray+PureLayout.h */, + 92CD58E200B787BAAE825A1FA8E39242 /* NSArray+PureLayout.m */, + 12A5EA8EA3E20FA8292818DD0658894B /* NSLayoutConstraint+PureLayout.h */, + 361754E20DAC382E2D061EFC136F5E20 /* NSLayoutConstraint+PureLayout.m */, + 8DB74D19D498C0E48971AC94032AED38 /* PureLayout.h */, + 1C9803B51A670EF5D318E5A04E6E0524 /* PureLayout+Internal.h */, + CACADFC6276DE36113F53E85090A48CF /* PureLayoutDefines.h */, + 598F78F17A5253CD929D93B8F1FDF185 /* Support Files */, + ); + name = PureLayout; + path = PureLayout; + sourceTree = ""; + }; A9BFC6743EA766AB4D2B1A962A965406 /* Support Files */ = { isa = PBXGroup; children = ( @@ -2807,26 +2359,38 @@ path = "Example/Pods/Target Support Files/PNObject"; sourceTree = ""; }; - AB75237EDE6D45AC6911C7C9EC94EEFD /* Support Files */ = { + AA13C491A0059D9E019FDBEA20301464 /* Core */ = { isa = PBXGroup; children = ( - ECB10B1A166604998038F053373E7420 /* Bolts.xcconfig */, - EB6967181467BED4492732D1D4705DC6 /* Bolts-dummy.m */, - 830B66BF541F04CDE6617EDD6538B1D9 /* Bolts-prefix.pch */, + 5B436B6A42B9B4BDFB99DB1F3EC44A7B /* DJLocalizableString.h */, + 3B724A4508AEEDF70BA5BCA12D50B6DA /* DJLocalizableString.m */, + 53A54C74047B217C4204A767B03867BC /* DJLocalization.h */, + DB7FD328AF97B85C0DFEA22287D84F64 /* DJLocalizationSystem.h */, + 09A76BA64EDFC80D659AAEC83BD6AE35 /* DJLocalizationSystem.m */, + 30027D05854975EFC23B4C890C8022C4 /* DJLocalizationSystem+Private.h */, + 39FE593DE930BA78D4BDA0F3C5F10E58 /* UIStoryboard+DJLocalization.h */, + 2B62ADB4C1CA537282E6E11BA93F66A9 /* UIStoryboard+DJLocalization.m */, ); - name = "Support Files"; - path = "../Target Support Files/Bolts"; + name = Core; sourceTree = ""; }; - AC8A9415CB558A9F53FFF0426B8DA3F7 /* Support Files */ = { + AAB48253A189A48F5698BF255E19D18C /* Frameworks */ = { isa = PBXGroup; children = ( - D6ED2B9CE5879E41B3C1304415AF0AE4 /* NSDate_Utils.xcconfig */, - 27A1D7637BB2132A3F444F156482E184 /* NSDate_Utils-dummy.m */, - B73DD86758DE5ACBED70C091FC8F5087 /* NSDate_Utils-prefix.pch */, + 4071F2008C1E37A5F2EEC91C94D2461E /* FBSDKMarketingKit.framework */, ); - name = "Support Files"; - path = "../Target Support Files/NSDate_Utils"; + name = Frameworks; + sourceTree = ""; + }; + B08AA112E2012FA084031FD5EAEEA749 /* DDDKeychainWrapper */ = { + isa = PBXGroup; + children = ( + 7E91846F5FC7A6C73BFD33DF61939034 /* DDDKeychainWrapper.h */, + 1CD8469C29525DCAB8089CEE688A6D20 /* DDDKeychainWrapper.m */, + FFA81B69CDC9D36FC14CA41CC5CEA3EF /* Support Files */, + ); + name = DDDKeychainWrapper; + path = DDDKeychainWrapper; sourceTree = ""; }; B167E90DFF85CADCAF926DBAAB489AAE /* Pod */ = { @@ -2839,80 +2403,100 @@ name = Pod; sourceTree = ""; }; - B4BE5B5E4D32DCB472616D4DD7181A5A /* Support Files */ = { + B4DDDF623F2ED279A3014B084AED0197 /* StrongestPasswordValidator */ = { isa = PBXGroup; children = ( - F49BAD09C3436DEC8C12A3D333EBFA44 /* nv-ios-http-status.xcconfig */, - 53DCE1D82D923DC94A1EC30D71C8F023 /* nv-ios-http-status-dummy.m */, - D9B0A8327D068FA57F56B1F1D70964EE /* nv-ios-http-status-prefix.pch */, + 370A59955EAF7E77A26E872704D5388F /* StrongestPasswordValidator.h */, + 6285184D424D8B500578979EB3BCAAAF /* StrongestPasswordValidator.m */, + E7D5CDD83DEC45B900A7F438ACDF6B89 /* Support Files */, + ); + name = StrongestPasswordValidator; + path = StrongestPasswordValidator; + sourceTree = ""; + }; + BA7BEBAF7609D4EDFDAD9BE54CA09C5A /* NSString-Helper */ = { + isa = PBXGroup; + children = ( + C2DC5E9F159D344A67D6569916FB180D /* NSString+Helper.h */, + 3D2553C93DE666C6DC8243EA12538803 /* NSString+Helper.m */, + 8B130790B98B9AACEC694E62095B9F9B /* Support Files */, + ); + name = "NSString-Helper"; + path = "NSString-Helper"; + sourceTree = ""; + }; + BDD22CCB3BCBEA29A5FA25C0EBA54A5E /* NSDataAES */ = { + isa = PBXGroup; + children = ( + 0068017BC0821494D8687C85E8964E02 /* NSData+AES.h */, + 4C260FA017BC3E8B376A1793BC87D5D9 /* NSData+AES.m */, + 775D1E1B5C8150DD7BD0F21CDD958388 /* NSData+AESKey.h */, + C5A9F9D51250FA03D62340CB0C404777 /* NSData+AESKey.m */, + 1D2FAA475E195F7FDB9C14388A0CB4FB /* NSData+AESValue.h */, + C4D35A4709B9105B818F9FF1BE45B0DD /* NSData+AESValue.m */, + C785165311ED4D6C4EC7BFA0E953B2C2 /* NSData+SHA.h */, + A4D936FF31963976CAC4B6C87F2C7B6A /* NSData+SHA.m */, + 39740EE51A5C51414658A8F12B85DEE4 /* NSDataAESCipher.h */, + 08004EE10CD42AB6608277E07ED59BEC /* NSDataAESCipher.m */, + E28070F476452DD82E5466EA55B21F27 /* NSMutableData+AES.h */, + B8D399040D4E42EB282B029396E10A4A /* NSMutableData+AES.m */, + CF73602D75721D0A67841B9047C8DD7B /* Support Files */, + ); + name = NSDataAES; + path = NSDataAES; + sourceTree = ""; + }; + C1B0CC850E2047E0A533F43087B720F3 /* PEAR-FileManager-iOS */ = { + isa = PBXGroup; + children = ( + 389CFEACA7C9B76D0F3920359DB54CC8 /* PEARFileManager.h */, + C2CED6A861BAF4CC033E7EF4C7E62E36 /* PEARFileManager.m */, + F42C94EB9FB3FCDF794DE0AED460AE1B /* Support Files */, + ); + name = "PEAR-FileManager-iOS"; + path = "PEAR-FileManager-iOS"; + sourceTree = ""; + }; + C54C001B5A8BC34F4D1AF6DB5E457748 /* Bolts */ = { + isa = PBXGroup; + children = ( + E78DF778097AA626C9C069777CE9348D /* AppLinks */, + 2B817C460B4B65AFC574DECEE5C0F70C /* Support Files */, + 01F6826077D606D0EEBF5E7D4A4AFE0D /* Tasks */, + ); + name = Bolts; + path = Bolts; + sourceTree = ""; + }; + CC009EC27FC9151DB08334C1860F0606 /* Security */ = { + isa = PBXGroup; + children = ( + 38E6B5920B345E361E5BE6310096446C /* AFSecurityPolicy.h */, + CE1E3FED54C9FDB7750B2C61B469E9D3 /* AFSecurityPolicy.m */, + ); + name = Security; + sourceTree = ""; + }; + CF73602D75721D0A67841B9047C8DD7B /* Support Files */ = { + isa = PBXGroup; + children = ( + 0ED37A225C9435173CDF3B2E6FB9303A /* NSDataAES.xcconfig */, + 42D3A07B9E2A9F0BAA94A49E29DC0289 /* NSDataAES-dummy.m */, + 9DC115ED6A14503C4E09249342311C70 /* NSDataAES-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/nv-ios-http-status"; + path = "../Target Support Files/NSDataAES"; sourceTree = ""; }; - BF8D2A1AAB5D1B8A4FD2B10E7CA31C73 /* NSDate_Utils */ = { + D480B4504CBDDBEDD639A89038502513 /* Serialization */ = { isa = PBXGroup; children = ( - D638C12B68218651E52AA8E3C94B2413 /* NSDate+NSDate_Util.h */, - 23C7228C5DDC140432CF41CC12A34201 /* NSDate+NSDate_Util.m */, - AC8A9415CB558A9F53FFF0426B8DA3F7 /* Support Files */, + B8DE5017B46F7603F67BE5E2C6480425 /* AFURLRequestSerialization.h */, + E5630EDFC38C502EA515AF1A19289B39 /* AFURLRequestSerialization.m */, + 4B6ED2EA6001D4C2DC4C030A5408F3EA /* AFURLResponseSerialization.h */, + 5D4A1B06096D3624B7AF5E4F03EAC457 /* AFURLResponseSerialization.m */, ); - name = NSDate_Utils; - path = NSDate_Utils; - sourceTree = ""; - }; - C1804DFEA608FCE87A2C7766D6FD421A /* iOS */ = { - isa = PBXGroup; - children = ( - 228290CCA9AB8436577C8CC4F7AF1C06 /* CoreGraphics.framework */, - E65A5B341221CBEEF0E88382CDB87241 /* Foundation.framework */, - A189CCFF17CA7A7B9FFE7F300CF2F715 /* MobileCoreServices.framework */, - 097219E7D000D1D18B00390AF04655BC /* Security.framework */, - 8FC98C93277D7E6BF8CA5D23CB43D95C /* SystemConfiguration.framework */, - CC6CBD664A2CBD2083B8BA395BFEDF5E /* UIKit.framework */, - 0B243224F6E2B01B74C79F0377139E80 /* XCTest.framework */, - ); - name = iOS; - sourceTree = ""; - }; - C480B5F01E58D59EDA927E3EC6A18A0E /* Products */ = { - isa = PBXGroup; - children = ( - 0C739A4DC5B7A154D06B71411E01459C /* libAFNetworking.a */, - A8F263620BD0322B0E0D02C9CBB7E057 /* libBolts.a */, - 73517324CA450DAF3250DB48CDA3182B /* libCodFis-Helper.a */, - CCC8C2A264D659D0F1394CD30CB0CFAF /* libDDDKeychainWrapper.a */, - 3B5C70CFEC8F44CE8FD10524DEEC7A6F /* libDJLocalization.a */, - C4A1E4B2A8DB166BCFF636128277BAA5 /* libExpecta.a */, - D0D5B66973CF80A3988FB78B6DCA4342 /* libFBSDKCoreKit.a */, - 14D9DD4A903CFB812BED1D10CF39FA42 /* libFBSDKLoginKit.a */, - A521C2D47CBEF1F451C6C19EF4BDF952 /* libFBSDKShareKit.a */, - F3DEC48A4806C456BF7333F05402A123 /* libNSDataAES.a */, - 2FCE5603E1AAE87305D1570E294967EB /* libNSDate_Utils.a */, - 084AE6ECA57A970F74C4109DC3D26042 /* libNSString-Helper.a */, - 235BE4AB4998A621A73ED2BF118F0A7F /* libnv-ios-http-status.a */, - 86B02ADE54AD8160AA7985E20874AC2F /* libPEAR-FileManager-iOS.a */, - 15BA90E35C2DEF377C5A730CB5D9FF5A /* libPNObject.a */, - E223594B1999E026FF4F52CACA9DDA9F /* libPods-PNObject_Example.a */, - 2A4BB22F95B6AD65A989E687D5806FFC /* libPods-PNObject_Tests.a */, - 7D3A8E17950CDFC3ADE5016E9EB1F8B5 /* libPureLayout.a */, - 1E83C4F995602150C30446C7C75BEDC3 /* libRZDataBinding.a */, - E4A6EFA4A917599F12C0B7DB90CE41C9 /* libSpecta.a */, - E143D035B5419A69F443580FA66D752F /* libStrongestPasswordValidator.a */, - 55AA69666FEF4E24F23A163FD1B0E843 /* libUIDevice-Utils.a */, - ); - name = Products; - sourceTree = ""; - }; - C552AAE32F9E8DE0599E91EB27362416 /* Support Files */ = { - isa = PBXGroup; - children = ( - E53045B6A07A7DC12896641929D0A42B /* PEAR-FileManager-iOS.xcconfig */, - AFFF12E2E0C503E8EF4EBB4AF4EBA402 /* PEAR-FileManager-iOS-dummy.m */, - 876AAB1DC6ECA290A5C79CB04A9291D2 /* PEAR-FileManager-iOS-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/PEAR-FileManager-iOS"; + name = Serialization; sourceTree = ""; }; D5D27757BE31D2E1125B1DE683D3A505 /* Development Pods */ = { @@ -2923,233 +2507,219 @@ name = "Development Pods"; sourceTree = ""; }; - DAE21669EA3E17A44FF000000542CF09 /* FBSDKShareKit */ = { + D8087B704C20AC504D9C2A6FB744B720 /* Facebook-iOS-SDK */ = { isa = PBXGroup; children = ( - 06475B8A4E97FA30A4B8FEEDCB4EAF7F /* FBSDKAppGroupAddDialog.h */, - 4428B42610AB0FB470CE8A9F571BE487 /* FBSDKAppGroupAddDialog.m */, - A56F16109927B5D358D193F6A4BB3426 /* FBSDKAppGroupContent.h */, - 17B7F258ADC3CB1852D6BF95616AE754 /* FBSDKAppGroupContent.m */, - 35B32CAC5F01D66EA844A8CC98A49175 /* FBSDKAppGroupJoinDialog.h */, - 897162B6B9D1ADADAEBC3ECC01B27AE7 /* FBSDKAppGroupJoinDialog.m */, - 264E69028A0C84EABC73E28CFA284AE3 /* FBSDKAppInviteContent.h */, - 083753C776988E690880CA346ABF5823 /* FBSDKAppInviteContent.m */, - 7703EBD91F030530D391B9311BBE7284 /* FBSDKAppInviteDialog.h */, - 451DE67489762E7BF4872982818685DF /* FBSDKAppInviteDialog.m */, - F3C7BC76A5F427D2951B7C3F2DB7CEFC /* FBSDKCameraEffectArguments.h */, - DC189E040D574F2A4945517C0A1F0802 /* FBSDKCameraEffectArguments.m */, - 0B85BFC6FDA0BBCDF52F9B150C0F94CB /* FBSDKCameraEffectArguments+Internal.h */, - DD66E6FED006CAC3550B19E204BEC63C /* FBSDKCameraEffectTextures.h */, - F7AFC8A7A5AE5F65B91A38EE8CD0E02B /* FBSDKCameraEffectTextures.m */, - 7BA24DC711C9A9BF728E911963B7D295 /* FBSDKCameraEffectTextures+Internal.h */, - 04E2BABEA53E3363A9BC0F646F4BBCE3 /* FBSDKCheckmarkIcon.h */, - 67886D657034CA4A926FDFA702319389 /* FBSDKCheckmarkIcon.m */, - 115C678BF96C98C00C9F1103DBBD9F9B /* FBSDKGameRequestContent.h */, - 6732E2A7357018A011AC949878023A74 /* FBSDKGameRequestContent.m */, - 3FF9058171819AA185761AE2B04EA055 /* FBSDKGameRequestDialog.h */, - 44B271AE2F41468F2DA5075E3F378680 /* FBSDKGameRequestDialog.m */, - BBD3EC1F0D7D8327357AA769BBD293AC /* FBSDKGameRequestFrictionlessRecipientCache.h */, - B7877ED51692A3542CF09D985F7F4943 /* FBSDKGameRequestFrictionlessRecipientCache.m */, - 536F022E7BC8A34B94D3EC1E16FA0C13 /* FBSDKHashtag.h */, - 76DE5D8DE9038186BAF45C3051D74179 /* FBSDKHashtag.m */, - A5F7CA78CB70B76E563566A7973AAC60 /* FBSDKLikeActionController.h */, - F8061B3868BDAD11CE1E886FBC87A507 /* FBSDKLikeActionController.m */, - E34818E402DEACB3E6B52D25C9EAC64D /* FBSDKLikeActionControllerCache.h */, - 5D9B4847D4B627158FFC1A63EA6DC80F /* FBSDKLikeActionControllerCache.m */, - 52E0074F55BA1EC501E0972582CE4284 /* FBSDKLikeBoxBorderView.h */, - ADDE93AA0657112092BB44CD65D006EF /* FBSDKLikeBoxBorderView.m */, - 384BF2ED884F26B398ECBCFA92CF6E14 /* FBSDKLikeBoxView.h */, - 3FE24076474E62A09BCA909DA1A68CF2 /* FBSDKLikeBoxView.m */, - A78D0197FB7F04FEFE361A9DF89ECC1A /* FBSDKLikeButton.h */, - 807B96CAC1ED20D949D005D57A05B2B5 /* FBSDKLikeButton.m */, - 0C3B3777C1B965AB8BB35AE83D4436BA /* FBSDKLikeButton+Internal.h */, - E9D3C0E09FD3CC25C5D3A478EA531702 /* FBSDKLikeButtonPopWAV.h */, - EEC193E3F520E1B6AB4F3372A37E4BAE /* FBSDKLikeButtonPopWAV.m */, - B6C6178EFF740B1770E47181E2D755AD /* FBSDKLikeControl.h */, - EE0AC7D4EEAD02045DC937D7BD2C1C23 /* FBSDKLikeControl.m */, - E58111244B04B80DFF62AC8B4F6EB56B /* FBSDKLikeControl+Internal.h */, - B0430D0D9ECF06A2CE776A09363ADA27 /* FBSDKLikeDialog.h */, - F1965FFF8D5A2E0C288D9A560FCFEDCE /* FBSDKLikeDialog.m */, - 8714BC79FC4AE625BF543612A8626CDE /* FBSDKLikeObjectType.h */, - 0BB2B82D03CB3906ABDE6669ED9D833A /* FBSDKLikeObjectType.m */, - 70809CF813292F967C2F301B243571FB /* FBSDKLiking.h */, - E4E6332A344B4A0932629526E8E6C9CC /* FBSDKMessageDialog.h */, - F0DE0DF8D914E38271859E2DC3FFAB1D /* FBSDKMessageDialog.m */, - 0E00D21E56F405766DF0B9B5832FDAA4 /* FBSDKMessengerIcon.h */, - C36D0990929ACC7C7E57A00EA14900CB /* FBSDKMessengerIcon.m */, - FC73FA0EC9903EFA53286D879E678FA9 /* FBSDKSendButton.h */, - EA10A2832C986A5E90B8DA412A574AD6 /* FBSDKSendButton.m */, - F41E58C8325EB10B4B63392FD847BAC6 /* FBSDKShareAPI.h */, - BDF47E5D4FDE9BED9604D0D40DBB3A5C /* FBSDKShareAPI.m */, - 8968CB9A6DE68B4B5677DBBDE983BE39 /* FBSDKShareButton.h */, - 2E4EE4E3A82F63F42815DE3E8CD55193 /* FBSDKShareButton.m */, - A0E9946A5BA7F2E0540229B719AD8A8E /* FBSDKShareCameraEffectContent.h */, - 77FB2688DB92ACD34FD173329000B6F0 /* FBSDKShareCameraEffectContent.m */, - FA7EE8D5280ACA9545EB0F4B0F4138EA /* FBSDKShareConstants.h */, - A387993C7396BA018A78B182545014E7 /* FBSDKShareConstants.m */, - 157C7F2CDCAFB2C0654489B1DE32558F /* FBSDKShareDefines.h */, - B147DE1A7260EFF4D15C8B36FF290A4E /* FBSDKShareDialog.h */, - 57BC6CFE2FF77A0D657A729BB2CFCAF5 /* FBSDKShareDialog.m */, - 6F7FC7C9360DC60E43AFA5DAC5FDE0DD /* FBSDKShareDialogMode.h */, - 76FBF95528DC39D92FE22C0EA4AC7E7C /* FBSDKShareDialogMode.m */, - A0392097A153840E34B245E5BC8B3EF4 /* FBSDKShareError.h */, - 7B5A30A9EC17834C60F15FCD8D5862EA /* FBSDKShareError.m */, - 921954198F5E18C5FB71E329721B3574 /* FBSDKShareKit.h */, - E5426E047B8483C151AF23A6C16A5096 /* FBSDKShareKit+Internal.h */, - 74634C2DC0DA90642585261C51C96620 /* FBSDKShareLinkContent.h */, - CD9D6CD3E31885EA3B12EB1BC27DEAD5 /* FBSDKShareLinkContent.m */, - B33648BCE03F8F323A600AFB2C4184B1 /* FBSDKShareLinkContent+Internal.h */, - D6C8F624B454CFAC87AE5FB889B4728C /* FBSDKShareMediaContent.h */, - 5D4138F15DE6BC317FEE875C58D5E9DF /* FBSDKShareMediaContent.m */, - 6085CE9C47854FC205AA516CE066CE0F /* FBSDKShareMessengerActionButton.h */, - 4A9179BB63F92444BB2D72730D28C05F /* FBSDKShareMessengerContentUtility.h */, - 168389A483EE1A2FFB33EAD7A72599E0 /* FBSDKShareMessengerContentUtility.m */, - 5870AC01A2B66DACFB5EF8DF86F3A3E9 /* FBSDKShareMessengerGenericTemplateContent.h */, - 5B7C69B54E006EECF1C28F66946D96EF /* FBSDKShareMessengerGenericTemplateContent.m */, - CAE94A7CEF07674CA5A9504B98BB4B9D /* FBSDKShareMessengerGenericTemplateElement.h */, - C51B5C8D42BB2FCA4FDFB6DB12343DF1 /* FBSDKShareMessengerGenericTemplateElement.m */, - D0439D5A4E46C28BEDE7B249A11B358A /* FBSDKShareMessengerMediaTemplateContent.h */, - FD37A75E3B04A194B8A7DF3E67156907 /* FBSDKShareMessengerMediaTemplateContent.m */, - 9FC6CB7CF81A4D88DDFFCA3A269B7F29 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h */, - 6E774A5077A3054A8BBA9C022C1E29F4 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m */, - E22E9CCF0015069EC4DA801689A00653 /* FBSDKShareMessengerURLActionButton.h */, - 4F541374C8430DA0077106D6E5F1DA26 /* FBSDKShareMessengerURLActionButton.m */, - D6F306826C82D3D7DCBEF677A85120BB /* FBSDKShareOpenGraphAction.h */, - 44B5F73B49B2F5CD6A2A7696618A8931 /* FBSDKShareOpenGraphAction.m */, - 7ADED0A7769310FE904BC209FDA425FA /* FBSDKShareOpenGraphContent.h */, - BAB42CCC406C6A5E4743ED0336157DA1 /* FBSDKShareOpenGraphContent.m */, - 7642275934E424A63198BB2B53B41144 /* FBSDKShareOpenGraphObject.h */, - 54EF2C419EDEC0E3FCE2864C5F40C795 /* FBSDKShareOpenGraphObject.m */, - 18BEBF8BED1319225F8546240158824B /* FBSDKShareOpenGraphValueContainer.h */, - E0FF3EC47A42286B181021A479DD1803 /* FBSDKShareOpenGraphValueContainer.m */, - 2F5C77D4033571915F1514FFA13A7AC6 /* FBSDKShareOpenGraphValueContainer+Internal.h */, - 7FFD442C08D07342BF2D569764C17502 /* FBSDKSharePhoto.h */, - 0C4F7BEF57EDE8480EF5D3BB0038A9A9 /* FBSDKSharePhoto.m */, - 565ADF0C1EA97B982FEB1A8BC05B7C2E /* FBSDKSharePhotoContent.h */, - B367F401FD4702B3206026DF4F75F33D /* FBSDKSharePhotoContent.m */, - 4E184A6E100068DE232EEE9238820E8D /* FBSDKShareUtility.h */, - EBB4AC8A822AA58630CAC4468B0B14ED /* FBSDKShareUtility.m */, - F595D724DDAEC4AAEAC9F66C11999838 /* FBSDKShareVideo.h */, - CB62F7CE20B50C030CBE53D47D42937F /* FBSDKShareVideo.m */, - 85E562A612CB4F467213BE91B2F766A9 /* FBSDKShareVideoContent.h */, - F17BB7C782512DC313E03E2EC880AB33 /* FBSDKShareVideoContent.m */, - C1C2CA015EB5FB6D0D7D1E529440594C /* FBSDKSharing.h */, - B31A3DA2188BE0FC38C6889CC1B9DCDA /* FBSDKSharingButton.h */, - 61AEAF3AAE7DB3790BF72EB0A31909EB /* FBSDKSharingContent.h */, - 6932BABFB9914AE06E34FF9EC3FB6099 /* FBSDKSharingScheme.h */, - 8624E8CEF200BAFC250C1F71250D0786 /* FBSDKSharingValidation.h */, - 0C03F27BB1C39FD44794CD971653F9B8 /* FBSDKVideoUploader.h */, - FCD1EA6A6A7C243E0424BB20F7AB9F52 /* FBSDKVideoUploader.m */, - 0B0892DA30CD9297FD42F8CEB802385C /* Support Files */, ); - name = FBSDKShareKit; - path = FBSDKShareKit; + name = "Facebook-iOS-SDK"; + path = "Facebook-iOS-SDK"; sourceTree = ""; }; - E5F7749B19D7F3F11554A2F54C646863 /* PEAR-FileManager-iOS */ = { + DB4763EE1D2010720571A54C2DE30E13 /* Support Files */ = { isa = PBXGroup; children = ( - A4A34BDF7F1C2EF28E102545830C36B4 /* PEARFileManager.h */, - 0E2135D9F38B34065389530EF9C89743 /* PEARFileManager.m */, - C552AAE32F9E8DE0599E91EB27362416 /* Support Files */, + 5E638E4E812BAD1DDB8ED88531DCBEEB /* DJLocalization.xcconfig */, + 84E8AE35B5FE89A5C04732BE26EEB99C /* DJLocalization-dummy.m */, + 1F7FD350E74EAE9A5918211972FEFCA3 /* DJLocalization-prefix.pch */, ); - name = "PEAR-FileManager-iOS"; - path = "PEAR-FileManager-iOS"; + name = "Support Files"; + path = "../Target Support Files/DJLocalization"; + sourceTree = ""; + }; + E78DF778097AA626C9C069777CE9348D /* AppLinks */ = { + isa = PBXGroup; + children = ( + 1A3C32898DC0EEBDBE77CAB1B4600672 /* BFAppLink.h */, + 86DBEE22F90A25649F8A23C69D2CB5AA /* BFAppLink.m */, + 39A0E708D67DF3D162AE8EA6BB54D30C /* BFAppLink_Internal.h */, + 677236E9F8E56E2EED7E7B340ED191F9 /* BFAppLinkNavigation.h */, + FAD1BDBB0FB7D500AC2C5F94035C962B /* BFAppLinkNavigation.m */, + 48F8B518BC8B986B921179F6F9240DDB /* BFAppLinkResolving.h */, + 317C9DDA49939960F85B33DA232F29DE /* BFAppLinkReturnToRefererController.h */, + CB2DA88A317AD09A2551C77FBB019836 /* BFAppLinkReturnToRefererController.m */, + 67FB21CF1D8CFEF98F752ED2CBDF78A4 /* BFAppLinkReturnToRefererView.h */, + 9DA70D814036C015181CDFD29F020C55 /* BFAppLinkReturnToRefererView.m */, + 44AAB06DEF12C90E826CE14183B842CC /* BFAppLinkReturnToRefererView_Internal.h */, + 000F1CF748EBFB206133755B1FF1DF13 /* BFAppLinkTarget.h */, + D379952EE9B1CC53D49E8D28922CA33A /* BFAppLinkTarget.m */, + CFA9F1F614B10DB5193835F6CA1CE645 /* BFMeasurementEvent.h */, + 980BE1AD67D110D1788859B542CCB1F5 /* BFMeasurementEvent.m */, + CA4B3B1E2DC384D754F5F1E6F415285A /* BFMeasurementEvent_Internal.h */, + E88CCB368E9928553AE326AF7F243143 /* BFURL.h */, + DC22675D40DB2EA22CD300BAC3988061 /* BFURL.m */, + E555F9526014825E9D9978649E8ABDCC /* BFURL_Internal.h */, + 670DD800EE70F43E4275DED5BE72A491 /* BFWebViewAppLinkResolver.h */, + CAF2CBBBAF5ADC862D5BACCC4996077D /* BFWebViewAppLinkResolver.m */, + ); + name = AppLinks; + sourceTree = ""; + }; + E7D5CDD83DEC45B900A7F438ACDF6B89 /* Support Files */ = { + isa = PBXGroup; + children = ( + AC9B65AA3E6DE33D83D54630E769C436 /* StrongestPasswordValidator.xcconfig */, + B9C4C857FE11E8538A359C64429837B9 /* StrongestPasswordValidator-dummy.m */, + 10AA4623E8F05E9766FD267C34BB489C /* StrongestPasswordValidator-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/StrongestPasswordValidator"; + sourceTree = ""; + }; + F42C94EB9FB3FCDF794DE0AED460AE1B /* Support Files */ = { + isa = PBXGroup; + children = ( + 482729C64A5AA1E97993393D357C317E /* PEAR-FileManager-iOS.xcconfig */, + E11CCF6BD0966E6C4B4E2603305F81AD /* PEAR-FileManager-iOS-dummy.m */, + 3900C9A84CF29C766612D6C79740823F /* PEAR-FileManager-iOS-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/PEAR-FileManager-iOS"; sourceTree = ""; }; F4CDA5FA9197A41E0081E84F932906EB /* Frameworks */ = { isa = PBXGroup; children = ( - C1804DFEA608FCE87A2C7766D6FD421A /* iOS */, + 16F1B28B307B4AEA16014CF4ACC987CA /* iOS */, ); name = Frameworks; sourceTree = ""; }; - F660A2C0AF25A9B6114650DE91F3C822 /* Expecta */ = { + FFA81B69CDC9D36FC14CA41CC5CEA3EF /* Support Files */ = { isa = PBXGroup; children = ( - 6F337357C275445D11C05C3D05412409 /* EXPBlockDefinedMatcher.h */, - 6BC8DD89E498C32B266891C23AB6FDC5 /* EXPBlockDefinedMatcher.m */, - 8980D6FAE79CA78C7001A8EA2BC3E1C4 /* EXPDefines.h */, - A373CB0170E3799074B8D43A97F6C3DE /* EXPDoubleTuple.h */, - 3551BEEAC27EF8D09CD29F52E558D806 /* EXPDoubleTuple.m */, - B9A66D1BA73BBAAF86C6CF4CD6BEE54D /* Expecta.h */, - DFE97F191775602DFEAE6E206DA38BBB /* ExpectaObject.h */, - 09FC8EE3328476939506F0CAD81A6757 /* ExpectaObject.m */, - 3D0DF3729BE6BBEEE00F9B91E3D1674F /* ExpectaSupport.h */, - E1A28981401446572FE29DAC9570ECC5 /* ExpectaSupport.m */, - 748A5B4FCF6878E666806705BA41E859 /* EXPExpect.h */, - E8125DFB41A764986449B5FFD87065B1 /* EXPExpect.m */, - EB5B907BC96C09D6BB405190C882BBD5 /* EXPFloatTuple.h */, - FC9BBD4529783C71966EC576E224DB8B /* EXPFloatTuple.m */, - 1AEF0C66CA8D1E28D60B2C75C55CE9A0 /* EXPMatcher.h */, - F2399C18A88B380AD1FBABFD1ADC63B7 /* EXPMatcherHelpers.h */, - BD93892679A0E8925992B5C843C04755 /* EXPMatcherHelpers.m */, - 5E41BAE09E8F96F1CC0C694C0A13330B /* EXPMatchers.h */, - B2ADEF6DE2A753024D7EE6BB62C12A0C /* EXPMatchers+beCloseTo.h */, - 4FD38A9226FE7FDA838763FAA4056722 /* EXPMatchers+beCloseTo.m */, - 6B5DD49FEDCD3CD1BCA1ED51D8365DEB /* EXPMatchers+beFalsy.h */, - 92C705C9C2D61894D5869A2198F62607 /* EXPMatchers+beFalsy.m */, - DE67682584A286D51ED20B31D084E028 /* EXPMatchers+beginWith.h */, - 21EE23B56B6160B8FF9892C879BF17BF /* EXPMatchers+beginWith.m */, - 4268EDC447EE59BDBB8ABBC399FE5188 /* EXPMatchers+beGreaterThan.h */, - E8FF921CC0A5BF5881CB0A658CAC6F7D /* EXPMatchers+beGreaterThan.m */, - 35804B3CEE4F9061640C2881234D0B6A /* EXPMatchers+beGreaterThanOrEqualTo.h */, - 2219D5C06179BD9C93CC2B7E8E7CD4DD /* EXPMatchers+beGreaterThanOrEqualTo.m */, - 3AC81A0D2E762BD988AF1E7E0BBC1AEE /* EXPMatchers+beIdenticalTo.h */, - 6CFFE266989CAEEB105125FDA511198E /* EXPMatchers+beIdenticalTo.m */, - 4C6C846D234A6F018B473255B0F47201 /* EXPMatchers+beInstanceOf.h */, - 6B80C2A86E5412DD2870FA63E06F6E33 /* EXPMatchers+beInstanceOf.m */, - 2A615662CD3D253D18C81ACEB4D51FEA /* EXPMatchers+beInTheRangeOf.h */, - 610B3F3EB62EDF675253EC2EC174742B /* EXPMatchers+beInTheRangeOf.m */, - 8027B64849AE705283D770AE136C543C /* EXPMatchers+beKindOf.h */, - FE242ABAC176E657012AB92CBE4DDB4F /* EXPMatchers+beKindOf.m */, - D6687C4432E52053F517767D035DB259 /* EXPMatchers+beLessThan.h */, - 4B3CF9BC60882B5CABB7C29219C1A5F5 /* EXPMatchers+beLessThan.m */, - 375620A2EF26926B58593F4262BDB803 /* EXPMatchers+beLessThanOrEqualTo.h */, - B63D6D1A539902429FE51B2BF2A53071 /* EXPMatchers+beLessThanOrEqualTo.m */, - 87F16AC73F6DC5DC5D2C30FC2F111C10 /* EXPMatchers+beNil.h */, - DF997915633455E830598962FABE969F /* EXPMatchers+beNil.m */, - EDFB9389E6BC749689DAF1C72BD35634 /* EXPMatchers+beSubclassOf.h */, - 50035DCF1A752411360B10EFFC35F0BD /* EXPMatchers+beSubclassOf.m */, - BED4CE54AC8106A6864F85607C1A6976 /* EXPMatchers+beSupersetOf.h */, - 5D49012A51A1B5C9ABD583D3B12D61E1 /* EXPMatchers+beSupersetOf.m */, - 15ADDF66D61DF3F757DC15DD22960A85 /* EXPMatchers+beTruthy.h */, - C4133B738A4980DB8CFA963ED740C59C /* EXPMatchers+beTruthy.m */, - 800D7827EDE27C97F6CF2751A65EAC01 /* EXPMatchers+conformTo.h */, - D0E9C7B7B50E52257245C7FCE81EAC42 /* EXPMatchers+conformTo.m */, - FC1C84083C56DEA9692B2856DE211395 /* EXPMatchers+contain.h */, - 9DCA1FB1D85806F924962DB918031C6C /* EXPMatchers+contain.m */, - 18E3F2D763C0560879C54D3E19F7D46F /* EXPMatchers+endWith.h */, - 40847E3530278BABA50E27F042C4A6D4 /* EXPMatchers+endWith.m */, - 51B137C5DB9EE4C34F0784B0E2300B45 /* EXPMatchers+equal.h */, - 8364047D4C435ABFE5C89C5D44227EE8 /* EXPMatchers+equal.m */, - 09760B847BD503A2045C772B3ED2E2B2 /* EXPMatchers+haveCountOf.h */, - 9CF9487BD2BD29A89969AFDC1E824BF9 /* EXPMatchers+haveCountOf.m */, - 3947CAB7BA76C2DCF9C1AC6C4B8B9816 /* EXPMatchers+match.h */, - 34FCBE7D1D77C32B559F05E07654D2A3 /* EXPMatchers+match.m */, - 6727A49F23F5D0E57AD124C38F13BFE8 /* EXPMatchers+postNotification.h */, - C08EBEEB85A2C61F7C4454A227DD0BF3 /* EXPMatchers+postNotification.m */, - 48EDB67FEAA6908810F10C1EF4059E0B /* EXPMatchers+raise.h */, - 2ECF7B3E0E8A8B859C7A2F89B06AAA26 /* EXPMatchers+raise.m */, - 2562B5BCB3BB4273DD636EBF7CF6D668 /* EXPMatchers+raiseWithReason.h */, - 8D8B4922E95788F5B6D84BD95973C201 /* EXPMatchers+raiseWithReason.m */, - C72E97BE66A5B29F0A07C26872D0713A /* EXPMatchers+respondTo.h */, - 2598C4C9811FCBD7CCBFD97D7268398C /* EXPMatchers+respondTo.m */, - 544310B55950B4943152573ED2AFFE8B /* EXPUnsupportedObject.h */, - 78ADC27CAD5317640AD7062E17593E6A /* EXPUnsupportedObject.m */, - 8FA08EC0714F4A88BF630D3F963EB509 /* NSObject+Expecta.h */, - 6F6FFF41F5657EF1F9999F87B32D0ACE /* NSValue+Expecta.h */, - DEB52BB2809F059D93B9F3616B2C905D /* NSValue+Expecta.m */, - 3691E310572BDF11F2BE2327EBE14D34 /* Support Files */, + 9DEFE2D0367E8F4D9B99253AA6D3D3C7 /* DDDKeychainWrapper.xcconfig */, + 656001A3D96976072BAC29FA16251DDC /* DDDKeychainWrapper-dummy.m */, + C0CB6ED130C6BDC9CEE414E576D37AFA /* DDDKeychainWrapper-prefix.pch */, ); - name = Expecta; - path = Expecta; + name = "Support Files"; + path = "../Target Support Files/DDDKeychainWrapper"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 0F2091FA4173804FF2E271157515973E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D0692C5DFB050EFB05E4E96AF3A5F01 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, + BC2BC4395DD346253548C4A56D9C0CF2 /* FBSDKAccessToken.h in Headers */, + 01E67A1E5948E7E50A8336B7C428DA52 /* FBSDKAccessTokenCache.h in Headers */, + 62C6C3B335402F6735C1C7819C68A078 /* FBSDKAccessTokenCacheV3.h in Headers */, + C54B30A0EDEA70A617C5E38B165E7BA0 /* FBSDKAccessTokenCacheV3_17.h in Headers */, + DF20DFB835A253CC1E648808798F6800 /* FBSDKAccessTokenCacheV3_21.h in Headers */, + 930EBC3071860B3F7C858DBE14EADE91 /* FBSDKAccessTokenCacheV4.h in Headers */, + 121CD17FEECE83AF9131CB989D332A37 /* FBSDKAccessTokenCaching.h in Headers */, + E7792B3391A4622EC4E2031837DF998F /* FBSDKAccessTokenExpirer.h in Headers */, + E5846A28333DD67BA0D29FEC25FFD106 /* FBSDKAppEvents+Internal.h in Headers */, + D47E651F893A933FAF131E6C1242C937 /* FBSDKAppEvents.h in Headers */, + FA019E109DFDDD43D65E5B1B628570CB /* FBSDKAppEventsDeviceInfo.h in Headers */, + 480D5935CD345ADC019E50448974021B /* FBSDKAppEventsState.h in Headers */, + 1232F21D67820B6A4F3195BFEC0FEE66 /* FBSDKAppEventsStateManager.h in Headers */, + D37BAB174EB0F132D439A5D05F94E227 /* FBSDKAppEventsUtility.h in Headers */, + 5019A8C44B238BDC8BC538106A57996C /* FBSDKApplicationDelegate+Internal.h in Headers */, + 7625157774F10E1D7FCE7AD9293D706A /* FBSDKApplicationDelegate.h in Headers */, + BA2164DF087EF99B88E70A5E1F656EF3 /* FBSDKAppLink.h in Headers */, + CA211FF274BDACAB9A0812DAB7DD6FDA /* FBSDKAppLink_Internal.h in Headers */, + B434FB5FA1CB698777FAA0EC7CF93D54 /* FBSDKAppLinkNavigation.h in Headers */, + BB4BCFE450EA1F4CBCAA2C1E415065B6 /* FBSDKAppLinkResolver.h in Headers */, + E06EB1EAE7A25512F7C834A064643A4B /* FBSDKAppLinkResolving.h in Headers */, + 464CBAB5BE36DA805640E024A438007E /* FBSDKAppLinkReturnToRefererController.h in Headers */, + 0D647C62B673E2CC77779886580C5A52 /* FBSDKAppLinkReturnToRefererView.h in Headers */, + 8779A887F9007A0F876939F6CB7848BD /* FBSDKAppLinkReturnToRefererView_Internal.h in Headers */, + DBF61CF976AFB7BA508910F2C6B42E35 /* FBSDKAppLinkTarget.h in Headers */, + 913A4693C4D7D0EB7F70C4FA43A032CE /* FBSDKAppLinkUtility.h in Headers */, + 2F2FE1C49C629B140A829ABFE0FAACF0 /* FBSDKAudioResourceLoader.h in Headers */, + 013EF458065D79BBEC4C4DCDB96F5006 /* FBSDKBase64.h in Headers */, + 90D504C318D675FD00626279AD97F220 /* FBSDKBoltsMeasurementEventListener.h in Headers */, + 26F1A8FAB560CE2C7B43B5D0EE3E52CA /* FBSDKBridgeAPICrypto.h in Headers */, + 001D7E3CB983A8CE083F1EF4182198EE /* FBSDKBridgeAPIProtocol.h in Headers */, + A8632DA71B09D43374CF7CDD90186031 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, + 2CB881B8F5A4A45849C253AA8C76899D /* FBSDKBridgeAPIProtocolType.h in Headers */, + 7C9F9DB10AC9460EAA4D07C6D474A59E /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, + 79CB053D44A4204C4278653CE5365441 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, + 4BA92AE5F377BA1E92A1D7566305C4EE /* FBSDKBridgeAPIRequest+Private.h in Headers */, + 5342C542FFA001965F816E752AB14947 /* FBSDKBridgeAPIRequest.h in Headers */, + 8F5284023F4AF857EACFEFEB8F6BAB9C /* FBSDKBridgeAPIResponse.h in Headers */, + F59F041A226721F85A5808290E4C1A76 /* FBSDKButton+Subclass.h in Headers */, + 003C66447305234CD3387D77362D2FBE /* FBSDKButton.h in Headers */, + 1A1636B9D2F688A702FEF84B5798045B /* FBSDKCloseIcon.h in Headers */, + F3444AC0AE496121201866D805D26F4C /* FBSDKCodelessIndexer.h in Headers */, + F48DAA38A3BEEB44DABF5EBAEF32B8A3 /* FBSDKCodelessMacros.h in Headers */, + 4732FEE7344C121E72E2B2DAA5E420B7 /* FBSDKCodelessParameterComponent.h in Headers */, + AEA0520A2D183DB2B136DAD0F8452DA3 /* FBSDKCodelessPathComponent.h in Headers */, + A0D3C44433C22860C19EBBFBB777BA40 /* FBSDKColor.h in Headers */, + A1624FBD76B02D023B491C5DFA259F6D /* FBSDKConstants.h in Headers */, + BE3079B7E88A97359AFA5A382E54C229 /* FBSDKContainerViewController.h in Headers */, + A1FF9CB98C6B84C2D8293739F0EB3907 /* FBSDKCopying.h in Headers */, + BD58D4D69591EF9F011927C37B2614E9 /* FBSDKCoreKit+Internal.h in Headers */, + A33844353A16AB0A5CBEDFE047734EA4 /* FBSDKCoreKit.h in Headers */, + AC1EF555A2BE4175645FC535C0A5028A /* FBSDKCrypto.h in Headers */, + 0FA1713B6A6CD455B4D108B25ADD74CB /* FBSDKDeviceRequestsHelper.h in Headers */, + 044169F43C50021142B6B7C33A5FBDEF /* FBSDKDialogConfiguration.h in Headers */, + 3E7020D6F81D3DEEBCFFE631D07C6F5F /* FBSDKDynamicFrameworkLoader.h in Headers */, + E7F992E916E99D9A795AA664F621E385 /* FBSDKError.h in Headers */, + FBE75F7E04D62DB5FDFA01C26F68D69E /* FBSDKErrorConfiguration.h in Headers */, + 7FB8F274FA3C814E62E483970745CB87 /* FBSDKErrorRecoveryAttempter.h in Headers */, + 44DF926A67F4B16B0A26CA6523D94DB6 /* FBSDKErrorRecoveryConfiguration.h in Headers */, + CC0B7721E511B0FB4654E16B232C7666 /* FBSDKEventBinding.h in Headers */, + 29B2AD57EB2C737C713A6C3B025966E7 /* FBSDKEventBindingManager.h in Headers */, + 7DBE8A059E20CB8FEA3831FC56E68776 /* FBSDKGateKeeperManager.h in Headers */, + 8982E8831CCB8A333F6EC231562DE2DC /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, + 40DB0F3696BF92748AD072C52C2F8D88 /* FBSDKGraphRequest+Internal.h in Headers */, + AB5ED060D8115BADD3439C8FBCF3B7DC /* FBSDKGraphRequest.h in Headers */, + 08EFF5B59D6719657FDBF3262BD74462 /* FBSDKGraphRequestBody.h in Headers */, + 1CAE75ED48FB601FDF44A292C96E97CD /* FBSDKGraphRequestConnection+Internal.h in Headers */, + 93513DBDD1318B7A3C7C45B9B8D29573 /* FBSDKGraphRequestConnection.h in Headers */, + 2FA88F65FA393DBE6BB81D24C5B82ADF /* FBSDKGraphRequestDataAttachment.h in Headers */, + 9328E9935D35F813E10B1A9E9F56B050 /* FBSDKGraphRequestMetadata.h in Headers */, + E7033DDCAF7C22F9802FEECE2C3A78E5 /* FBSDKGraphRequestPiggybackManager.h in Headers */, + 4543EACA66C696711260962DDF817939 /* FBSDKHybridAppEventsScriptMessageHandler.h in Headers */, + 4B07FDAE09AD3935FC7D21A580784B92 /* FBSDKIcon.h in Headers */, + D40BEAE665E7A15CEDF767788F30CD2F /* FBSDKImageDownloader.h in Headers */, + 7BE57CA288ED004D34F221B694BEA79C /* FBSDKInternalUtility.h in Headers */, + F885194357A4447719B0B760E5918A49 /* FBSDKKeychainStore.h in Headers */, + 4C7C40AA3F329F239B610AA2EEE2D6C5 /* FBSDKKeychainStoreViaBundleID.h in Headers */, + 2211ED65288DD4CC5A0424002CD7845C /* FBSDKLogger.h in Headers */, + 0777D597D523973F9B02F673DB28464F /* FBSDKLogo.h in Headers */, + 3D0532FB2EC6DF83E9DECD38072E6FF5 /* FBSDKMacros.h in Headers */, + DB440AA69A6052B92C05AD110911AF79 /* FBSDKMaleSilhouetteIcon.h in Headers */, + FD5DF0C25E9FA1440F483897C87423D1 /* FBSDKMath.h in Headers */, + 1E3B24C80925403D2EF4BC821E18BFE0 /* FBSDKMeasurementEvent.h in Headers */, + BBE7545BEEACFCF76F08408031875870 /* FBSDKMeasurementEvent_Internal.h in Headers */, + 5761D245AE58E0E6DC5D282FE7294315 /* FBSDKMonotonicTime.h in Headers */, + 648E9D3F57A37FFCEC532894C5EE0699 /* FBSDKMutableCopying.h in Headers */, + 68454CA2A86FA3941D746279611DC85A /* FBSDKPaymentObserver.h in Headers */, + D90B33201F030360BB14679219CF6EBF /* FBSDKProfile+Internal.h in Headers */, + 1E108EAE7598DEEC66084FF3CE8C768F /* FBSDKProfile.h in Headers */, + D29CD851BCA36EB4946431A5E3FD2CCC /* FBSDKProfilePictureView.h in Headers */, + C97610ED487DC718F1F8C6C0DF4740E7 /* FBSDKServerConfiguration+Internal.h in Headers */, + 43E4C38DAE8F8F549728812BF25A50C6 /* FBSDKServerConfiguration.h in Headers */, + D871E80BD748C578D368E3AAA0EA3E38 /* FBSDKServerConfigurationManager+Internal.h in Headers */, + 4355091BD1D9F346C4E96BCB1CCCF4D7 /* FBSDKServerConfigurationManager.h in Headers */, + 037C1A5A6542CB296776362C63A0E4E4 /* FBSDKSettings+Internal.h in Headers */, + FDA0CDF8ECA4EE835CB07AE3DFDC1118 /* FBSDKSettings.h in Headers */, + 28E7AF256840F042F2AE4526C2F2CE27 /* FBSDKSwizzler.h in Headers */, + 6EDAF7AAD2C46E8C4D9EE5B39B71F2B0 /* FBSDKSystemAccountStoreAdapter.h in Headers */, + 18289F907B47703F39AC051162392C93 /* FBSDKTestUsersManager.h in Headers */, + 07C0880F6DF8294A48B81C28B104663F /* FBSDKTimeSpentData.h in Headers */, + 105BEDD5404301CA97CD42483FBCF77F /* FBSDKTriStateBOOL.h in Headers */, + 80C375FC68F9B28B33C527FBEE3CC6A6 /* FBSDKTypeUtility.h in Headers */, + 0FFA1B95718521D093347C0657030E5F /* FBSDKUIUtility.h in Headers */, + 9750E566793768EF169431B2637AC99A /* FBSDKURL.h in Headers */, + 9A18D8A6550A52F5C7F0BD126DD7F405 /* FBSDKURL_Internal.h in Headers */, + F9583EBE46EE7F031196D2C620FC4590 /* FBSDKURLOpening.h in Headers */, + D849369D5C51B7755A7243B13F11E607 /* FBSDKURLSessionTask.h in Headers */, + DC6A3A028D90BD20C78ABA2E1C18C1C4 /* FBSDKUserDataStore.h in Headers */, + FACF57EABD121B3AF175703F8A1E2DF4 /* FBSDKUtility.h in Headers */, + B393D49D591107B9068E39C4E4AF8A99 /* FBSDKViewHierarchy.h in Headers */, + E49ED417AB20B25AABA50D5BF4106ED3 /* FBSDKViewImpressionTracker.h in Headers */, + 0A0401388402B54927DFEDBE570FA461 /* FBSDKWebDialog.h in Headers */, + 46D0FCA3AEF62CCBFCE76CA2DC40B35D /* FBSDKWebDialogView.h in Headers */, + 877CB69D147D2206337C609F0051CEBA /* FBSDKWebViewAppLinkResolver.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 0F3D68BE8DB057D539676D639CA19719 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3158,11 +2728,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 135E06379292BAEA4DDD0EE659589AE2 /* Headers */ = { + 183AD9A81B3943DCFF634FAD9CC05C93 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DE6B05817658FA630B754D05421587D8 /* StrongestPasswordValidator.h in Headers */, + 8DBE38B9A78C819A0F99EE4F4575BB9B /* ALView+PureLayout.h in Headers */, + 145E7C905FC0B7F94382F19FAAEDF431 /* NSArray+PureLayout.h in Headers */, + 5B15330AD877AFEE5C2DFA8FAFD694D3 /* NSLayoutConstraint+PureLayout.h in Headers */, + 0408330158A2E9B48AF110B05E7F6640 /* PureLayout+Internal.h in Headers */, + 851A96A6C60CAE6F883E8546713B8C63 /* PureLayout.h in Headers */, + FE3E49E542CDC7E98F88AFE496233714 /* PureLayoutDefines.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3178,213 +2753,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 28E7D9FDEBB56EDBF81AEACED2DE44EF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 46E4B5B6B00026940A4F68E4B3DCE84A /* FBSDKAppGroupAddDialog.h in Headers */, - CDBACFE3595B7810F501F7401E25AE09 /* FBSDKAppGroupContent.h in Headers */, - 188E716EBDF21E71A02CC7EFB29C6C30 /* FBSDKAppGroupJoinDialog.h in Headers */, - 09C0057FD1DEEF4659BAB5030B00B77A /* FBSDKAppInviteContent.h in Headers */, - E81D9CAD6E38E6A11EE835CC45943CF9 /* FBSDKAppInviteDialog.h in Headers */, - 6A79CB0F6CBA69860AA8F3340128DC1D /* FBSDKCameraEffectArguments+Internal.h in Headers */, - 449CEA122C4676A1B00D3A3C3CBE7A6E /* FBSDKCameraEffectArguments.h in Headers */, - 584EB991FA3571F93AD6C6F8CBE40ECB /* FBSDKCameraEffectTextures+Internal.h in Headers */, - 52013313F8863A2E5BD7EBBBC151080E /* FBSDKCameraEffectTextures.h in Headers */, - 5CF3B82DFDB3064C86E53278994C1532 /* FBSDKCheckmarkIcon.h in Headers */, - CC17AFEFD713E37E561285987DD29B15 /* FBSDKGameRequestContent.h in Headers */, - AD822B83292C5C186C2581BBC86842F3 /* FBSDKGameRequestDialog.h in Headers */, - 17A9072498EF63122AEF07383B4A9761 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, - 6619FEF6F9675153A61F0052BFE0C2D1 /* FBSDKHashtag.h in Headers */, - 6DC8E9658B53381381FF83D6CAB7562F /* FBSDKLikeActionController.h in Headers */, - E52D40C69C9451A95D4EB12E55F0C1B5 /* FBSDKLikeActionControllerCache.h in Headers */, - ECD308C08C8456FC6B2A4BA1BC9902B1 /* FBSDKLikeBoxBorderView.h in Headers */, - 4FEACBD15B82E17E01DAF9C08F9A3845 /* FBSDKLikeBoxView.h in Headers */, - 8D5A376E51ADE0B377F302FB4E27C6B1 /* FBSDKLikeButton+Internal.h in Headers */, - B1F4A0076ECF098DF51D77B65DABCB17 /* FBSDKLikeButton.h in Headers */, - 8F5C8E3BEFC7BA916E0E538BFB6B1638 /* FBSDKLikeButtonPopWAV.h in Headers */, - D22BBEE4E9A6F0D6CE505B5F5B038F99 /* FBSDKLikeControl+Internal.h in Headers */, - 99A2E0F759E819C5A930D72C10354A9A /* FBSDKLikeControl.h in Headers */, - CCD02E5E143C8FEF45E983835202DE47 /* FBSDKLikeDialog.h in Headers */, - 57FA9C9E75997394348C17E6F2F7DEB9 /* FBSDKLikeObjectType.h in Headers */, - 05185729116B927A056C7AF9754C4539 /* FBSDKLiking.h in Headers */, - 92763E0B98BFA7F74976576A06F9BDEF /* FBSDKMessageDialog.h in Headers */, - 722F4F7059004BC26B05B04159A8F02D /* FBSDKMessengerIcon.h in Headers */, - 70C2B4A4DF9A6936BC3F62E5A1A598D0 /* FBSDKSendButton.h in Headers */, - D9BE0B9B91D0C624AE71E09E800A1496 /* FBSDKShareAPI.h in Headers */, - F3750DCD37E60C5EE8D8401B83B9F86E /* FBSDKShareButton.h in Headers */, - 4A98F2855308B3D4747CADBFD1645254 /* FBSDKShareCameraEffectContent.h in Headers */, - 5DE6FF81784F3E5A4B2613938B81B958 /* FBSDKShareConstants.h in Headers */, - 552B55E25CD26A0A0881FD8C7855EF2E /* FBSDKShareDefines.h in Headers */, - 1ECF3D2B32C6DED2CE0769D30757CE08 /* FBSDKShareDialog.h in Headers */, - A1D6D467725CEA1E1DC7CAB5BEA0B96D /* FBSDKShareDialogMode.h in Headers */, - 27AE1E66223D92B631DB67BC329BEA61 /* FBSDKShareError.h in Headers */, - C09D68B57794FCA0A63B590B7AE55F2F /* FBSDKShareKit+Internal.h in Headers */, - E155E59C839A05C01878A9630051B628 /* FBSDKShareKit.h in Headers */, - 224EBFFFCE79EF531EBBC5764B8F47C8 /* FBSDKShareLinkContent+Internal.h in Headers */, - F9B545C30B1E4CD25DF7D3A49CC14DF3 /* FBSDKShareLinkContent.h in Headers */, - EF4D23FC58F9782C3EAE252D5447F2F2 /* FBSDKShareMediaContent.h in Headers */, - 3EED88EEDE1C0C7A16DC71CA2DDE4EA3 /* FBSDKShareMessengerActionButton.h in Headers */, - 580133EA8C6B03050D04359FBD1864A5 /* FBSDKShareMessengerContentUtility.h in Headers */, - 28ECD775F8DCC733D298F8ABA2013C6A /* FBSDKShareMessengerGenericTemplateContent.h in Headers */, - 2F3272F9B3E950E60A797EF3BF9D1A61 /* FBSDKShareMessengerGenericTemplateElement.h in Headers */, - 6B3798C77A446D3A3FE2F40801BCFF98 /* FBSDKShareMessengerMediaTemplateContent.h in Headers */, - 0D3C5DD6B9F4D84D787D9AE239C810AB /* FBSDKShareMessengerOpenGraphMusicTemplateContent.h in Headers */, - 9308DA2187804CCE5AEB594FC69433B2 /* FBSDKShareMessengerURLActionButton.h in Headers */, - 8789804AC1D6DB6E826562679A0B5755 /* FBSDKShareOpenGraphAction.h in Headers */, - 44FD0E419777DFA3AD0463D952EB0772 /* FBSDKShareOpenGraphContent.h in Headers */, - 40509D22018572758A17B9974F7A4189 /* FBSDKShareOpenGraphObject.h in Headers */, - A9884A2EDCE569C96A067FC4EF36C01F /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, - D1FB09E6227F5F596C07468BCFBD7165 /* FBSDKShareOpenGraphValueContainer.h in Headers */, - 0550B4BF59B1049BD82A1D505D494E7F /* FBSDKSharePhoto.h in Headers */, - 54AD6DE6A29D9DAA91597608E2FE005F /* FBSDKSharePhotoContent.h in Headers */, - E3562A44D795D0A7E599FD2E90FD2029 /* FBSDKShareUtility.h in Headers */, - ABC3CB7089B6AA83B96FCB031E455EA6 /* FBSDKShareVideo.h in Headers */, - 6AF2F5C155E6B7CFEF956A11F4FAC79E /* FBSDKShareVideoContent.h in Headers */, - DFFE4A79C08EBBEA4A9FF707A8E053DA /* FBSDKSharing.h in Headers */, - 1C5BEFFB0A0C786594702A006EEC6CE5 /* FBSDKSharingButton.h in Headers */, - 7C7613E6DD3B5405607CE0212323BFED /* FBSDKSharingContent.h in Headers */, - D9C2977315727943B95783191594F4BA /* FBSDKSharingScheme.h in Headers */, - D772B9EAAD53EE795989F4980949367A /* FBSDKSharingValidation.h in Headers */, - CA71B66465DCED2490A49660B2B14450 /* FBSDKVideoUploader.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 403C1ED2B66F053BC2C51F88F8C3FE08 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - A49198B98E5C0BB49892785E10D0F7A8 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, - FB6E7FBAF9F3350D2EFCE428BAE57289 /* FBSDKAccessToken.h in Headers */, - 18280685903B8517AA27746BD27DEC76 /* FBSDKAccessTokenCache.h in Headers */, - 2F00F1852018F6AF3EDAFD7E8ABB744D /* FBSDKAccessTokenCacheV3.h in Headers */, - D6E1856128BBBA14F707E98BB604EC93 /* FBSDKAccessTokenCacheV3_17.h in Headers */, - 5CB4B2864D1BC7CFD01093A34233FC62 /* FBSDKAccessTokenCacheV3_21.h in Headers */, - 46C0B3FCB2E2C02C974CBA1411DFAF25 /* FBSDKAccessTokenCacheV4.h in Headers */, - AC3A306E8F74654902835F64C33B0E0D /* FBSDKAccessTokenCaching.h in Headers */, - 7F8D82B2DC379FD4555A31361E385183 /* FBSDKAccessTokenExpirer.h in Headers */, - 824ABE35BCC524701DB1EA1C6B990717 /* FBSDKAppEvents+Internal.h in Headers */, - D18BD7987D2CA65008AE124484765BC5 /* FBSDKAppEvents.h in Headers */, - C960C17E58C7F8869EECC9C019E306D8 /* FBSDKAppEventsDeviceInfo.h in Headers */, - 935CEB07FC411261B561544D90FB3A66 /* FBSDKAppEventsState.h in Headers */, - 90EF13FE2052073904121CAB7187AEEB /* FBSDKAppEventsStateManager.h in Headers */, - 1EFA02B376598B7BBED28346C8753E28 /* FBSDKAppEventsUninstall.h in Headers */, - E58D3CB8F9931D3436E6C6CE67C718CC /* FBSDKAppEventsUtility.h in Headers */, - 9704CA353B00EBF0F17D8FE45C56094F /* FBSDKApplicationDelegate+Internal.h in Headers */, - 6704388A6D061F750D5935EF16F23EAB /* FBSDKApplicationDelegate.h in Headers */, - 38DD78F4364DEC953B9F985FA92A3FB4 /* FBSDKAppLink.h in Headers */, - 11C3318EF5EF0363DF1E0BA0638BCF43 /* FBSDKAppLink_Internal.h in Headers */, - F50941D5934274FBA2BEA0A289CC39C3 /* FBSDKAppLinkNavigation.h in Headers */, - 108871841048D34FCD7ABE208F1C4D0C /* FBSDKAppLinkResolver.h in Headers */, - FD7959AE4ED808E106CED3E794AE82A2 /* FBSDKAppLinkResolving.h in Headers */, - 340798B6FC125386C76859EA154B51E2 /* FBSDKAppLinkReturnToRefererController.h in Headers */, - 988A897C68668FD2699C106891E5EDED /* FBSDKAppLinkReturnToRefererView.h in Headers */, - 1D0D64823BF323E997715CA85450E551 /* FBSDKAppLinkReturnToRefererView_Internal.h in Headers */, - 2A4662905490343662D2B5C9BBE10845 /* FBSDKAppLinkTarget.h in Headers */, - E742F9FCAA56C970BCC0568FCC6A7725 /* FBSDKAppLinkUtility.h in Headers */, - C7150A505CFD257A50D71B17A42910BF /* FBSDKAudioResourceLoader.h in Headers */, - E00CBCA8D11F3B297B594BC1EB0A946C /* FBSDKBase64.h in Headers */, - 54FED1ABB9325BAF9830CD2828198843 /* FBSDKBoltsMeasurementEventListener.h in Headers */, - 731833E6AB52A6FB84DEB14EE63F1ED0 /* FBSDKBridgeAPICrypto.h in Headers */, - D67D67B12F46354719F13F401866FA2C /* FBSDKBridgeAPIProtocol.h in Headers */, - B61ECF9951BDAA47C2A0F8026561382B /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, - 2BB317087B5BD4CEEDBF599295F74117 /* FBSDKBridgeAPIProtocolType.h in Headers */, - 7F365743FCA2E9F7EDC0F263974F57FE /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, - A2893F4ACEC4878AE7A813BC87DF8CE7 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, - 3A232DA217B1001ADAC04AF1DED9DB36 /* FBSDKBridgeAPIRequest+Private.h in Headers */, - 0A1AF115F308A6C498AEDDA1EBCF3CF1 /* FBSDKBridgeAPIRequest.h in Headers */, - 4B6FD049765DBAE95476186D50C81A6D /* FBSDKBridgeAPIResponse.h in Headers */, - 56C2DB17A9779095DC6A92D40560E170 /* FBSDKButton+Subclass.h in Headers */, - F862133FFC4970CE1E7049B3F64E99EB /* FBSDKButton.h in Headers */, - 34FFFA1167F9A5A163406DF4499401E7 /* FBSDKCloseIcon.h in Headers */, - 0D7E001306FB9D7B7CC00EF937083824 /* FBSDKCodelessMacros.h in Headers */, - 1C5DBE11967543148446FACF449C3885 /* FBSDKCodelessParameterComponent.h in Headers */, - B4E78AC964A04F565CF39007DA69D21E /* FBSDKCodelessPathComponent.h in Headers */, - B2BADD56B4205B6455C811CAAC44EB75 /* FBSDKColor.h in Headers */, - 4FAAB3660027FAC050A74C50CBD73231 /* FBSDKConstants.h in Headers */, - B81C0407BB365772AF796E215E3B5242 /* FBSDKContainerViewController.h in Headers */, - FAA4F33836850A5C1A2E7E7AABBFFC46 /* FBSDKCopying.h in Headers */, - A31E14CE478562FD973C0B7AE52828A2 /* FBSDKCoreKit+Internal.h in Headers */, - 34F69CC34872B435330A29D530FE63A4 /* FBSDKCoreKit.h in Headers */, - 725CCAAF04DC3601E4654019526F8EAF /* FBSDKCrypto.h in Headers */, - 09ADD3463A685ED824702245C079C8B8 /* FBSDKDeviceRequestsHelper.h in Headers */, - 6E7858347B08E3DF327E57979BB18517 /* FBSDKDialogConfiguration.h in Headers */, - 589A28C1BD126C470D35FF87C1731232 /* FBSDKDynamicFrameworkLoader.h in Headers */, - 9130F2B076F9DA0F5141BA3C1081EC43 /* FBSDKError.h in Headers */, - 92EC832F4B912E0F946DDA210FED5871 /* FBSDKErrorConfiguration.h in Headers */, - E46299E8D5384050881242D7672B425C /* FBSDKErrorRecoveryAttempter.h in Headers */, - 656A9171F1D093E42DB3ED1BE457938A /* FBSDKErrorRecoveryConfiguration.h in Headers */, - EB6D9A8D925F6815C154269253739597 /* FBSDKEventBinding.h in Headers */, - 22D77C86C41F5BD76A0A4437BB30E166 /* FBSDKEventBindingManager.h in Headers */, - 57F1098F692CAEE9463F08D4BEAD6639 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, - 5C030388FB39B3282C460E73545A74B2 /* FBSDKGraphRequest+Internal.h in Headers */, - 3FF44F4B7C7249A431DE9B6A01F006EC /* FBSDKGraphRequest.h in Headers */, - FAF562AFA2369A2465D3A3B75B0EA939 /* FBSDKGraphRequestBody.h in Headers */, - 494F9C90E427437A64345EFD97B24110 /* FBSDKGraphRequestConnection+Internal.h in Headers */, - 6CF51E4CD911CC37BD3BC983147A1F32 /* FBSDKGraphRequestConnection.h in Headers */, - 977BA43F2E386199621B4EEF5529AC52 /* FBSDKGraphRequestDataAttachment.h in Headers */, - B81578EB27000DC5531AA588AE3AAD2F /* FBSDKGraphRequestMetadata.h in Headers */, - 1BFC968ADFAF4F910818A182CDF07EBB /* FBSDKGraphRequestPiggybackManager.h in Headers */, - 9F10206DF65903B81CD3F816985269F7 /* FBSDKHybridAppEventsScriptMessageHandler.h in Headers */, - 9DE7C3FB6171B8038748F48AAFB3DBDE /* FBSDKIcon.h in Headers */, - 58FAE1B62B5CB317C1864645E4A00E0C /* FBSDKImageDownloader.h in Headers */, - 561EE129AC0DB801204077B18B6A035C /* FBSDKInternalUtility.h in Headers */, - 7C94F778956DE5C5B26E0DD8209B2008 /* FBSDKKeychainStore.h in Headers */, - EC954F98976DBCD2C5E5811605BB46A6 /* FBSDKKeychainStoreViaBundleID.h in Headers */, - 346777A7B527D4304B9A01624EA0483E /* FBSDKLogger.h in Headers */, - 78E84D9F67AC3D515E2489187D6E6858 /* FBSDKLogo.h in Headers */, - 3CDDB713C31C45BA2279C4A398ECF24D /* FBSDKMacros.h in Headers */, - 41617DB18E0304559B81D83FE6D10356 /* FBSDKMaleSilhouetteIcon.h in Headers */, - FD4EA33D2F522E56F079677C55419981 /* FBSDKMath.h in Headers */, - A90E0F4E5B6411187B120FE58E05B19C /* FBSDKMeasurementEvent.h in Headers */, - 3A60D4659A54DA4A4013E1CBE261D9F2 /* FBSDKMeasurementEvent_Internal.h in Headers */, - 1DA3E5951079ED7BB5FBC108102BB150 /* FBSDKMonotonicTime.h in Headers */, - 5AD96ECFA4E51B3AED9A4355D6DC3BD6 /* FBSDKMutableCopying.h in Headers */, - 1316AD4724A521235B74E419BECCA208 /* FBSDKPaymentObserver.h in Headers */, - 74BBEA978F44711C7F7B1F7437FBD674 /* FBSDKProfile+Internal.h in Headers */, - 0B125FBEA33B922D6A58FF0617C8111E /* FBSDKProfile.h in Headers */, - C756B43DD45331E8FDAF4E336C0F1238 /* FBSDKProfilePictureView.h in Headers */, - 0D18D671FB019E5EFAA82CEBA4D6BB92 /* FBSDKServerConfiguration+Internal.h in Headers */, - F9BCE07797B19F778A9E7100E4A9AF72 /* FBSDKServerConfiguration.h in Headers */, - 759380B7535BF389BFC236BB1CBE2908 /* FBSDKServerConfigurationManager+Internal.h in Headers */, - 2C7EC772E87A746723857AC903AF2F90 /* FBSDKServerConfigurationManager.h in Headers */, - 51157F5787119DA743B3CDCF26C2BC82 /* FBSDKSettings+Internal.h in Headers */, - F0E536CBC0AB099E0B143547EFAAD6C2 /* FBSDKSettings.h in Headers */, - 9E4BEDC737A45D91B6F193E72384088C /* FBSDKSwizzler.h in Headers */, - 2A4536F0731EC4249479D0F6805AB9EA /* FBSDKSystemAccountStoreAdapter.h in Headers */, - 542EEE9F64801548D7D715C76DE67212 /* FBSDKTestUsersManager.h in Headers */, - F085E2BCC622A96E91213ADFFD1E3953 /* FBSDKTimeSpentData.h in Headers */, - 64E385C5B6D77DF22B536BDDF7C25C0D /* FBSDKTriStateBOOL.h in Headers */, - EDE5C02715557E5CEA92915847FF2AE3 /* FBSDKTypeUtility.h in Headers */, - 57DE7FD54FA977AE629EF8DC9CC40DF0 /* FBSDKUIUtility.h in Headers */, - 8B091229A9A83FE798827C0C8BA60A99 /* FBSDKURL.h in Headers */, - 4739AE05F2E34C90B7BD2AE0BEB92650 /* FBSDKURL_Internal.h in Headers */, - 56CDEC1A2C8DC901A01F0358A08EADBC /* FBSDKURLConnection.h in Headers */, - 920205AB031DC94595A6B49DA887B3B9 /* FBSDKURLOpening.h in Headers */, - 1080F1D985357A95E3F9829CF4C19E80 /* FBSDKURLSessionTask.h in Headers */, - AC7F19718C449A9DC6F00DA6027E0EF9 /* FBSDKUserDataStore.h in Headers */, - E282A5F1E1D7D5172562141D53A4F1CC /* FBSDKUtility.h in Headers */, - AE691DD1EB97FEE2480FA4E0C99A009B /* FBSDKViewHierarchy.h in Headers */, - 2800FDB5AA5EDE296635E8BC3A07D292 /* FBSDKViewImpressionTracker.h in Headers */, - 6C65E7BD2C584A2718EBC713E6247E84 /* FBSDKWebDialog.h in Headers */, - 39B59AE5EB29B1F0BB134DCFA3E02F66 /* FBSDKWebDialogView.h in Headers */, - A2AD68C8C56C0DAD0299462D11A8E0EC /* FBSDKWebViewAppLinkResolver.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 414F5E05F563EB80FF0808DAAD6B8637 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 67739FEF1C037432A2CF1DF2E1093590 /* ALView+PureLayout.h in Headers */, - 0BAFF1949FC6F2B5F412297CF4375A94 /* NSArray+PureLayout.h in Headers */, - A1C67CC8B456DB58DD45A5F13534C7E2 /* NSLayoutConstraint+PureLayout.h in Headers */, - D19E441F3323329722629EF0AAAFE2CB /* PureLayout+Internal.h in Headers */, - 788FE9B988F7485F3483370F7FC8C0D0 /* PureLayout.h in Headers */, - 4F38CAFE2AD68D3E5D36A79DCE736D2D /* PureLayoutDefines.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 58E8BD2A84EE618981ACCB84F022A3BA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3396,23 +2764,10 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5F1D4C29426B6B50ADFD6CE7E9764FED /* Headers */ = { + 5FA1FC3CEF207FE7F3A713D32FE71AD1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D58BD72826927EDB727E3C1AC28E18DA /* UIDevice-Hardware.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5FA72E8465A826C361915D255C10809F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 1C34EC9BBFDDE10CD9F3847B75EDAAF9 /* NSObject+RZDataBinding.h in Headers */, - F714FEE048F7550293C8383C834E6919 /* RZDataBinding.h in Headers */, - 7C204A362F58FDE21BF3C158E2FC5981 /* RZDBCoalesce.h in Headers */, - F7491890DCB4D7E298F15902820BCA0F /* RZDBMacros.h in Headers */, - FF80DB2AB04646EF29DDA19BA77D61FD /* RZDBTransforms.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3471,35 +2826,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6F56D06E94B1ECCC13054ADFF6CA3BDE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 1AA16342BE87ACC6DE2BC83518BDFCF6 /* _FBSDKLoginRecoveryAttempter.h in Headers */, - EBB345AE250E2766618063FC6ACD5931 /* FBSDKDeviceLoginCodeInfo+Internal.h in Headers */, - ED77A4CF2F0B97B6A0DEF913199402AD /* FBSDKDeviceLoginCodeInfo.h in Headers */, - 64023F7F676FA908189FABFB4480DD64 /* FBSDKDeviceLoginError.h in Headers */, - 1CB925272502B9378C5DF891A6FC1502 /* FBSDKDeviceLoginManager.h in Headers */, - 1ECF98F86E123748E422CD05A555235E /* FBSDKDeviceLoginManagerResult+Internal.h in Headers */, - B09052FE148B0590C79C0C6CD54B560A /* FBSDKDeviceLoginManagerResult.h in Headers */, - 1AF719F550D1F36CD24805149417F8C3 /* FBSDKLoginButton.h in Headers */, - 9D3CD599014B4F30DE56349C117E2948 /* FBSDKLoginCompletion+Internal.h in Headers */, - 8BFF3CC5A8D688A492744775FCB646E5 /* FBSDKLoginCompletion.h in Headers */, - 2095A32CF66523D4354C9DFC8B6DF931 /* FBSDKLoginConstants.h in Headers */, - 1AB0379AA91C582CB55A4611628D2900 /* FBSDKLoginError.h in Headers */, - 508388C4C2D0C7F15FA3C49B1C83ADF5 /* FBSDKLoginKit+Internal.h in Headers */, - 274D7D0AD4D167B0E2D0F9D38A32C31A /* FBSDKLoginKit.h in Headers */, - B17B2D08D123DBB1C541E8562B16BEA4 /* FBSDKLoginManager+Internal.h in Headers */, - 4C0526852A3E399A470F21927CF42F72 /* FBSDKLoginManager.h in Headers */, - E1AF014E9751C5E5497BE55247B37775 /* FBSDKLoginManagerLogger.h in Headers */, - 9B364751F79479816F6EB295523AC7F2 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, - 7679E06F3D455E0251AB2CB89E925413 /* FBSDKLoginManagerLoginResult.h in Headers */, - E71F169F9EE2D9A0D1C3BFD707EBC597 /* FBSDKLoginTooltipView.h in Headers */, - 267A5EFFF05B4A200CA9FA0F62F89E4B /* FBSDKLoginUtility.h in Headers */, - 78A51680DE2B3C2258E5B7370C3C4F1C /* FBSDKTooltipView.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 7B6AC967AA7DEBDAEB68F887299C1096 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3508,6 +2834,34 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 82F8200E3C41B90CE9DC8CE857FEDFB7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E481CD7F90636B39BB1A11D32C28DD76 /* StrongestPasswordValidator.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 881B59CC8F353CA61E9B6CA04B3244CA /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EEF094508FB458DBC8844EFAA8D39545 /* UIDevice-Hardware.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8971E155EA76D2D472B8A2D6E0A0685B /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B30D47730AD028E1D0FAC710C5D2C68D /* NSObject+RZDataBinding.h in Headers */, + 60DF31167DBFA80897B07665C23D2F06 /* RZDataBinding.h in Headers */, + 8B37C2630B2920E9936B5F3EE0194A57 /* RZDBCoalesce.h in Headers */, + 0BD07BD0817EC4FA7825B07ED776E766 /* RZDBMacros.h in Headers */, + 33FAE2468295867484AA13E804AA565B /* RZDBTransforms.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9B66352F6C641405218F27E2F73B7466 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3536,40 +2890,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A1A49DECB955624B891772FB15A2EBFA /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A9F1C38D99373A7EDFA660F1A2E79B56 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 23FC5CB7AEB3CD68F5BA662EFCAA5F93 /* AFHTTPRequestSerializer+OAuth2.h in Headers */, - 64A3E2F4776B7BAB34FAD028AC015031 /* AFJSONResponseSerializerWithData.h in Headers */, - 18F5664C8CC2918D6A165D1B90D9C8E5 /* AFOAuth2Manager.h in Headers */, - 638564E69D361A1892C40E91C2405ED4 /* AFOAuthCredential.h in Headers */, - DC358C30D45F03939F47285CF07EB319 /* PNAddress.h in Headers */, - 7C67993DB44A89015466DC3DC13A0F93 /* PNInstallation.h in Headers */, - 174FCA70BE25DA6C1F884D62421CF464 /* PNLocation.h in Headers */, - 522785F8A1647F9D2428F3F09B72B639 /* PNObjcPassword.h in Headers */, - 936A0FDB9C319B1E90CF9AF8F9FEDF50 /* PNObject+PNObjectConnection.h in Headers */, - 3FF4180C47E4C942A0EFF31E974381A9 /* PNObject+PNObjectDELETEConnection.h in Headers */, - 0E0943A0BD830457B9F09EAF47750295 /* PNObject+PNObjectGETConnection.h in Headers */, - E0E020B91D1787D0F9D2A43A59564397 /* PNObject+PNObjectPOSTConnection.h in Headers */, - 02D70F25B1D17CDCA8739A324E39598D /* PNObject+Protected.h in Headers */, - 82F8536418753B4D6FE778043E77CB92 /* PNObject.h in Headers */, - 96285A1E5046745D05F4D6551935A5D5 /* PNObjectConfig.h in Headers */, - A546ED745B1936BDFD4B2C332F54544E /* PNObjectConstants.h in Headers */, - 684B4F5D563DFA918DCE8BFD2B02559C /* PNObjectFormData.h in Headers */, - A0E9ED7E722C10D77E8FE302D62AAB78 /* PNObjectModel.h in Headers */, - 0B42F3E2DD16761607DF335860AAE4F3 /* PNObjectUtilities.h in Headers */, - 136EEE92B8F627C7219894D51F87A071 /* PNUser.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B77FA0C61822F85E3AB0C9B315DB9FEB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3654,6 +2974,33 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F708C5D5D8E9C00E4E18227E266D4E13 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E49A3E990C646DCF34222A85F759ED21 /* AFHTTPRequestSerializer+OAuth2.h in Headers */, + 3A3B0153879F09E51AAEC26F5F64F217 /* AFJSONResponseSerializerWithData.h in Headers */, + CE40041013F91D5669A44A2DDE101DC9 /* AFOAuth2Manager.h in Headers */, + 61C17A4C6926274B9362540760826225 /* AFOAuthCredential.h in Headers */, + A2575C21DDC37B95538CA49A5A151609 /* PNAddress.h in Headers */, + 4F38B87EF7E7CDC32B168BC6465CD3FF /* PNInstallation.h in Headers */, + DAD0614843413D90ADC4CD0B6CD1B085 /* PNLocation.h in Headers */, + 9A32132BBD1C0453C10F1A992997C190 /* PNObjcPassword.h in Headers */, + B161962B63AEF26A9B8C23AF34A1AD23 /* PNObject+PNObjectConnection.h in Headers */, + 60FD561476C33184D4CDE57C19237F42 /* PNObject+PNObjectDELETEConnection.h in Headers */, + FB9F2C8268EBC4861E3137A17977E374 /* PNObject+PNObjectGETConnection.h in Headers */, + D0942B800B59BDB9302C3BD0841F2101 /* PNObject+PNObjectPOSTConnection.h in Headers */, + 180C11B2F63B47CF1FC739E034C5DC47 /* PNObject+Protected.h in Headers */, + CC39389A92B2237302704FB67E807BAC /* PNObject.h in Headers */, + 5330BE1AD6AE920297042114951906DF /* PNObjectConfig.h in Headers */, + 47BE09F1C41D33B99A8D04CCE978A431 /* PNObjectConstants.h in Headers */, + 7F327FC086D3D6841E6A6336BC20B000 /* PNObjectFormData.h in Headers */, + 10C4D45C6ABA1652354B48209F1201DE /* PNObjectModel.h in Headers */, + E18F63C28E508F8B0597F03E87AE0727 /* PNObjectUtilities.h in Headers */, + FAF97DF7E23C9D28D905C839BF0EDFB4 /* PNUser.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -3671,26 +3018,7 @@ ); name = AFNetworking; productName = AFNetworking; - productReference = 0C739A4DC5B7A154D06B71411E01459C /* libAFNetworking.a */; - productType = "com.apple.product-type.library.static"; - }; - 0FE145A63419906335F165B953111B50 /* FBSDKShareKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 89B89B901477B22F8B653541D8D0AF3A /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; - buildPhases = ( - 28E7D9FDEBB56EDBF81AEACED2DE44EF /* Headers */, - 168FF6042A001BEA322966701BBB5AC2 /* Sources */, - 8ACE5D363E68267FC6642B20866636E2 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 361FCFC71A42D98FBBFBB4FCBC629EE6 /* PBXTargetDependency */, - 384457344422D9D057236061768D0C25 /* PBXTargetDependency */, - ); - name = FBSDKShareKit; - productName = FBSDKShareKit; - productReference = A521C2D47CBEF1F451C6C19EF4BDF952 /* libFBSDKShareKit.a */; + productReference = 3B8D4D510E39D0DE364AF4503AECDAFF /* libAFNetworking.a */; productType = "com.apple.product-type.library.static"; }; 1130320101541C965E9A4B33B27D0BCF /* Pods-PNObject_Tests */ = { @@ -3710,41 +3038,54 @@ ); name = "Pods-PNObject_Tests"; productName = "Pods-PNObject_Tests"; - productReference = 2A4BB22F95B6AD65A989E687D5806FFC /* libPods-PNObject_Tests.a */; + productReference = 95BCAA71AA2FF99269064E43A0F45113 /* libPods-PNObject_Tests.a */; productType = "com.apple.product-type.library.static"; }; - 23677D10DAFC9612279D0C04E8F822F0 /* PureLayout */ = { + 25CAB725512C8BCE062BEA3A8B1774C6 /* RZDataBinding */ = { isa = PBXNativeTarget; - buildConfigurationList = 913217E83282A4C2003DFCCD22FF318C /* Build configuration list for PBXNativeTarget "PureLayout" */; + buildConfigurationList = C500172024E2EAFEE662334F1082D2D2 /* Build configuration list for PBXNativeTarget "RZDataBinding" */; buildPhases = ( - 414F5E05F563EB80FF0808DAAD6B8637 /* Headers */, - 00A9B36774E8DE8FF282799FCA5CE5B3 /* Sources */, - 834759D2B85F882D0F8D01D07E8C2881 /* Frameworks */, + 8971E155EA76D2D472B8A2D6E0A0685B /* Headers */, + 98796D0C8EB86D268EC67F0F5055EBA5 /* Sources */, + D7A744BD58A6A10DD44CECEF8BA6474E /* Frameworks */, ); buildRules = ( ); dependencies = ( ); - name = PureLayout; - productName = PureLayout; - productReference = 7D3A8E17950CDFC3ADE5016E9EB1F8B5 /* libPureLayout.a */; + name = RZDataBinding; + productName = RZDataBinding; + productReference = 60481B8A2E41827C43F71D6971F1B76C /* libRZDataBinding.a */; productType = "com.apple.product-type.library.static"; }; - 26069BE91A9928289B1454877B6683E5 /* StrongestPasswordValidator */ = { + 26109B56473A736BBF412A1200D8B418 /* PNObject */ = { isa = PBXNativeTarget; - buildConfigurationList = 712227741CDE7294206463ACE3DDF8DE /* Build configuration list for PBXNativeTarget "StrongestPasswordValidator" */; + buildConfigurationList = 6CC236830ECBC4D1678EDE40C8BBD415 /* Build configuration list for PBXNativeTarget "PNObject" */; buildPhases = ( - 135E06379292BAEA4DDD0EE659589AE2 /* Headers */, - F0C84B485BA76B1CEA8B93C49E5682B4 /* Sources */, - 1620C9079759C4431D1DA8FC4BAB5039 /* Frameworks */, + F708C5D5D8E9C00E4E18227E266D4E13 /* Headers */, + 751FE697BBE4A05C82D6DD8586F847BC /* Sources */, + 9B158D7D36116719CB3074E22640EA4C /* Frameworks */, ); buildRules = ( ); dependencies = ( + B5D6292D4BA8110CA905BF1B95E68477 /* PBXTargetDependency */, + E8D6751DD530E5C758F76BD144893038 /* PBXTargetDependency */, + 502CFEEFBC9E4A3782A0D568D7D9F927 /* PBXTargetDependency */, + 3CCF3E3E25356C936382641C4FC8034E /* PBXTargetDependency */, + C4EF5FB3FBEC3034A2ED5A3AFE5D46EB /* PBXTargetDependency */, + 798C08F366A8FA6BD3B9CFA6AED01519 /* PBXTargetDependency */, + 5BCAF5B2545DD76D14D345DC40F42A2B /* PBXTargetDependency */, + 5554E9ED9504292230BE6D9EB543322B /* PBXTargetDependency */, + 5FF36764CC2C07B579123F145E8A725C /* PBXTargetDependency */, + 87E51A243BCACF9A47104E10083A19D3 /* PBXTargetDependency */, + D9EB3130F1885E0B20E1D8D73B723A5F /* PBXTargetDependency */, + 487A530D4BC2E7B77A4D86DBE677D31C /* PBXTargetDependency */, + 3342300805BB84844D8BE03C8B857DD7 /* PBXTargetDependency */, ); - name = StrongestPasswordValidator; - productName = StrongestPasswordValidator; - productReference = E143D035B5419A69F443580FA66D752F /* libStrongestPasswordValidator.a */; + name = PNObject; + productName = PNObject; + productReference = 9762245771C377B128624C23655321FF /* libPNObject.a */; productType = "com.apple.product-type.library.static"; }; 2F76C4DEAE2007246BF4FBF8967B2FA3 /* Expecta */ = { @@ -3761,61 +3102,24 @@ ); name = Expecta; productName = Expecta; - productReference = C4A1E4B2A8DB166BCFF636128277BAA5 /* libExpecta.a */; + productReference = CFE82247C6FB8543708571E0D8D64B1D /* libExpecta.a */; productType = "com.apple.product-type.library.static"; }; - 428487CF01476A350D641A9BB0599574 /* FBSDKLoginKit */ = { + 4DB6037421D42C3F0B181DE36F1682C9 /* UIDevice-Utils */ = { isa = PBXNativeTarget; - buildConfigurationList = 3C522CF9C69DEE8E10566003CB364074 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; + buildConfigurationList = AD446AF6B65616048A9FB406ECE6A319 /* Build configuration list for PBXNativeTarget "UIDevice-Utils" */; buildPhases = ( - 6F56D06E94B1ECCC13054ADFF6CA3BDE /* Headers */, - 27BB38B247EB7E72BAEAC2E7BC190765 /* Sources */, - 363A1F5DC0AA283A9CE90E738C8DB9EB /* Frameworks */, + 881B59CC8F353CA61E9B6CA04B3244CA /* Headers */, + 54BA64277A053EB86431DC9905DDA097 /* Sources */, + 8144B440C88BFD23EDE28A95719A9B10 /* Frameworks */, ); buildRules = ( ); dependencies = ( - C4CB4AC5EAD14DC6653EE689790FD99A /* PBXTargetDependency */, - 5FEC2B2C9ACACBBCD77435F4697FEACD /* PBXTargetDependency */, ); - name = FBSDKLoginKit; - productName = FBSDKLoginKit; - productReference = 14D9DD4A903CFB812BED1D10CF39FA42 /* libFBSDKLoginKit.a */; - productType = "com.apple.product-type.library.static"; - }; - 63178740FD447D2079BFABBA20ADEF1E /* Pods-PNObject_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4B60F0CEC329EC055CF0635E153B9C38 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Example" */; - buildPhases = ( - A1A49DECB955624B891772FB15A2EBFA /* Headers */, - 56DF7E22D6F708B4242ED0AF08FDCC52 /* Sources */, - EBEF0006E610BD8A277F6C8DB149B1F6 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 32B4A9CCD7990FC707810A28C1DBDD98 /* PBXTargetDependency */, - 84D6EA7345FE73A1024286704C8010A1 /* PBXTargetDependency */, - 9812B909C9744DE5E4EBFCB90927B336 /* PBXTargetDependency */, - E58827FA3AFD1361C0E222FD0C41EAB7 /* PBXTargetDependency */, - C083E5950A6AED0AA530F010C0029FB1 /* PBXTargetDependency */, - C6ACE5E6AA08FC313F1C7A5C955DE04F /* PBXTargetDependency */, - C24479029B6AB58CCA2B48F7BDA5726D /* PBXTargetDependency */, - 515FDA74CD4C75B291EB96E8EAB62AE7 /* PBXTargetDependency */, - B0593DEC9A184E483174C335A9524C7F /* PBXTargetDependency */, - 5F8D3CACB7AC9099FCCFDE718F2AD346 /* PBXTargetDependency */, - CEE2E1A9461A0AFCE9923EAC4DA22B34 /* PBXTargetDependency */, - F4A6F06AFFBCB7E0230EE60D8285E1D8 /* PBXTargetDependency */, - 8B1E9209560FABD8D68AF62603D188EB /* PBXTargetDependency */, - 5FDC3E162849856BF82414FBB6C82634 /* PBXTargetDependency */, - 16C318A75B9C8B904D282EAF2C9B8D6D /* PBXTargetDependency */, - 9B402E9DA42DED2027E914B9ECC2C105 /* PBXTargetDependency */, - A5117545F993FCEDF129449AB8D773DB /* PBXTargetDependency */, - BE1C6DED61A7B481581BE30519829288 /* PBXTargetDependency */, - ); - name = "Pods-PNObject_Example"; - productName = "Pods-PNObject_Example"; - productReference = E223594B1999E026FF4F52CACA9DDA9F /* libPods-PNObject_Example.a */; + name = "UIDevice-Utils"; + productName = "UIDevice-Utils"; + productReference = 74969D001959CAFCF9E294DE2790B848 /* libUIDevice-Utils.a */; productType = "com.apple.product-type.library.static"; }; 6493D0116FE1BA5F8BB4133D819DF3C8 /* Bolts */ = { @@ -3832,24 +3136,7 @@ ); name = Bolts; productName = Bolts; - productReference = A8F263620BD0322B0E0D02C9CBB7E057 /* libBolts.a */; - productType = "com.apple.product-type.library.static"; - }; - 65B039250BC589E46F912B1B0C2AE01B /* RZDataBinding */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5FEC0A0731A3FB32FEE858F62EE22FD9 /* Build configuration list for PBXNativeTarget "RZDataBinding" */; - buildPhases = ( - 5FA72E8465A826C361915D255C10809F /* Headers */, - 12957DFD54C637959BE90DCDC9695075 /* Sources */, - 2CC988D65D245DEFA0E35C6D21B06A8F /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = RZDataBinding; - productName = RZDataBinding; - productReference = 1E83C4F995602150C30446C7C75BEDC3 /* libRZDataBinding.a */; + productReference = 20384C33BEE2F81896DFF7ADAEDF2CBF /* libBolts.a */; productType = "com.apple.product-type.library.static"; }; 6E14B2EB890E5F1C28CB981EFB57CB3E /* CodFis-Helper */ = { @@ -3866,7 +3153,7 @@ ); name = "CodFis-Helper"; productName = "CodFis-Helper"; - productReference = 73517324CA450DAF3250DB48CDA3182B /* libCodFis-Helper.a */; + productReference = E5E939C2339B718507CA2D5FCA69B5C0 /* libCodFis-Helper.a */; productType = "com.apple.product-type.library.static"; }; 6E6F78D1E706987F92C1C61F6B619A67 /* nv-ios-http-status */ = { @@ -3883,40 +3170,7 @@ ); name = "nv-ios-http-status"; productName = "nv-ios-http-status"; - productReference = 235BE4AB4998A621A73ED2BF118F0A7F /* libnv-ios-http-status.a */; - productType = "com.apple.product-type.library.static"; - }; - 8499AC93B286F5F061A552CBC893C989 /* PNObject */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5CDD4191C2A20E67B7A511C57FD72C84 /* Build configuration list for PBXNativeTarget "PNObject" */; - buildPhases = ( - A9F1C38D99373A7EDFA660F1A2E79B56 /* Headers */, - F2A6654889F2511ED27BEA584FB8BBC5 /* Sources */, - 9E361E01B513237B3C62235AA01160F7 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 52C2321526F4434EDA074D208A2923B8 /* PBXTargetDependency */, - 5DE08B412119153EC68767EB340D3607 /* PBXTargetDependency */, - 20816FD8FA615F59D6F235B8E7B7B8A7 /* PBXTargetDependency */, - 8F83199E4D9752EA2782608A0393ABFD /* PBXTargetDependency */, - 2131E0E3844739DF5E2DAB31084A6874 /* PBXTargetDependency */, - E190422A43918431E6825E306BEA2FB7 /* PBXTargetDependency */, - B08C873B85A4117466634C0B1AFF9722 /* PBXTargetDependency */, - 3D79A7CDC3B8C6AB5C144FCE6894010E /* PBXTargetDependency */, - DDAD6571F4FDA68D0ADA2EA4BD915990 /* PBXTargetDependency */, - E0ABEC758EF94889E11D4396A554CD5F /* PBXTargetDependency */, - 58767F0FD2EDF3B7CDCA4DFFCE530E1E /* PBXTargetDependency */, - 41A377BE820934D464B18ABF1483CBF4 /* PBXTargetDependency */, - C94092A405EBA73B0CEC4A1A306B5753 /* PBXTargetDependency */, - 62FFEDDBFE3DD9F7B3DA00406C8B565D /* PBXTargetDependency */, - 6B7EF2E128CD5385082BE4183D8A099F /* PBXTargetDependency */, - 5154DDD5C306830A68015DFA715049DC /* PBXTargetDependency */, - ); - name = PNObject; - productName = PNObject; - productReference = 15BA90E35C2DEF377C5A730CB5D9FF5A /* libPNObject.a */; + productReference = 2AB62E52B89B05D507636607A1611EFB /* libnv-ios-http-status.a */; productType = "com.apple.product-type.library.static"; }; A7334FDC353B84921762C535B7E01EA0 /* NSDataAES */ = { @@ -3933,24 +3187,7 @@ ); name = NSDataAES; productName = NSDataAES; - productReference = F3DEC48A4806C456BF7333F05402A123 /* libNSDataAES.a */; - productType = "com.apple.product-type.library.static"; - }; - A7ABB589D7269F28501753691B0189FB /* UIDevice-Utils */ = { - isa = PBXNativeTarget; - buildConfigurationList = DE14A6487D7B1AE87AF953425FD32F20 /* Build configuration list for PBXNativeTarget "UIDevice-Utils" */; - buildPhases = ( - 5F1D4C29426B6B50ADFD6CE7E9764FED /* Headers */, - E3A31A14D684457AB6840624177015BB /* Sources */, - C22BD4FE3380B2A965FE9401168E0EE3 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "UIDevice-Utils"; - productName = "UIDevice-Utils"; - productReference = 55AA69666FEF4E24F23A163FD1B0E843 /* libUIDevice-Utils.a */; + productReference = 3703664A695762CB09F0E7E2E833D796 /* libNSDataAES.a */; productType = "com.apple.product-type.library.static"; }; ADBBB3E85D1E2F795520A8939751318B /* PEAR-FileManager-iOS */ = { @@ -3967,7 +3204,57 @@ ); name = "PEAR-FileManager-iOS"; productName = "PEAR-FileManager-iOS"; - productReference = 86B02ADE54AD8160AA7985E20874AC2F /* libPEAR-FileManager-iOS.a */; + productReference = D4BBE93131759240C836DD271A320B12 /* libPEAR-FileManager-iOS.a */; + productType = "com.apple.product-type.library.static"; + }; + B05A83813FBAAA90F28FBB951DAE33D4 /* StrongestPasswordValidator */ = { + isa = PBXNativeTarget; + buildConfigurationList = F9675C48073C83F64CA8C30A8772D6EA /* Build configuration list for PBXNativeTarget "StrongestPasswordValidator" */; + buildPhases = ( + 82F8200E3C41B90CE9DC8CE857FEDFB7 /* Headers */, + 1CB9FF26431C6C772F0BC341F597C198 /* Sources */, + 3A472BFBB620932C5869B08D4D552B4C /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = StrongestPasswordValidator; + productName = StrongestPasswordValidator; + productReference = C75DB7C4004F6284A7A6CC0375A9A252 /* libStrongestPasswordValidator.a */; + productType = "com.apple.product-type.library.static"; + }; + B38C006CE78F17EF19EA707B05114A38 /* Pods-PNObject_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = E5206EF9BF6E5E66EA5F3761FF6322FB /* Build configuration list for PBXNativeTarget "Pods-PNObject_Example" */; + buildPhases = ( + 5FA1FC3CEF207FE7F3A713D32FE71AD1 /* Headers */, + E3D09451DD100DA06BAAFC09C94BFB48 /* Sources */, + 55DF6EA36AA21472C15B80D0D2D8CACF /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 2FF97064B7893BFA19A19E71C574125B /* PBXTargetDependency */, + 6C6585268FE6E116947A6C74E8070E36 /* PBXTargetDependency */, + A82491159D67DB31395F1BF19CA5E01A /* PBXTargetDependency */, + 83CB6326802BD64E070516B015AAC213 /* PBXTargetDependency */, + B3C04C9055794E4FA4846898776BE7C8 /* PBXTargetDependency */, + B8A35D0F817FFEC1119A6E01B33018C6 /* PBXTargetDependency */, + 6D886B2128FA03FE3A053B078FE6004D /* PBXTargetDependency */, + 35B16E6E250D4844C2BDCC209B0E2A8B /* PBXTargetDependency */, + C0DC5B16FD6DC137D2A9E0695BF30D65 /* PBXTargetDependency */, + F80476FB333CE788932830F16AC3E0F4 /* PBXTargetDependency */, + 1F77D11683EAB836F891139790D396CB /* PBXTargetDependency */, + 60E2656D07FF41F397BA3AC8ECB6963E /* PBXTargetDependency */, + 99F5E39063B7272210FE4DCDC8BAFDE2 /* PBXTargetDependency */, + 14E5C1AB7D3FDF6B8977C10CDC1F560E /* PBXTargetDependency */, + 71B8AF47AA5FC5C86CB5C1E097408EC8 /* PBXTargetDependency */, + 3E3E66BD7E35D64E8D1547680F7CB057 /* PBXTargetDependency */, + ); + name = "Pods-PNObject_Example"; + productName = "Pods-PNObject_Example"; + productReference = A19BE0F838DD001133112E6196D6566C /* libPods-PNObject_Example.a */; productType = "com.apple.product-type.library.static"; }; B636D5CA7BFECB99A182D63A69EA5720 /* NSString-Helper */ = { @@ -3984,7 +3271,7 @@ ); name = "NSString-Helper"; productName = "NSString-Helper"; - productReference = 084AE6ECA57A970F74C4109DC3D26042 /* libNSString-Helper.a */; + productReference = E445C84C631F2F60D38E4AB52E4FD184 /* libNSString-Helper.a */; productType = "com.apple.product-type.library.static"; }; B8DB1230EFD4A2B4440593A586A5F223 /* Specta */ = { @@ -4001,7 +3288,7 @@ ); name = Specta; productName = Specta; - productReference = E4A6EFA4A917599F12C0B7DB90CE41C9 /* libSpecta.a */; + productReference = 011EADDC040E3725A1BA572AE33F2004 /* libSpecta.a */; productType = "com.apple.product-type.library.static"; }; BF3423B26285A217899170780715FAFC /* DDDKeychainWrapper */ = { @@ -4018,7 +3305,7 @@ ); name = DDDKeychainWrapper; productName = DDDKeychainWrapper; - productReference = CCC8C2A264D659D0F1394CD30CB0CFAF /* libDDDKeychainWrapper.a */; + productReference = 88FFBAC8BDB65FD09ED3E9B84B1614CB /* libDDDKeychainWrapper.a */; productType = "com.apple.product-type.library.static"; }; C784B90D59D6E06A6468ADC0F4E51429 /* DJLocalization */ = { @@ -4035,15 +3322,32 @@ ); name = DJLocalization; productName = DJLocalization; - productReference = 3B5C70CFEC8F44CE8FD10524DEEC7A6F /* libDJLocalization.a */; + productReference = EACF20C7F52EBA30680C8ACB3102B846 /* libDJLocalization.a */; + productType = "com.apple.product-type.library.static"; + }; + D1BA6BA6A87F8CB0F814F63ED4F639C3 /* PureLayout */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5DBEB5B8982E3506F443F49C78A7D8F5 /* Build configuration list for PBXNativeTarget "PureLayout" */; + buildPhases = ( + 183AD9A81B3943DCFF634FAD9CC05C93 /* Headers */, + 88BBA6D5A7FC88211BE64C1F03CBDDC4 /* Sources */, + 58F64E3F1ABF3976A56FFA5D3F35ABEB /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PureLayout; + productName = PureLayout; + productReference = E4587E09E096B4F966A188FF1E974E70 /* libPureLayout.a */; productType = "com.apple.product-type.library.static"; }; D71965AADCF27F9F922926F15DAA80A7 /* FBSDKCoreKit */ = { isa = PBXNativeTarget; buildConfigurationList = 61C1A4BDDE8EE751771A923C58E89CFE /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; buildPhases = ( - 403C1ED2B66F053BC2C51F88F8C3FE08 /* Headers */, - 82E7D8FFAB72480BDF51677EE466E8F4 /* Sources */, + 0F2091FA4173804FF2E271157515973E /* Headers */, + 3472D0794E919042B8BAB9DBF1DBA959 /* Sources */, 4FA715DE21577DA07A1A3781A5854923 /* Frameworks */, ); buildRules = ( @@ -4053,7 +3357,7 @@ ); name = FBSDKCoreKit; productName = FBSDKCoreKit; - productReference = D0D5B66973CF80A3988FB78B6DCA4342 /* libFBSDKCoreKit.a */; + productReference = A44629F01442571502F7E767A7AB1331 /* libFBSDKCoreKit.a */; productType = "com.apple.product-type.library.static"; }; F23086A6598C6BAA8DAF542D4A03059D /* NSDate_Utils */ = { @@ -4071,7 +3375,7 @@ ); name = NSDate_Utils; productName = NSDate_Utils; - productReference = 2FCE5603E1AAE87305D1570E294967EB /* libNSDate_Utils.a */; + productReference = 2E277A61994B6505F265B96493D2F82B /* libNSDate_Utils.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -4091,7 +3395,7 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = C480B5F01E58D59EDA927E3EC6A18A0E /* Products */; + productRefGroup = 9E4E22C2CE8B32F5012F84B56AB7116C /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -4102,37 +3406,24 @@ C784B90D59D6E06A6468ADC0F4E51429 /* DJLocalization */, 2F76C4DEAE2007246BF4FBF8967B2FA3 /* Expecta */, D71965AADCF27F9F922926F15DAA80A7 /* FBSDKCoreKit */, - 428487CF01476A350D641A9BB0599574 /* FBSDKLoginKit */, - 0FE145A63419906335F165B953111B50 /* FBSDKShareKit */, A7334FDC353B84921762C535B7E01EA0 /* NSDataAES */, F23086A6598C6BAA8DAF542D4A03059D /* NSDate_Utils */, B636D5CA7BFECB99A182D63A69EA5720 /* NSString-Helper */, 6E6F78D1E706987F92C1C61F6B619A67 /* nv-ios-http-status */, ADBBB3E85D1E2F795520A8939751318B /* PEAR-FileManager-iOS */, - 8499AC93B286F5F061A552CBC893C989 /* PNObject */, - 63178740FD447D2079BFABBA20ADEF1E /* Pods-PNObject_Example */, + 26109B56473A736BBF412A1200D8B418 /* PNObject */, + B38C006CE78F17EF19EA707B05114A38 /* Pods-PNObject_Example */, 1130320101541C965E9A4B33B27D0BCF /* Pods-PNObject_Tests */, - 23677D10DAFC9612279D0C04E8F822F0 /* PureLayout */, - 65B039250BC589E46F912B1B0C2AE01B /* RZDataBinding */, + D1BA6BA6A87F8CB0F814F63ED4F639C3 /* PureLayout */, + 25CAB725512C8BCE062BEA3A8B1774C6 /* RZDataBinding */, B8DB1230EFD4A2B4440593A586A5F223 /* Specta */, - 26069BE91A9928289B1454877B6683E5 /* StrongestPasswordValidator */, - A7ABB589D7269F28501753691B0189FB /* UIDevice-Utils */, + B05A83813FBAAA90F28FBB951DAE33D4 /* StrongestPasswordValidator */, + 4DB6037421D42C3F0B181DE36F1682C9 /* UIDevice-Utils */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 00A9B36774E8DE8FF282799FCA5CE5B3 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 789C113F849D2152650246E812CEFD92 /* ALView+PureLayout.m in Sources */, - 299BAD28841F9E59571012470D83E9DB /* NSArray+PureLayout.m in Sources */, - AA6C2DC638A31B96889518F62367151D /* NSLayoutConstraint+PureLayout.m in Sources */, - ADFA22F318E8237CD11FB41D0BFEF84B /* PureLayout-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 10F47DC3012338EE7A7095BFB87AA45B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4147,94 +3438,109 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 12957DFD54C637959BE90DCDC9695075 /* Sources */ = { + 1CB9FF26431C6C772F0BC341F597C198 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1BE70E91E0121441BD9C9466364F67F8 /* NSObject+RZDataBinding.m in Sources */, - 90E43DF6002D7292F4EF6BB2A8F48F73 /* RZDataBinding-dummy.m in Sources */, - BA646F2BFDE06DC5F9C1EFF721FDE25B /* RZDBCoalesce.m in Sources */, - 1F65EE7AF8BB1BA499DE41B3611F9789 /* RZDBTransforms.m in Sources */, + B86B9AAC6FE6D749B2809A4547F16E91 /* StrongestPasswordValidator-dummy.m in Sources */, + 3C27FB3277BAAD883F1E033B64349F71 /* StrongestPasswordValidator.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 168FF6042A001BEA322966701BBB5AC2 /* Sources */ = { + 3472D0794E919042B8BAB9DBF1DBA959 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7D10C9ADE7770705B6589C46A2D56DDE /* FBSDKAppGroupAddDialog.m in Sources */, - 84E484F55BE456F9C2AC6D10B00BC8C5 /* FBSDKAppGroupContent.m in Sources */, - CEA33D025567CBD7BA480680EE5155D4 /* FBSDKAppGroupJoinDialog.m in Sources */, - B75A9E1161273C93F86B87F905AA7F66 /* FBSDKAppInviteContent.m in Sources */, - EB6A54166A817E3E3D45BBE7EF30D550 /* FBSDKAppInviteDialog.m in Sources */, - EEEE790F4AA17DB682FDB4B385EB7C47 /* FBSDKCameraEffectArguments.m in Sources */, - 8FF2350E0E274B2526968718F65F594E /* FBSDKCameraEffectTextures.m in Sources */, - F473AB7AFAD698FA08CAADB2A7B2C7FF /* FBSDKCheckmarkIcon.m in Sources */, - 409A1CC1433E5C95EE7CE682A2E2E0B4 /* FBSDKGameRequestContent.m in Sources */, - 8BD2C801BAD7E32D51C1A5FCDD80FD20 /* FBSDKGameRequestDialog.m in Sources */, - 4F6B9E97C001CCEC71169ED327BCA693 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, - 98DE6A8ED32B28D5103E5ADDEF3C4509 /* FBSDKHashtag.m in Sources */, - DE5557BAD5A0E74C498553437B36AD95 /* FBSDKLikeActionController.m in Sources */, - 5E44108C666B3F67AC4BD3B1DEF3B732 /* FBSDKLikeActionControllerCache.m in Sources */, - 865154C1D6849E47CB014F647FD3C3AC /* FBSDKLikeBoxBorderView.m in Sources */, - 3524D932E585DFC2A41B081B077D6FDE /* FBSDKLikeBoxView.m in Sources */, - C1D3558C4859BC717A8EACCB37215EDB /* FBSDKLikeButton.m in Sources */, - 1053B2DB6537E9415F0EAA416CEAA76F /* FBSDKLikeButtonPopWAV.m in Sources */, - 1AFCC51E6CD2BA28739A25FA32795D26 /* FBSDKLikeControl.m in Sources */, - D6B0E1F1F7350E9E185C7E7C3A5497CE /* FBSDKLikeDialog.m in Sources */, - 396019EFCD86DFFCE38988E275F393DA /* FBSDKLikeObjectType.m in Sources */, - DFD829C488857DF5E6AF3EF01E0DC849 /* FBSDKMessageDialog.m in Sources */, - 5454C3D7021E044D6BFA6D2B0170BC59 /* FBSDKMessengerIcon.m in Sources */, - F435D89A9B19BF74EFC3637565394BBB /* FBSDKSendButton.m in Sources */, - DF1417108793761811DD0234FCB488E7 /* FBSDKShareAPI.m in Sources */, - 9C43032123DA74368CF14F4F031DB515 /* FBSDKShareButton.m in Sources */, - E3DBEE41F7561C185CD715D00AB1B99A /* FBSDKShareCameraEffectContent.m in Sources */, - 641E32DFF8249C4D2477436850AA8A97 /* FBSDKShareConstants.m in Sources */, - 9DDFE16F634196761FA61836185E2A55 /* FBSDKShareDialog.m in Sources */, - F8F4BCF0BF9B40161D16D28F44BB4DB3 /* FBSDKShareDialogMode.m in Sources */, - 61030D3EB4C684D7284E718381F3EC94 /* FBSDKShareError.m in Sources */, - 7027A9FEDCBB9B791906363339A6AD97 /* FBSDKShareKit-dummy.m in Sources */, - 872EBC07AD530A1D8BED5019C4AF5E0F /* FBSDKShareLinkContent.m in Sources */, - 1344771FCD7E484D006FCF8B82604547 /* FBSDKShareMediaContent.m in Sources */, - D6C6543A6E64AF372F94310EAEAACADB /* FBSDKShareMessengerContentUtility.m in Sources */, - 3C4D25D70D007E6B5633FE23BE6B2CD4 /* FBSDKShareMessengerGenericTemplateContent.m in Sources */, - DDE3042B112193419BA74F254269B9D2 /* FBSDKShareMessengerGenericTemplateElement.m in Sources */, - E76C9020FCD6C28A26C533600E50332A /* FBSDKShareMessengerMediaTemplateContent.m in Sources */, - 1C3A9D56E54E41D20E4977EB35C5A318 /* FBSDKShareMessengerOpenGraphMusicTemplateContent.m in Sources */, - B7368CEE2255870200C656DF16C7B400 /* FBSDKShareMessengerURLActionButton.m in Sources */, - FE07B7E252B3635ABBCD49455CE83AA6 /* FBSDKShareOpenGraphAction.m in Sources */, - 22F5AC77C784F4F179A7763B90B24A6A /* FBSDKShareOpenGraphContent.m in Sources */, - 781357E25E5A2DEFA8D8EA7E7B19AC6C /* FBSDKShareOpenGraphObject.m in Sources */, - 29F6FFB37AF9E82BA73AFAF917DE483B /* FBSDKShareOpenGraphValueContainer.m in Sources */, - F2A1A98C9D1CC9B5D873BB7D1FBE2B9A /* FBSDKSharePhoto.m in Sources */, - 855C6BCA0C9A9CA5AD7BE7AD2E3EB947 /* FBSDKSharePhotoContent.m in Sources */, - 5D5A5C58521774012084AF03E04F172E /* FBSDKShareUtility.m in Sources */, - 32522D61F476D77D64D49C33DC711869 /* FBSDKShareVideo.m in Sources */, - DAE3672406C3D69A54E3314F294B889B /* FBSDKShareVideoContent.m in Sources */, - 3934CBF26A913E61688A22F32249BDD5 /* FBSDKVideoUploader.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 27BB38B247EB7E72BAEAC2E7BC190765 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1B5631ECABDFC196E23F140C0337213D /* _FBSDKLoginRecoveryAttempter.m in Sources */, - 93E1F20990B3E61C372E7E7AA07DE1A2 /* FBSDKDeviceLoginCodeInfo.m in Sources */, - AF99F1B8AB0B2F0FFB2D5D89E031D894 /* FBSDKDeviceLoginError.m in Sources */, - ED073B849AE889A12A4305CF57818780 /* FBSDKDeviceLoginManager.m in Sources */, - D1FBE3E2B04D6961B08D4859CB79EFB8 /* FBSDKDeviceLoginManagerResult.m in Sources */, - 46D0DC84B3B40B9CB044D74E4709C754 /* FBSDKLoginButton.m in Sources */, - EB7295A0DC35A67A1747CC7A4BCCD85B /* FBSDKLoginCompletion.m in Sources */, - 466523A1E1B31C1AA8FD5BDC3B434F0E /* FBSDKLoginConstants.m in Sources */, - A9F4A7FBFB0A0FBE5A11472CB0E2C07F /* FBSDKLoginError.m in Sources */, - EA99CE0C44219ED43BA58D6B822FA535 /* FBSDKLoginKit-dummy.m in Sources */, - 1A3ADB043C2D513D9258861EB23A69B2 /* FBSDKLoginManager.m in Sources */, - 0CA0E2158F6EB8006169912283109B48 /* FBSDKLoginManagerLogger.m in Sources */, - 794E313F37A8A5DAD7D4E8CE28B95051 /* FBSDKLoginManagerLoginResult.m in Sources */, - 12391E62320C3781CAD46C0EFDD589C7 /* FBSDKLoginTooltipView.m in Sources */, - 5FD203D399B52F2A8A7129195256F81F /* FBSDKLoginUtility.m in Sources */, - 3E66C3E919E8B5A41952912EE11C028B /* FBSDKTooltipView.m in Sources */, + 930F99A88D82BF693305A4034BA85667 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, + 1BC36D066EFB6CD12CF329E3701DB1B8 /* FBSDKAccessToken.m in Sources */, + 4AA2EEF83FC82A568C7C136F1CCE2A69 /* FBSDKAccessTokenCache.m in Sources */, + 7D275814958507972D63A5B648DBF7BF /* FBSDKAccessTokenCacheV3.m in Sources */, + B1C42F73D7CFBC372C30F46F032D4CEC /* FBSDKAccessTokenCacheV3_17.m in Sources */, + CDAED28AE489B2B5F3C42E1DAAFE3619 /* FBSDKAccessTokenCacheV3_21.m in Sources */, + 782E505B23A53D503A897D1D4F4676BE /* FBSDKAccessTokenCacheV4.m in Sources */, + D52354833B9A2FACBB9C1D5C578B5A3C /* FBSDKAccessTokenExpirer.m in Sources */, + DD927FCB260C9FF2F3D4CAAA5B7D855E /* FBSDKAppEvents.m in Sources */, + 6CE80E1B0528BF7F15853705D93EFE7D /* FBSDKAppEventsDeviceInfo.m in Sources */, + 9D31345E6705268F31624DC267E50E91 /* FBSDKAppEventsState.m in Sources */, + 2E29F7ABCD0C7FC6214823121472D167 /* FBSDKAppEventsStateManager.m in Sources */, + 8D49D4F395AB88CDDC252BF64B4CA46A /* FBSDKAppEventsUtility.m in Sources */, + 9248407648D571CEACE65F6AAB54B91C /* FBSDKApplicationDelegate.m in Sources */, + 38F45CAB736190B8780A681D2AB070F4 /* FBSDKAppLink.m in Sources */, + 58859490927CE090DF982C2007B31971 /* FBSDKAppLinkNavigation.m in Sources */, + AF0FC2879F810DC81CCA59A35ED695DB /* FBSDKAppLinkResolver.m in Sources */, + 5A5D211B147C5F7BDE41505E5DF6CB08 /* FBSDKAppLinkReturnToRefererController.m in Sources */, + B66F4468EE55CEDF9DE9E0AD067572E0 /* FBSDKAppLinkReturnToRefererView.m in Sources */, + F81E62446F079E140B67205229D8BC98 /* FBSDKAppLinkTarget.m in Sources */, + 2C9C0DB96000329033AA577785AE3637 /* FBSDKAppLinkUtility.m in Sources */, + 8C6DC17FC0A96C7C96A2314AF08631EE /* FBSDKAudioResourceLoader.m in Sources */, + 8082C8E30D7F0BE0C73004BDA8A5DA72 /* FBSDKBase64.m in Sources */, + CFFD5106B44370A6F5E4701AC8EAD9C0 /* FBSDKBoltsMeasurementEventListener.m in Sources */, + D8AF5871EB2B4BE4106A902441B87581 /* FBSDKBridgeAPICrypto.m in Sources */, + E94519EA4DAE956D3F66DF9861815B69 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, + 9AB4F67423DDEC3E36F0294CCEFE4010 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, + B82AF7B41008A52C3AC8CD8F966847C2 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, + AC664ED99788248D29FCD1F2584D9775 /* FBSDKBridgeAPIRequest.m in Sources */, + 463B1F5C122CB2A6A324C9EF3C0016BB /* FBSDKBridgeAPIResponse.m in Sources */, + 26C29CCFB909B65F74C58C7F56AEB8F7 /* FBSDKButton.m in Sources */, + 0F3DD8E4CAC4CBB2960127F8C0F35BD3 /* FBSDKCloseIcon.m in Sources */, + D9D8302A9555135AD948D440BF3AB827 /* FBSDKCodelessIndexer.m in Sources */, + E829BB93966FE1C5B22E99984E6160A3 /* FBSDKCodelessParameterComponent.m in Sources */, + 55ED45EE169724DF38EF2AC2B5E8A349 /* FBSDKCodelessPathComponent.m in Sources */, + 3CB9178A15881D469E019C52DF55EA66 /* FBSDKColor.m in Sources */, + 0C1F116E07908A8A0A4AF84C6F48DEF5 /* FBSDKConstants.m in Sources */, + BB6B4EFC5C91AABA8DBF94C64E688952 /* FBSDKContainerViewController.m in Sources */, + EA0D3725ADA64CFBB48445D872E75E48 /* FBSDKCoreKit-dummy.m in Sources */, + 57B8B79726E7D3B2EF38DD501B2B5C7F /* FBSDKCrypto.m in Sources */, + E91337A3E5D16A1F6C5A8A65C623D8F9 /* FBSDKDeviceRequestsHelper.m in Sources */, + C97D36C406B96387DD167709920BD8B0 /* FBSDKDialogConfiguration.m in Sources */, + 0CF6B0D5F915EB162115FEA7F45B8021 /* FBSDKDynamicFrameworkLoader.m in Sources */, + 5EC29ADA772D468B84D3D21EBCCF4BE5 /* FBSDKError.m in Sources */, + 2283BBB3D63B8F0ED4DD99E252882DC1 /* FBSDKErrorConfiguration.m in Sources */, + 4E9310FA4A0FC203CD579EE96F3D47BA /* FBSDKErrorRecoveryAttempter.m in Sources */, + 8E871A4784D115B96DE66366B9ECC20F /* FBSDKErrorRecoveryConfiguration.m in Sources */, + D3AFF1756E31A09DF11FEC4B71CD2157 /* FBSDKEventBinding.m in Sources */, + 3D119CF039AF27070940418831E6FC2A /* FBSDKEventBindingManager.m in Sources */, + 5AF0986D8179B0EA87F96B31DF78CC34 /* FBSDKGateKeeperManager.m in Sources */, + 85AF5441BF15F5DB12ED575581E7D143 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, + 1D322FD6069536B34D1F8AF7CCF032AB /* FBSDKGraphRequest.m in Sources */, + A09F9B2F3CED75ABE254AAC2D86EC7D2 /* FBSDKGraphRequestBody.m in Sources */, + 09998248A0DDEC14B08472B1D9DD911E /* FBSDKGraphRequestConnection.m in Sources */, + 4BF68DB992035938317ED4F611866211 /* FBSDKGraphRequestDataAttachment.m in Sources */, + 305AD55A21C0AAB54BA019219AC0D2F3 /* FBSDKGraphRequestMetadata.m in Sources */, + C01E0E8018888555C456BB57CE6C032C /* FBSDKGraphRequestPiggybackManager.m in Sources */, + F2EAAE0FD2863C05C72CD78C378CBB6F /* FBSDKHybridAppEventsScriptMessageHandler.m in Sources */, + 4190CE91A51AB79109CEF3B9333F578F /* FBSDKIcon.m in Sources */, + A60EF137EABCA04DFDB39AFD4B37FB13 /* FBSDKImageDownloader.m in Sources */, + CD01D797BC5A6BB35E767A96C5D661F0 /* FBSDKInternalUtility.m in Sources */, + D17EC9B6A83EB16B6749381CBECE3C93 /* FBSDKKeychainStore.m in Sources */, + 4BF41AE734C22991F475FC2F3A2B8B47 /* FBSDKKeychainStoreViaBundleID.m in Sources */, + F5D1A93865F7365F0C109E20739247D3 /* FBSDKLogger.m in Sources */, + EF70C512B221894B2860DD83D4ED7FDB /* FBSDKLogo.m in Sources */, + CB338E3D650EEEF7B36A48033CCAC36B /* FBSDKMaleSilhouetteIcon.m in Sources */, + A108BE03F5D82F24F809AF618B7D9409 /* FBSDKMath.m in Sources */, + 3657D18329A9BF91FBAF0FC03C57062D /* FBSDKMeasurementEvent.m in Sources */, + 808474CCD1DC03A8F9CA1EC5563C0F32 /* FBSDKMonotonicTime.m in Sources */, + 3337964B0697559A7DFD39F9E6280DD8 /* FBSDKPaymentObserver.m in Sources */, + B5AD0D307881854215E130A0246A81E7 /* FBSDKProfile.m in Sources */, + 7CEE201A575FEBE9EEFD11CE158C9255 /* FBSDKProfilePictureView.m in Sources */, + 9C2B52680D797FD8AA55098040DDBD10 /* FBSDKServerConfiguration.m in Sources */, + F5B90521845B408CCF41FABB24F31914 /* FBSDKServerConfigurationManager.m in Sources */, + 36970E05B0713E35EA74DB38A327B4CA /* FBSDKSettings.m in Sources */, + 072B15A37C3C2C8440518E6B13C046E3 /* FBSDKSwizzler.m in Sources */, + 8EE43CC6A3647E5F30094088F7068DDE /* FBSDKSystemAccountStoreAdapter.m in Sources */, + 0E060CC555E54F6DAA83FA57B2DA23D8 /* FBSDKTestUsersManager.m in Sources */, + 3C0B08EBA39E348D07B87AD01A2E17C9 /* FBSDKTimeSpentData.m in Sources */, + D2732227E474940C94411413284108E7 /* FBSDKTriStateBOOL.m in Sources */, + 73A05BCFF872DA1600985960A1E9313A /* FBSDKTypeUtility.m in Sources */, + A666FF416DB9D781E4D26A9F37D259AF /* FBSDKURL.m in Sources */, + CEAB259BF518EE73EF34CEAF53CCE282 /* FBSDKURLSessionTask.m in Sources */, + BE0CE8D41323A25B70F039BFB7037F07 /* FBSDKUserDataStore.m in Sources */, + 0300AA88269CE5D7E95C9E862CCF7FCA /* FBSDKUtility.m in Sources */, + 09C8B530F2602EABC211301F83C116C9 /* FBSDKViewHierarchy.m in Sources */, + 40FD4C9C5ACC9BCA23D07EB7DAF5363E /* FBSDKViewImpressionTracker.m in Sources */, + 6AFE74F0E16794B1DA54D02EB8E39C44 /* FBSDKWebDialog.m in Sources */, + 2A38EBE09F7833270177CFDA35E44D4E /* FBSDKWebDialogView.m in Sources */, + 15F538CD641FACC0C9DD2ADEE047748C /* FBSDKWebViewAppLinkResolver.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4289,11 +3595,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 56DF7E22D6F708B4242ED0AF08FDCC52 /* Sources */ = { + 54BA64277A053EB86431DC9905DDA097 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 21535B6B089E5472A3250B0C56893BA7 /* Pods-PNObject_Example-dummy.m in Sources */, + 54E91E1F0443C7A949682430B76A49E8 /* UIDevice-Hardware.m in Sources */, + BECBF0D0881A11C4CB893040F3BC6E50 /* UIDevice-Utils-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4331,6 +3638,33 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 751FE697BBE4A05C82D6DD8586F847BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E7CED8C953735B5DD8F6FEF33F3D9E59 /* AFHTTPRequestSerializer+OAuth2.m in Sources */, + FEFD7B134083D66C70D1B9D6E6E8DFB5 /* AFJSONResponseSerializerWithData.m in Sources */, + 8C705E2BC83BFD6710BBA748DFD90E3F /* AFOAuth2Manager.m in Sources */, + 2E22C2A4A6B867E4CB9F647262D4B370 /* AFOAuthCredential.m in Sources */, + 6332CC1C2B83DA293197FE7B4568EFAB /* PNAddress.m in Sources */, + EAF457B84DA98B3CA8BE7AADEBD2E307 /* PNInstallation.m in Sources */, + 111FAFF1038A78A60FE73DE2582AEC76 /* PNLocation.m in Sources */, + 73B69F9F5639CE18FC39D234E7B5EC66 /* PNObjcPassword.m in Sources */, + 95B8E7085D1C0F363E53D6EE4E0ABB18 /* PNObject+PNObjectConnection.m in Sources */, + 1545293F2435CB87346850AF58F74483 /* PNObject+PNObjectDELETEConnection.m in Sources */, + 4001116623CE8E97C48A62C17DE69B75 /* PNObject+PNObjectGETConnection.m in Sources */, + 20A69731267F6F91566AD1025CE4F1E0 /* PNObject+PNObjectPOSTConnection.m in Sources */, + E69AC7DF56475FD15E3460C3C6EE9F13 /* PNObject+Protected.m in Sources */, + 04F3476DB61025DFA24A4F7E313CCB1D /* PNObject-dummy.m in Sources */, + ACD06101A93068B534BBB211DF3574D8 /* PNObject.m in Sources */, + E9DB50621A4CC8E51953EACCCB858A7D /* PNObjectConfig.m in Sources */, + C78819F154442FAC6C260A8393D733BA /* PNObjectFormData.m in Sources */, + D1902CBED2DCB57FD790C2BC2214A832 /* PNObjectModel.m in Sources */, + 601A0AFB02EBA07A6FCCA9811A758BDA /* PNObjectUtilities.m in Sources */, + 0DDEF049DB6B3F2EDEE94F3EAE91D430 /* PNUser.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 822108F88FAD2CB5BCB6408E26A757DF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4340,100 +3674,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 82E7D8FFAB72480BDF51677EE466E8F4 /* Sources */ = { + 88BBA6D5A7FC88211BE64C1F03CBDDC4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 379EE353AAAF4E1C20360A28426F81C3 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, - 17A9449C050498493A1F79B62E8D6E55 /* FBSDKAccessToken.m in Sources */, - 138F2AD3773BBFF3CDD2764FF13CD27C /* FBSDKAccessTokenCache.m in Sources */, - FD560570B3E7568E94FA503EE24A1087 /* FBSDKAccessTokenCacheV3.m in Sources */, - 1751090389BAE32331DF7D6C14732F88 /* FBSDKAccessTokenCacheV3_17.m in Sources */, - 222C650B3594A18E7DB0AD88FD5C845F /* FBSDKAccessTokenCacheV3_21.m in Sources */, - F49906976C1669DDF4D88F8904C8617E /* FBSDKAccessTokenCacheV4.m in Sources */, - E9946CCF56CB845277D2646DA1B96C1E /* FBSDKAccessTokenExpirer.m in Sources */, - 5B0D99DBC6962679024DCB43643813BF /* FBSDKAppEvents.m in Sources */, - 88C8F4FB60378D4DD8712F1AD8A51481 /* FBSDKAppEventsDeviceInfo.m in Sources */, - 5A5C26749271533645256CC332DF7292 /* FBSDKAppEventsState.m in Sources */, - 183E2DED78A76D5E58A41D8D017DF9C7 /* FBSDKAppEventsStateManager.m in Sources */, - 8AAFB07AADB3CD4F639112B28633F6B8 /* FBSDKAppEventsUninstall.m in Sources */, - BBD6D82E3C00632FB251B0091A037311 /* FBSDKAppEventsUtility.m in Sources */, - 3EF512C592A4C3ED940D79AF1A684B5C /* FBSDKApplicationDelegate.m in Sources */, - 588EBFF034DDE1388B6B8204CDE44163 /* FBSDKAppLink.m in Sources */, - 7DB70D62C2A46B2CF4E7DA5BD56EBD60 /* FBSDKAppLinkNavigation.m in Sources */, - 57072620B5F92EB21C27C92109189580 /* FBSDKAppLinkResolver.m in Sources */, - B3CA67B486E1719A124C5F1DB4256AEF /* FBSDKAppLinkReturnToRefererController.m in Sources */, - AA5C88F10468A55C41A2193119C54D21 /* FBSDKAppLinkReturnToRefererView.m in Sources */, - B39C2441EB0E51A74699176E48E1A8E8 /* FBSDKAppLinkTarget.m in Sources */, - 713B0290DCD4649E177F455A7356D833 /* FBSDKAppLinkUtility.m in Sources */, - 91ED2C949C60F448233A36AA2D699338 /* FBSDKAudioResourceLoader.m in Sources */, - 2E7BD4927D6049811F367F4D0952BFE7 /* FBSDKBase64.m in Sources */, - C3763545936D68F70E2336A6DBDF87CB /* FBSDKBoltsMeasurementEventListener.m in Sources */, - E67A8234481FA50D5980A24AD2AF4AA2 /* FBSDKBridgeAPICrypto.m in Sources */, - EEE90A804A9D9C45B6FAAE59AF648A37 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, - F3E714996397702AFA717A6034F89EA5 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, - B8041A0CD63F21B8E087F7F795212B5E /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, - 3CBB32A2E0C543FB415508C2BD5EB93C /* FBSDKBridgeAPIRequest.m in Sources */, - 21809E415ACA6A73B8DE677487C5E61B /* FBSDKBridgeAPIResponse.m in Sources */, - A2F3A17F0A21A3DEEE6EC83D57CC0F0F /* FBSDKButton.m in Sources */, - 58E4A3FA33E8AD9728E8E8BE06459E0B /* FBSDKCloseIcon.m in Sources */, - 11A17EFE591AA340A6CE7A274DC1987B /* FBSDKCodelessParameterComponent.m in Sources */, - AD82883E20FB648B0EAFB696C8B49895 /* FBSDKCodelessPathComponent.m in Sources */, - 0D0F452B575E190C7213A91EB17B2F2C /* FBSDKColor.m in Sources */, - 0A004A774371313724FD2CDAB8E028B7 /* FBSDKConstants.m in Sources */, - 8716445EB7B8630DEC2F206115A37D54 /* FBSDKContainerViewController.m in Sources */, - FE6D38499076BD23BF81A1490B551C21 /* FBSDKCoreKit-dummy.m in Sources */, - 7C7A3E5E39696BDFE861BDCBD0FF360A /* FBSDKCrypto.m in Sources */, - 2736DB4B35A53B66F656FBEDB5FD29C8 /* FBSDKDeviceRequestsHelper.m in Sources */, - E89CDC617E8F7654DADDAF195A813F76 /* FBSDKDialogConfiguration.m in Sources */, - F653602DDC5621262A51E07F860C57F2 /* FBSDKDynamicFrameworkLoader.m in Sources */, - C471AFE0B359ECE7205F6275DEF2BF45 /* FBSDKError.m in Sources */, - 4E222FAC164C5AF9D134FAA764D1AD01 /* FBSDKErrorConfiguration.m in Sources */, - 9AF2916356336DF258EB0614FF3377AE /* FBSDKErrorRecoveryAttempter.m in Sources */, - F0D2B51A842A3C2252D76C832058EA2E /* FBSDKErrorRecoveryConfiguration.m in Sources */, - 049957B67D6CDCEB437E71E659F55E0C /* FBSDKEventBinding.m in Sources */, - B8900D0468D47B26F18E5DDE71FDAEED /* FBSDKEventBindingManager.m in Sources */, - 541A150F47F274A2E75151231B26278B /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, - DF73F09FCA1704506EE7E0BF00CD42EB /* FBSDKGraphRequest.m in Sources */, - 3A5D233A243A3B622CFEBE69417C5311 /* FBSDKGraphRequestBody.m in Sources */, - 666906D65B6FB93DAD8D35A951445EEC /* FBSDKGraphRequestConnection.m in Sources */, - 09712EBDA1994961CE9C31F1EFDAF894 /* FBSDKGraphRequestDataAttachment.m in Sources */, - 990210D04E6297ECF71B94F5473E3ADF /* FBSDKGraphRequestMetadata.m in Sources */, - 0A1CFD0C8DB65F5B278C84D60E8AF191 /* FBSDKGraphRequestPiggybackManager.m in Sources */, - 90BCE8D3D1AB17E293CDB5491C8FA7BD /* FBSDKHybridAppEventsScriptMessageHandler.m in Sources */, - 6854944632B3D42512DCDBA043513186 /* FBSDKIcon.m in Sources */, - 2634D93125CFB6C39D524F1F7F4C069C /* FBSDKImageDownloader.m in Sources */, - 5F9AEF2488EDE6958051A208A40A67C4 /* FBSDKInternalUtility.m in Sources */, - 448052C6B70F1BE9B44B7AFB9DCEB45B /* FBSDKKeychainStore.m in Sources */, - 2BEBB43A11CC5E3860D8B864F3E4F620 /* FBSDKKeychainStoreViaBundleID.m in Sources */, - 1FE4E5B7FD421540AEA91A0DDF9728D3 /* FBSDKLogger.m in Sources */, - 3E7AF8FD5D0B9BB6CE7C6A2245D686A8 /* FBSDKLogo.m in Sources */, - BA0BC9FE6A015F2A0A52F7C393CB6EBA /* FBSDKMaleSilhouetteIcon.m in Sources */, - 4E948B6EEB7EB8AB4979EBD6794E254B /* FBSDKMath.m in Sources */, - 874600BC9704604956CD6C7B06D81AAD /* FBSDKMeasurementEvent.m in Sources */, - A5153CF6A6262915EE2FA75393045171 /* FBSDKMonotonicTime.m in Sources */, - F8913FB5AA599DB79465591ADA9DEFB2 /* FBSDKPaymentObserver.m in Sources */, - 091323A9C683CC6AE616CC5C2E6703B8 /* FBSDKProfile.m in Sources */, - 1477A552AA3E3027A18F09B549FC9115 /* FBSDKProfilePictureView.m in Sources */, - 2A7B906C6E4C44D16C334B19B29D502D /* FBSDKServerConfiguration.m in Sources */, - AFB4C25724EBC1689155913AAE5B45E3 /* FBSDKServerConfigurationManager.m in Sources */, - 7CD1EC69438A0F7CD14C2BAFB82C6268 /* FBSDKSettings.m in Sources */, - CE2E52CE2DF36E8460C12537B5CF15C5 /* FBSDKSwizzler.m in Sources */, - D34C710467282F4B6769AD9FDBB46B8C /* FBSDKSystemAccountStoreAdapter.m in Sources */, - DF2CD8858A3F0E265D27D91895B6656A /* FBSDKTestUsersManager.m in Sources */, - D86876EFBE692F33A371E6F5F03DDD0F /* FBSDKTimeSpentData.m in Sources */, - 6A64C061241326CBD97B377B6BE66714 /* FBSDKTriStateBOOL.m in Sources */, - 530F9F7F9A63D142BBCF8EAAEC3BF49D /* FBSDKTypeUtility.m in Sources */, - 2B8DA2E4560E08CADAF8524226832C7C /* FBSDKURL.m in Sources */, - C662AD540F8337B3C028C0AD1439FA64 /* FBSDKURLConnection.m in Sources */, - BAF05A6456511CD7D49701575FAC468C /* FBSDKURLSessionTask.m in Sources */, - 8E5B46BE55688C744B490076A5BABE16 /* FBSDKUserDataStore.m in Sources */, - A7ABF62FF15E1E127CD8309A2F049A43 /* FBSDKUtility.m in Sources */, - D7405ADE0E61A53C4D53CDE45B98D124 /* FBSDKViewHierarchy.m in Sources */, - 8B3C790A9F62211F165C731DAD3EF23E /* FBSDKViewImpressionTracker.m in Sources */, - 9402D5D55901FFD02A2CEE75E788473C /* FBSDKWebDialog.m in Sources */, - 66FF7015F3BC028EEC59F0E695FF7BC9 /* FBSDKWebDialogView.m in Sources */, - 8F486A4828A5C764C62E6FAEB91601A7 /* FBSDKWebViewAppLinkResolver.m in Sources */, + FE52B9CCCC1BD53FE5D210A4B8967847 /* ALView+PureLayout.m in Sources */, + 1CF59AE92815BB21F9D1C1BA32887538 /* NSArray+PureLayout.m in Sources */, + 8B51D3D8AF6B8CCD98006F3587BE5167 /* NSLayoutConstraint+PureLayout.m in Sources */, + A9E8811619AB5D2D8AB83565045A98D4 /* PureLayout-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4469,6 +3717,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 98796D0C8EB86D268EC67F0F5055EBA5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EA2219989272495E8E8823B5256F5BF2 /* NSObject+RZDataBinding.m in Sources */, + 941422EA6CD6C2B9195574DEBB31BA62 /* RZDataBinding-dummy.m in Sources */, + D81A42DFBA242CAFC2ABAA7D55153110 /* RZDBCoalesce.m in Sources */, + 58FF86D7BA005DC7E2BDFDCD53015BE6 /* RZDBTransforms.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; AEB7B39143B550251CFFB103F4533452 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4506,12 +3765,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E3A31A14D684457AB6840624177015BB /* Sources */ = { + E3D09451DD100DA06BAAFC09C94BFB48 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 584B3A9ABE4DB7870AD38335D696F48F /* UIDevice-Hardware.m in Sources */, - 655A6D5F35E3F2178EEBA91DF6E4A34F /* UIDevice-Utils-dummy.m in Sources */, + 9922BFDA9CD5FC96536EBF693423E398 /* Pods-PNObject_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4524,42 +3782,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F0C84B485BA76B1CEA8B93C49E5682B4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 859F02AF780B48740A1EE13BDCB6301F /* StrongestPasswordValidator-dummy.m in Sources */, - FB0446F2F8C6170EE3E66BA826130E2F /* StrongestPasswordValidator.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F2A6654889F2511ED27BEA584FB8BBC5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 34F73CE41B0F74002D57370081D3D60A /* AFHTTPRequestSerializer+OAuth2.m in Sources */, - 854E7B4F2E69A96C617624186C3E1CA4 /* AFJSONResponseSerializerWithData.m in Sources */, - 08B1188775832322BF1A45824DD88321 /* AFOAuth2Manager.m in Sources */, - 3C9ACC4D8CF8870CB1D991F45D8FFA43 /* AFOAuthCredential.m in Sources */, - 14ABA42FD2E2ADFCECEA08CF5DC158C4 /* PNAddress.m in Sources */, - 9618CE7E609826CDF188CEBC9982A39B /* PNInstallation.m in Sources */, - EEE7B1E3153CFC7CB68036ADB52213B4 /* PNLocation.m in Sources */, - 99E11F86F9773CA005BA910500021B11 /* PNObjcPassword.m in Sources */, - CE323FE5656FB439B049DF33D8CD5857 /* PNObject+PNObjectConnection.m in Sources */, - 7CD58E642985D548BD6A21BB224E917B /* PNObject+PNObjectDELETEConnection.m in Sources */, - 0CE53BFCC4DCA47C9CDBB607FF4DB660 /* PNObject+PNObjectGETConnection.m in Sources */, - 599679184FB094F22D2006ED35BE11EC /* PNObject+PNObjectPOSTConnection.m in Sources */, - 989AC73AF203EC1178A0B2E557868E4F /* PNObject+Protected.m in Sources */, - F3A372FEDCAF8F9890FCB5D28F529247 /* PNObject-dummy.m in Sources */, - 6A7F40D7542E522A70B679B7D8D1EE98 /* PNObject.m in Sources */, - F4E0AD7567C1BFF3D9709BA5810907DF /* PNObjectConfig.m in Sources */, - FDD7419049586E6232B659EC95DC5AF1 /* PNObjectFormData.m in Sources */, - DE904AF6BDFFB74ABA599FA9B172098F /* PNObjectModel.m in Sources */, - D09583AB4C7EB67FDDBBD816E3D00772 /* PNObjectUtilities.m in Sources */, - 820F7BF2538DFC4CFA9B59A637BCDE83 /* PNUser.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F66C34AB755F218CCE96FE7644362763 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4581,26 +3803,20 @@ 14910E8FDF892F809321026FF84A9322 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-PNObject_Example"; - target = 63178740FD447D2079BFABBA20ADEF1E /* Pods-PNObject_Example */; + target = B38C006CE78F17EF19EA707B05114A38 /* Pods-PNObject_Example */; targetProxy = 10E96630EA055E3B97CE3CB8D42C5126 /* PBXContainerItemProxy */; }; - 16C318A75B9C8B904D282EAF2C9B8D6D /* PBXTargetDependency */ = { + 14E5C1AB7D3FDF6B8977C10CDC1F560E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RZDataBinding; - target = 65B039250BC589E46F912B1B0C2AE01B /* RZDataBinding */; - targetProxy = 7E44AD6A0717588657CD01C68ED90AE8 /* PBXContainerItemProxy */; + name = StrongestPasswordValidator; + target = B05A83813FBAAA90F28FBB951DAE33D4 /* StrongestPasswordValidator */; + targetProxy = B5435D14878EEF0A908E874A347F7DE3 /* PBXContainerItemProxy */; }; - 20816FD8FA615F59D6F235B8E7B7B8A7 /* PBXTargetDependency */ = { + 1F77D11683EAB836F891139790D396CB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "CodFis-Helper"; - target = 6E14B2EB890E5F1C28CB981EFB57CB3E /* CodFis-Helper */; - targetProxy = 3C7B24FA99915350892228A4F243F962 /* PBXContainerItemProxy */; - }; - 2131E0E3844739DF5E2DAB31084A6874 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DJLocalization; - target = C784B90D59D6E06A6468ADC0F4E51429 /* DJLocalization */; - targetProxy = 9F075EF5EFC86BA8B44E5959B1C59566 /* PBXContainerItemProxy */; + name = PNObject; + target = 26109B56473A736BBF412A1200D8B418 /* PNObject */; + targetProxy = A626360FC1F49C7CC04D1B40A089F8C8 /* PBXContainerItemProxy */; }; 250EDDB7679B621D1B13FA5028E4DC24 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4608,125 +3824,113 @@ target = B8DB1230EFD4A2B4440593A586A5F223 /* Specta */; targetProxy = 4564C74DBDD944982494F574EAF254AA /* PBXContainerItemProxy */; }; - 32B4A9CCD7990FC707810A28C1DBDD98 /* PBXTargetDependency */ = { + 2FF97064B7893BFA19A19E71C574125B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = AFNetworking; target = 0EABDFFFE1E889B87B1197D012AD068A /* AFNetworking */; - targetProxy = 40054265102AED3C5889EBCF80B22A59 /* PBXContainerItemProxy */; + targetProxy = 5D8FB167B8AED7FB3467C856D9D17893 /* PBXContainerItemProxy */; }; - 361FCFC71A42D98FBBFBB4FCBC629EE6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Bolts; - target = 6493D0116FE1BA5F8BB4133D819DF3C8 /* Bolts */; - targetProxy = D4F07391719B5468DF3B71C7E325496C /* PBXContainerItemProxy */; - }; - 384457344422D9D057236061768D0C25 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = D71965AADCF27F9F922926F15DAA80A7 /* FBSDKCoreKit */; - targetProxy = 23EB32719EE6056D7806344434FDA68B /* PBXContainerItemProxy */; - }; - 3D79A7CDC3B8C6AB5C144FCE6894010E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKShareKit; - target = 0FE145A63419906335F165B953111B50 /* FBSDKShareKit */; - targetProxy = 6F8EE45D209E05A3632FAA8DAE834776 /* PBXContainerItemProxy */; - }; - 41A377BE820934D464B18ABF1483CBF4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "PEAR-FileManager-iOS"; - target = ADBBB3E85D1E2F795520A8939751318B /* PEAR-FileManager-iOS */; - targetProxy = 3C2BE651535437F593E96BA6F86C81B5 /* PBXContainerItemProxy */; - }; - 5154DDD5C306830A68015DFA715049DC /* PBXTargetDependency */ = { + 3342300805BB84844D8BE03C8B857DD7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "nv-ios-http-status"; target = 6E6F78D1E706987F92C1C61F6B619A67 /* nv-ios-http-status */; - targetProxy = 5810721FCBB27E7156001056608264FA /* PBXContainerItemProxy */; + targetProxy = D6A6B0E216D8103BD43740435EFADB18 /* PBXContainerItemProxy */; }; - 515FDA74CD4C75B291EB96E8EAB62AE7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKShareKit; - target = 0FE145A63419906335F165B953111B50 /* FBSDKShareKit */; - targetProxy = 04F8D4266069070FFE805EC907ED2BE5 /* PBXContainerItemProxy */; - }; - 52C2321526F4434EDA074D208A2923B8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 0EABDFFFE1E889B87B1197D012AD068A /* AFNetworking */; - targetProxy = 0C178B7D964BFA9F25A449C638F1A53E /* PBXContainerItemProxy */; - }; - 58767F0FD2EDF3B7CDCA4DFFCE530E1E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "NSString-Helper"; - target = B636D5CA7BFECB99A182D63A69EA5720 /* NSString-Helper */; - targetProxy = 7A9273A3C23D6A92531B5B84D870262F /* PBXContainerItemProxy */; - }; - 5DE08B412119153EC68767EB340D3607 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Bolts; - target = 6493D0116FE1BA5F8BB4133D819DF3C8 /* Bolts */; - targetProxy = 01B113C34FAA406DB4A6CDF20DCB8B9B /* PBXContainerItemProxy */; - }; - 5F8D3CACB7AC9099FCCFDE718F2AD346 /* PBXTargetDependency */ = { + 35B16E6E250D4844C2BDCC209B0E2A8B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = NSDate_Utils; target = F23086A6598C6BAA8DAF542D4A03059D /* NSDate_Utils */; - targetProxy = 7C2E116E66661D9429ED10896D99260F /* PBXContainerItemProxy */; + targetProxy = AEF8B0A77462B7C4277E43838774466F /* PBXContainerItemProxy */; }; - 5FDC3E162849856BF82414FBB6C82634 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PureLayout; - target = 23677D10DAFC9612279D0C04E8F822F0 /* PureLayout */; - targetProxy = 278965677B6D0B828227E563A4EB8FED /* PBXContainerItemProxy */; - }; - 5FEC2B2C9ACACBBCD77435F4697FEACD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = D71965AADCF27F9F922926F15DAA80A7 /* FBSDKCoreKit */; - targetProxy = FA1C7670EF71574F7C438A17CD4F49FF /* PBXContainerItemProxy */; - }; - 62FFEDDBFE3DD9F7B3DA00406C8B565D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = StrongestPasswordValidator; - target = 26069BE91A9928289B1454877B6683E5 /* StrongestPasswordValidator */; - targetProxy = 58EC99B1214E7FE5E2C4BADE28D11170 /* PBXContainerItemProxy */; - }; - 6B7EF2E128CD5385082BE4183D8A099F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "UIDevice-Utils"; - target = A7ABB589D7269F28501753691B0189FB /* UIDevice-Utils */; - targetProxy = 1E8BBCDEE24A8B32BFFC9E34F47F93FB /* PBXContainerItemProxy */; - }; - 84D6EA7345FE73A1024286704C8010A1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Bolts; - target = 6493D0116FE1BA5F8BB4133D819DF3C8 /* Bolts */; - targetProxy = 1E73446C51436201237C441EC6DE7E6D /* PBXContainerItemProxy */; - }; - 8B1E9209560FABD8D68AF62603D188EB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PNObject; - target = 8499AC93B286F5F061A552CBC893C989 /* PNObject */; - targetProxy = 4E9D471F61BDC0C0C489A5ADB75216C4 /* PBXContainerItemProxy */; - }; - 8F83199E4D9752EA2782608A0393ABFD /* PBXTargetDependency */ = { + 3CCF3E3E25356C936382641C4FC8034E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DDDKeychainWrapper; target = BF3423B26285A217899170780715FAFC /* DDDKeychainWrapper */; - targetProxy = 868D6684B4362CF516BB786685C12423 /* PBXContainerItemProxy */; + targetProxy = 7E63BE24D7F8C1CEF6EE949A8A822885 /* PBXContainerItemProxy */; }; - 9812B909C9744DE5E4EBFCB90927B336 /* PBXTargetDependency */ = { + 3E3E66BD7E35D64E8D1547680F7CB057 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "nv-ios-http-status"; + target = 6E6F78D1E706987F92C1C61F6B619A67 /* nv-ios-http-status */; + targetProxy = 48BD2C818B1009779BACD940C2D3CEAF /* PBXContainerItemProxy */; + }; + 487A530D4BC2E7B77A4D86DBE677D31C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "UIDevice-Utils"; + target = 4DB6037421D42C3F0B181DE36F1682C9 /* UIDevice-Utils */; + targetProxy = 98DB286F424338873026AEE0F3DA2B16 /* PBXContainerItemProxy */; + }; + 502CFEEFBC9E4A3782A0D568D7D9F927 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "CodFis-Helper"; target = 6E14B2EB890E5F1C28CB981EFB57CB3E /* CodFis-Helper */; - targetProxy = 1874734BD9109688C762D22A600B3550 /* PBXContainerItemProxy */; + targetProxy = 162CA67D66F3D80E827398340E7BE854 /* PBXContainerItemProxy */; }; - 9B402E9DA42DED2027E914B9ECC2C105 /* PBXTargetDependency */ = { + 5554E9ED9504292230BE6D9EB543322B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = StrongestPasswordValidator; - target = 26069BE91A9928289B1454877B6683E5 /* StrongestPasswordValidator */; - targetProxy = 1031B538176B5540A222382EA20A6415 /* PBXContainerItemProxy */; + name = "NSString-Helper"; + target = B636D5CA7BFECB99A182D63A69EA5720 /* NSString-Helper */; + targetProxy = 342972E407B6AD757F383FD4A7866E1F /* PBXContainerItemProxy */; + }; + 5BCAF5B2545DD76D14D345DC40F42A2B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NSDate_Utils; + target = F23086A6598C6BAA8DAF542D4A03059D /* NSDate_Utils */; + targetProxy = 3FEDFF394AA3E4281E9BEE84B742F664 /* PBXContainerItemProxy */; + }; + 5FF36764CC2C07B579123F145E8A725C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "PEAR-FileManager-iOS"; + target = ADBBB3E85D1E2F795520A8939751318B /* PEAR-FileManager-iOS */; + targetProxy = 3B38839FD5A9FDEC4CC15E346D423ED3 /* PBXContainerItemProxy */; + }; + 60E2656D07FF41F397BA3AC8ECB6963E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = PureLayout; + target = D1BA6BA6A87F8CB0F814F63ED4F639C3 /* PureLayout */; + targetProxy = B3B2C0DEE219FAFFF98D36693DB45488 /* PBXContainerItemProxy */; + }; + 6C6585268FE6E116947A6C74E8070E36 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Bolts; + target = 6493D0116FE1BA5F8BB4133D819DF3C8 /* Bolts */; + targetProxy = 6B9D366A6504E865FF9986C23DA7785A /* PBXContainerItemProxy */; + }; + 6D886B2128FA03FE3A053B078FE6004D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NSDataAES; + target = A7334FDC353B84921762C535B7E01EA0 /* NSDataAES */; + targetProxy = 8457652AC327A5F2238C4B902212D539 /* PBXContainerItemProxy */; + }; + 71B8AF47AA5FC5C86CB5C1E097408EC8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "UIDevice-Utils"; + target = 4DB6037421D42C3F0B181DE36F1682C9 /* UIDevice-Utils */; + targetProxy = C95DCF24C47DC51178B800D24E40A055 /* PBXContainerItemProxy */; + }; + 798C08F366A8FA6BD3B9CFA6AED01519 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NSDataAES; + target = A7334FDC353B84921762C535B7E01EA0 /* NSDataAES */; + targetProxy = 5FF38609FE4FD504486A8A7961078B4D /* PBXContainerItemProxy */; + }; + 83CB6326802BD64E070516B015AAC213 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DDDKeychainWrapper; + target = BF3423B26285A217899170780715FAFC /* DDDKeychainWrapper */; + targetProxy = 6806F6E82B966C99D2801F3C0758350E /* PBXContainerItemProxy */; + }; + 87E51A243BCACF9A47104E10083A19D3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RZDataBinding; + target = 25CAB725512C8BCE062BEA3A8B1774C6 /* RZDataBinding */; + targetProxy = 2DADE0882541EA69E6073CA3DE7D7573 /* PBXContainerItemProxy */; + }; + 99F5E39063B7272210FE4DCDC8BAFDE2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RZDataBinding; + target = 25CAB725512C8BCE062BEA3A8B1774C6 /* RZDataBinding */; + targetProxy = 7CCC4FA5054018B2C07AFC4501A3C7B0 /* PBXContainerItemProxy */; }; 9E5E908317CC704578696D11917FE0CA /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4734,95 +3938,59 @@ target = 2F76C4DEAE2007246BF4FBF8967B2FA3 /* Expecta */; targetProxy = F48C433CE6B0DAE8E8422A254EAD604D /* PBXContainerItemProxy */; }; - A5117545F993FCEDF129449AB8D773DB /* PBXTargetDependency */ = { + A82491159D67DB31395F1BF19CA5E01A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "UIDevice-Utils"; - target = A7ABB589D7269F28501753691B0189FB /* UIDevice-Utils */; - targetProxy = 0833FDF10922F9602D680C4261DC73AF /* PBXContainerItemProxy */; + name = "CodFis-Helper"; + target = 6E14B2EB890E5F1C28CB981EFB57CB3E /* CodFis-Helper */; + targetProxy = BA94068F6C4297D689BF9922FE553095 /* PBXContainerItemProxy */; }; - B0593DEC9A184E483174C335A9524C7F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NSDataAES; - target = A7334FDC353B84921762C535B7E01EA0 /* NSDataAES */; - targetProxy = 59D97A59206C2207FA9592FAB2D8B236 /* PBXContainerItemProxy */; - }; - B08C873B85A4117466634C0B1AFF9722 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBSDKLoginKit; - target = 428487CF01476A350D641A9BB0599574 /* FBSDKLoginKit */; - targetProxy = 9A8FA569E6BFA00B337E6954A449A30D /* PBXContainerItemProxy */; - }; - BE1C6DED61A7B481581BE30519829288 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "nv-ios-http-status"; - target = 6E6F78D1E706987F92C1C61F6B619A67 /* nv-ios-http-status */; - targetProxy = 0559C89F6A3C9DB982C028011B4F7274 /* PBXContainerItemProxy */; - }; - C083E5950A6AED0AA530F010C0029FB1 /* PBXTargetDependency */ = { + B3C04C9055794E4FA4846898776BE7C8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DJLocalization; target = C784B90D59D6E06A6468ADC0F4E51429 /* DJLocalization */; - targetProxy = BF1A88ADFAD9650D61F8FC0499ABCC88 /* PBXContainerItemProxy */; + targetProxy = B4D5CD9FFFD1C9CE4C98DDB95FD69CB6 /* PBXContainerItemProxy */; }; - C24479029B6AB58CCA2B48F7BDA5726D /* PBXTargetDependency */ = { + B5D6292D4BA8110CA905BF1B95E68477 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKLoginKit; - target = 428487CF01476A350D641A9BB0599574 /* FBSDKLoginKit */; - targetProxy = 828F4903FF4383A9B1BA1C7A246CF368 /* PBXContainerItemProxy */; + name = AFNetworking; + target = 0EABDFFFE1E889B87B1197D012AD068A /* AFNetworking */; + targetProxy = 92F632D6FEA6A5BD9AA7D426B88A4EC8 /* PBXContainerItemProxy */; }; - C4CB4AC5EAD14DC6653EE689790FD99A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Bolts; - target = 6493D0116FE1BA5F8BB4133D819DF3C8 /* Bolts */; - targetProxy = 95952E01EF08C3E4AA3A0FF89704D9A0 /* PBXContainerItemProxy */; - }; - C6ACE5E6AA08FC313F1C7A5C955DE04F /* PBXTargetDependency */ = { + B8A35D0F817FFEC1119A6E01B33018C6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKCoreKit; target = D71965AADCF27F9F922926F15DAA80A7 /* FBSDKCoreKit */; - targetProxy = 981DC05198880419D2E3DE4455FEE0E7 /* PBXContainerItemProxy */; + targetProxy = 5C03861E200BA8D98201992267471729 /* PBXContainerItemProxy */; }; - C94092A405EBA73B0CEC4A1A306B5753 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RZDataBinding; - target = 65B039250BC589E46F912B1B0C2AE01B /* RZDataBinding */; - targetProxy = FC83AC3110B1A0C3638AF9A4CC558536 /* PBXContainerItemProxy */; - }; - CEE2E1A9461A0AFCE9923EAC4DA22B34 /* PBXTargetDependency */ = { + C0DC5B16FD6DC137D2A9E0695BF30D65 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "NSString-Helper"; target = B636D5CA7BFECB99A182D63A69EA5720 /* NSString-Helper */; - targetProxy = BA22E019BF58184538B1D947ED17A4BF /* PBXContainerItemProxy */; + targetProxy = 5DB748759E9835155F41CAB3E5B27107 /* PBXContainerItemProxy */; }; - DDAD6571F4FDA68D0ADA2EA4BD915990 /* PBXTargetDependency */ = { + C4EF5FB3FBEC3034A2ED5A3AFE5D46EB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NSDataAES; - target = A7334FDC353B84921762C535B7E01EA0 /* NSDataAES */; - targetProxy = C92918F85AD8F4ADDFF3258E567C34F0 /* PBXContainerItemProxy */; + name = DJLocalization; + target = C784B90D59D6E06A6468ADC0F4E51429 /* DJLocalization */; + targetProxy = 10B9850C32130012496F47E8711234A4 /* PBXContainerItemProxy */; }; - E0ABEC758EF94889E11D4396A554CD5F /* PBXTargetDependency */ = { + D9EB3130F1885E0B20E1D8D73B723A5F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NSDate_Utils; - target = F23086A6598C6BAA8DAF542D4A03059D /* NSDate_Utils */; - targetProxy = 9E1D8E066ADB83124E0D55B2933C65BA /* PBXContainerItemProxy */; + name = StrongestPasswordValidator; + target = B05A83813FBAAA90F28FBB951DAE33D4 /* StrongestPasswordValidator */; + targetProxy = 36BBD286CD94CDB46D9DCB7D0296C410 /* PBXContainerItemProxy */; }; - E190422A43918431E6825E306BEA2FB7 /* PBXTargetDependency */ = { + E8D6751DD530E5C758F76BD144893038 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = D71965AADCF27F9F922926F15DAA80A7 /* FBSDKCoreKit */; - targetProxy = 0985AB55C2B0EF728F93BD29CE93A98C /* PBXContainerItemProxy */; + name = Bolts; + target = 6493D0116FE1BA5F8BB4133D819DF3C8 /* Bolts */; + targetProxy = C63DA91E81379EA2AAA7FECD056E79E4 /* PBXContainerItemProxy */; }; - E58827FA3AFD1361C0E222FD0C41EAB7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DDDKeychainWrapper; - target = BF3423B26285A217899170780715FAFC /* DDDKeychainWrapper */; - targetProxy = 2AC3865612BE6F9667AE367795D9769D /* PBXContainerItemProxy */; - }; - F4A6F06AFFBCB7E0230EE60D8285E1D8 /* PBXTargetDependency */ = { + F80476FB333CE788932830F16AC3E0F4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "PEAR-FileManager-iOS"; target = ADBBB3E85D1E2F795520A8939751318B /* PEAR-FileManager-iOS */; - targetProxy = 4151E7B95097069198D6F5B3C87A7414 /* PBXContainerItemProxy */; + targetProxy = CF6C88A0FD65473E6CF129F9BF245A20 /* PBXContainerItemProxy */; }; F833A79E60788367DCB3CDF6E74DBC5B /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4833,32 +4001,33 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 062F2AEF5E6160FA66F9B8E19F10AF15 /* Debug */ = { + 022E42CF9EB64B266FCF81CC7C0FE1C1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E10EB47C52E20EA119D6B514049F55F8 /* FBSDKShareKit.xcconfig */; + baseConfigurationReference = D2E3C6C127D655EB3C996164F51FD610 /* 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/FBSDKShareKit/FBSDKShareKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + 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 = FBSDKShareKit; - PRODUCT_NAME = FBSDKShareKit; + 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"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; 0ACE517E25FC3B42A6C37A8207F62654 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 72B47B0724761B2B22F82B85F19F2633 /* AFNetworking.xcconfig */; + baseConfigurationReference = A122AD9A7691D3ED99823E518BE681D6 /* AFNetworking.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4880,56 +4049,9 @@ }; name = Release; }; - 0C2D80A694E50ED847CE132C7A71BF46 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 12E33E70801A48C06920A1C5A947D38F /* 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 = 7.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; - }; - 0DA716B9BD14938E0C74373C7B57F618 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8D5C4E9E659DF465CEACD70EDC09E5DF /* 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"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; 10DCF6DF9FE970C6BE43309CBB86CAF8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FB72119DFFE43FFB9BF49600A12E9063 /* DDDKeychainWrapper.xcconfig */; + baseConfigurationReference = 9DEFE2D0367E8F4D9B99253AA6D3D3C7 /* DDDKeychainWrapper.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4950,9 +4072,32 @@ }; name = Debug; }; + 12A2C9B589E29046A0AFC09AC6BDE768 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AC9B65AA3E6DE33D83D54630E769C436 /* 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; + }; 1A83A1169A9ADDF107A6E646B4F18726 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8734D2AD92DE52FFB555643C20A74AD2 /* Expecta.xcconfig */; + baseConfigurationReference = 6590B91A0B3DE7B70BF5BDD27B9A7997 /* Expecta.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4973,9 +4118,33 @@ }; name = Debug; }; + 212E921200AE91CAA37239B77C327F8F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BDC9472C9B9C63426705F0C9BC0706BC /* 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"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 248246F01286E1784EAA529E6F4F8042 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 72B47B0724761B2B22F82B85F19F2633 /* AFNetworking.xcconfig */; + baseConfigurationReference = A122AD9A7691D3ED99823E518BE681D6 /* AFNetworking.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4996,33 +4165,32 @@ }; name = Debug; }; - 3F08D3596E4A755FC7FF1F0AFA21B7A2 /* Release */ = { + 3E62B02B037BF6D431393E3C412FB903 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 444FFF855F5ABFFFF0A7C42DC70E79CB /* PureLayout.xcconfig */; + baseConfigurationReference = D2E3C6C127D655EB3C996164F51FD610 /* 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/PureLayout/PureLayout-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + 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 = PureLayout; - PRODUCT_NAME = PureLayout; + 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"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; 46122236CC6CA81E3EDF300514C83B75 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B57448B7171E54F316A32FF4FC68CD47 /* NSString-Helper.xcconfig */; + baseConfigurationReference = 5C2702D997A5C5C9445826543EA9B51A /* NSString-Helper.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5045,7 +4213,7 @@ }; 4BCA23C34EE81412773B573BDF00FF9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E53045B6A07A7DC12896641929D0A42B /* PEAR-FileManager-iOS.xcconfig */; + baseConfigurationReference = 482729C64A5AA1E97993393D357C317E /* PEAR-FileManager-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5066,21 +4234,43 @@ }; name = Debug; }; - 51A12EC83F6688FFA1433F60A42362DC /* Release */ = { + 4D849EECBF8F6BCEE0B169917E442B10 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 12E33E70801A48C06920A1C5A947D38F /* FBSDKCoreKit.xcconfig */; + baseConfigurationReference = C73C6EA2E857706C62F6B73C63D5B8E1 /* Pods-PNObject_Example.release.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"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 5166601BA7A2B30188A891500DC9A44C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 00C6A0D70D0B027EF3BC2D2DCA4A3D9D /* 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/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + GCC_PREFIX_HEADER = "Target Support Files/PNObject/PNObject-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FBSDKCoreKit; - PRODUCT_NAME = FBSDKCoreKit; + PRODUCT_MODULE_NAME = PNObject; + PRODUCT_NAME = PNObject; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -5092,7 +4282,7 @@ }; 57DEB5F09BB3DA8F9645982A63EF273D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D6ED2B9CE5879E41B3C1304415AF0AE4 /* NSDate_Utils.xcconfig */; + baseConfigurationReference = E6EFA89BA8656B849DDFDB267185CFDD /* NSDate_Utils.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5113,9 +4303,33 @@ }; name = Debug; }; + 58540E013E2FF410E39896B5B3A26C16 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AC9B65AA3E6DE33D83D54630E769C436 /* 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"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 598AEBDBA25600F7DAE1276000088DDD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D9926F43895CDB2B741DEFB8D9D8AE66 /* DJLocalization.xcconfig */; + baseConfigurationReference = 5E638E4E812BAD1DDB8ED88531DCBEEB /* DJLocalization.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5137,33 +4351,71 @@ }; name = Release; }; - 5B125A4E93CD66299DD3BD0E0A4294F2 /* Release */ = { + 5DE19CECB206ACCCACF04D62F93FFDA6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E10EB47C52E20EA119D6B514049F55F8 /* 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 = 7.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; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = 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; + SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; 5F86344D82F223885EDB075C6422D66E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8734D2AD92DE52FFB555643C20A74AD2 /* Expecta.xcconfig */; + baseConfigurationReference = 6590B91A0B3DE7B70BF5BDD27B9A7997 /* Expecta.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5185,7 +4437,76 @@ }; name = Release; }; - 60DAF49CA7A9F362148D49C3C3123B2A /* Debug */ = { + 783B6D8AC0198FD425D3E53F41F90A37 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CF0CCCDF4C0E2DCF3CB409210373C0D6 /* Pods-PNObject_Tests.release.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"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7D9DF81E49A9F713AD8AC3F23F97B3F5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 22447F856E4F94AE2C8C7FECED411A11 /* 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; + }; + 7E56429F84CDB83837F400241B2EBE12 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 61E1D0F3409E4792D81E841ABEB2B71D /* 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; + }; + 858D01EEFE984249A9581D18DBEA53F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -5245,151 +4566,15 @@ PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - 647BD3CB016644FF627D48CC79FF4702 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E77872ABBDE104DEF1B32A3F930E6FCE /* 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 = 7.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; - }; - 783B6D8AC0198FD425D3E53F41F90A37 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CF0CCCDF4C0E2DCF3CB409210373C0D6 /* Pods-PNObject_Tests.release.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"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7AA5D148C7AD2C30073A28AA2D805FCD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C73C6EA2E857706C62F6B73C63D5B8E1 /* Pods-PNObject_Example.release.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"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7E56429F84CDB83837F400241B2EBE12 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 379C348EB2F9F418F970768DEB673F2F /* 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; - }; - 7F2F96C28E3E2C7740285FFB40EAA739 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C84799466FAEA7DDEA9DD46620CA93E6 /* 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"; - }; - name = Debug; - }; - 7FEBC1841CCDD28378842C9945BC249C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 00C6A0D70D0B027EF3BC2D2DCA4A3D9D /* 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 = 8.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; - }; 8684A5E1DA7D85AAC3FDA1AC27475E28 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FB72119DFFE43FFB9BF49600A12E9063 /* DDDKeychainWrapper.xcconfig */; + baseConfigurationReference = 9DEFE2D0367E8F4D9B99253AA6D3D3C7 /* DDDKeychainWrapper.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5411,7 +4596,77 @@ }; name = Release; }; - 8D471D629672F5DAB906466F7B46E6CF /* Release */ = { + 9AE40D9FDAAAE86DA8356E61A6FC4DE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B48536D934E898ABDE7CEE57D95E5991 /* 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"; + }; + name = Debug; + }; + A1D5250C19E787F1D6D961FD627B3583 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B48536D934E898ABDE7CEE57D95E5991 /* 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; + }; + A32957A19C5CF39C115ED40945EAC7D3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BDC9472C9B9C63426705F0C9BC0706BC /* 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; + }; + A4210E5FF409213800F67A0C58B5A615 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 00C6A0D70D0B027EF3BC2D2DCA4A3D9D /* PNObject.xcconfig */; buildSettings = { @@ -5431,106 +4686,12 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 9017EF38B403D030D95383191B3A0A94 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E77872ABBDE104DEF1B32A3F930E6FCE /* 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 = 7.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; - }; - 919373B16BD23EB3F043176A0581B672 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8D5C4E9E659DF465CEACD70EDC09E5DF /* 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; - }; - A196C437779671012D49BA47B0451480 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D74836342AF2D5E5345284CF3393FDCE /* 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"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - A4657C30AC4F2E0FA33CE2335EAD9FC4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D74836342AF2D5E5345284CF3393FDCE /* 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; }; A4B54C57D9FF54AEFB00AF3C4AB30035 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B57448B7171E54F316A32FF4FC68CD47 /* NSString-Helper.xcconfig */; + baseConfigurationReference = 5C2702D997A5C5C9445826543EA9B51A /* NSString-Helper.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5552,30 +4713,9 @@ }; name = Release; }; - B2C457EA3C03B024C1AEBCF5320DA9F2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AAC8666F362600E8954A21949E4EE65D /* 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; - }; B670D9B9F3E6940C24F69BE1E08C82DB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E53045B6A07A7DC12896641929D0A42B /* PEAR-FileManager-iOS.xcconfig */; + baseConfigurationReference = 482729C64A5AA1E97993393D357C317E /* PEAR-FileManager-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5599,7 +4739,7 @@ }; B691F8EBC824A5DB0B70F7C3DAD96414 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D6ED2B9CE5879E41B3C1304415AF0AE4 /* NSDate_Utils.xcconfig */; + baseConfigurationReference = E6EFA89BA8656B849DDFDB267185CFDD /* NSDate_Utils.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5623,7 +4763,7 @@ }; B81B46F2201C631EC9D8891719C6ED4B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F49BAD09C3436DEC8C12A3D333EBFA44 /* nv-ios-http-status.xcconfig */; + baseConfigurationReference = 8EB72B6C78DE70A0C02D1B5DBFD02466 /* nv-ios-http-status.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5644,9 +4784,9 @@ }; name = Debug; }; - C0F5DB6347A14B186ECC3B5E6812B49A /* Debug */ = { + BC94B458D0370D7D9BE12F524B408041 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 444FFF855F5ABFFFF0A7C42DC70E79CB /* PureLayout.xcconfig */; + baseConfigurationReference = 22447F856E4F94AE2C8C7FECED411A11 /* PureLayout.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5664,88 +4804,6 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - C4EAA84F44D044E108500A81C635F21E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - C9399FE80826B975F2B1A6756FC490B6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C84799466FAEA7DDEA9DD46620CA93E6 /* 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; @@ -5773,7 +4831,7 @@ }; D2C7AF0CC1E5832FADE17EC1F6A849A9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6658A8EB3EE225F944B76265B3FE95CD /* CodFis-Helper.xcconfig */; + baseConfigurationReference = 5E34AD2C1453EC0C20F9C2731AF11063 /* CodFis-Helper.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5797,7 +4855,7 @@ }; D59440FBCD78A0E7BC9EBD3EC34F2A12 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECB10B1A166604998038F053373E7420 /* Bolts.xcconfig */; + baseConfigurationReference = D2B5E233273B5134306EBC65D2CB19DF /* Bolts.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5821,7 +4879,7 @@ }; DD92EA617EEF6C8432CE8F011A7F0F55 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 52B84C79443639E710D5300A19CF7D6F /* NSDataAES.xcconfig */; + baseConfigurationReference = 0ED37A225C9435173CDF3B2E6FB9303A /* NSDataAES.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5844,7 +4902,7 @@ }; E8698D09469646E746299DB3EBEBC0CF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 52B84C79443639E710D5300A19CF7D6F /* NSDataAES.xcconfig */; + baseConfigurationReference = 0ED37A225C9435173CDF3B2E6FB9303A /* NSDataAES.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5868,7 +4926,7 @@ }; F1A87E9604B24B0B28CB8D2A897C66FA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D9926F43895CDB2B741DEFB8D9D8AE66 /* DJLocalization.xcconfig */; + baseConfigurationReference = 5E638E4E812BAD1DDB8ED88531DCBEEB /* DJLocalization.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5889,9 +4947,30 @@ }; name = Debug; }; + F54BC9F9B1673CA0952758D1BA76232F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AAC8666F362600E8954A21949E4EE65D /* 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; + }; F635C5939BF86B0995A65AC34B800C15 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECB10B1A166604998038F053373E7420 /* Bolts.xcconfig */; + baseConfigurationReference = D2B5E233273B5134306EBC65D2CB19DF /* Bolts.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5914,7 +4993,7 @@ }; F65E764E360F8B05505DB308E9F531E2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 379C348EB2F9F418F970768DEB673F2F /* Specta.xcconfig */; + baseConfigurationReference = 61E1D0F3409E4792D81E841ABEB2B71D /* Specta.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5937,7 +5016,7 @@ }; F893EE5A468476B3E1AA2855D73E3B2D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F49BAD09C3436DEC8C12A3D333EBFA44 /* nv-ios-http-status.xcconfig */; + baseConfigurationReference = 8EB72B6C78DE70A0C02D1B5DBFD02466 /* nv-ios-http-status.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5961,7 +5040,7 @@ }; FE63AA498E7EFD91AB96522FEFB55F4C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6658A8EB3EE225F944B76265B3FE95CD /* CodFis-Helper.xcconfig */; + baseConfigurationReference = 5E34AD2C1453EC0C20F9C2731AF11063 /* CodFis-Helper.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -6015,8 +5094,8 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 60DAF49CA7A9F362148D49C3C3123B2A /* Debug */, - C4EAA84F44D044E108500A81C635F21E /* Release */, + 858D01EEFE984249A9581D18DBEA53F1 /* Debug */, + 5DE19CECB206ACCCACF04D62F93FFDA6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -6030,15 +5109,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3C522CF9C69DEE8E10566003CB364074 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9017EF38B403D030D95383191B3A0A94 /* Debug */, - 647BD3CB016644FF627D48CC79FF4702 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 3C7B4C0F664348C983E09B3EF2ACE4ED /* Build configuration list for PBXNativeTarget "NSDataAES" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6048,15 +5118,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4B60F0CEC329EC055CF0635E153B9C38 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B2C457EA3C03B024C1AEBCF5320DA9F2 /* Debug */, - 7AA5D148C7AD2C30073A28AA2D805FCD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 53BEA21E16D971DD879C3E657A257B8F /* Build configuration list for PBXNativeTarget "Specta" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6066,20 +5127,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5CDD4191C2A20E67B7A511C57FD72C84 /* Build configuration list for PBXNativeTarget "PNObject" */ = { + 5DBEB5B8982E3506F443F49C78A7D8F5 /* Build configuration list for PBXNativeTarget "PureLayout" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7FEBC1841CCDD28378842C9945BC249C /* Debug */, - 8D471D629672F5DAB906466F7B46E6CF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 5FEC0A0731A3FB32FEE858F62EE22FD9 /* Build configuration list for PBXNativeTarget "RZDataBinding" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7F2F96C28E3E2C7740285FFB40EAA739 /* Debug */, - C9399FE80826B975F2B1A6756FC490B6 /* Release */, + 7D9DF81E49A9F713AD8AC3F23F97B3F5 /* Debug */, + BC94B458D0370D7D9BE12F524B408041 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -6087,8 +5139,17 @@ 61C1A4BDDE8EE751771A923C58E89CFE /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0C2D80A694E50ED847CE132C7A71BF46 /* Debug */, - 51A12EC83F6688FFA1433F60A42362DC /* Release */, + A32957A19C5CF39C115ED40945EAC7D3 /* Debug */, + 212E921200AE91CAA37239B77C327F8F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6CC236830ECBC4D1678EDE40C8BBD415 /* Build configuration list for PBXNativeTarget "PNObject" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A4210E5FF409213800F67A0C58B5A615 /* Debug */, + 5166601BA7A2B30188A891500DC9A44C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -6102,15 +5163,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 712227741CDE7294206463ACE3DDF8DE /* Build configuration list for PBXNativeTarget "StrongestPasswordValidator" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 919373B16BD23EB3F043176A0581B672 /* Debug */, - 0DA716B9BD14938E0C74373C7B57F618 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 7F486EFB0BE1C161E29C5F600E84618D /* Build configuration list for PBXNativeTarget "DJLocalization" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6129,15 +5181,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 89B89B901477B22F8B653541D8D0AF3A /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 062F2AEF5E6160FA66F9B8E19F10AF15 /* Debug */, - 5B125A4E93CD66299DD3BD0E0A4294F2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 8BBE730D642231F14A1F426F44F85AEC /* Build configuration list for PBXNativeTarget "Expecta" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6147,15 +5190,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 913217E83282A4C2003DFCCD22FF318C /* Build configuration list for PBXNativeTarget "PureLayout" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C0F5DB6347A14B186ECC3B5E6812B49A /* Debug */, - 3F08D3596E4A755FC7FF1F0AFA21B7A2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; A59D0C85A793EAB2897922543A788EE9 /* Build configuration list for PBXNativeTarget "Bolts" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6165,6 +5199,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + AD446AF6B65616048A9FB406ECE6A319 /* Build configuration list for PBXNativeTarget "UIDevice-Utils" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E62B02B037BF6D431393E3C412FB903 /* Debug */, + 022E42CF9EB64B266FCF81CC7C0FE1C1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C500172024E2EAFEE662334F1082D2D2 /* Build configuration list for PBXNativeTarget "RZDataBinding" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AE40D9FDAAAE86DA8356E61A6FC4DE5 /* Debug */, + A1D5250C19E787F1D6D961FD627B3583 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; DA0B3D191F12F068B433650A59A70AE4 /* Build configuration list for PBXNativeTarget "Pods-PNObject_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6174,11 +5226,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DE14A6487D7B1AE87AF953425FD32F20 /* Build configuration list for PBXNativeTarget "UIDevice-Utils" */ = { + E5206EF9BF6E5E66EA5F3761FF6322FB /* Build configuration list for PBXNativeTarget "Pods-PNObject_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - A4657C30AC4F2E0FA33CE2335EAD9FC4 /* Debug */, - A196C437779671012D49BA47B0451480 /* Release */, + F54BC9F9B1673CA0952758D1BA76232F /* Debug */, + 4D849EECBF8F6BCEE0B169917E442B10 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -6192,6 +5244,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + F9675C48073C83F64CA8C30A8772D6EA /* Build configuration list for PBXNativeTarget "StrongestPasswordValidator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 12A2C9B589E29046A0AFC09AC6BDE768 /* Debug */, + 58540E013E2FF410E39896B5B3A26C16 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; diff --git a/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.h b/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.h index a59ef41..42ed644 100755 --- a/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.h +++ b/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.h @@ -74,22 +74,22 @@ PL__ASSUME_NONNULL_BEGIN #pragma mark Pin Edges to SafeArea /** Pins the given edge of the view to the same edge of its superview anchor/edge. */ -- (NSLayoutConstraint *)autoPinEdgeToSuperviewSafeArea:(ALEdge)edge; +- (NSLayoutConstraint *)API_AVAILABLE(ios(9.0), tvos(9.0))autoPinEdgeToSuperviewSafeArea:(ALEdge)edge; /** Pins the given edge of the view to the same edge of its superview anchor/edge with an inset. */ -- (NSLayoutConstraint *)autoPinEdgeToSuperviewSafeArea:(ALEdge)edge withInset:(CGFloat)inset; +- (NSLayoutConstraint *)API_AVAILABLE(ios(9.0), tvos(9.0))autoPinEdgeToSuperviewSafeArea:(ALEdge)edge withInset:(CGFloat)inset; /** Pins the given edge of the view to the same edge of its superview anchor/edge with an inset as a maximum or minimum. */ -- (NSLayoutConstraint *)autoPinEdgeToSuperviewSafeArea:(ALEdge)edge withInset:(CGFloat)inset relation:(NSLayoutRelation)relation; +- (NSLayoutConstraint *)API_AVAILABLE(ios(9.0), tvos(9.0))autoPinEdgeToSuperviewSafeArea:(ALEdge)edge withInset:(CGFloat)inset relation:(NSLayoutRelation)relation; /** Pins the edges of the view to the edges of its superview anchors/edge. */ -- (PL__NSArray_of(NSLayoutConstraint *) *)autoPinEdgesToSuperviewSafeArea; +- (PL__NSArray_of(NSLayoutConstraint *) *)API_AVAILABLE(ios(9.0), tvos(9.0))autoPinEdgesToSuperviewSafeArea; /** Pins the edges of the view to the edges of its superview anchors/edges with the given edge insets. */ -- (PL__NSArray_of(NSLayoutConstraint *) *)autoPinEdgesToSuperviewSafeAreaWithInsets:(ALEdgeInsets)insets; +- (PL__NSArray_of(NSLayoutConstraint *) *)API_AVAILABLE(ios(9.0), tvos(9.0))autoPinEdgesToSuperviewSafeAreaWithInsets:(ALEdgeInsets)insets; /** Pins 3 of the 4 edges of the view to the edges of its superview anchor/edge with the given edge insets, excluding one edge. */ -- (PL__NSArray_of(NSLayoutConstraint *) *)autoPinEdgesToSuperviewSafeAreaWithInsets:(ALEdgeInsets)insets excludingEdge:(ALEdge)edge; +- (PL__NSArray_of(NSLayoutConstraint *) *)API_AVAILABLE(ios(9.0), tvos(9.0))autoPinEdgesToSuperviewSafeAreaWithInsets:(ALEdgeInsets)insets excludingEdge:(ALEdge)edge; #endif /* TARGET_OS_IPHONE */ diff --git a/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.m b/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.m index c29f6f7..8e05f4c 100755 --- a/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.m +++ b/Example/Pods/PureLayout/PureLayout/PureLayout/ALView+PureLayout.m @@ -549,7 +549,7 @@ */ - (PL__NSArray_of(NSLayoutConstraint *) *)autoPinEdgesToSuperviewMargins { - return [self autoPinEdgesToSuperviewMarginsWithInsets:(ALEdgeInsetsZero)]; + return [self autoPinEdgesToSuperviewMarginsWithInsets:ALEdgeInsetsZero]; } /** diff --git a/Example/Pods/PureLayout/README.md b/Example/Pods/PureLayout/README.md index e0f8562..9922074 100644 --- a/Example/Pods/PureLayout/README.md +++ b/Example/Pods/PureLayout/README.md @@ -146,6 +146,18 @@ Additionally, there is one generic attribute type, `ALAttribute`, which is effec ### Sample Code (Swift) PureLayout dramatically simplifies writing Auto Layout code. Let's take a quick look at some examples, using PureLayout from Swift. +Initialize the view using PureLayout initializer: + +```swift +let view1 = UIView(forAutoLayout: ()) +``` + +If you need to use a different initializer (e.g. in `UIView` subclass), you can also use `configureForAutoLayout`: + +``` +view1.configureForAutoLayout() // alternative to UIView.init(forAutoLayout: ()) +``` + Here's a constraint between two views created (and automatically activated) using PureLayout: ```swift diff --git a/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-dummy.m b/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-dummy.m deleted file mode 100644 index ff16b39..0000000 --- a/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_FBSDKLoginKit : NSObject -@end -@implementation PodsDummy_FBSDKLoginKit -@end diff --git a/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch b/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch deleted file mode 100644 index beb2a24..0000000 --- a/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-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/FBSDKLoginKit/FBSDKLoginKit.xcconfig b/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig deleted file mode 100644 index 3c01f94..0000000 --- a/Example/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -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" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Bolts" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" -OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" -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 diff --git a/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-dummy.m b/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-dummy.m deleted file mode 100644 index 8f70249..0000000 --- a/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_FBSDKShareKit : NSObject -@end -@implementation PodsDummy_FBSDKShareKit -@end diff --git a/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch b/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch deleted file mode 100644 index beb2a24..0000000 --- a/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-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/FBSDKShareKit/FBSDKShareKit.xcconfig b/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig deleted file mode 100644 index c9e9972..0000000 --- a/Example/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -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" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Bolts" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" -OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" -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 diff --git a/Example/Pods/Target Support Files/PNObject/PNObject.xcconfig b/Example/Pods/Target Support Files/PNObject/PNObject.xcconfig index f841c63..93d4fd7 100644 --- a/Example/Pods/Target Support Files/PNObject/PNObject.xcconfig +++ b/Example/Pods/Target Support Files/PNObject/PNObject.xcconfig @@ -1,7 +1,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PNObject +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FBSDKMarketingKit" 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/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" -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}/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}/RZDataBinding" "${PODS_CONFIGURATION_BUILD_DIR}/StrongestPasswordValidator" "${PODS_CONFIGURATION_BUILD_DIR}/UIDevice-Utils" "${PODS_CONFIGURATION_BUILD_DIR}/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/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/FBSDKMarketingKit" "${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" +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}/NSDataAES" "${PODS_CONFIGURATION_BUILD_DIR}/NSDate_Utils" "${PODS_CONFIGURATION_BUILD_DIR}/NSString-Helper" "${PODS_CONFIGURATION_BUILD_DIR}/PEAR-FileManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/RZDataBinding" "${PODS_CONFIGURATION_BUILD_DIR}/StrongestPasswordValidator" "${PODS_CONFIGURATION_BUILD_DIR}/UIDevice-Utils" "${PODS_CONFIGURATION_BUILD_DIR}/nv-ios-http-status" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} 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 3d245ee..881ccdb 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 @@ -147,7 +147,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. -## FBSDKLoginKit +## FBSDKMarketingKit Copyright (c) 2014-present, Facebook, Inc. All rights reserved. @@ -168,7 +168,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. -## FBSDKShareKit +## Facebook-iOS-SDK Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 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 97893c8..c2cce1c 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 @@ -217,7 +217,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License Facebook Platform License Title - FBSDKLoginKit + FBSDKMarketingKit Type PSGroupSpecifier @@ -244,7 +244,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License Facebook Platform License Title - FBSDKShareKit + Facebook-iOS-SDK Type PSGroupSpecifier 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 f90594b..b575a76 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 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FBSDKMarketingKit" 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/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}/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_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/CodFis-Helper" -isystem "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" -isystem "${PODS_ROOT}/Headers/Public/DJLocalization" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/NSDataAES" -isystem "${PODS_ROOT}/Headers/Public/NSDate_Utils" -isystem "${PODS_ROOT}/Headers/Public/NSString-Helper" -isystem "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" -isystem "${PODS_ROOT}/Headers/Public/PNObject" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/RZDataBinding" -isystem "${PODS_ROOT}/Headers/Public/Specta" -isystem "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" -isystem "${PODS_ROOT}/Headers/Public/UIDevice-Utils" -isystem "${PODS_ROOT}/Headers/Public/nv-ios-http-status" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"CodFis-Helper" -l"DDDKeychainWrapper" -l"DJLocalization" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -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/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/FBSDKMarketingKit" "${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}/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_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/CodFis-Helper" -isystem "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" -isystem "${PODS_ROOT}/Headers/Public/DJLocalization" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKMarketingKit" -isystem "${PODS_ROOT}/Headers/Public/NSDataAES" -isystem "${PODS_ROOT}/Headers/Public/NSDate_Utils" -isystem "${PODS_ROOT}/Headers/Public/NSString-Helper" -isystem "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" -isystem "${PODS_ROOT}/Headers/Public/PNObject" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/RZDataBinding" -isystem "${PODS_ROOT}/Headers/Public/Specta" -isystem "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" -isystem "${PODS_ROOT}/Headers/Public/UIDevice-Utils" -isystem "${PODS_ROOT}/Headers/Public/nv-ios-http-status" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"CodFis-Helper" -l"DDDKeychainWrapper" -l"DJLocalization" -l"FBSDKCoreKit" -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 "FBSDKMarketingKit" -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" -weak_framework "WebKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 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 f90594b..b575a76 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 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FBSDKMarketingKit" 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/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}/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_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/CodFis-Helper" -isystem "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" -isystem "${PODS_ROOT}/Headers/Public/DJLocalization" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/NSDataAES" -isystem "${PODS_ROOT}/Headers/Public/NSDate_Utils" -isystem "${PODS_ROOT}/Headers/Public/NSString-Helper" -isystem "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" -isystem "${PODS_ROOT}/Headers/Public/PNObject" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/RZDataBinding" -isystem "${PODS_ROOT}/Headers/Public/Specta" -isystem "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" -isystem "${PODS_ROOT}/Headers/Public/UIDevice-Utils" -isystem "${PODS_ROOT}/Headers/Public/nv-ios-http-status" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"CodFis-Helper" -l"DDDKeychainWrapper" -l"DJLocalization" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -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/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/FBSDKMarketingKit" "${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}/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_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/CodFis-Helper" -isystem "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" -isystem "${PODS_ROOT}/Headers/Public/DJLocalization" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKMarketingKit" -isystem "${PODS_ROOT}/Headers/Public/NSDataAES" -isystem "${PODS_ROOT}/Headers/Public/NSDate_Utils" -isystem "${PODS_ROOT}/Headers/Public/NSString-Helper" -isystem "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" -isystem "${PODS_ROOT}/Headers/Public/PNObject" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/RZDataBinding" -isystem "${PODS_ROOT}/Headers/Public/Specta" -isystem "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" -isystem "${PODS_ROOT}/Headers/Public/UIDevice-Utils" -isystem "${PODS_ROOT}/Headers/Public/nv-ios-http-status" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"CodFis-Helper" -l"DDDKeychainWrapper" -l"DJLocalization" -l"FBSDKCoreKit" -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 "FBSDKMarketingKit" -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" -weak_framework "WebKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 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 aac1c0a..fb99128 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,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_ROOT}/FBSDKMarketingKit" 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/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" "${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}/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_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/CodFis-Helper" -isystem "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" -isystem "${PODS_ROOT}/Headers/Public/DJLocalization" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/NSDataAES" -isystem "${PODS_ROOT}/Headers/Public/NSDate_Utils" -isystem "${PODS_ROOT}/Headers/Public/NSString-Helper" -isystem "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" -isystem "${PODS_ROOT}/Headers/Public/PNObject" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/RZDataBinding" -isystem "${PODS_ROOT}/Headers/Public/Specta" -isystem "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" -isystem "${PODS_ROOT}/Headers/Public/UIDevice-Utils" -isystem "${PODS_ROOT}/Headers/Public/nv-ios-http-status" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"Specta" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "XCTest" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/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/FBSDKMarketingKit" "${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" "${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}/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_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/CodFis-Helper" -isystem "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" -isystem "${PODS_ROOT}/Headers/Public/DJLocalization" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKMarketingKit" -isystem "${PODS_ROOT}/Headers/Public/NSDataAES" -isystem "${PODS_ROOT}/Headers/Public/NSDate_Utils" -isystem "${PODS_ROOT}/Headers/Public/NSString-Helper" -isystem "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" -isystem "${PODS_ROOT}/Headers/Public/PNObject" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/RZDataBinding" -isystem "${PODS_ROOT}/Headers/Public/Specta" -isystem "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" -isystem "${PODS_ROOT}/Headers/Public/UIDevice-Utils" -isystem "${PODS_ROOT}/Headers/Public/nv-ios-http-status" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"Specta" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "XCTest" -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" -weak_framework "WebKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 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 aac1c0a..fb99128 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,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_ROOT}/FBSDKMarketingKit" 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/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" "${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}/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_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/CodFis-Helper" -isystem "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" -isystem "${PODS_ROOT}/Headers/Public/DJLocalization" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/NSDataAES" -isystem "${PODS_ROOT}/Headers/Public/NSDate_Utils" -isystem "${PODS_ROOT}/Headers/Public/NSString-Helper" -isystem "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" -isystem "${PODS_ROOT}/Headers/Public/PNObject" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/RZDataBinding" -isystem "${PODS_ROOT}/Headers/Public/Specta" -isystem "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" -isystem "${PODS_ROOT}/Headers/Public/UIDevice-Utils" -isystem "${PODS_ROOT}/Headers/Public/nv-ios-http-status" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"Specta" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "XCTest" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/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/FBSDKMarketingKit" "${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" "${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}/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_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/CodFis-Helper" -isystem "${PODS_ROOT}/Headers/Public/DDDKeychainWrapper" -isystem "${PODS_ROOT}/Headers/Public/DJLocalization" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKMarketingKit" -isystem "${PODS_ROOT}/Headers/Public/NSDataAES" -isystem "${PODS_ROOT}/Headers/Public/NSDate_Utils" -isystem "${PODS_ROOT}/Headers/Public/NSString-Helper" -isystem "${PODS_ROOT}/Headers/Public/PEAR-FileManager-iOS" -isystem "${PODS_ROOT}/Headers/Public/PNObject" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/RZDataBinding" -isystem "${PODS_ROOT}/Headers/Public/Specta" -isystem "${PODS_ROOT}/Headers/Public/StrongestPasswordValidator" -isystem "${PODS_ROOT}/Headers/Public/UIDevice-Utils" -isystem "${PODS_ROOT}/Headers/Public/nv-ios-http-status" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"Specta" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "XCTest" -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" -weak_framework "WebKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/PNObject.podspec b/PNObject.podspec index afadd78..b108411 100644 --- a/PNObject.podspec +++ b/PNObject.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = 'PNObject' -s.version = '2.6.0' +s.version = '2.6.1' s.summary = 'PNObject is a simple replica of the more complex ParseObject' @@ -37,9 +37,7 @@ s.dependency 'nv-ios-http-status' s.dependency 'NSString-Helper' s.dependency 'CodFis-Helper' s.dependency 'StrongestPasswordValidator' -s.dependency 'FBSDKCoreKit' -s.dependency 'FBSDKShareKit' -s.dependency 'FBSDKLoginKit' +s.dependency 'FacebookSDK' s.dependency 'NSDataAES' s.dependency 'DDDKeychainWrapper' s.dependency 'DJLocalization' diff --git a/PNObject/Classes/PNObjectConfig.h b/PNObject/Classes/PNObjectConfig.h index e1ca1b3..b0bc7b4 100644 --- a/PNObject/Classes/PNObjectConfig.h +++ b/PNObject/Classes/PNObjectConfig.h @@ -82,7 +82,7 @@ typedef NS_ENUM(NSInteger, OAuthMode) { * * @return singleton */ -+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments; ++ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments andStoreClientIdentifier:(NSString* _Nonnull) identifier; /** * <#Description#> @@ -97,8 +97,23 @@ typedef NS_ENUM(NSInteger, OAuthMode) { * * @return <#return value description#> */ -+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments andUserSubclass:(Class _Nonnull) userSubClass; ++ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments userSubclass:(Class _Nonnull) userSubClass andStoreClientIdentifier:(NSString* _Nonnull) identifier; +/** + * <#Description#> + * + * @param endpointUrlsForEnvironments + * For example, + * @{ PNObjectConfigDevelopment : @"https://development.it/api/v1", + * PNObjectConfigEnvStage : @"https://stage.it/api/v1", + * PNObjectConfigEnvProduction : @"https://production.it/api/v1" + * } + * @param userSubClass <#userSubClass description#> + * @param identifier identifier description + * + * @return <#return value description#> + */ ++ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments andUserSubclass:(Class _Nonnull) userSubClass andStoreClientIdentifier:(NSString* _Nonnull) identifier; /** * <#Description#> * diff --git a/PNObject/Classes/PNObjectConfig.m b/PNObject/Classes/PNObjectConfig.m index 0bbfdf8..9fda549 100644 --- a/PNObject/Classes/PNObjectConfig.m +++ b/PNObject/Classes/PNObjectConfig.m @@ -70,6 +70,7 @@ NSString* const Client_Password = @"client_password"; @property (nonatomic, strong) NSString *currentBaseUrl; @property (nonatomic, strong) NSString *currentEndPointPath; @property (nonatomic, strong) NSString *currentEndPointUrl; +@property (nonatomic, strong) NSString *storeClientIdentifier; /* Client credential configurations */ @property (nonatomic, strong) NSString *currentClientCredenzialEndPointPath; @@ -111,20 +112,20 @@ static bool isFirstAccess = YES; #pragma mark - Life Cycle -+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary *) endpointUrlsForEnvironments { - return [self initSharedInstanceForEnvironments:endpointUrlsForEnvironments userSubclass:[PNUser class] withoauthMode:OAuthModeClientCredential]; ++ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary *) endpointUrlsForEnvironments andStoreClientIdentifier:(NSString* _Nonnull) identifier { + return [self initSharedInstanceForEnvironments:endpointUrlsForEnvironments userSubclass:[PNUser class] withoauthMode:OAuthModeClientCredential andStoreClientIdentifier:identifier]; } -+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary *)endpointUrlsForEnvironments andUserSubclass:(Class)userSubClass { - return [self initSharedInstanceForEnvironments:endpointUrlsForEnvironments userSubclass:userSubClass withoauthMode:OAuthModeClientCredential]; ++ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary *)endpointUrlsForEnvironments andUserSubclass:(Class)userSubClass andStoreClientIdentifier:(NSString* _Nonnull) identifier { + return [self initSharedInstanceForEnvironments:endpointUrlsForEnvironments userSubclass:userSubClass withoauthMode:OAuthModeClientCredential andStoreClientIdentifier:identifier]; } -+ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments userSubclass:(Class _Nonnull) userSubClass withoauthMode:(OAuthMode) oauthMode { ++ (instancetype _Nonnull) initSharedInstanceForEnvironments:(NSDictionary * _Nonnull) endpointUrlsForEnvironments userSubclass:(Class _Nonnull) userSubClass withoauthMode:(OAuthMode) oauthMode andStoreClientIdentifier:(NSString* _Nonnull) identifier { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ isFirstAccess = NO; - SINGLETON_PNObjectConfig = [[super allocWithZone:NULL] initWithUserSubclass:userSubClass]; + SINGLETON_PNObjectConfig = [[super allocWithZone:NULL] initWithUserSubclass:userSubClass andStoreClientIdentifier:identifier]; if (SINGLETON_PNObjectConfig) { @@ -177,7 +178,7 @@ static bool isFirstAccess = YES; return [[PNObjectConfig alloc] init]; } -- (id) initWithUserSubclass:(Class _Nonnull) userSubClass +- (id) initWithUserSubclass:(Class _Nonnull) userSubClass andStoreClientIdentifier:(NSString* _Nonnull) identifier { if(SINGLETON_PNObjectConfig){ return SINGLETON_PNObjectConfig; @@ -188,6 +189,7 @@ static bool isFirstAccess = YES; self = [super init]; if (self) { + _storeClientIdentifier = identifier; _userSubClass = userSubClass; _configuration = [[NSMutableDictionary alloc] init]; _minPasswordLenght = minPassLenght; @@ -208,22 +210,30 @@ static bool isFirstAccess = YES; } - AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier]; + AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:[self clientCredentialIdentifier]]; if (!credential || [credential isExpired]) { - [AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier]; + [AFOAuthCredential deleteCredentialWithIdentifier:[self clientCredentialIdentifier]]; } - credential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier]; + credential = [AFOAuthCredential retrieveCredentialWithIdentifier:[self userCredentialIdentifier]]; if (!credential || [credential isExpired]) { - [AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier]; + [AFOAuthCredential deleteCredentialWithIdentifier:[self userCredentialIdentifier]]; } } return self; } +- (NSString *) clientCredentialIdentifier { + return [NSString stringWithFormat:@"%@_%@",_storeClientIdentifier,PNObjectServiceClientCredentialIdentifier]; +} + +- (NSString *) userCredentialIdentifier { + return [NSString stringWithFormat:@"%@_%@",_storeClientIdentifier,PNObjectServiceClientCredentialIdentifier]; +} + - (void) setEnvironment:(NSString * _Nonnull) environment { _currentEnv = environment; @@ -373,7 +383,7 @@ static bool isFirstAccess = YES; _clientCredentialAuthManager.responseSerializer = [AFJSONResponseSerializerWithData serializer]; _clientCredentialAuthManager.requestSerializer = _oauthJsonRequestSerializer; - AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier]; + AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:[self clientCredentialIdentifier]]; if (credential && ![credential isExpired]) { @@ -410,7 +420,7 @@ static bool isFirstAccess = YES; [_oauthHttpRequestSerializer setValue:[_headerFields objectForKey:key] forHTTPHeaderField:key]; } - AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier]; + AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:[self userCredentialIdentifier]]; if (credential && ![credential isExpired]) { @@ -430,12 +440,12 @@ static bool isFirstAccess = YES; switch (oauthMode) { case OAuthModeClientCredential: - return [AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier]; + return [AFOAuthCredential deleteCredentialWithIdentifier:[self clientCredentialIdentifier]]; break; case OAuthModePassword: - return [AFOAuthCredential deleteCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier]; + return [AFOAuthCredential deleteCredentialWithIdentifier:[self userCredentialIdentifier]]; break; default: @@ -501,13 +511,13 @@ static bool isFirstAccess = YES; switch (oauthMode) { case OAuthModeClientCredential: { - AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier]; + AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:[self clientCredentialIdentifier]]; if (credential && ![credential isExpired] && nil != [credential refreshToken] && _currentClientCredenzialRefreshTokenEnabled) { [_clientCredentialAuthManager authenticateUsingOAuthWithURLString:_currentClientCredenzialEndPointUrl refreshToken:[credential refreshToken] success:^(AFOAuthCredential * _Nonnull credential) { - [AFOAuthCredential storeCredential:credential withIdentifier:PNObjectServiceClientCredentialIdentifier]; + [AFOAuthCredential storeCredential:credential withIdentifier:[self clientCredentialIdentifier]]; [wHttpSerializer setAuthorizationHeaderFieldWithCredential:credential]; [wJsonSerializer setAuthorizationHeaderFieldWithCredential:credential]; @@ -526,9 +536,8 @@ static bool isFirstAccess = YES; [self refreshTokenForOauthMode:oauthMode retries:retries-1 WithBlockSuccess:success failure:failure]; } else { - if (failure) { - failure(error); - } + [self resetTokenForOauthMode:oauthMode]; + [self refreshTokenForOauthMode:oauthMode retries:0 WithBlockSuccess:success failure:failure]; } return; @@ -537,7 +546,7 @@ static bool isFirstAccess = YES; else { [_clientCredentialAuthManager authenticateUsingOAuthWithURLString:_currentClientCredenzialEndPointUrl scope:@"" success:^(AFOAuthCredential * _Nonnull credential) { - [AFOAuthCredential storeCredential:credential withIdentifier:PNObjectServiceClientCredentialIdentifier]; + [AFOAuthCredential storeCredential:credential withIdentifier:[self clientCredentialIdentifier]]; [wHttpSerializer setAuthorizationHeaderFieldWithCredential:credential]; [wJsonSerializer setAuthorizationHeaderFieldWithCredential:credential]; @@ -560,13 +569,13 @@ static bool isFirstAccess = YES; break; case OAuthModePassword:{ - AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier]; + AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:[self userCredentialIdentifier]]; if (credential && ![credential isExpired] && nil != [credential refreshToken] && _currentUserCredenzialRefreshTokenEnabled) { [_userCredentialAuthManager authenticateUsingOAuthWithURLString:_currentClientCredenzialEndPointUrl refreshToken:[credential refreshToken] success:^(AFOAuthCredential * _Nonnull credential) { - [AFOAuthCredential storeCredential:credential withIdentifier:PNObjectServiceUserCredentialIdentifier]; + [AFOAuthCredential storeCredential:credential withIdentifier:[self userCredentialIdentifier]]; [wHttpSerializer setAuthorizationHeaderFieldWithCredential:credential]; [wJsonSerializer setAuthorizationHeaderFieldWithCredential:credential]; @@ -584,9 +593,8 @@ static bool isFirstAccess = YES; [self refreshTokenForOauthMode:oauthMode retries:retries-1 WithBlockSuccess:success failure:failure]; } else { - if (failure) { - failure(error); - } + [self resetTokenForOauthMode:oauthMode]; + [self refreshTokenForOauthMode:oauthMode retries:0 WithBlockSuccess:success failure:failure]; } return; @@ -658,7 +666,7 @@ static bool isFirstAccess = YES; [_userCredentialAuthManager authenticateUsingFacebookOAuthWithURLString:_currentClientCredenzialEndPointUrl facebookId:facebookId facebookToken:facebookToken scope:@"" success:^(AFOAuthCredential * _Nonnull credential) { - [AFOAuthCredential storeCredential:credential withIdentifier:PNObjectServiceUserCredentialIdentifier]; + [AFOAuthCredential storeCredential:credential withIdentifier:[self userCredentialIdentifier]]; [wHttpSerializer setAuthorizationHeaderFieldWithCredential:credential]; [wJsonSerializer setAuthorizationHeaderFieldWithCredential:credential]; @@ -706,7 +714,7 @@ static bool isFirstAccess = YES; [_userCredentialAuthManager authenticateUsingOAuthWithURLString:_currentClientCredenzialEndPointUrl username:email password:password scope:@"" success:^(AFOAuthCredential * _Nonnull credential) { - [AFOAuthCredential storeCredential:credential withIdentifier:PNObjectServiceUserCredentialIdentifier]; + [AFOAuthCredential storeCredential:credential withIdentifier:[self userCredentialIdentifier]]; [wHttpSerializer setAuthorizationHeaderFieldWithCredential:credential]; [wJsonSerializer setAuthorizationHeaderFieldWithCredential:credential]; @@ -748,7 +756,7 @@ static bool isFirstAccess = YES; [_userCredentialAuthManager authenticateUsingOAuthWithURLString:_currentClientCredenzialEndPointUrl username:username password:password scope:@"" success:^(AFOAuthCredential * _Nonnull credential) { - [AFOAuthCredential storeCredential:credential withIdentifier:PNObjectServiceUserCredentialIdentifier]; + [AFOAuthCredential storeCredential:credential withIdentifier:[self userCredentialIdentifier]]; [wHttpSerializer setAuthorizationHeaderFieldWithCredential:credential]; [wJsonSerializer setAuthorizationHeaderFieldWithCredential:credential]; @@ -862,7 +870,7 @@ static bool isFirstAccess = YES; switch (oauthMode) { case OAuthModeClientCredential:{ - AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier]; + AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:[self clientCredentialIdentifier]]; if (!credential || (credential && [credential isExpired])) { return NO; } @@ -873,7 +881,7 @@ static bool isFirstAccess = YES; break; case OAuthModePassword:{ - AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier]; + AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:[self userCredentialIdentifier]]; if (!credential || (credential && [credential isExpired])) { return NO; } @@ -892,11 +900,11 @@ static bool isFirstAccess = YES; return YES; } - (AFOAuthCredential * _Nullable) currentOauthClientCredential { - return [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceClientCredentialIdentifier]; + return [AFOAuthCredential retrieveCredentialWithIdentifier:[self clientCredentialIdentifier]]; } - (AFOAuthCredential * _Nullable) currentOauthUserCredential { - return [AFOAuthCredential retrieveCredentialWithIdentifier:PNObjectServiceUserCredentialIdentifier]; + return [AFOAuthCredential retrieveCredentialWithIdentifier:[self userCredentialIdentifier]]; } @end diff --git a/PNObject/Classes/PNObjectModel.h b/PNObject/Classes/PNObjectModel.h index 2f167c9..e3f36db 100644 --- a/PNObject/Classes/PNObjectModel.h +++ b/PNObject/Classes/PNObjectModel.h @@ -31,15 +31,13 @@ */ - (id _Nonnull) fetchObjectsWithClass:(Class _Nonnull) class; -- (BOOL) removeObjectsWithClass:(Class _Nonnull) class; - /** * <#Description#> * * @param object PNObject Subclass to save * * @return return It return the object if the save was successful. - * @return return NSError + * @return return NSError */ - (id _Nonnull) saveLocally:(id _Nonnull) object; diff --git a/PNObject/Classes/PNObjectModel.m b/PNObject/Classes/PNObjectModel.m index a98d28e..3c27142 100644 --- a/PNObject/Classes/PNObjectModel.m +++ b/PNObject/Classes/PNObjectModel.m @@ -156,35 +156,6 @@ static bool isFirstAccess = YES; } } -- (BOOL) removeObjectsWithClass:(Class _Nonnull) class { - - BOOL isPNObjectSubclass = [class isSubclassOfClass:[PNObject class]]; - - if(isPNObjectSubclass) { - - NSString *className; - - @try { - - className = (NSString *)[class performSelector:@selector(objectClassName)]; - - } - @catch (NSException *exception) { - - } - @finally { - - if ([_fileManager checkPath:className]) { - - return [_fileManager deletePath:className]; - - } - else - return NO; - } - } -} - - (id _Nonnull) saveLocally:(id _Nonnull) object { BOOL isPNObjectSubclass = [[object class] isSubclassOfClass:[PNObject class]]; @@ -225,21 +196,7 @@ static bool isFirstAccess = YES; NSDictionary *objectDict = [(PNObject*)object reverseMapping]; - int index = 0; - BOOL found = NO; - for (NSDictionary* savedObject in [objects copy]) { - if ([[savedObject objectForKey:@"objID"] isEqualToString:[(PNObject*)object objID]]) { - found = YES; - [objects removeObjectAtIndex:index]; - [objects insertObject:objectDict atIndex:index]; - break; - } - index++; - } - - if (!found) { - [objects addObject:objectDict]; - } + [objects addObject:objectDict]; NSData *objectData = [[NSKeyedArchiver archivedDataWithRootObject:objects] aes_encrypt:[DDDKeychainWrapper dataForKey: PNObjectEncryptionKey]];