diff --git a/.DS_Store b/.DS_Store index f4aa91cd2..72b1c8797 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Example/.DS_Store b/Example/.DS_Store index a0299b08b..9c20b3938 100644 Binary files a/Example/.DS_Store and b/Example/.DS_Store differ diff --git a/Example/Podfile b/Example/Podfile index 902dc98a6..12865beed 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -1,7 +1,6 @@ source 'https://cdn.cocoapods.org/' -# Uncomment the next line to define a global platform for your project -platform :ios, '9.0' +platform :ios, '11.0' #install! 'cocoapods', disable_input_output_paths: true, generate_multiple_pod_projects: true @@ -15,8 +14,8 @@ platform :ios, '9.0' post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| - if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0 - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0' + if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 11.0 + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' end if config.name != 'Release' @@ -46,7 +45,7 @@ target 'SJVideoPlayer_Example' do # pod 'SJBaseVideoPlayer/IJKPlayer', :path => '../../SJBaseVideoPlayer' # ## 切换为 Aliplayer, 详见: https://github.com/changsanjiang/SJVideoPlayer/wiki/Use-AliPlayer -# pod 'SJBaseVideoPlayer/AliPlayer'#, :path => '../../SJBaseVideoPlayer' +# pod 'SJBaseVideoPlayer/AliPlayer', :path => '../../SJBaseVideoPlayer' # ## 切换为 AliVodPlayer, 详见: https://github.com/changsanjiang/SJVideoPlayer/wiki/Use-AliVodPlayer # pod 'SJBaseVideoPlayer/AliVodPlayer', :path => '../../SJBaseVideoPlayer' @@ -75,3 +74,11 @@ target 'SJVideoPlayer_Example' do pod 'SDWebImage' pod 'YYModel' end + +target 'iPadDemo' do + pod 'SJBaseVideoPlayer'#, :path => '../../SJBaseVideoPlayer' + pod 'SJVideoPlayer', :path => '../../SJVideoPlayer' + + pod 'Masonry', :inhibit_warnings => true + pod 'MJRefresh', '3.4.3', :inhibit_warnings => true +end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 046d822de..ff6f94ddc 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -2,46 +2,46 @@ PODS: - CocoaAsyncSocket (7.6.5) - Masonry (1.1.0) - MJRefresh (3.4.3) - - SDWebImage (5.11.1): - - SDWebImage/Core (= 5.11.1) - - SDWebImage/Core (5.11.1) - - SJBaseVideoPlayer (3.6.3): + - SDWebImage (5.13.0): + - SDWebImage/Core (= 5.13.0) + - SDWebImage/Core (5.13.0) + - SJBaseVideoPlayer (3.7.0): - Masonry - - SJBaseVideoPlayer/AVPlayer (= 3.6.3) - - SJBaseVideoPlayer/Common (= 3.6.3) + - SJBaseVideoPlayer/AVPlayer (= 3.7.0) + - SJBaseVideoPlayer/Common (= 3.7.0) - SJUIKit/AttributesFactory (>= 0.0.0.38) - SJUIKit/ObserverHelper - SJUIKit/Queues - SJUIKit/SQLite3 - - SJBaseVideoPlayer/AVPlayer (3.6.3): + - SJBaseVideoPlayer/AVPlayer (3.7.0): - Masonry - SJBaseVideoPlayer/Common - SJUIKit/AttributesFactory (>= 0.0.0.38) - SJUIKit/ObserverHelper - SJUIKit/Queues - SJUIKit/SQLite3 - - SJBaseVideoPlayer/Common (3.6.3): + - SJBaseVideoPlayer/Common (3.7.0): - Masonry - SJBaseVideoPlayer/ResourceLoader - SJUIKit/AttributesFactory (>= 0.0.0.38) - SJUIKit/ObserverHelper - SJUIKit/Queues - SJUIKit/SQLite3 - - SJBaseVideoPlayer/ResourceLoader (3.6.3): + - SJBaseVideoPlayer/ResourceLoader (3.7.0): - Masonry - SJUIKit/AttributesFactory (>= 0.0.0.38) - SJUIKit/ObserverHelper - SJUIKit/Queues - SJUIKit/SQLite3 - SJFullscreenPopGesture/ObjC (1.5.4) - - SJMediaCacheServer (1.7.6): - - SJMediaCacheServer/Core (= 1.7.6) - - SJMediaCacheServer/KTVCocoaHTTPServer (= 1.7.6) + - SJMediaCacheServer (1.7.8): + - SJMediaCacheServer/Core (= 1.7.8) + - SJMediaCacheServer/KTVCocoaHTTPServer (= 1.7.8) - SJUIKit/SQLite3 - - SJMediaCacheServer/Core (1.7.6): + - SJMediaCacheServer/Core (1.7.8): - SJMediaCacheServer/KTVCocoaHTTPServer - SJUIKit/SQLite3 - - SJMediaCacheServer/KTVCocoaHTTPServer (1.7.6): + - SJMediaCacheServer/KTVCocoaHTTPServer (1.7.8): - CocoaAsyncSocket - SJUIKit/SQLite3 - SJRouter (1.0.0): @@ -102,21 +102,21 @@ PODS: - SJUIKit/UIMaker (0.0.0.58): - SJUIKit/UIMaker/Core (= 0.0.0.58) - SJUIKit/UIMaker/Core (0.0.0.58) - - SJVideoPlayer (3.3.2): - - SJBaseVideoPlayer (>= 3.6.0) - - SJVideoPlayer/Common (= 3.3.2) - - SJVideoPlayer/ControlLayers (= 3.3.2) - - SJVideoPlayer/ResourceLoader (= 3.3.2) - - SJVideoPlayer/Common (3.3.2): + - SJVideoPlayer (3.4.0): + - SJBaseVideoPlayer (>= 3.7.0) + - SJVideoPlayer/Common (= 3.4.0) + - SJVideoPlayer/ControlLayers (= 3.4.0) + - SJVideoPlayer/ResourceLoader (= 3.4.0) + - SJVideoPlayer/Common (3.4.0): - Masonry - - SJBaseVideoPlayer (>= 3.6.0) + - SJBaseVideoPlayer (>= 3.7.0) - SJUIKit/AttributesFactory - SJVideoPlayer/ResourceLoader - - SJVideoPlayer/ControlLayers (3.3.2): - - SJBaseVideoPlayer (>= 3.6.0) + - SJVideoPlayer/ControlLayers (3.4.0): + - SJBaseVideoPlayer (>= 3.7.0) - SJVideoPlayer/Common - - SJVideoPlayer/ResourceLoader (3.3.2): - - SJBaseVideoPlayer (>= 3.6.0) + - SJVideoPlayer/ResourceLoader (3.4.0): + - SJBaseVideoPlayer (>= 3.7.0) - YYModel (1.0.4) DEPENDENCIES: @@ -153,15 +153,15 @@ SPEC CHECKSUMS: CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 MJRefresh: 53e3e3219f204425ee6d3e62e8733d3295944cd6 - SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d - SJBaseVideoPlayer: 99957bb0d0fe1ccb8d6710bd9db9f52640c56a32 + SDWebImage: 0327043dbb9533e75f2eff8445b3df0f2ceca6ac + SJBaseVideoPlayer: c2b911b2e040973429682fc37f35c9d4b5732b29 SJFullscreenPopGesture: 7be57b1014cb77f4b7c1e6df5e797da6d05dc75d - SJMediaCacheServer: 3a558208af572554583d956dbf14e4bb7818f0e4 + SJMediaCacheServer: 95bebce42f281fccaff25a5e8284022478ff7ba5 SJRouter: a866e7884fc9219bed523be0a0318c3a84e85022 SJUIKit: 86d5b16f8b8b17274ef8805acf965e4014629e15 - SJVideoPlayer: 3a271ff92c7b9d611c537655fd1edcbae18b8587 + SJVideoPlayer: 583387d58278db0e9e56122066425fb05fd84ec7 YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30 -PODFILE CHECKSUM: 15535c4ec87318d1a42f08613c1f32951dd3cf7f +PODFILE CHECKSUM: 806121bb2fec366be255af4703b69f0a92bb11e3 -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.3 diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJBarrageItem.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJBarrageItem.h deleted file mode 120000 index a209f11fc..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJBarrageItem.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageItem.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJBarrageQueueController.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJBarrageQueueController.h deleted file mode 120000 index 16dc04fc4..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJBarrageQueueController.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJBarrageQueueControllerDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJBarrageQueueControllerDefines.h deleted file mode 120000 index 45778591b..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJBarrageQueueControllerDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJBarrageQueueControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJDanmakuItem.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJDanmakuItem.h new file mode 120000 index 000000000..48de6a7bc --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJDanmakuItem.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJDanmakuPopupController.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJDanmakuPopupController.h new file mode 120000 index 000000000..99ed8c0b4 --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJDanmakuPopupController.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJDanmakuPopupControllerDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJDanmakuPopupControllerDefines.h new file mode 120000 index 000000000..c756c64e7 --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJDanmakuPopupControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJDanmakuPopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJGestureControllerDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJGestureControllerDefines.h new file mode 120000 index 000000000..640d1cff6 --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJGestureControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJGestureControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPlayerGestureControlDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPlayerGestureControlDefines.h deleted file mode 120000 index 407ec4caf..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPlayerGestureControlDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPlayerGestureControlDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPlayerViewInternal.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPlayerViewInternal.h new file mode 120000 index 000000000..7ba5d3e3e --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPlayerViewInternal.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerViewInternal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPrompt.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPrompt.h deleted file mode 120000 index 66827e019..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPrompt.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPrompt.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptDefines.h deleted file mode 120000 index 3bcc63863..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptPopupController.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptPopupController.h deleted file mode 120000 index 404994932..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptPopupController.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptPopupControllerDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptPopupControllerDefines.h deleted file mode 120000 index 848c870c7..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptPopupControllerDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptPopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptingPopupController.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptingPopupController.h new file mode 120000 index 000000000..26af0368f --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptingPopupController.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptingPopupControllerDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptingPopupControllerDefines.h new file mode 120000 index 000000000..fc76e054e --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJPromptingPopupControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptingPopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJRotationManager.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJRotationManager.h deleted file mode 120000 index 6d0c09ff8..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJRotationManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJRotationManagerInternal_4.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJRotationManagerInternal_4.h new file mode 120000 index 000000000..dd074850a --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJRotationManagerInternal_4.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManagerInternal_4.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJRotationManager_4.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJRotationManager_4.h new file mode 120000 index 000000000..cc844417d --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJRotationManager_4.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlePopupController.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlePopupController.h new file mode 120000 index 000000000..a1821e8d6 --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlePopupController.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlePopupControllerDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlePopupControllerDefines.h new file mode 120000 index 000000000..e572f2ff7 --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlePopupControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlePopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlesPromptController.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlesPromptController.h deleted file mode 120000 index 07289251c..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlesPromptController.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlesPromptControllerDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlesPromptControllerDefines.h deleted file mode 120000 index bf95bfc85..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJSubtitlesPromptControllerDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlesPromptControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJTextPopupController.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJTextPopupController.h new file mode 120000 index 000000000..88ed786af --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJTextPopupController.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJTextPopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJTextPopupControllerDefines.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJTextPopupControllerDefines.h new file mode 120000 index 000000000..ebf922968 --- /dev/null +++ b/Example/Pods/Headers/Private/SJBaseVideoPlayer/SJTextPopupControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJTextPopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h b/Example/Pods/Headers/Private/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h deleted file mode 120000 index 8dc7e29c6..000000000 --- a/Example/Pods/Headers/Private/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/SJMediaCacheServer/FILEAssetContentProvider.h b/Example/Pods/Headers/Private/SJMediaCacheServer/FILEAssetContentProvider.h index 07af26397..76a89b63c 120000 --- a/Example/Pods/Headers/Private/SJMediaCacheServer/FILEAssetContentProvider.h +++ b/Example/Pods/Headers/Private/SJMediaCacheServer/FILEAssetContentProvider.h @@ -1 +1 @@ -../../../SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetContentProvider.h \ No newline at end of file +../../../SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/Private/FILEAssetContentProvider.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJBarrageItem.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJBarrageItem.h deleted file mode 120000 index a209f11fc..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJBarrageItem.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageItem.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJBarrageQueueController.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJBarrageQueueController.h deleted file mode 120000 index 16dc04fc4..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJBarrageQueueController.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJBarrageQueueControllerDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJBarrageQueueControllerDefines.h deleted file mode 120000 index 45778591b..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJBarrageQueueControllerDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJBarrageQueueControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJDanmakuItem.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJDanmakuItem.h new file mode 120000 index 000000000..48de6a7bc --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJDanmakuItem.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJDanmakuPopupController.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJDanmakuPopupController.h new file mode 120000 index 000000000..99ed8c0b4 --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJDanmakuPopupController.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJDanmakuPopupControllerDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJDanmakuPopupControllerDefines.h new file mode 120000 index 000000000..c756c64e7 --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJDanmakuPopupControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJDanmakuPopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJGestureControllerDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJGestureControllerDefines.h new file mode 120000 index 000000000..640d1cff6 --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJGestureControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJGestureControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPlayerGestureControlDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPlayerGestureControlDefines.h deleted file mode 120000 index 407ec4caf..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPlayerGestureControlDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPlayerGestureControlDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPlayerViewInternal.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPlayerViewInternal.h new file mode 120000 index 000000000..7ba5d3e3e --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPlayerViewInternal.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerViewInternal.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPrompt.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPrompt.h deleted file mode 120000 index 66827e019..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPrompt.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPrompt.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptDefines.h deleted file mode 120000 index 3bcc63863..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptPopupController.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptPopupController.h deleted file mode 120000 index 404994932..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptPopupController.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptPopupControllerDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptPopupControllerDefines.h deleted file mode 120000 index 848c870c7..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptPopupControllerDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptPopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptingPopupController.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptingPopupController.h new file mode 120000 index 000000000..26af0368f --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptingPopupController.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptingPopupControllerDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptingPopupControllerDefines.h new file mode 120000 index 000000000..fc76e054e --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJPromptingPopupControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptingPopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJRotationManager.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJRotationManager.h deleted file mode 120000 index 6d0c09ff8..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJRotationManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJRotationManagerInternal_4.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJRotationManagerInternal_4.h new file mode 120000 index 000000000..dd074850a --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJRotationManagerInternal_4.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManagerInternal_4.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJRotationManager_4.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJRotationManager_4.h new file mode 120000 index 000000000..cc844417d --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJRotationManager_4.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlePopupController.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlePopupController.h new file mode 120000 index 000000000..a1821e8d6 --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlePopupController.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlePopupControllerDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlePopupControllerDefines.h new file mode 120000 index 000000000..e572f2ff7 --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlePopupControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlePopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlesPromptController.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlesPromptController.h deleted file mode 120000 index 07289251c..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlesPromptController.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlesPromptControllerDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlesPromptControllerDefines.h deleted file mode 120000 index bf95bfc85..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJSubtitlesPromptControllerDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlesPromptControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJTextPopupController.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJTextPopupController.h new file mode 120000 index 000000000..88ed786af --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJTextPopupController.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJTextPopupController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJTextPopupControllerDefines.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJTextPopupControllerDefines.h new file mode 120000 index 000000000..ebf922968 --- /dev/null +++ b/Example/Pods/Headers/Public/SJBaseVideoPlayer/SJTextPopupControllerDefines.h @@ -0,0 +1 @@ +../../../SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJTextPopupControllerDefines.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h b/Example/Pods/Headers/Public/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h deleted file mode 120000 index 8dc7e29c6..000000000 --- a/Example/Pods/Headers/Public/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h +++ /dev/null @@ -1 +0,0 @@ -../../../SJBaseVideoPlayer/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/SJMediaCacheServer/FILEAssetContentProvider.h b/Example/Pods/Headers/Public/SJMediaCacheServer/FILEAssetContentProvider.h index 07af26397..76a89b63c 120000 --- a/Example/Pods/Headers/Public/SJMediaCacheServer/FILEAssetContentProvider.h +++ b/Example/Pods/Headers/Public/SJMediaCacheServer/FILEAssetContentProvider.h @@ -1 +1 @@ -../../../SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetContentProvider.h \ No newline at end of file +../../../SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/Private/FILEAssetContentProvider.h \ No newline at end of file diff --git a/Example/Pods/Local Podspecs/SJVideoPlayer.podspec.json b/Example/Pods/Local Podspecs/SJVideoPlayer.podspec.json index ea3881e4a..950760a80 100644 --- a/Example/Pods/Local Podspecs/SJVideoPlayer.podspec.json +++ b/Example/Pods/Local Podspecs/SJVideoPlayer.podspec.json @@ -1,6 +1,6 @@ { "name": "SJVideoPlayer", - "version": "3.3.2", + "version": "3.4.0", "summary": "video player.", "description": "https://github.com/changsanjiang/SJVideoPlayer/blob/master/README.md", "homepage": "https://github.com/changsanjiang/SJVideoPlayer", @@ -16,12 +16,12 @@ }, "source": { "git": "https://github.com/changsanjiang/SJVideoPlayer.git", - "tag": "v3.3.2" + "tag": "v3.4.0" }, "requires_arc": true, "dependencies": { "SJBaseVideoPlayer": [ - ">= 3.6.0" + ">= 3.7.0" ] }, "source_files": "SJVideoPlayer/*.{h,m}", diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 046d822de..ff6f94ddc 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -2,46 +2,46 @@ PODS: - CocoaAsyncSocket (7.6.5) - Masonry (1.1.0) - MJRefresh (3.4.3) - - SDWebImage (5.11.1): - - SDWebImage/Core (= 5.11.1) - - SDWebImage/Core (5.11.1) - - SJBaseVideoPlayer (3.6.3): + - SDWebImage (5.13.0): + - SDWebImage/Core (= 5.13.0) + - SDWebImage/Core (5.13.0) + - SJBaseVideoPlayer (3.7.0): - Masonry - - SJBaseVideoPlayer/AVPlayer (= 3.6.3) - - SJBaseVideoPlayer/Common (= 3.6.3) + - SJBaseVideoPlayer/AVPlayer (= 3.7.0) + - SJBaseVideoPlayer/Common (= 3.7.0) - SJUIKit/AttributesFactory (>= 0.0.0.38) - SJUIKit/ObserverHelper - SJUIKit/Queues - SJUIKit/SQLite3 - - SJBaseVideoPlayer/AVPlayer (3.6.3): + - SJBaseVideoPlayer/AVPlayer (3.7.0): - Masonry - SJBaseVideoPlayer/Common - SJUIKit/AttributesFactory (>= 0.0.0.38) - SJUIKit/ObserverHelper - SJUIKit/Queues - SJUIKit/SQLite3 - - SJBaseVideoPlayer/Common (3.6.3): + - SJBaseVideoPlayer/Common (3.7.0): - Masonry - SJBaseVideoPlayer/ResourceLoader - SJUIKit/AttributesFactory (>= 0.0.0.38) - SJUIKit/ObserverHelper - SJUIKit/Queues - SJUIKit/SQLite3 - - SJBaseVideoPlayer/ResourceLoader (3.6.3): + - SJBaseVideoPlayer/ResourceLoader (3.7.0): - Masonry - SJUIKit/AttributesFactory (>= 0.0.0.38) - SJUIKit/ObserverHelper - SJUIKit/Queues - SJUIKit/SQLite3 - SJFullscreenPopGesture/ObjC (1.5.4) - - SJMediaCacheServer (1.7.6): - - SJMediaCacheServer/Core (= 1.7.6) - - SJMediaCacheServer/KTVCocoaHTTPServer (= 1.7.6) + - SJMediaCacheServer (1.7.8): + - SJMediaCacheServer/Core (= 1.7.8) + - SJMediaCacheServer/KTVCocoaHTTPServer (= 1.7.8) - SJUIKit/SQLite3 - - SJMediaCacheServer/Core (1.7.6): + - SJMediaCacheServer/Core (1.7.8): - SJMediaCacheServer/KTVCocoaHTTPServer - SJUIKit/SQLite3 - - SJMediaCacheServer/KTVCocoaHTTPServer (1.7.6): + - SJMediaCacheServer/KTVCocoaHTTPServer (1.7.8): - CocoaAsyncSocket - SJUIKit/SQLite3 - SJRouter (1.0.0): @@ -102,21 +102,21 @@ PODS: - SJUIKit/UIMaker (0.0.0.58): - SJUIKit/UIMaker/Core (= 0.0.0.58) - SJUIKit/UIMaker/Core (0.0.0.58) - - SJVideoPlayer (3.3.2): - - SJBaseVideoPlayer (>= 3.6.0) - - SJVideoPlayer/Common (= 3.3.2) - - SJVideoPlayer/ControlLayers (= 3.3.2) - - SJVideoPlayer/ResourceLoader (= 3.3.2) - - SJVideoPlayer/Common (3.3.2): + - SJVideoPlayer (3.4.0): + - SJBaseVideoPlayer (>= 3.7.0) + - SJVideoPlayer/Common (= 3.4.0) + - SJVideoPlayer/ControlLayers (= 3.4.0) + - SJVideoPlayer/ResourceLoader (= 3.4.0) + - SJVideoPlayer/Common (3.4.0): - Masonry - - SJBaseVideoPlayer (>= 3.6.0) + - SJBaseVideoPlayer (>= 3.7.0) - SJUIKit/AttributesFactory - SJVideoPlayer/ResourceLoader - - SJVideoPlayer/ControlLayers (3.3.2): - - SJBaseVideoPlayer (>= 3.6.0) + - SJVideoPlayer/ControlLayers (3.4.0): + - SJBaseVideoPlayer (>= 3.7.0) - SJVideoPlayer/Common - - SJVideoPlayer/ResourceLoader (3.3.2): - - SJBaseVideoPlayer (>= 3.6.0) + - SJVideoPlayer/ResourceLoader (3.4.0): + - SJBaseVideoPlayer (>= 3.7.0) - YYModel (1.0.4) DEPENDENCIES: @@ -153,15 +153,15 @@ SPEC CHECKSUMS: CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 MJRefresh: 53e3e3219f204425ee6d3e62e8733d3295944cd6 - SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d - SJBaseVideoPlayer: 99957bb0d0fe1ccb8d6710bd9db9f52640c56a32 + SDWebImage: 0327043dbb9533e75f2eff8445b3df0f2ceca6ac + SJBaseVideoPlayer: c2b911b2e040973429682fc37f35c9d4b5732b29 SJFullscreenPopGesture: 7be57b1014cb77f4b7c1e6df5e797da6d05dc75d - SJMediaCacheServer: 3a558208af572554583d956dbf14e4bb7818f0e4 + SJMediaCacheServer: 95bebce42f281fccaff25a5e8284022478ff7ba5 SJRouter: a866e7884fc9219bed523be0a0318c3a84e85022 SJUIKit: 86d5b16f8b8b17274ef8805acf965e4014629e15 - SJVideoPlayer: 3a271ff92c7b9d611c537655fd1edcbae18b8587 + SJVideoPlayer: 583387d58278db0e9e56122066425fb05fd84ec7 YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30 -PODFILE CHECKSUM: 15535c4ec87318d1a42f08613c1f32951dd3cf7f +PODFILE CHECKSUM: 806121bb2fec366be255af4703b69f0a92bb11e3 -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.3 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 3e6edddba..cc139950f 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,1732 +7,1873 @@ objects = { /* Begin PBXBuildFile section */ - 00019CCAA3EBAB3F8539E6183612530B /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 34FBF2995D86EDCF5AD0A4B2823D249E /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 013C505091B7874AE7C0078FE0320A0E /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F2E1583D74C05601B0F4415461E553A /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m */; }; - 016E3DD1A05996B95988A0F92C603610 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6485158CFC0ACB8DDAE04B139CCFCCBB /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01EEAAAE410356BC64AF4CED471DA9D6 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DE3236CA4EDB6B82FF8B3252B27C133 /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 02018AA4E1D4B37C5064828B6983661B /* SJScrollingTextMarqueeView.m in Sources */ = {isa = PBXBuildFile; fileRef = D409DF0227B42F346E15A0AA1B6A1737 /* SJScrollingTextMarqueeView.m */; }; - 0206AA9B8096F41E3066F2DE61992E30 /* SJEdgeControlLayerAdapters.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F4C95B603CF7091192F53C30A7E6912 /* SJEdgeControlLayerAdapters.m */; }; - 031B5492C69D9F8CD12757A3FAFD3A36 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C6E2C9B0C938C8AFD934FED12E8926A /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 032B00C748FE79147F65DB862EE69E37 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ACA912397A3894221BD9F4832E6E5E3 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 03552D845550E0E914B08624DF33B3AC /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 915BE4B6E9A0BCCB742B4A4EB5F82F2D /* MJRefreshConst.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0362F51A89906B4136C6A3ED28989D40 /* SJRunLoopTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 05CF5C16FC5EA0177A4BF58C7758852E /* SJRunLoopTaskQueue.m */; }; - 039FF6C1772D2022B265D3CE8CCF19EC /* UIScrollView+SJPageViewControllerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 49FD48FC263AA7E99A5A64D1A673383D /* UIScrollView+SJPageViewControllerExtended.m */; }; - 03A3C427BCEAEB0168C5B1DA5B9A0B86 /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = F735397CB1454DE8586CB97E63AF6366 /* SDAnimatedImagePlayer.m */; }; - 03B05726FFE206E88EFE6551731E1807 /* UIImagePickerController+SJUIKitExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E22162319F459550401D0118E0C6867 /* UIImagePickerController+SJUIKitExtension.m */; }; - 03ECE44E890B0E77E66141A886FF7384 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 652813F4263753D6D6E54EE3BCAD7055 /* SDWebImageDownloaderConfig.m */; }; - 040DD7A50C846F2D707268BF655C8D37 /* NSTimer+SJAssetAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB7BECCC2E1CE23D187A071D3589D56 /* NSTimer+SJAssetAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0415B4A3538C43B804314435CED1E1F6 /* SJUTRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B0B62E47996AAC595072E38311007EA /* SJUTRecorder.m */; }; - 0466486032711154312BC582720AC3D3 /* SJSQLiteTableModelConstraints.m in Sources */ = {isa = PBXBuildFile; fileRef = 863EDFE78BE1328E59A8ABF8A6971626 /* SJSQLiteTableModelConstraints.m */; }; - 048EC84EEA06B894183160095FDE5109 /* NSFileHandle+MCS.m in Sources */ = {isa = PBXBuildFile; fileRef = BF929E78550F3DA7BC3A21210AE62F23 /* NSFileHandle+MCS.m */; }; - 049B0E0C3ECF8C83BD82CD9F0C806700 /* SJSQLiteTableInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B53E9CC14C18E51B35E0DAE2E6C4856 /* SJSQLiteTableInfo.m */; }; - 05285D8CCEAA6F2A37E45CC735FE19B7 /* SJUIMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F9CE0F748B0C5C430B59A68F800E48 /* SJUIMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05397DD7A9A180B049D580610B5C7693 /* FILEAssetContentProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 11430920277C0AB970C25D9FDCEC4D54 /* FILEAssetContentProvider.m */; }; - 054C76235F662ABDBDB8A36387A4B63D /* SJDraggingObservationDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B4459DA15487099BAAF757D68CA71B5E /* SJDraggingObservationDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05751F398FC8210FFDDED3D4EB0AADEF /* SJClipsResultShareItemsContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 11F5C1C1D209E0978F434B46A288BA37 /* SJClipsResultShareItemsContainerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05FB0AE0AABC0400CF3C0A6E0C512C74 /* SJSQLite3TableClassCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6344F0AC2BE8319242CEFA60533A15E9 /* SJSQLite3TableClassCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 06283A245925DFDE457B0C3EDEF96A34 /* SJSQLiteCore.h in Headers */ = {isa = PBXBuildFile; fileRef = FCEF5781D7C10CA34315070B0AF3353C /* SJSQLiteCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0650AA299D9E18C22F3D7978B8D13F0E /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AE13BC3C15975798B496E1041CC194E /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 06514FD84CC576BCCE44F89EE61A7F68 /* GCDAsyncSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EDB1E5B3E80E12BD16FD682E1691547 /* GCDAsyncSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 06943F195425D70618781500ECA5D13A /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E5799EEDE9580630B0422D4E3D14B6C1 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0727F07AAFF0AF397420F6051DA07BDC /* SJFloatSmallViewControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD3305379840B12FF1DF0579050F418 /* SJFloatSmallViewControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0751DE658878BEC1DEB12BF132219A55 /* MCSAssetCacheManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E1420619555CDC4D62691FE8EB5DDD8 /* MCSAssetCacheManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 084F36480B7CF5E32993077A0B5A31F4 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = A9C3BE7173C734AADF6B9BA8A1E830A9 /* NSData+ImageContentType.m */; }; - 08FA8C552C284E620F6D60CBD7EF5F96 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 385E844801B8350C0862C8E2A69BFE25 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 098E8CC8DF32416A428381F52273D2A6 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = EC96153203E971D2C8017F1D5DA87766 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09B5CBEA8D0449BCC570F4470FB5C252 /* SJLoadFailedControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0444116F11EF9930E9DB4CFB2814A987 /* SJLoadFailedControlLayer.m */; }; - 09BB6FF47D5A11F537E308ED12029DF8 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = BDFC910E3706B02800F43A441A61766A /* SDImageCache.m */; }; - 0A4F3D0625FFC1BFBE800B86278F93C8 /* SJAVMediaPlaybackController.m in Sources */ = {isa = PBXBuildFile; fileRef = DC487B87FE6176797CCB88066897F735 /* SJAVMediaPlaybackController.m */; }; - 0A71419B043B2937F1AE0007EAA0DE97 /* MCSResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = A7B1D19D59A980ED85586D753954DB0F /* MCSResponse.m */; }; - 0A9EA29A8B86EBADCED48E971B49E8E8 /* SJClipsGIFCountDownView.m in Sources */ = {isa = PBXBuildFile; fileRef = F0B48D7AEBC288C381A352E83EBF0AAA /* SJClipsGIFCountDownView.m */; }; - 0ADFB8408D908E0C8F0A263AF44E663B /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = DDA680496F782C0504B07CED4BC71F02 /* SDWebImageDownloader.m */; }; - 0B9322DBFDB7C240D7371108CA274C6C /* SJFlipTransitionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 266DE3DF25B3C7FEBE8FE679F9DFCA0E /* SJFlipTransitionManager.m */; }; - 0BD78B31FE319E530F9E0FB9A6E0F2D8 /* SJSQLite3+RemoveExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = B62903F9E7AD70F3338CB8A5FF12993A /* SJSQLite3+RemoveExtended.m */; }; - 0DE732D2F82A112849D9AB4D68A3BCBD /* HTTPRedirectResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = A13976C66C7A9209EFA873AE522A11F6 /* HTTPRedirectResponse.m */; }; - 0E9F8C927AA07FBC28D26CF0DC2CB71A /* SJPlaybackRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 85978CD214BFAD661D800CA5B32A0A15 /* SJPlaybackRecord.m */; }; - 0FA51B3F9738ECFFB4C08B728D282AA3 /* SJBaseTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B1A300C9BECD3D6D22E3CD64511BB /* SJBaseTableViewCell.m */; }; - 0FCE7CED88969056C378078FBA871C52 /* SJRouteObject+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = FB5C0563B12FE2442A28E00897CA1881 /* SJRouteObject+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1062E740F5B93DE65AD34BED39703ACB /* MCSAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 46116736D8C9A45F0FC9B7AC4F4CA2CA /* MCSAssetManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 108EE8D01059252622BE5B77F4A1B4DE /* SJLoadFailedControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = CF71BD8DBCA3A0D7BBB352B44D69F4B4 /* SJLoadFailedControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11132C66A4D174BD4D62BAD82D1C73F9 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = E4394D759F954D2780A05C8B803A62BD /* MJRefreshAutoStateFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 115ACCE253A886181B55773DDC70D6ED /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C8B9623F55D4F3E4ECDA78DCE63625C /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11EACA97C79866F1918408EDEBCFF525 /* SJControlLayerAppearStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCC7D946DC63960299D1DB57E738488 /* SJControlLayerAppearStateManager.m */; }; - 12784159EDF62CA7CFE529452BA52061 /* SJFullscreenPopGesture.m in Sources */ = {isa = PBXBuildFile; fileRef = E4026E5D8BC3C71638E3BBB1A4995389 /* SJFullscreenPopGesture.m */; }; - 128CB82581C01598C1E2F282C3EF6E6E /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 270E391169EBC2E040B3BCFA01007370 /* SDAnimatedImage.m */; }; - 13D1957F7DB13BCBAF31E6ACD6DEC8AE /* SJBaseViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = CB29202A124A25AF6A537E5AC2074CFC /* SJBaseViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1435130904E781B0C8BFB79A719FDE3B /* SJLoadingView.m in Sources */ = {isa = PBXBuildFile; fileRef = F30FAD3E41CA3CA6EA88FCEAAD57E591 /* SJLoadingView.m */; }; - 145234F9A5E52333DEECA82A332DBE8A /* SJPageCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = D67E679C82D397C13ABFA9E517790895 /* SJPageCollectionView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1476A923C0D8DCBDD8FE19386ADF391C /* MCSReadwrite.m in Sources */ = {isa = PBXBuildFile; fileRef = 618A5798F2C9A9E9A2975C55B0B141A6 /* MCSReadwrite.m */; }; - 14C549A762DA24F3F10E5722D8D40FFD /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 80BE8141DA0C17384DE720A6A14E37FD /* UIView+WebCache.m */; }; - 14E576329E0DD1AA7F16E7E5C629C447 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = FB2D58C307FFDFCF3D49A8DC295A3CBB /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15B0B2B8331E0C1A283101F8B556AF82 /* SJEdgeControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = D2A019A0AD97FD48BD74D7F7A8760884 /* SJEdgeControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15D7C95549672915C1899C3A678849EA /* MultipartMessageHeaderField.m in Sources */ = {isa = PBXBuildFile; fileRef = 72A005107E7499A45629FA070CF38162 /* MultipartMessageHeaderField.m */; }; - 161B4E90F21AC5E29EAA4E4FA706BF5C /* SJResidentThread.h in Headers */ = {isa = PBXBuildFile; fileRef = DE91C0CC3B6C322C365E8506ACCA0656 /* SJResidentThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 16B9DC8CB012DAA7A6ECFDD446FA8BBE /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DA2BA92F5AF8BAFD2655F3E3899E875 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 16CD8824631C35D287A172CD74901516 /* NSURLRequest+MCS.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FCD068A9459D9BA241862FD1B03E535 /* NSURLRequest+MCS.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 16E897712D89D519DADC2AE2A77C58A9 /* FILEAssetReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 53028853810282EED89D452B24CC3BB7 /* FILEAssetReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 170F97CD69BD6031D937C92D34FD4706 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C111A1AE32D51FAC358EDF4CE2C383F /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17500F12CDDF3903A2896BC0B063A8DE /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = E628037044AE6530E5BE7298EE76D5F4 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17ED11939F4F808BEB457C76721F2A85 /* UITextField+AsyncLoadImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 503B0CD0C670D93F70E62237DC1A0019 /* UITextField+AsyncLoadImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 181B2691FF506F26F7F71F711C724B81 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = C5D8271283CC6535C8FD1A63FAB3947A /* MASConstraintMaker.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 187E7C528DA634E699E78A9A02578375 /* MCSRootDirectory.m in Sources */ = {isa = PBXBuildFile; fileRef = 465162822C09DF37A53EC3FCF96AD13E /* MCSRootDirectory.m */; }; - 189FC0B56494FC7DDE10C1508378193E /* MCSDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = DCA9BCFC6492FD71B840A871ED332581 /* MCSDownload.m */; }; - 18BD5AA4B8CF3A77AD82246B52D5B8ED /* NSObject+YYModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E69B7C7835764A92E5B7E40EA8EA1262 /* NSObject+YYModel.m */; }; - 18FEFF349243CADA783D455C99E5CBEB /* HLSAssetContentProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = B60C96F403104D06142B611D6963D851 /* HLSAssetContentProvider.m */; }; - 19D0930CA1548329EE5D0BDE1F31D869 /* SJCornerMask.m in Sources */ = {isa = PBXBuildFile; fileRef = E575F65CCD8DCEFCF4C12204CE08F741 /* SJCornerMask.m */; }; - 1A296D9023756DF9DF7E2977BE422FB2 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 356175F598EA47D1804B4F9E897AD93E /* SDImageCoderHelper.m */; }; - 1A453B5A9A65BBA9F74C0C144358C0A2 /* SJLoadingView.h in Headers */ = {isa = PBXBuildFile; fileRef = CABA7896EC27F5C017ADF1FD1D1BE108 /* SJLoadingView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1A70D671A553F83F038EF8BCAD45DEC7 /* NSObject+SJAsyncLoad.m in Sources */ = {isa = PBXBuildFile; fileRef = E8715BA9BB9E3615E849E55416EC0279 /* NSObject+SJAsyncLoad.m */; }; - 1B7FDF02A13B654CBEDB846B2D82B85B /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 184347B2F86538F8D5B17715AF3CD3B7 /* SDWebImageDownloaderRequestModifier.m */; }; - 1BDD7F7FA4C63C7C4F33A57D6DB1D2E0 /* SJPageMenuItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ACEEA16E132EA825423312DBAD12157 /* SJPageMenuItemView.m */; }; - 1C492DD17AE0B343F869E7947AB90AC2 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2662D60C5B5E2FE77BED0F86537820B0 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E06190F195923FEB645A405D6DC1BCF /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 62BF1B78791EFCD5D7663DB067D5A849 /* SDImageCoder.m */; }; - 1E1A615EB6B7183F994EA16CDD1DE493 /* SJVideoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50A392908D9665C74181E7753861E65D /* SJVideoPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E31E541D1528F390D65528A7CD1C921 /* SJUIKitTextMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3B7D05DD79196EFC0C580C86C436DA /* SJUIKitTextMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E667B5E7AED378FE50AB78E1D762986 /* SJSQLiteObjectInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 65EBACFA989176D05AFC74118C37DD4F /* SJSQLiteObjectInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1EECDB844781886F8D806D68E57FBBB6 /* UIScrollView+SJRefreshAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A0D846CD2874AE3A834F956C1DFA5BE /* UIScrollView+SJRefreshAdd.m */; }; - 20E2F8001CC8A41A0E1B50694BE7875D /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E5705694A76194E48078BD26BE9639C9 /* NSArray+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 210505196FADE0A4F8AFCA60988741E8 /* SJMediaPlaybackController.m in Sources */ = {isa = PBXBuildFile; fileRef = E548BE78DD83090F02AAB4FB8B900692 /* SJMediaPlaybackController.m */; }; - 213B99551FB310A350245E5F93EE3552 /* MCSDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 57735687B8A6FBAFD141692D2E4268C0 /* MCSDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2184532A10E7502EA915D91369DFAC3C /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 7959DA22A968AC1B8B20902BD3E109F6 /* SDAsyncBlockOperation.m */; }; - 219A06956BA50B4ED4DE1305E1CF31F6 /* SJDraggingProgressPopupViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = C2F0FA4F98A998A5819D89E2A49A386F /* SJDraggingProgressPopupViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 21F4321091720618E76FDA9511AD9BC9 /* SJVideoPlayerControlMaskView.m in Sources */ = {isa = PBXBuildFile; fileRef = B43F6AEB05D31EAE479BDF9288373CB0 /* SJVideoPlayerControlMaskView.m */; }; - 22900476BA43DFAAE47C55A8C550DF2A /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = FBE1790C3CA485D47AE8CEA8AC69C2C0 /* NSBundle+MJRefresh.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 22C31197B0463DA77ED4267CF29B8A92 /* SJImagePickerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E7084C3CF72AD5C0E7D9ACD3E672508 /* SJImagePickerController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2307907FA690285B5958B3A39C6816D8 /* SJSubtitlesPromptController.h in Headers */ = {isa = PBXBuildFile; fileRef = A2A20B9946FA613A7D8F609B799F1412 /* SJSubtitlesPromptController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 234A51E5E45A143CA325D05C7DF6146D /* SJScrollingTextMarqueeView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D6D7DF771F31BB280AD6A3AB4608929 /* SJScrollingTextMarqueeView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 23788E5C92F9B9F653AC71D149731F98 /* SJPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3379B70F642E3A1BB128EAA6553FDFD6 /* SJPlayerView.m */; }; - 2429687632A09F51BB89A386CBC6E826 /* SJImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 49C1C82972DC2857F7182E6B7A758B5E /* SJImagePickerController.m */; }; - 246C8E02C80BAEA49014AD0DB5E40B4B /* SJVideoPlayerPlayStatusDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = CA67125CDE8DA05C96780604169151CF /* SJVideoPlayerPlayStatusDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 24D5A665091087501AA9B1F6AD200331 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4187CA309920190BCFE967BC4FEE7690 /* UIView+WebCacheOperation.m */; }; - 258BBA439703CDE6B91347A733C19A10 /* SJPromptPopupController.m in Sources */ = {isa = PBXBuildFile; fileRef = 87A8FF6A5C7CA85FB814C0FCB3F3ECF4 /* SJPromptPopupController.m */; }; - 25BF1D81D3A570DBFF239BA92AF8C669 /* SJPlaybackListControllerInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = D9C2C8DA0B3BA41485EC0E4481AC08CF /* SJPlaybackListControllerInterfaces.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 25C27B72081CB459F8EEADEC99BB1294 /* Pods-SJVideoPlayer_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A961442A951AD4743D626428CC377BF /* Pods-SJVideoPlayer_Example-dummy.m */; }; - 25E7902DFB730C80D51FFE426A8DFC72 /* MCSURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A47D8C15668541E49C219CE3BB89270 /* MCSURL.m */; }; - 265D49A837950E796D67DF1A7BA105FE /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 24801FA3A136072FAF5BB6A397E42C62 /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 265DD4233B38D2C89CA5F9103922B1B9 /* FILEAssetReader.m in Sources */ = {isa = PBXBuildFile; fileRef = A0E7C42B7752D5E273314585CFF1B9EF /* FILEAssetReader.m */; }; - 26CFF9ED3D5203C44262E458AE687A0D /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 459CD217F76029EEFE9337CE1AF68274 /* UIScrollView+MJRefresh.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2700A36B8534C45316DAB554E8498A28 /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 246CDF7769E5A1A220713B2A15CFF9FF /* SDDiskCache.m */; }; - 27481C08F70F2DB32935EE586754E43A /* SJClipsResultShareItemsContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = BB977543C0A186871E702BFE07F04FE7 /* SJClipsResultShareItemsContainerView.m */; }; - 27E2CF225C12F9EE09404A55A9974C4A /* SJSubtitleItem.h in Headers */ = {isa = PBXBuildFile; fileRef = A78E043AF4AB2849F946B81C70738063 /* SJSubtitleItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 27E5BFBBC08BC441E9B4E637ABEFFB77 /* SJAVPictureInPictureController.m in Sources */ = {isa = PBXBuildFile; fileRef = C15C0D734C9FE703D28D38688B5894D2 /* SJAVPictureInPictureController.m */; }; - 27F6DFF64009282C12A61999B9F550B0 /* MCSProxyTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 667247C1C106855597108467A198E382 /* MCSProxyTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 293B9392E2E0687D5CD3A77E69A5095A /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DA6ADD5A168C4F1BF94A71CC99B181 /* NSButton+WebCache.m */; }; - 29C5E1AF8AE16F1F32B96B212AC91C37 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = C46DCD53C4E62C5952BF9060F6BF3EB9 /* UIColor+SDHexString.m */; }; - 2A0F1729EE17550AB4FE5F5EC7CCAC74 /* SJSubtitlesPromptController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AA092AD010D80E2DA92FC13BFABA8FA /* SJSubtitlesPromptController.m */; }; - 2B5740ECEF8C03D584C18A282DB04D43 /* SJPageViewControllerItemCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 24C761B08CD2612D577F00993D5F7477 /* SJPageViewControllerItemCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C3F274445E40ED46C992479EFE835C0 /* HTTPAsyncFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = C71FDA590C90713AD940014C7CFC208D /* HTTPAsyncFileResponse.m */; }; - 2CD4804154C16E3B7E3A070B17CCD807 /* MCSInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = FDD4698841FE8C1C1B21A5BB07A00D11 /* MCSInterfaces.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CEB698062BFB55429EB655A24B05571 /* NSObject+SJObserverHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = AABAAB5D1C26A90E47F65439BBF18DBF /* NSObject+SJObserverHelper.m */; }; - 2CFCB4CF85B49C6B63BB759EA9D76575 /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = E951DDE18886DEEF046EBC796567EAAF /* GCDAsyncSocket.m */; }; - 2D081111F27A3270D3E3AA1E3E89B998 /* SJSQLite3+TableExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 033A5E86DB8DE11284C535DD5E4EF0D9 /* SJSQLite3+TableExtended.m */; }; - 2D3F2E1463A243E0CF6B9CF58319AA09 /* SJVideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D0BD99B56E4327A147144EB10F0CE /* SJVideoPlayer.m */; }; - 2DB99E87328AB7C1FD3162AA94B0D3E7 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A734C9C7A88FCB2051879B145246A17A /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2DF042AD1D08D5FD6FF9BF6895811E2F /* SJClipsButtonContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D0FE6357F65A0ACE1C34CB60F4AC520 /* SJClipsButtonContainerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2E5F3B41BD51ACE4EE3B422BB67E51DF /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = FDF0BA7FCF9F8B8800DCAB18CC118E9E /* MASViewAttribute.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2EB4190C9CB2893C3EF59798ACBDA68B /* HTTPAsyncFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 709D2A170D98EA72FBFC2D5BA0173A70 /* HTTPAsyncFileResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2EBF3535445644EAF525DB8990928271 /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CC890EEBEEC7EBABCB7D424B6AFA176 /* MJRefreshFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2ECB81FC72C7BB5040F10C021225ADED /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B3905681F4F517B8731C2E8C1443930 /* SDInternalMacros.m */; }; - 2EF451A980660F39F52CFE588EEC8F68 /* CocoaAsyncSocket-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B888F0C2AEE3BC8D9BAEF322D83988AF /* CocoaAsyncSocket-dummy.m */; }; - 2F0C010896955643EF27993D7C6C66AF /* SJFlipTransitionManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A616DEE45EC73F4D8AABFA71F21A7D /* SJFlipTransitionManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2F202F12865EC85C75EBEE3AE70016E3 /* SJPageMenuBar.h in Headers */ = {isa = PBXBuildFile; fileRef = B843C4955CAF68E70AC497F5C4C7D3BE /* SJPageMenuBar.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2F3143E3C64514664CF165D7EBC6F47C /* SJBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1538272FD9D0D545417F5A5C6E843F0C /* SJBaseViewController.m */; }; - 2F5475EF54A0F431EA919FFE3C607048 /* HTTPAuthenticationRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = D1934FF36DD8AE86F62842E7C0F037CC /* HTTPAuthenticationRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2FEBC0F3A58CD98F759E592B3916FEF0 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8879A8C7414278F6BF994CFD696803D5 /* UIImage+ForceDecode.m */; }; - 3018A1733FA71BABF400786940FE313F /* MCSError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4942CD1FD5E67D8CB9B4DA79686F5871 /* MCSError.m */; }; - 3063231F3293E15061B3225DDE746FE6 /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 40F143EDDDA79A6948C71D4A51EB0FBD /* SDWebImageCacheKeyFilter.m */; }; - 30D0F2FAE04689071A28A91E04802A55 /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = E73231902F9415D919F84ECE75B42D51 /* MJRefreshHeader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 31064475EC704EC31BC3E2DE0DAFC72C /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = AF1B69B374E5801367E813BF1E50384B /* MASViewConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 320238ADDBBF1C21C85D3DA81FA4F68E /* HLSAssetReader.h in Headers */ = {isa = PBXBuildFile; fileRef = C40D24208B6143F821EAA152E001259E /* HLSAssetReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 327DF3A45AD02490D6D3DFCC3A3A676C /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 06CEA4CB5F33BCE21D25B130007D7D77 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 32E70ACFC46563DDCAF23CC6AA125695 /* UIButton+AsyncLoadImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B160F4179DD4BAED1AC8ABD3826354A /* UIButton+AsyncLoadImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 335B7A12B7EC0BD569580A3DE383D24D /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0037E39EB4D7F6DA3701F457D3EC20C4 /* SDImageCodersManager.m */; }; - 3430321D06CBCF49F5A7DF6A70D9BB91 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 053F8D2303B2B9B46AA98AC4DD7FFD3A /* Masonry-dummy.m */; }; - 345E2C203E2D12E7E3546F2E8344A79B /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E41F39113856F732378D5FEFC180143 /* SDImageLoader.m */; }; - 349147060901F3881A99EB10AF7B3BC7 /* SJPlaybackHistoryController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC28F404C4C8C666794FEDE499FC2FFC /* SJPlaybackHistoryController.m */; }; - 356B196124E84F8BC9518E499FE82CFA /* SJAttributesRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 03888391B5161257680388A1D70E6B36 /* SJAttributesRecorder.m */; }; - 35A82C6E7CCB4F3EE4D0B65A47A5E742 /* MCSConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = A3DE979A5047694D6076DABF605E4B78 /* MCSConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 369B073ABA1A305A16429932AD2D4F16 /* SJRotationManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = AB54C4DF61CCAB892943990AFC3ED5C6 /* SJRotationManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3781D5D2AEBD2D582BDA578CD5BC39A8 /* SJFullscreenModeStatusBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EF94BE8847E1BFA6816D62BFABAFFB8 /* SJFullscreenModeStatusBar.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 379B97B036149D62ADA6ED0A1946AE17 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 518B4D911AA28E209C96CAA19D3B62B8 /* UIScrollView+MJExtension.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 37C68E6707391B7007E5991A914CB2B7 /* SJBarrageItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 9067DD3A390FBACCCCCE1160B88CDE31 /* SJBarrageItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 38E225F83FB50A828F51F93E59069CF9 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = D7EF4909A3DD134C7D0BC7A4C48DA45C /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 38FC6723C49AC10FF5CAF0243CE6A1CC /* SJVideoPlayerClipsConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = DB600A2B5CA714871D134C967B74BAB5 /* SJVideoPlayerClipsConfig.m */; }; - 390E8375B19FF12764C5AA730AF0F0F4 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B4ACD57CC82541FFCF0F14992D34D7CE /* View+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3999613F3A4F703ADF0EC8F539968166 /* UIView+SJAnimationAdded.h in Headers */ = {isa = PBXBuildFile; fileRef = A39ECDB4D940A8F2ACAD1ED0506B242E /* UIView+SJAnimationAdded.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A8C2F88BC19E0501773F158EB4ABF88 /* SJVideoPlayerClipsParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 46C824C75366318E5288BBF888AD5FB2 /* SJVideoPlayerClipsParameters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A9FAA5BD20B70FCB5966FD24C6152F4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D4B3116B97A0CA72775221FF48D017A /* SDImageFrame.m */; }; - 3B01BA3DBFB639ECC900A847CD54F34D /* SJAVMediaPlayerLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B7D63C51D6A80D9A196F0523329B84 /* SJAVMediaPlayerLoader.m */; }; - 3B202DB775F482F8C829FEBD7B83C154 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB17780062FA736988A65845A007BC5 /* SDWebImageDownloaderDecryptor.m */; }; - 3BAD4366F30D1AF1FF59F3DFEA60C13E /* MCSDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 88685A005FD6DDBF2211983DC3D92A82 /* MCSDatabase.m */; }; - 3BF7F2A6F6943D4C17D203652CDA334D /* SJEdgeControlButtonItemView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E9A9C22E03571208664EA009CF0CB2B /* SJEdgeControlButtonItemView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3C10470A7EB37A1175C3B34A92F2B06E /* SJSQLite3TableInfoCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A4054EA7AB619E7D79D30D8EA4E451C2 /* SJSQLite3TableInfoCache.m */; }; - 3C568679FD5989CE21DA53AD7A7A6656 /* SJUTAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 446EEA38EACED61AE17EA0A98522BA31 /* SJUTAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3CC34DDC8DD23B65974D7BD8C4D87922 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = CEBCA422E38F38F664A5F5BB55ECDC02 /* MJRefreshComponent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3D090A9287B5B8FB7DFD3C312C154852 /* SJBaseVideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = FF0C0FA761AE48A563964FD6B64DB011 /* SJBaseVideoPlayer.m */; }; - 3D2FEFBFF5B0E97FB3648C24FB791766 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0354BE69712F9FD299E25A0DE35F8F9A /* UIButton+WebCache.m */; }; - 3D3A3C987D8C52F46EF9D8AF40F0068E /* SJControlLayerAppearManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = AD7DF0A2721A8C7E652671511C276672 /* SJControlLayerAppearManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3D7524BFCC98ECEE8CBAC07A6F2F6831 /* SJMakeView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59E8A59D96FCEDD5B9BE6E1E38408F2C /* SJMakeView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3DA7733E3D68808BAC2DC215FF617DA3 /* SJPlaybackRecordSaveHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = BDEA67717E76B4E870E5D63F2618293A /* SJPlaybackRecordSaveHandler.m */; }; - 3DA9427AF38AE205761D1D5222EB91C0 /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4947858B07C21E6711BF11360156ED38 /* SDGraphicsImageRenderer.m */; }; - 3DE661F9832541383EA21AF47C21D5A6 /* SJAttributeWorker.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BA4C8CA905F7A3FCDCA49049392CDA1 /* SJAttributeWorker.m */; }; - 3F07986735E56F307773EE2A0E748905 /* HTTPMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 124779B8192089BA31CA8E1E41361249 /* HTTPMessage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F1E9F9BA7296182CF3FC5670F954A78 /* SJUIMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 19FEE760FB04EB57125FC4138579A486 /* SJUIMaker.m */; }; - 3F5298DA39C4E097C4922513DF439E95 /* SJMediaPlaybackController.h in Headers */ = {isa = PBXBuildFile; fileRef = 254D09E17D9229A90BAACE8231240B24 /* SJMediaPlaybackController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F89AA5B009BC5D12DFD4A2C6F2C2FEF /* MCSDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = 62DB00B0CAE84DF3F350EC3035541DDD /* MCSDownload.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FA77B2942212AF3C88FC3A297EDC4DA /* AVAsset+SJAVMediaExport.m in Sources */ = {isa = PBXBuildFile; fileRef = 423A23C008456522CE96850DC6D9147C /* AVAsset+SJAVMediaExport.m */; }; - 3FEC4DFD0D84B148C547217B59D7781C /* SJBaseVideoPlayerResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = B8008B8E257C51676DF6BA11AC779D21 /* SJBaseVideoPlayerResourceLoader.m */; }; - 4022B4C05B459EE36BD5A330A58B7A3E /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 52A98E5128993AA3DF10963CD124C979 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4048B1AE8170FB5DE827B68999C817FB /* SJUTUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 15E1591DA337D219AFA0E3DAD4DA5344 /* SJUTUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4078FBBBDF7360C6D5CE6BA017897B16 /* MCSDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 3641097E8A78FCE467574CE6A017FDF3 /* MCSDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 41003744249CBBD3210B4FB0374D0C1F /* MCSQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = ED75555ECE3DBF739232D47E4EDA98B3 /* MCSQueue.m */; }; - 410269919AFAEDD68A3EA4479C626E2C /* HLSPrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE6245A7CEF0A0621AE4E12648D9B74 /* HLSPrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 41200422B6A7BD54487A395FC4A98452 /* NSFileManager+MCS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0715D640583BBA7271BAFA9B21207EA2 /* NSFileManager+MCS.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 41C11CDE100E8B0D99A8F623B423E619 /* HTTPRedirectResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = F835836E07A0C7594F495FDD49D7C296 /* HTTPRedirectResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 428323F5F727A7745DB9A0B99AF770B9 /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 595607877C699E01610AD8F9260C072A /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42947699890A199B08A896144A878D80 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = B1BE88798111F0CBE4D6CAD163724B1B /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42B7AAA61537A6CD0BF0CCB76541E5BF /* SJMoreSettingControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AE1C7E3CE66F58F5A14E8935EAED63A /* SJMoreSettingControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 432DA7C9293573B3C5B6F8B5A28D15F0 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C88E0918856389B8BF071F10147E8727 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4335D8F0960FEDF851FAC75B0CC04B1D /* SJVideoPlayerClipsConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E50A8C76370804B7BC47E3FC78C9872 /* SJVideoPlayerClipsConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4385E4A800CE5B7702552BB08455C816 /* SJSQLite3.m in Sources */ = {isa = PBXBuildFile; fileRef = A050446BD9F8EA24906B963FE3319925 /* SJSQLite3.m */; }; - 43D5DF11231CC10A157F20217A4B4341 /* SJVideoPlayerRegistrar.m in Sources */ = {isa = PBXBuildFile; fileRef = 25928B0F9D432F2FCB96986DC2A298B6 /* SJVideoPlayerRegistrar.m */; }; - 43D66F4E2DF75F408FFEA335436C8B4C /* MCSAssetExporterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BB4BBF24468A1C878D7312C83E593BB /* MCSAssetExporterManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 446F9E8C1FF9D0E5B5679FF2CA418898 /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B7220462914E7A000A0B352185527A06 /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 44A3B1A5D2C513F8FD238E3B64E4C6CF /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B2E6A5F8443EF285015920B4C0DAA0B9 /* NSLayoutConstraint+MASDebugAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 44C8DEEE4C2383275CB675F29D45C761 /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7ADB7B7D47617E21D17C4F9B722315 /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 44CBF3C604C09D5CF82A9688C83B35FD /* SJVideoDefinitionSwitchingInfo+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 61E93D53929723D56F0B391AB315F8E9 /* SJVideoDefinitionSwitchingInfo+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 44D525F0D227346B2BE578C2BEEF8709 /* HLSAsset.m in Sources */ = {isa = PBXBuildFile; fileRef = BD5D9CA89EC8B7000A0E6A4015253E9C /* HLSAsset.m */; }; - 454308F281F806DEB35D19FAD2B02B9E /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1C25BFC7B60D8E2A0ADC8308363D36 /* SDWebImageOperation.m */; }; - 45AC3673C22BEB91A1E01CAA17B2D37A /* MCSQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DD80D2B81E957EC08C271B2008A6709 /* MCSQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 45B725D59EEA0992270B943C42E3FA17 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = 5819094964959B3103EF6857C62CB645 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 45DD394F1201A9D63BD47B93BDD6989C /* SJTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 41D7B71FF250EC03901FFED103732ABE /* SJTaskQueue.m */; }; - 45ED7DCE41AAA302468872F4B5131328 /* UIViewController+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = C709A6F22DB4CCD150E48276A147D8AB /* UIViewController+SJBaseVideoPlayerExtended.m */; }; - 46692A2E77157B00827182C8DC686F72 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 47788FFD89498C90A203AA80D9942DCA /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 466A9538550DB913B747528B69C04A8E /* SJTimerControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B2002E1E221F8F47A1355596E2F58E7A /* SJTimerControl.m */; }; - 4670045ED9E12409423D29E8C8BB46C2 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = DB90184640F959245C0E031EA239C96B /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4726D6AC0432C8CCD3D0F4214F3E61B8 /* HTTPConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 21940795A3E8F2B93ED8CA5D6FFE812F /* HTTPConnection.m */; }; - 472BDF20693240A7BBC7279CA137A73E /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3FC2C300DFD25419CACAF269427731 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 474A40751BE4F08C1A61430E45BFD16A /* SJSQLiteTableModelConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CA0D17A981E18F105B4F44721EAE8D0 /* SJSQLiteTableModelConstraints.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 47948B0FA1D66D170049BDFF4F42F543 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = FCE5C709A9190D84FB2129CF03725E0D /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 47EBA2DC63866F97931321F21F66B19F /* SJControlLayerSwitcher.m in Sources */ = {isa = PBXBuildFile; fileRef = FCDE97EDBFD7DF62B0B9622B2F3EA8A6 /* SJControlLayerSwitcher.m */; }; - 47EF92B3DCA4EE23737A9B33CAF778E7 /* UISearchBar+AsyncLoad.m in Sources */ = {isa = PBXBuildFile; fileRef = 9646597F4DF9F850F0F0273DFF2DD73E /* UISearchBar+AsyncLoad.m */; }; - 4810AEBF932187A3F1A94DFB6E028CB9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7259BA5D7008F925077F5C1A0D45D681 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 48E5BC51518D658CFD845D6A70940CB5 /* SJEdgeControlLayerAdapters.h in Headers */ = {isa = PBXBuildFile; fileRef = EFD7D4387694049AF38DA990C80643D2 /* SJEdgeControlLayerAdapters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4920B06392E29A66FA93FFBC03131536 /* SJVideoPlayerURLAsset.m in Sources */ = {isa = PBXBuildFile; fileRef = AD0D35EEB9E25AE303FBCD6EAD2EE82D /* SJVideoPlayerURLAsset.m */; }; - 4954558A9DC59E0EC7ED0446F288F492 /* SJClipsResultsControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AC07D35EEE7B113C647489113B845E5 /* SJClipsResultsControlLayer.m */; }; - 498B9F0F7350DE7E1A2346F69939E416 /* SJClipsSaveResultToAlbumHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C2804A441641BF6CE4F8A86D8B096F0 /* SJClipsSaveResultToAlbumHandler.m */; }; - 49AAD6DB9D408D4185C6E1ADFD030A86 /* UILabel+AsyncLoad.m in Sources */ = {isa = PBXBuildFile; fileRef = DC9C3859D2739FC120237FF8C01DABB5 /* UILabel+AsyncLoad.m */; }; - 49ABC48273FA0DAD67A1499AD65AAC1D /* SJViewControllerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E7D1E3701CBD75BF3C47850F6ECE70 /* SJViewControllerManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 49DACA1321C25806C42AA0FCCE75DEEA /* SJApplicationInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 00E115F4BD8D7320CDD559CFCED2EE5B /* SJApplicationInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4A5795A14A25228C15AB2826A01B3683 /* SJStatusBarManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 79689F37A5CF6A89FC2DB99C594AE867 /* SJStatusBarManager.m */; }; - 4A902A0B2167B7EFF593834F41B2EC0C /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BA23D0D59E61B9D05F724343621C6D0E /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4BA5BB5F687E579346F7C44661D98830 /* UIScrollView+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = A9097D398AABEAB3E0D1AA8612D4A2CC /* UIScrollView+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4BEF019A810DD9AA1409ED08C9DDB234 /* SJVideoDefinitionSwitchingInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E32CA41D536F40425F0069CAC1D2C35 /* SJVideoDefinitionSwitchingInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C2D35EE6BA6CF4D76332D32E17DEA57 /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 274614174FF74BCDAA35C36358AAAA28 /* MJRefreshGifHeader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4C3912D9D711FFA2E8310EC6AD47EE62 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5C39A9808E3DBA0E030961BF6EA188 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C398195C01DFFBCC2DF959872387ADF /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D5B0EEA6D883D4649CD796EF75FC22 /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C41A83EA4D972DD11CF266A7C24C8C7 /* MCSContents.h in Headers */ = {isa = PBXBuildFile; fileRef = E84AB23B1E40E8B79EA02BB89B24B902 /* MCSContents.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C512C9252B6EC8D2A9EFFDBAD8BA0B7 /* SJFitOnScreenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE3D0911B4390B1712FF728BA12C647 /* SJFitOnScreenManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4CE091F886EC6324673EFE0AEBBEA0FE /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AE013FC8992535CD4EDD1FE30ACA8D3C /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4DE2029DE3C94D112B435DEC365560C3 /* SJSQLite3TableInfoCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C466BD98DF99C6115D7708EB1E1D340 /* SJSQLite3TableInfoCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4E2E631DAE70D9ADC5E05F1747055785 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = C6DEA52011B5A5BE5BF8BC292D60E4B4 /* SDDisplayLink.m */; }; - 4EA938016CFC7FB41C4E996CB870653E /* SJButtonProgressSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 727FB18E52B98BCC1F886145DE2AD0D6 /* SJButtonProgressSlider.m */; }; - 4EDBB4AAEEF26534BCF67340B60B9DC8 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = AA245BD8755BF42C2DF0045BB29D90FB /* SDDeviceHelper.m */; }; - 4F0E56955B26B91630EC5459ED9AF3E6 /* DDNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = C9ABD9B8718153A189B30850D3BC1E18 /* DDNumber.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4FC3021B4E753BC76A6250777B1C11D8 /* SJEdgeControlButtonItemAdapterLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 4007443FF668DEC10590A3C299A6B003 /* SJEdgeControlButtonItemAdapterLayout.m */; }; - 4FD00D158BCA3ADC1FB00203AB17D9E1 /* SJVideoPlayerPresentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 727F06A72DB64D29459AC2CB23D556B2 /* SJVideoPlayerPresentView.m */; }; - 4FEADC12360A46C758E9078C511EC7AB /* SJVideoPlayerURLAsset+SJControlAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E06013AFE67C792673E399D6AA244C9 /* SJVideoPlayerURLAsset+SJControlAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4FF84162478A9B9A909EF86F211AD2A2 /* SJBaseTableViewHeaderFooterView.h in Headers */ = {isa = PBXBuildFile; fileRef = E6E451878DCA37FDBABA8A55E43BBD3E /* SJBaseTableViewHeaderFooterView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 502B204A49050B3CB8137193D29AE7A9 /* SJUTUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 6443014553B16DA9CB936744B82B9B3B /* SJUTUtils.m */; }; - 505087BB5B447723AF879D4F597A64B2 /* SJPlaybackRecordSaveHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEC95E7E4DA772B43DED3A9C8C9D2B7 /* SJPlaybackRecordSaveHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50591EE07176278C669DCEFB2A46C37C /* CALayer+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 918F2ADA4548FBA7B859AAC4FCE61D54 /* CALayer+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50BA43C8B4C7278FA449490F5ACEA40C /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = F0E10F0F7F28E16DBCCDDE76651B5E86 /* SDmetamacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 511B2B2E911994B978C25D5FA3CD524B /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F92F2CEBB6A711D2536296D346B92D4 /* SDWebImageDefine.m */; }; - 511FE0D1E593231D408038E0282705D8 /* SJSQLite3+FoundationExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = AD1BAC557A4598D0856FD9B642C60651 /* SJSQLite3+FoundationExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 51D602B300D3E93CE734FF4B0FDF0994 /* NSFileHandle+MCS.h in Headers */ = {isa = PBXBuildFile; fileRef = CA3B5AA51D8652925F88F7DEEA6BD494 /* NSFileHandle+MCS.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 520E3AE7CF626545A442A4FEE682DC0F /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 1325DBC8D4CCAD854E72BF24D1EB0530 /* MJRefreshNormalHeader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 52184A8F4F60EFB6A6128AA795F3C4B5 /* UIScrollView+ListViewAutoplaySJAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 12CA954C09180751F50E4902ADAA5627 /* UIScrollView+ListViewAutoplaySJAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 524EC230FADED61858596FD2F4EAC57A /* SJPromptPopupController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C1A64733F20770F31EC31F6D89C34CC /* SJPromptPopupController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 531CED553EC8E1F9CD4C6A33C20AAF06 /* SJBaseProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = E55058F9A47D7D11231197776451D4EE /* SJBaseProtocols.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 533ED7D6775F2D9A028468BDFD5FFDE8 /* SJBarrageQueueController.m in Sources */ = {isa = PBXBuildFile; fileRef = A83B0AFF3CD9F7C156207C6BB518C6CE /* SJBarrageQueueController.m */; }; - 5376CD57545524F6266E36C055A7C0BD /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = C8F370FD117F2B84206D33710DD33CFD /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 53D5A906B201B5F4A53C894D88FF09FC /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D385B183460A47CC5B3378C8CFCCE8B /* SDWebImage-dummy.m */; }; - 53F80EABDB1A385F25DFA6710C51B600 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C893E79895620E54E2D8EB898BCAF22 /* UIImage+Transform.m */; }; - 5455473EC3F5B511B2A7F43ECBB242AD /* SJTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CCAB306467B0C32EFFB6F0C73B830573 /* SJTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 545C10255BC234459E35DA3B50FA29D2 /* UIColor+SJPageMenuBarExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = DFEE41876F3F9F2A5F2DB9883159B904 /* UIColor+SJPageMenuBarExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54EC772A8A739E61B1723C43623C967D /* YYModel.h in Headers */ = {isa = PBXBuildFile; fileRef = E4FF71E5CA80528882C87C59F23F19A9 /* YYModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54FDBB3ABC7A8FD2DBF4EF0643F77298 /* SJVideoPlayerURLAsset+SJControlAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = D0253F24C0C0FAB8E507421CB162D2C6 /* SJVideoPlayerURLAsset+SJControlAdd.m */; }; - 55371E0911F21A2F708C6A746DE8C708 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 070166A4276093BB4D882D923D8EF4EB /* SDImageAWebPCoder.m */; }; - 55E87B749F8B4611BBB0EDD16174DF2E /* SJFlipTransitionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BFC72DD279E29F75761B74EE4AD91535 /* SJFlipTransitionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55FB4F55951E079FD38687CECDACD6BB /* SJSQLite3+TableExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = E79CC6C95EDB8D2D558EB4B31142BFB1 /* SJSQLite3+TableExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 560C538E75AC30D848A2AA154ACE9092 /* SJWatermarkViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 632AFE289709A58345A6C401D3BE4039 /* SJWatermarkViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 564596CD8324F298A2CD25C99785177D /* SJPlayModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E65CBD93BBCF1B30961612388455C464 /* SJPlayModel.m */; }; - 566F3A316DC9434BFBAA25333E529E63 /* SJVideoDefinitionSwitchingInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6104EC9A6F4C98EA3BAEEC28EAB151 /* SJVideoDefinitionSwitchingInfo.m */; }; - 5672C566E61B5A2ED572F143D71B4399 /* SJClipsResultShareItem.m in Sources */ = {isa = PBXBuildFile; fileRef = D7EE22B61151054A1453DEE032661281 /* SJClipsResultShareItem.m */; }; - 56A6F13FF368226A1B5AA8B821AC4B6E /* SJDeviceVolumeAndBrightnessManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FAD1D167CCE9EF065317A85C9D578A2 /* SJDeviceVolumeAndBrightnessManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 57C4D41F54D6327C63C4508AF1CF989D /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C1BD6D92E12294E546ACC3C7D3665AB /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 581861EB51E9D350E758698C11C2D52E /* HLSAssetContentReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D9E79BB430A332E8B949F1F233DFF1B /* HLSAssetContentReader.m */; }; - 58A8084F0B525B5F00655FCD63877483 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 30543B3AC628D48A00E49E7164F7A78D /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 58D7D1FA4B8ED54DA4497F67808A1351 /* MCSAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AAA30465B69981C2EF2DC8DBB22A187D /* MCSAssetManager.m */; }; - 58F4C5FFF7F1ADBD86EF4D72D10060F9 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 4561D0BCC7AF543BE2D7932646F1760B /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5938E9D9A7E09FC96186D2651278B68C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 75900AD5FB7E5FEFA499BB969F21F59C /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5952CB617894CECACD8DD758F35DAD6B /* HTTPMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 29219778F980B4BF94048D0AA1352AFC /* HTTPMessage.m */; }; - 5955665734C07476B22F9B19372C879D /* SJBaseCollectionViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF57889CF7522F73517AE58A2C8AF40 /* SJBaseCollectionViewCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 599AEB5E944F8E4CD7AD7766DBC5B9AD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 60F8C08E919561DBBDDE91381293AD2D /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59A93D98CFF71783838E5D3E7E13391B /* HTTPDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AC76170A9E577FA21B7AA90CE786E66 /* HTTPDataResponse.m */; }; - 59B7211AC45E79616B74BB50A1992CC9 /* SJUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = CF4D537D00093CFE837E4287C7717F5E /* SJUIKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59F8079C583C5885A0EE149BC6218E09 /* MultipartMessageHeaderField.h in Headers */ = {isa = PBXBuildFile; fileRef = FD28C72505B73AE895B439180E4212F3 /* MultipartMessageHeaderField.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5AC5B35F7A1F8D81E38D71BA2C5BFBC4 /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E634C9226C2C52DEE1DC414A0DFB4220 /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5B39472857719E62639FDA563195AAC9 /* HTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 17DE82202D4726202916843449CB4976 /* HTTPServer.m */; }; - 5B925C01C24E119AB6B392CF5E7B42EA /* SJProgressSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 78410545552116E1184980863D3DBD98 /* SJProgressSlider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5C37A8E8778A0A2CFBB8710F79A85286 /* MCSAssetContent.m in Sources */ = {isa = PBXBuildFile; fileRef = C36854FC37D08E860DABC7FC72498F79 /* MCSAssetContent.m */; }; - 5C5C77BBF83B793B82713296519751DA /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AA0B7FAFB7D167BBBD4C8CA8089E68E7 /* ViewController+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5C7CE066A8C3006E646ED51FA8ABFBB0 /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = F0C41815A28D9D182C18B92C97C26C3A /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5CB41A59A4D3FA5BC111747983E0AE46 /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AC03F3A359105D0C74A628102A1C9E8 /* SDImageGraphics.m */; }; - 5D036314D5D5FA4A68CBBB406580879B /* SJSQLiteColumnInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B350113431B328301E06AB8622AFA0B /* SJSQLiteColumnInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D07357A2D03AED307AAA918099E2824 /* SJClipsVideoRecordsControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 70FB44CC5E8F5CE1A7ED3A7283717A82 /* SJClipsVideoRecordsControlLayer.m */; }; - 5D99006D6C33BDEC46599F810EF7F630 /* SJFloatSmallViewControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AFDD564F0094A0BAF05DFB55F22A864 /* SJFloatSmallViewControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E09F160BDC1180231FFFD4E9CEF070A /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 036AD705508BBDF5E0A821036BC33E52 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E158E376FDF57A748D2A3514A84BFD8 /* SJLoadingViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = D038BED15C69F6B4B88BFF462D3E440F /* SJLoadingViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E2500118A397A383D4018C3DF7F0583 /* GCDAsyncUdpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 66CED631CA87B4C2F76A9CA73D436E34 /* GCDAsyncUdpSocket.m */; }; - 5F861CE0A0D6AE20ED64761FC369E6E5 /* SJRouteObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C40C150B4054C45603084455C1F2ED /* SJRouteObject.m */; }; - 5FCDA6B820622A776C81B217A33FBE94 /* SJBaseCollectionReusableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B42CC36848DBFDE075B95EFECCBDF0B3 /* SJBaseCollectionReusableView.m */; }; - 604757858CD0570DA88BBFC6CBD3F97E /* SJBarrageQueueController.h in Headers */ = {isa = PBXBuildFile; fileRef = A90D07F9C4C45070DE6EC8EDD779FAFA /* SJBarrageQueueController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6070055B27A1E580E768564E001390C3 /* SJSQLite3Condition.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C8B4E10F602762593A417B7A4B00C70 /* SJSQLite3Condition.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 608320766ED3066F8080E29D8BE0E1C6 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 45F6A58D6A2A84E02F799E908AEB6457 /* SDFileAttributeHelper.m */; }; - 616C37AA929ECF35C4127245FCDA9ADF /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = AB5E9A76F4EC72DFE58A75807D0CC83F /* MJRefreshBackStateFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 61828779FFCCA85D74D918DCF55172E6 /* MCSReadwrite.h in Headers */ = {isa = PBXBuildFile; fileRef = F79C2C557E3D961D185C78E0080EB591 /* MCSReadwrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 623BB17975574316E915861C47FD4283 /* UIView+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 55064031BE0299A3D86B98F38E325BB0 /* UIView+SJBaseVideoPlayerExtended.m */; }; - 62E4E2F77141D8838A37912E46329E1A /* SJNotReachableControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CE244C613ADC3A4CBF5E71F4B26DB91 /* SJNotReachableControlLayer.m */; }; - 62EEAC51E185BB64D0C1A2E94E281F06 /* FILEAsset.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CE42A4FA342D6F2ED20362267F2A070 /* FILEAsset.m */; }; - 62FCC9A5285B56AF52BB446582B87AE7 /* SJPageViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 581DACCEDA40C80BE18A869CABE3E011 /* SJPageViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 630C7FEB7BD00317AD7EE0321A6C1DB0 /* SJReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 31B536733AE5C23D1CCE6A214A391079 /* SJReachability.m */; }; - 63146D665F80EC558B62D8D44C02804D /* SJVideoPlayerURLAsset.h in Headers */ = {isa = PBXBuildFile; fileRef = 824532C2D9FF2C7F2F036CEC1481E1A1 /* SJVideoPlayerURLAsset.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6368D0F5ED3DD6A055C7E08FA1D36C76 /* SJPageMenuBarScrollIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 662A97FD69B199EA1EFD2BF57255A1D2 /* SJPageMenuBarScrollIndicator.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 637FB9C8978EF7E6C66505C7CEBA1EFD /* SJUTRangeHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F610DC0FCA992C34A1372657CF69816C /* SJUTRangeHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 63ADA468BE2CE15145B3739B1633C2DD /* NSObject+SJObserverHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = D600FC885579116BDB13CB8416626502 /* NSObject+SJObserverHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 643C123C69B4F119D8203D3298071D26 /* MCSConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 286B00B8F38F983BE61523CDF9B30B9A /* MCSConfiguration.m */; }; - 6489D67B6BAAA348CA4616F788F5234D /* SJSQLite3Condition.m in Sources */ = {isa = PBXBuildFile; fileRef = 81EAA01DE713584867348545B2F47321 /* SJSQLite3Condition.m */; }; - 64B74BF57C2B09334DF1E98A6D80BC44 /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EF28C5B701AE7BD90B69026BF18C0B7 /* MJRefresh.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 658D3801BC1342C6535AA3C6187E8160 /* DDRange.m in Sources */ = {isa = PBXBuildFile; fileRef = EAAC26D5E47AFC671437F5A0F4E969DD /* DDRange.m */; }; - 65B8AF7B290815BAD3E5A0E300382BA1 /* SJClipsButtonContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = CAF9D4361B5E5193B568818DF8A5A541 /* SJClipsButtonContainerView.m */; }; - 65D8EE6074D8DB61D68B0D342B5D46B9 /* SJDraggingObservation.m in Sources */ = {isa = PBXBuildFile; fileRef = 57818C1BC83C0FB8D0EAB961BC4BEAC0 /* SJDraggingObservation.m */; }; - 65E64BC13B814E2C3110F99334CCF327 /* SJAppearStateObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 014B0A9FD5E5B604F44D6BD75802AC5D /* SJAppearStateObserver.m */; }; - 65E88072A2BDC576BFC85E67EF9FBBC6 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BC96F8795104F9AABB6893EBCE26CCC /* MASUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 663A158F64B9BF3E0B8929EA88AB9786 /* DDData.h in Headers */ = {isa = PBXBuildFile; fileRef = E22DE067B4419C2815B2857F8E539DFE /* DDData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 671823D453F2ECDC69913756C4E36D2D /* SJRouteRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 85544B75D3FCBAD6B8B955A75C99005D /* SJRouteRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 67DCDA03A35A44165BA0FDF15E904DFA /* SJEdgeControlButtonItemAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E31A37EE26260BA33445511C79D14D4 /* SJEdgeControlButtonItemAdapter.m */; }; - 68057DA0BFBFB102DFA4B30A76A1C8BA /* SJVideoPlayerControlMaskView.h in Headers */ = {isa = PBXBuildFile; fileRef = A5AF8DAF56E7DA13007650E986F7780C /* SJVideoPlayerControlMaskView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 68734B2FD4E55F9A95D5B416C075074A /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 32427D9180628EE0ABA520ADD2EEF27E /* MASLayoutConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 68A12B488DEA99DC1C5807A26E73CBBF /* SJTimerControl.h in Headers */ = {isa = PBXBuildFile; fileRef = FD10D68F25403431C12A445F999622E0 /* SJTimerControl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 68B6025BAF0F06DA5C6FBCFB102CFDC4 /* SJVideoPlayerClipsParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E14ED72F554BB4F9C094A079F3809CF /* SJVideoPlayerClipsParameters.m */; }; - 68D5CDFC70219CFD84B21E25B974AE4C /* SJRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C9048A59B80E267431210693DAAC86 /* SJRouter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 68E789802094AC0064F5A3B41CF54ED9 /* SJButtonProgressSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = E5646BC6E9398DFB6A748933FAAC8590 /* SJButtonProgressSlider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 68F51B1C47032D4C1E214D42B31D4336 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 3452691E390DC84D8B0BA661CBF5A8A9 /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 697B0C328BC76B30F9B6B00981217D08 /* HLSAssetContentReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E28AE61AF1C867E3372A91A8977D0E7F /* HLSAssetContentReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 69C754CBBC23A9D99FF051A2C963CD59 /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 05FD6C1E9AF3BA06CC7BFDD59F92EC20 /* UIImage+Metadata.m */; }; - 6A01711D05261C2AC2455586AD258040 /* SJDeviceVolumeAndBrightnessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D87E4C611585ED036A3D17669214DA2C /* SJDeviceVolumeAndBrightnessManager.m */; }; - 6A22FA3944743E3967A46D599F7ACBA7 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = D6C014522BC8DCBFE85BE88E0F4CFDDE /* SDWebImagePrefetcher.m */; }; - 6AE18A8F822F485A48BF53126164296C /* SJEdgeControlButtonItemAdapterLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BC4D00142FF15E6E7A038F80C2D4BA0 /* SJEdgeControlButtonItemAdapterLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6AE7D45C097EDB5DED2988D4CDEFA4B4 /* UIViewController+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A02E76ACA587EE3AFA833C54E3B090 /* UIViewController+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B0ABF3AC523EE76C5C09379BB6DAAF8 /* SJDraggingProgressPopupView.m in Sources */ = {isa = PBXBuildFile; fileRef = B572B89B17997E76D86DEF65F97E3E75 /* SJDraggingProgressPopupView.m */; }; - 6B27BE8C3E5E28F3B309307E87B99329 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 640D94371A4C03828D27C093B3E4B027 /* SDAssociatedObject.m */; }; - 6B81B723397F04FDBE60E2710404E152 /* SJEdgeControlButtonItemAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EED3B219964945EDEFA0CD9F661035E /* SJEdgeControlButtonItemAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B990DFF59699A54E9F4ADACB4DF432D /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B97FBAC1A99BB00369CA4CD71CD075C /* SDWebImageCompat.m */; }; - 6BEAA6D9564CD57BB27B0B5A47029B65 /* SJFitOnScreenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 12B90A694A0547E1744E10F64B7E9F32 /* SJFitOnScreenManager.m */; }; - 6CA709D5E7EC9AA65892512265D83F10 /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = F9E7261D8793680F386FA65B7BBDA97F /* MJRefreshAutoNormalFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6D38B2B61EFEDB1B7E66B3646D80E570 /* MultipartMessageHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0262B471253B5BB680F4E1BF702B043E /* MultipartMessageHeader.m */; }; - 6D7548D17D9D54D9128FCC702086C05C /* SJBaseVideoPlayer+TestLog.m in Sources */ = {isa = PBXBuildFile; fileRef = D658DEDDFE0E7D6CE06FDAF159A53987 /* SJBaseVideoPlayer+TestLog.m */; }; - 6DABF07646DD8D0DB53557A7815F6AAD /* HLSAssetParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 403F827743567CFD3F1A6D8FECEC9118 /* HLSAssetParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E39F2CEDC3C74CFE520AF3951CB1AF1 /* SJSQLite3+RemoveExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F3CD15871B8E41796C038153FA4CC78 /* SJSQLite3+RemoveExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6EA0AFAE6C9BA460FBA46A1262E5446D /* SJRunLoopTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = AF918B00724632A3D24030DC66D147A3 /* SJRunLoopTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6EC86A31DE9C7210CD8965CCE49A6342 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = 794BA1FDD834178E1B14119549563082 /* SDWebImageError.m */; }; - 6EF9709872AF6E15989067B74D7CC52B /* SJAttributeWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 52A0A5C0220AFFABAC2E738A86F11F40 /* SJAttributeWorker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7031CFA5FD7EC7C8E5EFAF8325D2C8ED /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = C5D14AADE1A44E61B43638CC91B29759 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 70C24DADDB5ECA03222C7B79AB90BB3F /* SJCornerMask.h in Headers */ = {isa = PBXBuildFile; fileRef = FBF0CBD94FB6E66F097385542B25DD6F /* SJCornerMask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 70DE8FEC7934D94B033BF61E38DC7632 /* MCSAssetContentReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 714048E7758AA67BFC8F2AA0B02E09C9 /* MCSAssetContentReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 710F4C96BB455FEC57554BA6EA92D6C7 /* UIScrollView+SJRefreshAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 1936E463DB375C1D52A383049C3A0FB7 /* UIScrollView+SJRefreshAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7182F988A4A92A3B2CDA65753DFE098A /* SJBarrageQueueControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 6452C15CFE7FAC999C262C6B2D4A5694 /* SJBarrageQueueControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 71E0EF9C35E7F5756C05559691BC1B26 /* MultipartMessageHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A6733D51BC7579BB89C9779A3294A35 /* MultipartMessageHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 71FA16426011D97ECAD37D60AE09899F /* SJClipsVideoCountDownView.m in Sources */ = {isa = PBXBuildFile; fileRef = E5CBD65134933DF5F54DA8FF80EBC313 /* SJClipsVideoCountDownView.m */; }; - 73BB65FD201B7AB5716CE818F49FC65E /* UIViewController+SJRotationPrivate_FixSafeArea.m in Sources */ = {isa = PBXBuildFile; fileRef = FB023066FFD290320425BB56E5448521 /* UIViewController+SJRotationPrivate_FixSafeArea.m */; }; - 73FE26D71246244AC6895D29F2C94655 /* SJFitOnScreenManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 5415FF86CEBD575DD571E29C23B94D62 /* SJFitOnScreenManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 744F4F6C286C6D979EC6239D123CC35D /* YYClassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FD20B07A302E845938F958948493019 /* YYClassInfo.m */; }; - 7476E72D69D6048345A68802E89DB8D0 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 611C324442ABE3D0A8A1510E6F0B1A4A /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 74EAE5276D0EF19E1CF97B70E9965FB4 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = B8403895F07811267DA3E105378CF6AD /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 75606E583AE329EA7FC0E29FCDD8E45B /* SJBaseVideoPlayerConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D3CB7690E496179FD04036479419436 /* SJBaseVideoPlayerConst.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 757EBD77D300E8FAF251BF89058A0063 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D84D697A647E1257202C422EC5BF23C2 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 759335CEF832A5F72222213C7AC7FFEA /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = EBC53ECC031973A232E37A8F4A2A5939 /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 75DABB1BEA4DF9EBBD70E87A989B46DF /* SJPlayModelPropertiesObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = C1763BD877967CEE14201939E0AE2D1B /* SJPlayModelPropertiesObserver.m */; }; - 75FAB700FA4A25D608E7FD349EF812EB /* NSURLRequest+MCS.m in Sources */ = {isa = PBXBuildFile; fileRef = 155BA38F7BEE983C0C89B4F405355CFD /* NSURLRequest+MCS.m */; }; - 76D0BE6C9B27AB329875EE1CDA4A13B6 /* SJClipsVideoRecordsControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE4E95023B7291C8551D3EB60D6E99E /* SJClipsVideoRecordsControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 76F902A536DF07064DFAD782000934A0 /* SJPlayerAutoplayConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = AE0C1A12FD30F5734368969C9D334F83 /* SJPlayerAutoplayConfig.m */; }; - 77D0B4900F9EBA8694450F8D47E8BCD6 /* SJEdgeControlButtonItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A9FAA6FD100021C0EB6E33D15359FA /* SJEdgeControlButtonItemView.m */; }; - 7822C7D54F27F7E8CFF2249D8C6877F6 /* SJPageMenuBarScrollIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = DB46681174303E1A7F435AC549465297 /* SJPageMenuBarScrollIndicator.m */; }; - 787AE202E71EF711783ABDEAA6D52204 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 474BC59CA485D7DFC8B9D56CD7683C60 /* SDImageAPNGCoder.m */; }; - 79D177AE72405639EE556108B0F87069 /* SJPromptDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 4005EE343940833790D50A2EFE5A32C6 /* SJPromptDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 79F0CF5B91C0B2F536D3D3BDC12C8661 /* SJSQLite3Logger.m in Sources */ = {isa = PBXBuildFile; fileRef = AB76BBD96F1A08F1882FCD504D522386 /* SJSQLite3Logger.m */; }; - 7B1D14A6F706763737D6A44718389B9F /* SJUTAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E56A1F424C8D6E8849E3A12BC3D1CDA /* SJUTAttributes.m */; }; - 7C2DC172A0FE0CBA653009762B95C2B0 /* UIImageView+AsyncLoadImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D0D6F816AE6B30D489F9825771CAA629 /* UIImageView+AsyncLoadImage.m */; }; - 7C5FA84671FC70A34C0C1434B8A3DF17 /* SJRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D612B8B2F19918B37A9EB832A291CB9 /* SJRouter.m */; }; - 7CF0CC397E6B3093CB4051B189E7A001 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = E59BCAC42A771576A49D1A091D4B70BB /* MJRefreshBackNormalFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7CF2AC7A3B3ED03B30C1E4ED662B0551 /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0096A1C86657361F8C73A7CDA6610D93 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7DF0E0E7590BAE6DC76BDDE70E44CAA6 /* SJPresentationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BF21AF03F80E16A7092400E739075E0 /* SJPresentationQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7DF87BDC386372140CF6D2D0E9E55C38 /* SJClipsCommonViewLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = EE62BEFCFA8EF039BF62352FAD7405CC /* SJClipsCommonViewLayer.m */; }; - 7E391A64600B54DEF1974DE44095D490 /* SJRouteObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9853387CE17A0788117A43C8F700034D /* SJRouteObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7E508BEEAF7B20822B0292A72352A554 /* SJClipsBackButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 3113FA59340C0F63F2A7CEC7EDDCCB15 /* SJClipsBackButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7E9C671FD3F5AC3803F0182FB47D7844 /* MCSAssetContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 059862E687856F86474FFBC16DE7A911 /* MCSAssetContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F55C70733054C2B594685848A8DED11 /* SJSQLite3.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3DEF04B15CB1CAFD4E00FED9C0FA34 /* SJSQLite3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FBE1A2B4A0A64C911A62FBBC7E2B638 /* SJAppearStateObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 168BC5A7FA90E984F1F2A86F1505A9F8 /* SJAppearStateObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8029281E5494027DEFB4E6EA78DCB8D0 /* SJPageMenuBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E916C64B0563C0CAD6E4FF346567647 /* SJPageMenuBar.m */; }; - 8077FEF10C33EC44FDD6F4C4556E93CC /* MCSAssetUsageLog.m in Sources */ = {isa = PBXBuildFile; fileRef = C6EB44D4E64707DFDCF66BFB471D0B61 /* MCSAssetUsageLog.m */; }; - 80B7FBA8291E76D74A651249A0E211FC /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F6ED404D65110CB02F5A6F663940CA1 /* SDMemoryCache.m */; }; - 810AABE4B02DBCE5EB2B0D35CE782E8C /* SJPlayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = E7552C34658825C1FE0E7CDC4D0D72F4 /* SJPlayerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8141E0F9B5099E5471DD31918E7DA7A3 /* SJVideoPlayerURLAsset+SJExtendedDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = 748117CC5D8B386423B53649A356EBE4 /* SJVideoPlayerURLAsset+SJExtendedDefinition.m */; }; - 81569E5DD0825CC4843F681671100572 /* NSObject+SJAsyncLoad.h in Headers */ = {isa = PBXBuildFile; fileRef = F1E1731527E490F0DF4380DC3A4269AA /* NSObject+SJAsyncLoad.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8192D9219478BF888D410C486F40C20C /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 61F3081C514FFF1C018C0F0CE9250506 /* MJRefreshAutoFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 81F811A56B6724F7E8E2D25364E595E3 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B46B408EE59F98E109FFBC2F5BDE355B /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82D8207DEF104392D2661BA6EBCF42FF /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 669EA9AAD729B17BE354561A8E6A6F8C /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8336DC143B2876D0AC6BCE0434B68A61 /* SJUTRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 82EC894487A2A2F9A5507ED8FDF81AB0 /* SJUTRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8385EA1E9A6EBC7120147A8E8128264B /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = A85AF5C4D19F0A17BE9821B57E46A220 /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84401147C86C9D1AF7F7BF7F9A33B13E /* SJSubtitlesPromptControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F8925415F5CA27384EB12021384B32 /* SJSubtitlesPromptControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8441782F1695B0B6EC990356DD6A5457 /* SJSQLiteObjectInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 99229577C2DF4DD77CDF6C978AB586A8 /* SJSQLiteObjectInfo.m */; }; - 8487E616E339280CA226EFA20E1095A4 /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 9554E26AF2A9EC4FBF74C7D4DC2F7599 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84AAFB010BDB1A8961CABD87F1BCD930 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C3CAE22738B7067A16E205C3E833231 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84AEDD63C840C8013B3F597CD75D77CA /* SJAVPictureInPictureController.h in Headers */ = {isa = PBXBuildFile; fileRef = 649CAB588C92ED4A60753F5A8622BD0C /* SJAVPictureInPictureController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84B5B0999716CEB7E1AC8159EF819B88 /* SJQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 369DCD12354EB8D32B2861F19DA188FF /* SJQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84CD575C4194CE074DC9DAF2032AE7BE /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = F24BA80B774C1780AEFD6CF896D177F8 /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 853E91715C5A9AC7CABB0F6E8CDF9A3C /* SJClipsSaveResultToAlbumHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = B8E7871B8BAE5A1A1A0C807BFB361231 /* SJClipsSaveResultToAlbumHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 85917DC4ABE5374143AF063BB9118122 /* MCSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 50FED1D354E634327716E8954642DF13 /* MCSLogger.m */; }; - 85FE274A78DA448511CEA99B586939AD /* SJPresentationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = E4DA2B3045349477790AF7CEB8D643D5 /* SJPresentationQueue.m */; }; - 867CCA0AA1329AAA571E4041265F13CD /* SJAVMediaPlaybackController.h in Headers */ = {isa = PBXBuildFile; fileRef = 003CFACA1FC996C625966F930B4D2F89 /* SJAVMediaPlaybackController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 86AAD98E9EDA89718E2EC8454FD88DB4 /* NSString+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 3411F81777FF74984A109E5EEF10C857 /* NSString+SJBaseVideoPlayerExtended.m */; }; - 876A9AC0946D4D44504799427257AE1A /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = AF2344BB1C2E2338A85466E58BA107F1 /* UIView+MJExtension.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 876E62F3B520CE6A27CE8647E68CEA43 /* SJPlayModelPropertiesObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = C29F3A1666B4FF15FAC165CAD8DE1CA8 /* SJPlayModelPropertiesObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 87717516C6E242D6111A83CBB4AD965B /* YYModel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D026338B8715B34F9A1A464CCB0FCD7A /* YYModel-dummy.m */; }; - 87D646C0F9FA479D00CE3CF5AA5384B3 /* HLSAssetReader.m in Sources */ = {isa = PBXBuildFile; fileRef = D759FC719C17D96C649DA84ED5860481 /* HLSAssetReader.m */; }; - 8862233C31F6E4E898D1D33D5CD903CB /* SJRouteInterceptor.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E2FF310C032ED137B935B7FC8B4330 /* SJRouteInterceptor.m */; }; - 8873318816BA72F6741575101E22E55E /* DDNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = E3A0F89B3617EC017786DED5F77F572E /* DDNumber.m */; }; - 887DF2720945D8414418316B396F6071 /* SJSQLiteErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = F96B78C14D2B5624F6C7C785C4641FB0 /* SJSQLiteErrors.m */; }; - 88EC2492778A65D49A56165E5DE416FF /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = AAF782D2946C9056CA07FFCDA64DACEB /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 890323D7351A5635E8B2DFF8FCE479F5 /* SJDeviceVolumeAndBrightnessManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 774EE19CE764EBE2DDE6D0AC5703F493 /* SJDeviceVolumeAndBrightnessManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89C1F499F9E569E9F9CB7B9812F86EEB /* SJBaseCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C54B6407F10EABFDB20A94DBAF52B2B /* SJBaseCollectionViewCell.m */; }; - 89E1E3B47684CF4A5C8DE85B412BB07A /* FILEAsset.h in Headers */ = {isa = PBXBuildFile; fileRef = A0CA1B6EF742025C3A52915BCFC98BDD /* FILEAsset.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89E796A479F9BFBAAD8FBFDE5D92200C /* UIViewController+SJRotationPrivate_FixSafeArea.h in Headers */ = {isa = PBXBuildFile; fileRef = 49D7F9648A76EE8E51E553D2ECAE72BB /* UIViewController+SJRotationPrivate_FixSafeArea.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8AA05F5215FDE6D93D464397D49A72A2 /* SJVideoPlayerResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CD32B773C6ED156D956B9AA03A8EE86 /* SJVideoPlayerResourceLoader.m */; }; - 8AE193AD518D868F8A380BFBA29EE940 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 11AF08AEB2B51075485C049711A0CA56 /* SDImageIOCoder.m */; }; - 8B33DADE30399502DD6FA9D92DBBCB86 /* SJVideoPlayerRegistrar.h in Headers */ = {isa = PBXBuildFile; fileRef = 05165E3B61A6AC4ACB8E359ADDFAF3A9 /* SJVideoPlayerRegistrar.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8BF3690590614826A27CB5D1DAF42621 /* SJAsyncLoad.h in Headers */ = {isa = PBXBuildFile; fileRef = E6403DFC0F53A5077D7572BB323B296D /* SJAsyncLoad.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C5F86FD10853214C02B84808A04C395 /* SJSQLite3+FoundationExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 8348B0C55ED6C914685D26F0723A8207 /* SJSQLite3+FoundationExtended.m */; }; - 8C83B2D0F147E9528B99F430D873385B /* HLSAssetDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 2338CE541EF0E31053F74D487B439369 /* HLSAssetDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C8C4B776FB3E101D6922277B283171E /* SJPictureInPictureControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BD0D4E3498989281E2B345E338236B7 /* SJPictureInPictureControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8CB39B392ABF658314F209F7EC25352E /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 696BAF6D2B90F94F13F036F40F771478 /* SDImageLoadersManager.m */; }; - 8D90F3A0C027A34BE56D82B97858360D /* SJClipsCommonViewLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = C62EDB7CFD26DE1622FEE087F7181150 /* SJClipsCommonViewLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8DFB1356515A02DE288202D3DBEF1209 /* SJRotationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 71503EB67F2400159C69A9ED726E59A0 /* SJRotationManager.m */; }; - 8E0B84E5E836C76A29201716700D0499 /* SJPlaybackRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F108A06125024AD23CBECDE0E11790F /* SJPlaybackRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E2078624D04C62E1883B5B706654111 /* SJResidentThread.m in Sources */ = {isa = PBXBuildFile; fileRef = FD1CD037CC380F11B824691BC3BBC535 /* SJResidentThread.m */; }; - 8E27EC136C6FBA3867CE73898926070E /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D1EF0384C2FBC87D01646A5267157E /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E541449D6C7A0B5D49719347726A284 /* SJUTRangeHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 69A61C8C8A82A510D2860323E8C883BB /* SJUTRangeHandler.m */; }; - 8E647828E4C169D55AAC86DB40DFF31C /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = EB8D410FCA0272B802042B0C97F2CBCA /* SDAnimatedImageView+WebCache.m */; }; - 8ED195FD73C43CFA427EE17C7ABDF31A /* SJAVMediaPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC16F52C9EAF78A8E60C38AFDDB8669 /* SJAVMediaPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8EEBBC586CE088BDEAA11357111221AD /* SJMediaCacheServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F4A28DF515B343546414853C796B28F2 /* SJMediaCacheServer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F8E582D91720BB121991E168D116D15 /* SJControlLayerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 913302C2FA39148ADA681DE449BFF28D /* SJControlLayerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F9A973937EC315FD0B54962AC8CB5B9 /* UIScrollView+ListViewAutoplaySJAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 19AB9122BE353834805FC95E8F570CE0 /* UIScrollView+ListViewAutoplaySJAdd.m */; }; - 903F6965B9FE8ABFC74C23A6A8F03C10 /* SJBaseVideoPlayer+TestLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 4885EF421AD6AE00BF0E6CF9260BC937 /* SJBaseVideoPlayer+TestLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 90721AA6D93B1D8C7F96A7C8152A284D /* SJPlaybackObservation.m in Sources */ = {isa = PBXBuildFile; fileRef = DD35D5B4D1B5350A9A4894B8B0185A35 /* SJPlaybackObservation.m */; }; - 9190EFE6D38E12D26CB9BC5C3A7AE8EA /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DF4680805E85AABD2A4EC9290BE686D /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9194B58ACE900ED6BAE6AD92E24A2CFF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = B1FD07D2AA5B91C9591B71770AEF06BB /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 925CA4624FBA70F8DDFAD2C110DA1138 /* SJVideoPlayerLocalizedStringKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 4565924477651BCEE1243CDC8CE7F238 /* SJVideoPlayerLocalizedStringKeys.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92AEA5349D5D643F79A09D41F54587BF /* MCSURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 94679E79D829B7FD6DD0960E95D6196E /* MCSURL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92BF70E9D3285561EB404A7C4A4A6DEE /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 12840B35E73A76B99955960B035AEFC4 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92DE532935439B95296EA2902C1DD138 /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B0CBAC88DCB985B4C100C5370F9B643B /* MJRefresh-dummy.m */; }; - 92E4B15C6FF94A4FAA4A17621199703B /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CCD09A2C32E295659A3875670E65EBD /* SDImageTransformer.m */; }; - 93147163DFC9AD7D994B83BB638828B9 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AB2FC1D65492DDC9AD3A07670DFB84A /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 94A07AE8B46953F214F9350BD26144AC /* HTTPLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = CCF3B211701FA0C5E40980C3219709F8 /* HTTPLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 94C4AAA8B2B7E787FB98CAED1423660F /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = F494805241F221238B557778563DD740 /* MJRefreshStateHeader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 97B5884A8809D90F4AE9BE560D0D3A24 /* SJPageMenuItemView.h in Headers */ = {isa = PBXBuildFile; fileRef = 73B21AF491F2929D827C4477DD89F622 /* SJPageMenuItemView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9881C8FF40D8F62F2B371FB262AA00FD /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 255E1E694C5A89C3F97CB6CC514F692A /* SDWeakProxy.m */; }; - 98ADD25404DD9CE429BA584C45B12B11 /* HTTPDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 0684D36A6E3AA23CB54EB1E5EC8FCAF2 /* HTTPDataResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 998389497E9FD2964EB1277B4831AFF8 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F3281CCC32D50DF58F8AC0D2F791BB4C /* UIImageView+WebCache.m */; }; - 99CCAB3C416A0912B4E1AFF19BB0592C /* SJUIKitAttributesDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = DF21D93DAE55278A7F01716A00EBA719 /* SJUIKitAttributesDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9AE577F4D80841EB713F7E2DC0F61686 /* SJClipsResultShareItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD15C29EEAF6A3BBDCA415CF4C2F24F /* SJClipsResultShareItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B12F156E1BEB77000D4E23081EC1F29 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 16CFED6E36C78399540850E30625CFA6 /* SDImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B369AAD43832AEDBBDA8A0DF0856B4C /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = AB67F2E4A3AD486FB2ED48724C4C7C0A /* MASCompositeConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9B36EF7583EDEEFC684944DC2A86EE9D /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = B4497100A41EAC9FDDD470D15800E2CC /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B5EB326C9EB4A92B071789916255037 /* SJFullscreenModeStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 2608F2C6511AB60E8C605B529BD685EF /* SJFullscreenModeStatusBar.m */; }; - 9B6BF79A0FAFC2F411BC2D26B5FAE4B6 /* SJPlayerGestureControlDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 06896347C383BCAA151C113068E31848 /* SJPlayerGestureControlDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B82B170C663C44EB3595CD7B0551472 /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C7FC6C2563CA16A5F15DB1B070F322E1 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B8365733D88EDAC8AAB34412130B375 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 67F1FF78E9714D9BF165E43B22ED8788 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C53BCA337AD9005DDB5EED0F28C3303 /* SJVideoPlayerConfigurations.h in Headers */ = {isa = PBXBuildFile; fileRef = D971A07322B9048E4BCEDBAC83800EAD /* SJVideoPlayerConfigurations.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C9CDC354C1E5B46B76E26BC4A652131 /* SJBaseVideoPlayer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F169F9CAA943E3F5B57576928CBD890 /* SJBaseVideoPlayer-dummy.m */; }; - 9CE09872330AB15CF31B56B00624CE7C /* FILEAssetContentProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = A56698AC9E049EED42E6D240BA616D7B /* FILEAssetContentProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9CE7A55B676394F2DB1542325B9E50CE /* MCSContents.m in Sources */ = {isa = PBXBuildFile; fileRef = E78F872AE11C12AF729FA9E877F45094 /* MCSContents.m */; }; - 9D5B7A2D161D6078DA4EB07849DDD72E /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = C8CC50B40F3AE8BF712478DEE455A533 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9D5BA5AC8764DA4ED09ABB3D272EEB22 /* YYClassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F92D809EB47FA6E52DD57A1C67497D4 /* YYClassInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9D60507CF06646290DC6CBA270EF7598 /* HTTPAuthenticationRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 733C8AE0E4870F0410E71BE6E0A2DE69 /* HTTPAuthenticationRequest.m */; }; - 9DBBCF4AD4407CAF5452C573CBCE1EEC /* SJPlayModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6707E7ABA6C90AEFB9CE5E394B1C0177 /* SJPlayModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9DFA2CC1D5727AE6DF276A1AB6464E1D /* SJVideoPlayerControlLayerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 367CCF62D97AE14378B92126C56326F4 /* SJVideoPlayerControlLayerProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E3D347A11FFDDD63CE43296A1465A3F /* SJPrompt.h in Headers */ = {isa = PBXBuildFile; fileRef = F1FFFBC9BE4BBE52952C5975DBDB201C /* SJPrompt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E8A47E20D25A408DD4C1E9EB9FB017A /* SJPlaybackListControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 55DA3778AB82C39EAAF9FA60FC1D02B6 /* SJPlaybackListControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9EBFFDCA92EECEDB3A1C41F1717C7062 /* SJRotationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 420C4B37A147BBEDC399E5D8A39B6946 /* SJRotationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9ED5192E76CBC0A7362842C0768E5883 /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = EADE370EC709344632A59499BCC2E9D5 /* MJRefreshBackGifFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9F517EF334E49A9C29254BDB13F00FB2 /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC6AEC688698D55BA95C07E122E7F8D /* SDImageFrame.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9FB6CF522A966250D7ABC8AF599A2359 /* SJSQLite3+QueryExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 375CE25BBD97BE0E0C61426F50C57CEE /* SJSQLite3+QueryExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9FC187AAAC8122D37FA47E2AB4A05A0B /* SJSpeedupPlaybackPopupView.m in Sources */ = {isa = PBXBuildFile; fileRef = 20436208DA601A6215F809D0708CE68F /* SJSpeedupPlaybackPopupView.m */; }; - A00B584A73A9FF6D08B9CC8E6FD90AFB /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 35377A6E2DB38AFF58EBB8402C41E15E /* UIImage+GIF.m */; }; - A028115C326DD9A94E31F26086D20BB5 /* SJUIKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A99CB7A31D1B61929503B9300D703B /* SJUIKit-dummy.m */; }; - A08F048D30D789C9F631A95D675A13D4 /* SJSwitchVideoDefinitionControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7613B2B5837FD067B951B1E77D24E455 /* SJSwitchVideoDefinitionControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A165B608B8ACBE644BEFC13275E436C0 /* SJScrollingTextMarqueeViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 518E513655E9DA0B74F4F946DDB00628 /* SJScrollingTextMarqueeViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A19AA07C7DB4989CB3E0A6423F39F82B /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = A40A5DF70ABCE78C1B1035F6D37895C4 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A2322BFCE25295A0B25ED060C2C0863B /* SJSwitchVideoDefinitionControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 88FBC6EBE3A22061D837CB9FE5521E03 /* SJSwitchVideoDefinitionControlLayer.m */; }; - A2FFD247787C33CB1AD425A63D7A921B /* SJSpeedupPlaybackPopupView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B44BCA30C3E50316415C4E8F086BA53 /* SJSpeedupPlaybackPopupView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A31CF75ED7C32E7E683978C3B7A7629C /* SJViewControllerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 00B0A538FDC7CAE79FC847F0E378A213 /* SJViewControllerManager.m */; }; - A3307B8FB6EE0A049DBAE3AA4D2C6DA0 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FCD36264BA2B5F4BF86E9D1785CFF45 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A3ADF25DA8D9233EF146EC40D326351B /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = B654A0746A7806B9B8983FE7D1D7CC8B /* MJRefreshAutoGifFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A3C94056341DFA2A8A77147BF8CCD625 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA2A8379528E2E07E1DF1999C46596E /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A41A57610520FF8E6A38B255D068A6C0 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = D850D5C1B8B698E724D199AD8467FD73 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A46F1BA8A49255C2C1DCFB5BB5BE6FE5 /* UIViewController+SJPageViewControllerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = BD401691DAE0CEDB5BC4A097E7A1B8CA /* UIViewController+SJPageViewControllerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A567D4C7D2634677081216FA4FBF5A16 /* HTTPLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C575EDB0772D3D444A0A0383572E911 /* HTTPLogging.m */; }; - A5B108FFAD6F51808736684DDE6B9B95 /* UIColor+SJPageMenuBarExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E11BF300CC67EFC4DF3FB0062A98428 /* UIColor+SJPageMenuBarExtended.m */; }; - A5C2E63BDEE0B253240BD476588A7841 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 84E67573A19E50DF1241A6929AC4728C /* UIImageView+HighlightedWebCache.m */; }; - A6747B6E6D35FB0709A0E58F686A88A5 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 719274D088B9D9B939B7935F6332B340 /* SDWebImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A678960B8930C7BCCEA12BD103166DC5 /* SJVideoPlayerClipsGeneratedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 639B4B6419CD9C19A68FB7C6F8E320CB /* SJVideoPlayerClipsGeneratedResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A7A354EDC09FB4AE6058E2DFFF52056B /* SJAsyncLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0720AF1CCC4F0B76089383A8C0A0C6F8 /* SJAsyncLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A7DD4611BCB9FDC7CAF070697D592985 /* SJPlaybackObservation.h in Headers */ = {isa = PBXBuildFile; fileRef = B08F4D41D62B8A3C8A674DAF4980B486 /* SJPlaybackObservation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A8F9643F44126CCFABD62399C9768A18 /* HLSAsset.h in Headers */ = {isa = PBXBuildFile; fileRef = A4DC4D0C6F94FB1DC319784A5DFD692E /* HLSAsset.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A9128D73193BE967EAD88FADDB388EF2 /* HLSAssetTsContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 43B2754699DE7E14F2D2E781DC17197C /* HLSAssetTsContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A94A6A04ED4BB874576627A0A79A4938 /* SJSQLite3ColumnOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = 080DAD015F2F240DE2AEE9593D2F2FC4 /* SJSQLite3ColumnOrder.m */; }; - A968F77CCFAE0EC3A93F9299F9DDC6F3 /* MCSAssetCacheManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 971A3662A95B2F6A4EC4DF4FD6236478 /* MCSAssetCacheManager.m */; }; - A9B63AFB44FFD08122123F5A9A3E09A8 /* SJEdgeControlButtonItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 50B3AE830FC3103F0F2C808E22973EC8 /* SJEdgeControlButtonItem.m */; }; - A9C57A74795A9AF65B16361ED7FF7EC5 /* HTTPFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1453B7BE55F5B18EFA4F3ED41BB139 /* HTTPFileResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AA0579D1E6EC68D98E828455C975961A /* SJUTRegexHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = A869E4A993F661D3D2915795CE9DA7BE /* SJUTRegexHandler.m */; }; - AA60DBCA6A577DFC28120104A123E1B9 /* SJClipsGIFCountDownView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BEF0AD407085C1B9C47C9C518A8B44B /* SJClipsGIFCountDownView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ABD879FD07A1B1D52EA3B150796918AC /* SJSpeedupPlaybackPopupViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 4024459B3153A8CA0FE7D072F17F486F /* SJSpeedupPlaybackPopupViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ABE807C6419C814AB59B822948CB23AF /* SJSQLiteColumnInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AF7DCA779DFF2547BB76ACB69FCCDFC /* SJSQLiteColumnInfo.m */; }; - AC7B5CAC88A3E4AE47142401741ECED2 /* SJVideoPlayerURLAssetPrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = C6722082297D35CE17D0F096DC4C3737 /* SJVideoPlayerURLAssetPrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD2DEE2222A8C38F6428B9FF5A36B506 /* NSString+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = BAF4DB20F53D2C3A7E33A82E2B2B4490 /* NSString+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD6255756703244047573E44E2586480 /* SJFloatSmallViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EA1782BC13299207C54F063F2DEE102 /* SJFloatSmallViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ADF7E605E812DB6FBF06CC3AD06B2E1E /* HTTPConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 556C50F8F7E41D374219C4BB72C7ED1B /* HTTPConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ADFF7498655431D3BD286B2F690EE15D /* SJSQLiteErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 6739079FE29D319EE64B9D92CB4CF4B0 /* SJSQLiteErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AE5394B4E63C884EE516CA46ED65F4C4 /* MultipartFormDataParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CBE449F5B0773D2B6B88962793BD651 /* MultipartFormDataParser.m */; }; - AEECA122A07A8FB56277B3AA92FA54B0 /* SJPageMenuItemViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 5549FC7B6502A30760FC103CDB5910EF /* SJPageMenuItemViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AFAF04B22BE1008C70EF3C05EFDD2523 /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = DD309E05395EA9C6523F0B618D7E6C7F /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AFD025D08C64874573D6D17EB0D4F4B1 /* SJBase.h in Headers */ = {isa = PBXBuildFile; fileRef = F2BF6FEE9114722E2780279D8F8C5DC0 /* SJBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B034DCA6607ACB1BC879AA8AFA85576C /* SJWatermarkView.m in Sources */ = {isa = PBXBuildFile; fileRef = C15D832134358CC8D7CDD7FDB011EB5C /* SJWatermarkView.m */; }; - B07B0193B545AD11E0A9971DCDB97EDB /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 36FF553E46882A25530C24DB23C09A63 /* UIImage+MemoryCacheCost.m */; }; - B0ED107F3AAF83FDD3035D0B3D864953 /* GCDAsyncUdpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E395F3FDF754505AE4A25EAD4462634 /* GCDAsyncUdpSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0F0BFA01114A38253F6D62EC0CFFAB5 /* SJClipsControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CCCB55BD375EFB892DC6355384E6A06 /* SJClipsControlLayer.m */; }; - B18FFD1DEE1A6F09CAF63F4D9545088B /* WebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CB37230A576BA87DA33CAEDB259D340 /* WebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B1B145E944006E68505E611AF74AD199 /* SJPageCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 116204D8A2875F177C221F0E75307EFD /* SJPageCollectionView.m */; }; - B1BE10B72E7A49B62C2D07197059015E /* SJNotReachableControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AD6E80C1A070078C435F98DE2175C8C /* SJNotReachableControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B20A0E5D8F9BCED1A82793C4BE9E7258 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 493E7E2162EC86B88A694B51FA7F6F6F /* Masonry.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B284E952224927D138B8A67AABA0A312 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 09CC4BAAC35CF23B251B49E6A13739F3 /* NSBezierPath+SDRoundedCorners.m */; }; - B2C192C1F33B5CB36C0850902722CE56 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 29047C599E4AA11666D41888CF47C96B /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m */; }; - B351AF2F58E40882E9089840D8828B85 /* SJDraggingObservation.h in Headers */ = {isa = PBXBuildFile; fileRef = 18AF14DC9F4780968B5A77143106B8B2 /* SJDraggingObservation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B3A02F44C189C5EEE31490DB011C6465 /* MCSAssetUsageLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 79183B7E64CAD06350A22AAA3CD54A04 /* MCSAssetUsageLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B3BFDCDCC28047D9B015A36150C5D628 /* MCSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 10AC34D16AD56DF01B15E4015991BB88 /* MCSUtils.m */; }; - B448CF1506C4DF90C71CF0F318D4868C /* UIImagePickerController+SJUIKitExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B67CABF1A98F0BD7E77252C7F79E7CC /* UIImagePickerController+SJUIKitExtension.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B461DFEBF4A910501A24C7FD3C0003E0 /* SJMediaCacheServer.m in Sources */ = {isa = PBXBuildFile; fileRef = DA109D9BC90DF16C1874B4370EB71641 /* SJMediaCacheServer.m */; }; - B472437E134F4DE3D384078738CE6A8D /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 34D401B538A33E8C6CDD3CC87F01E5A6 /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B4CC06F6A4188657E142C57064420D99 /* WebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = FD2506BB972C894578D839A03E0EB54C /* WebSocket.m */; }; - B4EB7066F77B2102220CA2BBDBA13780 /* MCSAssetDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B78CC481B2010D487903DBD4C27B4450 /* MCSAssetDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B516E8AEFB89F615E12D9995C73B73F8 /* MultipartFormDataParser.h in Headers */ = {isa = PBXBuildFile; fileRef = FFF7255A2E6A648D0ADD4F2BBD0B02EB /* MultipartFormDataParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B57742214BEE9AEBEBAD8AEA7EFCDB0D /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E5E1FCA7EFA2C2F57B7C500F7027BB6 /* NSImage+Compatibility.m */; }; - B5F0E1D7FEFC378F3D07EE5BE6BA0935 /* MCSProxyTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 261CD5468B6982A3716E4B77F3ADD224 /* MCSProxyTask.m */; }; - B68B51381B169F78FFE5B07DD2554860 /* NSDate+SJAdded.m in Sources */ = {isa = PBXBuildFile; fileRef = 5997D26B1A0CC2B051FD4AF1AF100BAD /* NSDate+SJAdded.m */; }; - B8327F2FBA5C7815C4EC083BC3358E1B /* SJCommonProgressSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 330085ECE299AAA0D6D06A5A2C89A17D /* SJCommonProgressSlider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B836255A44833E1070911FF654CEEB3D /* UISearchBar+AsyncLoad.h in Headers */ = {isa = PBXBuildFile; fileRef = 275A28647FDA8BC7AF0B790517E1B9C2 /* UISearchBar+AsyncLoad.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B83B6A071701DB7EF8D4D65EFB9EEC1B /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 691FD37660C87759AB14901DCC4ACAAA /* UIImage+ExtendedCacheData.m */; }; - B89E9AD5408728BC333C04251B4BEC2B /* SJPlayerAutoplayConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E9AF69A4670D8AD651E5BCDEFA1BE2 /* SJPlayerAutoplayConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B8DEED5E10AFDD2181F389C39AFBA321 /* SJControlLayerSwitcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BEAB602D0842FBCC25A68C3DD029F19 /* SJControlLayerSwitcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B92DB014092D3F8C4C168D2408447080 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = A160D4E4AE8B066E876890A4FE7E512D /* SDImageCachesManagerOperation.m */; }; - B9C7DDC53E3D24605907D755CD0B309D /* MCSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = B8C0A063B2E23BFEFF5C539D82E7BB9F /* MCSLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BA5C8F3C1C82304E12298CF458C2AE40 /* SJPlayModel+SJPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 635A6B234C1AEA4EAA0280AC6675FF5D /* SJPlayModel+SJPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BB1D8EA60FA2F60382291F12F2E00909 /* SJPlaybackListController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CEDAEFE4D0039DF4E1DCACAB36F0829 /* SJPlaybackListController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BB98D7A358A4B1DB6A4BE087B7CF3852 /* HLSAssetContentProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = EA02E1AFA77B567CD9786B65B7630888 /* HLSAssetContentProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBA857E46F0BA97BCB93FF4A9A19CE35 /* SJEdgeControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C1B227E76AC083FB6F8CAADE5462003 /* SJEdgeControlLayer.m */; }; - BBD377CC54BBD47D18B9468943FBC2FD /* SJVideoPlayerPresentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 014A11017EECFB590E6EE19F8799C0C1 /* SJVideoPlayerPresentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC79216D849466FE9283054E4F738905 /* HLSPrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 040661A83621B0F8775E45CBE8CE4818 /* HLSPrefetcher.m */; }; - BCC4C5FF126E466F246C95B89C9661E0 /* SJBaseVideoPlayerConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F048C2959833A03AFCEE28F9955024F /* SJBaseVideoPlayerConst.m */; }; - BD54CDA3B2D581599E24C3E23CE672E2 /* MCSRootDirectory.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C14EA7A89E899FBA93DFD352CCD7BD5 /* MCSRootDirectory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD581F43E1B1B9B45DD3DC6C4B709539 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 80B06EA2E14B2E593786483F3113764C /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD83DCDB2BACC262DC641340F62DBA95 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 49BC510ABA659B2C0556CEA638342088 /* SDWebImageDownloaderOperation.m */; }; - BDCEC74D09CA629346B8CDB4180B1BCF /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = FADB652D304EAC67F9003F69E21F2A34 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE5619E8A7020ECBB5B03B627EB09FC9 /* FILEPrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C6E8E794AAC215DD09FEA70ACB88F19 /* FILEPrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BED89133551A339F15B32E21124D1B3D /* SJVideoPlayerPlaybackControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 30AC790BC9CCC7F08D364202B380BFD9 /* SJVideoPlayerPlaybackControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BEF1A6305297B7C7BA18254BF6C02DE0 /* SJCommonProgressSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 26D6788B83F99BD7E6F0CF03C40AB7A5 /* SJCommonProgressSlider.m */; }; - BF1CCCD745C8C9050AEA12D6202C2D94 /* UITextField+AsyncLoadImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 686B82FA7D1911EBE18A78CCAE5F0136 /* UITextField+AsyncLoadImage.m */; }; - BF266E1104DD9462CF056E5576F6B044 /* MCSConsts.h in Headers */ = {isa = PBXBuildFile; fileRef = 2622C915C5313EADAD56750D52E52FED /* MCSConsts.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF86CABA4E5E61A225D420684086DF77 /* SJMakeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B4EBBF3E47C54F5B7D49DC877624907 /* SJMakeView.m */; }; - BF86FA6ACC6BDFEC3B1DB01F39B26ABB /* SJControlLayerIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = DF2061CB493F5AAC1E6EFFD6764B21D9 /* SJControlLayerIdentifiers.m */; }; - C0E132AAB1018EA68CA8B50746895BEB /* NSDate+SJAdded.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CA6BCAA5FE4BCC1F6CE9C6AB4E01C3B /* NSDate+SJAdded.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C1BE1B9B8F123A2DDB9B0DD45B833DBD /* SJReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 2925CD50B5FE585633338A48D1CD9C21 /* SJReachability.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C30CC261B75B92063A8E43BF9F019C47 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 17BC8EBC209F51DF511D50F41D1517D8 /* SDImageCachesManager.m */; }; - C35746B22B95679EA432E1E4829E1E33 /* SJBaseCollectionReusableView.h in Headers */ = {isa = PBXBuildFile; fileRef = F7D4A1AAC1253E71CA3D6F5EA98EB7BD /* SJBaseCollectionReusableView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C387218C1A051131C34872AE04C7FD18 /* SJVideoPlayerConfigurations.m in Sources */ = {isa = PBXBuildFile; fileRef = 97349895656AB185D9533A491E02F37A /* SJVideoPlayerConfigurations.m */; }; - C3AE099B25C826243F7FA1F796B009EC /* SJBaseTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BD04EA8132DAAEC3F7DF34B43CD112EE /* SJBaseTableViewCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C4A781EEFE89058B7265C6F721CA91AB /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = F105924E75BB4F7C7BBBEBD47ECE7535 /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C52A4C449F7B5421083765750D994A8B /* SJUTRegexHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D959AA1C085D01EC7E15EA15DEA6AB4 /* SJUTRegexHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C5F029316278A837C479291F5B9F2C6E /* SJBaseTableViewHeaderFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 91314A7227B1E54CAC73B762A98E5CF4 /* SJBaseTableViewHeaderFooterView.m */; }; - C643F5C46BD3B60D71E2C738EC624D9D /* SJVideoPlayerURLAssetPrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 682BC904C2F73456D44B3588987A843B /* SJVideoPlayerURLAssetPrefetcher.m */; }; - C74D2E856ADC8139CD00DBD184061B23 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 470956E98CEF45711C4689E7FDA72D1E /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C908812CE420D8673B6B1B8791CF58CD /* SJEdgeControlButtonItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D21A7C30AB67CCF1160AA23A2A10ADB /* SJEdgeControlButtonItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C9770BB99EC8859E87BFA25C6EA5BB77 /* SJFullscreenModeStatusBarDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 12861D4CFB626041A9297BDE6AA375F9 /* SJFullscreenModeStatusBarDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CA1A15D1D738E4709BB411AA7A689DA7 /* SJSQLite3TableClassCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 36B60032FE481D958AEC32B9FD388D83 /* SJSQLite3TableClassCache.m */; }; - CA5158D662DA2A72BE64F7F1AA12E41C /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = C3F20CE8E68E4A6746D284A3AA320086 /* MJRefreshConfig.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CA7AC13D182EE4D61C5713BCDC421F37 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = E54512C7DF7AB5BC5741553F177A8D47 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CAB14AAABFD8A75B6A73A2A5E9149F77 /* NSTimer+SJAssetAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3B530C4EDB6B601D72D6EE5CAEEEF2 /* NSTimer+SJAssetAdd.m */; }; - CBCF5788280656138A0C00CDE607DE5A /* SJClipsVideoCountDownView.h in Headers */ = {isa = PBXBuildFile; fileRef = 55EBE1E03E492BA56B07F6FCE1492D34 /* SJClipsVideoCountDownView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC5A7015005013A8764FCEF25EDDFACE /* HTTPErrorResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEEFACF4DBE0026A9F06FC4F8C3FAA0 /* HTTPErrorResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC63ED123DAB61BEC3C46D3C48162A1B /* MCSResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DB633C9DCA3BA68A2696BEDB1CD6D286 /* MCSResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CCF9E5F812604379AC0E7B5ECB0BD074 /* HLSAssetParser.m in Sources */ = {isa = PBXBuildFile; fileRef = AADBDBA9F85ED617021FB0C140A8B065 /* HLSAssetParser.m */; }; - CD2245532B231B39146928B82B664800 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = A7A5E1B4349EF495176EB125E4EF09F3 /* SDWebImageIndicator.m */; }; - CD2979DD0745F17BE1C20C24144492BF /* MCSConsts.m in Sources */ = {isa = PBXBuildFile; fileRef = BE6D5C330D250E12CC9DEAC0B4D22846 /* MCSConsts.m */; }; - CD40EC89E9242EF2196E318E81133DCA /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 87DD09E9671254490757F33906D49399 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CD985823037E946277617E2EB8E47F77 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = F6EAFF42EBC4075E40DDA99088CE9383 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CDB5F270776B6243808B833F7D8CA1B3 /* SJSQLite3+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E09FFACD11D512B1EACB621B8EF6D395 /* SJSQLite3+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CE2FA03FBF86FC1A16968772D91E43CF /* SJItemTags.m in Sources */ = {isa = PBXBuildFile; fileRef = B2BB35AC2F935C866372275931017879 /* SJItemTags.m */; }; - CE808B8A6EFC50C732E07B9C4E034420 /* UIButton+AsyncLoadImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 974F658B3C3B1A8D0F191360D8B15859 /* UIButton+AsyncLoadImage.m */; }; - CF015D6109D2B386D6A1F1F18CB0C9C3 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA5E0550E828BB81117BDC1606627DC2 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF2EDB42665F2B645929E3C40C45E792 /* SJControlLayerAppearStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CC0C7355A5708E819F98605653C46E /* SJControlLayerAppearStateManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CFB4EFA7B2ADC28AD13CFFCA011596D7 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EAE49A9BF14B726D5931A0D6E93F009 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D085F6DE2E4C9ECBB23E1A3841AECFAA /* UIView+SJAnimationAdded.m in Sources */ = {isa = PBXBuildFile; fileRef = 36402D1ACDE5AE5F02AEBE64E4E535F0 /* UIView+SJAnimationAdded.m */; }; - D0CB72094A35B11B27C87715A33B2532 /* SJRouteRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9446811F8A2CA42929BAFFBAC2583ED2 /* SJRouteRequest.m */; }; - D0CC33785DBCDD3C94D4AB89B326F49F /* MCSAssetExporterDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EEEA9C67CC77428D3D1359743742025C /* MCSAssetExporterDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D0D5B6AC9C2D65DECAE5DE9FDB07E749 /* NSAttributedString+SJMake.m in Sources */ = {isa = PBXBuildFile; fileRef = AC2DC9268758D54B33BDF3713D83FD5C /* NSAttributedString+SJMake.m */; }; - D0EF4CEBECF524891907D5745DD29AB2 /* SJPageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FC1801985D20234A703D2F9B2CEFF51 /* SJPageViewController.m */; }; - D0F1C4CB9CC7FA000D6F0EFEC7F8B9A1 /* SJClipsControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 801598796BA3A3E2129534F9BC427B11 /* SJClipsControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D1FD9377CD5E2FE72542C7F0F95F151F /* NSFileManager+MCS.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E26DF3D50094EA3683F187FABD8DAA /* NSFileManager+MCS.m */; }; - D29A03BBC9B95E677C2F51345F344088 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B892520AAEF44618600BBE5EFE690CE /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D2C0E6530E3AFBD6C079E42472F33800 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 77B2408BF5673486400CA557D5D61BE7 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D2C67CE757307FB00C7DB4465937E294 /* UILabel+AsyncLoad.h in Headers */ = {isa = PBXBuildFile; fileRef = 197513FBB17F0449581E0FE5B5A9D2A3 /* UILabel+AsyncLoad.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D41B7A6A474877F5BB8975CC1FADDA4D /* SJItemTags.h in Headers */ = {isa = PBXBuildFile; fileRef = B53ADD5B938712E0D0593A73C5893404 /* SJItemTags.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D45D3AEB9410A3EFF7DC52DDE5435CA8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = F1EEC65D05265977815D036C885D2162 /* SDWebImageCacheSerializer.m */; }; - D4BE023EBEA183A0454CCD8DE70AA15B /* SJMoreSettingControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 527E3BC497A270E892D39802BEC992D5 /* SJMoreSettingControlLayer.m */; }; - D4F0859B625A8CDE06343368426D38B7 /* SJSubtitleItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 7009E1A9D42BC0CF10CA09AA87874FDA /* SJSubtitleItem.m */; }; - D522C8B6C7C223E80D6BAB4BDDB5F69A /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA6B38E7EA69BD70B6880BAF703BFFC /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D5286DBC485ED5BA7FA2D3D42500AAB9 /* NSAttributedString+SJMake.h in Headers */ = {isa = PBXBuildFile; fileRef = 972C7303D00A6BECD2E953A4001D3114 /* NSAttributedString+SJMake.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D57B99794CB5EE4AD35ADEBC6AE73422 /* SJProgressSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 894B0AA413A404063B27A54AC54823B0 /* SJProgressSlider.m */; }; - D622899990597B2009B5816FCFE59B72 /* MCSProxyServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 14B6B58110C685495047366A05397BDF /* MCSProxyServer.m */; }; - D6C89FA0808DCE5AAFC6DB859957FCFA /* SJVideoPlayerLocalizedStringKeys.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C966AC3BD5064BA778AB7FE9F8718D /* SJVideoPlayerLocalizedStringKeys.m */; }; - D783A8A5A426DBF85162B92142651218 /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AEE607F27CB5D343FDAF9ECCC290E16 /* MASConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D79023DC60D5DA0502B3068D3C253647 /* NSObject+YYModel.h in Headers */ = {isa = PBXBuildFile; fileRef = D513DA4F5D2248AB231EE0D9A9BDCC34 /* NSObject+YYModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D7DFCEB37E18835618A0FD3FB72FBCA8 /* MCSProxyServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3697B28CE578065D0DB2C1E0DEFCEBE5 /* MCSProxyServer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D7E39007ADC52A887967F78C6E5C61D9 /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FD2EB9A1D919E68C0C1B0FCBDCD3009 /* SDDiskCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D7F68AE7CBBF100C5D76FC685AAC0FB0 /* SJAVMediaPlayerLayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FA3FD0732C214457D70D760E0EEEF96 /* SJAVMediaPlayerLayerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D805D36B142020BF7EFC49ECF37B40B4 /* KTVCocoaHTTPServer.h in Headers */ = {isa = PBXBuildFile; fileRef = C1CDEED96788B91F5975845B4A257DF7 /* KTVCocoaHTTPServer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D9D46860FCA44158DC2633C99DCB6361 /* SJClipsGIFRecordsControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = C8AA2A253B37DCFC1A4FA7B63395CE6D /* SJClipsGIFRecordsControlLayer.m */; }; - D9F3A1A6E314845DB3C09B693EB59570 /* SJFloatSmallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0051CE79B33E6BB729E838479155ED3F /* SJFloatSmallViewController.m */; }; - DA1748D1A95CFB09630C1B1318088350 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = BEDCF9BDDED29D83F3B9ADEFAD25A020 /* SDAnimatedImageView.m */; }; - DA191ED4B1C6F05972A83A4ABB4332A3 /* SJVideoPlayerClipsGeneratedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = D1ABEDA1C56F54F2F00CD316F291413B /* SJVideoPlayerClipsGeneratedResult.m */; }; - DA42E42C3FE47B42401C73797A11827E /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = C38A805FB2AA57E1DD1AF1E5644E7E6E /* MJRefreshBackFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DA765D01151CB2601493C20FAB272A99 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = F56C12D80976E0C8118D867F7392F670 /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DAB56CA3BF77D40CED6C19224D5E1794 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B04FD1392A1F87CBA220A6FC3FC7C91 /* SDImageCacheConfig.m */; }; - DADA569607F532A184DAF48486BCF33D /* SJAVMediaPlayerLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = D873506980AB2892EA851537007F570F /* SJAVMediaPlayerLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DB85FB5C0ADE8137214DFEBB016413AB /* UIScrollView+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = CCADD81376F095067E6122F10F6889E1 /* UIScrollView+SJBaseVideoPlayerExtended.m */; }; - DBB7C38541245840971728B2671146FF /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 335DD33F58FD5C7A543B21CC56D6035B /* SDWebImageManager.m */; }; - DDE2D5A5538B2992253CE4BE98673976 /* SJFullscreenPopGesture-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FD3C8D1B62B2F517D89BA8E592DDBCA /* SJFullscreenPopGesture-dummy.m */; }; - DE47AE8B2BEB6BB6BAE17B9AC8F6A484 /* HTTPResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 56D6D448DDC127062BD711254710B4E4 /* HTTPResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DEEFDB6D4CF44705E1B962065C8A4340 /* HTTPDynamicFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E9D6D0CF10962604C27777756BF59B9 /* HTTPDynamicFileResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF091238315C2F3AE424E99745B03CB2 /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = FDD517F17594814C8658FC02CCB7004C /* SDWebImageDownloaderResponseModifier.m */; }; - DF0BA8149037A12A149A15B372293452 /* SJObjectContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = A33D9972066737C1476906F48882629E /* SJObjectContainer.m */; }; - DF263A7F1E3682B4704996D857D6E0AA /* AVAsset+SJAVMediaExport.h in Headers */ = {isa = PBXBuildFile; fileRef = 5206C6A43FF7BA85292C903B820D8B02 /* AVAsset+SJAVMediaExport.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E02A241EBD635CA721D353EAAE89C93D /* MCSPrefetcherManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C62A439ED3FC0FFB57693DA8829D685 /* MCSPrefetcherManager.m */; }; - E10B749E5FE7D0F954C25D4D5D56018A /* MCSAssetContentReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 59702A9FC3DCE324C13A7690A2067472 /* MCSAssetContentReader.m */; }; - E1352F869E79225A2F66659F1E2C9B13 /* SJAVMediaPlayerLayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D60D4A6B54F473D3D1920A0024B3F14 /* SJAVMediaPlayerLayerView.m */; }; - E21EA35FFAB901BB15FCC8276EA28C1A /* SJControlLayerIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C159B02CFBE39DE633D38BD594EB2E /* SJControlLayerIdentifiers.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E271AA1FB5B38D23584C1DC2580E7D6D /* SJVideoPlayerResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = AEF9BCFEBC35BF8C6AE1F60121AF196D /* SJVideoPlayerResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E2CE1800420C7443786792BE9B1D5336 /* SJRouter-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B1EBD4B2F92FD222D82BC06FA0A2226C /* SJRouter-dummy.m */; }; - E2F49537237733A65F3855EAE3EB8F95 /* MCSError.h in Headers */ = {isa = PBXBuildFile; fileRef = D6B31DBF7441C3F380AB8352038D06BD /* MCSError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E34D536EB38161183AC71F5403278288 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E993A0B11A18E6202B2FE45BD6AF329 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E3676DB27EEB814A79B26AE1F339D24A /* SJSQLiteTableModelProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E21D0B48F96771E7B8F8BA9BBC451E3 /* SJSQLiteTableModelProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E3DC6A5C1913A1927E18B23B0C973888 /* UIImageView+AsyncLoadImage.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CEDCFE73E6F6B35149526A5F2C1181 /* UIImageView+AsyncLoadImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E3DD3D071356582DFD6C5AF15746E015 /* SJPrompt.m in Sources */ = {isa = PBXBuildFile; fileRef = 42EAE425238193AE6EC5215836C41F35 /* SJPrompt.m */; }; - E3E2BD738E7E9A105525F691CE53FDBF /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = EC6F651B98D708C03DF9CF92DBF049EC /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E41D39AC5425517F0BF4C01879A3F6E9 /* SJAVMediaPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C27FD0CE8B6E418D931480BD4496B24 /* SJAVMediaPlayer.m */; }; - E42A7D1C9E99A24203A295E85B978938 /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 54B959DBEBA1368FC9A0CB77DE37E8EF /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E4CDCC5BE0BAFE754390671C732D11BD /* SJReachabilityDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 8899B5E5723BBE5CB2101CB3FD0F8ED6 /* SJReachabilityDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E4E471071381A247E2416383BE33D425 /* SJMediaCacheServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 704BDA24D5FB797AF694EBA9AC10528C /* SJMediaCacheServer-dummy.m */; }; - E51D30B8AB319E61C437334D13FC859F /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 512928C8EAC7D1F7B0F7C0573664A679 /* SDWebImageOptionsProcessor.m */; }; - E5FACE689C41C9E53BA42690B5463269 /* SJVideoPlayerClipsDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B753BF6CF4DC76DE0451384BB3FBD3BB /* SJVideoPlayerClipsDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E6659B33B319145E9188EA26C65857FF /* DDData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FA568F50DD461EE70052F114C48C2C8 /* DDData.m */; }; - E6AD01F3482B5DC39109FDDC4FA258F5 /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A3E5496C4E1C5DD3FEF845C4EA00BCC /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E6BC06A0D781801399209C6236874B01 /* SJPromptPopupControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FB040FE130EA6CDF546D9CA3C96062E /* SJPromptPopupControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E6CEF9CA740FDADD8B31F861B8B60B8F /* SJDraggingProgressPopupView.h in Headers */ = {isa = PBXBuildFile; fileRef = D1D8A74AB5B7C8EEC5413809FBA48D2B /* SJDraggingProgressPopupView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7165ACE4E69370B6C21B814BE564B38 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 9123A3521B8504CDBF9AD51B0DB505CD /* UIImage+MultiFormat.m */; }; - E76935CFF4AF327F8D9A7C1935F7D900 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D5806613DE9FA5FC14057BF494B9AC /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E89678023EB928D8162BFC0B1DCF31D3 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C6DF3A60ACBAD897174E8E18D9807FC /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E8B3E321BA915C37D09C4B0B062BF4C1 /* SJAsyncLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 361A5B72D7F97E5631E4315E95787BF8 /* SJAsyncLoader.m */; }; - E8BC0E3B26159ED4D6462E921A5A69D9 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D8D6D1752FA32001E1CE597ADC95739C /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E8C96FF99FC6A03A737CD3202588C7D5 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 748397912AF7C193420306B48CDBFDC9 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E97329E7941CF3C979F35953B80B592B /* SJSQLite3Logger.h in Headers */ = {isa = PBXBuildFile; fileRef = 55BA50143EB3AD43978067F96B0DE5F9 /* SJSQLite3Logger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EA53B89AAC16CE584E6F5DD11D500FC8 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC077638DE430F42EE2415012991437 /* SDImageCacheDefine.m */; }; - EB0099221088FE86F5BF856D980B4285 /* SJClipsResultsControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = B8489769A9EBE6E7918D0045718DEC1C /* SJClipsResultsControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB3C6B367B0767780397D6363CD298B8 /* SJWatermarkView.h in Headers */ = {isa = PBXBuildFile; fileRef = 65CB492F77775D641DB99E9E764FB92B /* SJWatermarkView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB3E941924EA2CFC88DCEFDF8CF7BA8B /* SJQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = A624A454BB92A5FA5D5B5C347BB1C2B9 /* SJQueue.m */; }; - EB663E3E1EB4BB670DC29B77DB330135 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = E3E049CCBC9F70981B1B1D7211E24378 /* MASConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EBBE637CE19DF6DDDC07EF25E11EC23F /* SJSQLite3+QueryExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E5EE376B231CB1583254A9EE0B298B5 /* SJSQLite3+QueryExtended.m */; }; - EC357E611B3D5756D5863C4408BE6CE2 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = D258A3BB9BC3F9D6BABEC75187E30AF3 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ECC1E31775624FB1057CE1CDD86B57C0 /* SJAttributesRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6410928180119AE960509F1C346ADFF3 /* SJAttributesRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ECC8FBDED94024250C00FBB3B40C9353 /* SJRouteHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = D76E29F1761EAA5FCFF285BA160F4650 /* SJRouteHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ED115AB7AFD9554322D09DF24CB5BB4F /* SJApplicationInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 7342B3363CF74AD152F235742475B98B /* SJApplicationInfo.m */; }; - ED761654935481B7FB882A6E70BBFCA7 /* MCSPrefetcherManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C2CD6B6D8876491C00916AB9F7CABB9 /* MCSPrefetcherManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EDCD926B479A4DD0BCFFFA5B36BE2460 /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 14643B73F61B8B7B40E7FB5A321DE307 /* SDImageIOAnimatedCoder.m */; }; - EDF55FBB774F1ABA1020D2949C29E931 /* UIView+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = B7327C043EC6A08B424124BB68FDD4F1 /* UIView+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF5491A4CB593F4B14C3A4CD72649405 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = AD62F12F96599A62BE003992E7393491 /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF5D83D90B2301182AFFEACCFAC0BAE4 /* DDRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 98DC184F062F51F845BD9614E607898A /* DDRange.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF837D4C7316C4673141380DC13352B0 /* SJBaseVideoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = CACA716977F4870EFB905286F25D42BD /* SJBaseVideoPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F026D9C39DB59AD0F3F7F6F6371A22B7 /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D6FD9959DAD88E2F3AAA16AE0BFA62BC /* SDImageAssetManager.m */; }; - F05C150DEA95F8BA20EEE96BC35449F8 /* SJSQLiteCore.m in Sources */ = {isa = PBXBuildFile; fileRef = F937602F49AE8206D8DE1FD8FBBDFA86 /* SJSQLiteCore.m */; }; - F1452646310B7DF8D987010249536E76 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B1C5CBA4D92F33A3A6F73B234A87BDF3 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F1AD535E49AC4E77FEA30208554EDB69 /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A106E740798E62D3A288F5C71263A5B /* SDWebImageTransition.m */; }; - F1B75048874B8773E5568E6D3ACA12E4 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ED87ACDD95338C5536463E5B428F782 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F1DD207E3FDE8FD41F4E8FAD4A840C13 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 982627BBD869F9657560BC2A540B8FCD /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F2D642F5A13E72A65AC3FF716E748B99 /* MCSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = A4D0791B81E870AEF6897506646C0402 /* MCSUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F3070AF05843BA153507103098BE1C5D /* SJVideoPlayerPresentViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = DD2C0DD991A93EFB15FCCC3831E190D6 /* SJVideoPlayerPresentViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F3C1F7F0CB3B466A65876F39EBDBFC65 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = A4E45EC0F047B3EEE969774F02E6D66E /* SDImageGIFCoder.m */; }; - F3EB2685A2DBC83DFA26E54AF35EC68A /* SJUIKitTextMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = D9B895DFCCB644F385AB56C195DD04F8 /* SJUIKitTextMaker.m */; }; - F4ED99E5CF14B33CBCB0F6B6331835A6 /* MCSAssetExporterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1879A0EB8878046A8AFF1CCC22EFAFEB /* MCSAssetExporterManager.m */; }; - F57A2EC89E0E71F005951BDC1955A2AE /* UIScrollView+SJPageViewControllerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B7ADF6654441718146E3CEE442E73DA /* UIScrollView+SJPageViewControllerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F6519E3D917A91B15963007AFE9016F3 /* SJBarrageItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 800EC3EAFFA4712A08D9C292A98E2FCA /* SJBarrageItem.m */; }; - F6541A2BAA913272621A7CB6C823B035 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = C1267E7FB7A8053544568415B40A58B0 /* SDImageHEICCoder.m */; }; - F65C37D0DCE09B42EB816A24B9F73055 /* SJRouteInterceptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A22A24EF7C88E55E445B392F5D0F5A4 /* SJRouteInterceptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F6648F78B8266D92956FAA93674EA402 /* SJBaseVideoPlayerResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 849483F7C2F853C00D14697696B90310 /* SJBaseVideoPlayerResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7489B3B63E80042C5EB66934B5D4448 /* SJAttributesFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 89E198D84C6514C2387F4EAF407B8E86 /* SJAttributesFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F787C7CE9415326BB769046A6370AFC7 /* SJPlaybackHistoryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C51F9C53DAA09F339ADBBAF64EDFB49 /* SJPlaybackHistoryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F82CF4572FCCA28ECEE676EABA1BAAF3 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BA1B86C3F08F4E0CDB4C4B4F1A1F89F /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F83CB2A490B55A6C638E4A9BA659CB7B /* MCSPrefetcherDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 942E0A4A04454EC8C14AF4611A02D1CD /* MCSPrefetcherDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F8714BA2795A9A3707001F1C357BCA4E /* SJSQLiteTableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E5AD19299EF9DE6F3485B90E2BAF1855 /* SJSQLiteTableInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F8855361CF3800166E5E79C3FF0028D5 /* HTTPDynamicFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 744AA1C011D6BB324E92E2269CC1FB28 /* HTTPDynamicFileResponse.m */; }; - F92BB0328A9C33863DADFD14B0DBBD90 /* SJClipsGIFRecordsControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DDCA9C09DA65845ACB1BE42BCA013EC /* SJClipsGIFRecordsControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F96C6101AFAEF2F837E7A38D4AD1F04B /* SJPageViewControllerItemCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D58A4E6649B25E04F65C4616A9A98452 /* SJPageViewControllerItemCell.m */; }; - F9962EA08114465CB1D50BF608E9F80A /* SJPlaybackListController.m in Sources */ = {isa = PBXBuildFile; fileRef = AA21471CCAFAE35383EB8ED422FC96A0 /* SJPlaybackListController.m */; }; - F996EEB25765703957CFA4A9BC307822 /* UIViewController+SJPageViewControllerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = D866F5DD36C0551B2383B20B4B7A7BEC /* UIViewController+SJPageViewControllerExtended.m */; }; - FA7DFB408F4A73B37749C8A3D730F903 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 73E75A6A471DE609CA91AD80189C5DBC /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB3CA83767E075F24E193639316E7C97 /* SJVideoPlayer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 655EB80F8612533701711086FD8879FD /* SJVideoPlayer-dummy.m */; }; - FBCBC855C2BC31EE3B180627DF0E51E2 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B442CF56552CA00A0406BB58C7895DF /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FC1A36D977D2480560D40B1B07948D03 /* FILEPrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = BF6DE3A270BE4CC5B1B9C92CC4938950 /* FILEPrefetcher.m */; }; - FC20711B235BDA0FFA8061FDD98FCA23 /* SJPlaybackHistoryControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = A0CD1BBBAA2372033E80B8842F11437A /* SJPlaybackHistoryControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCA7B2D837121FD88A72634801DB2229 /* HTTPFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 47610E332009B7B179162A9184BA8DA5 /* HTTPFileResponse.m */; }; - FCC25A540DF0CA820C1CCC7FFBE456FD /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 2693DB83F28B5058E515B705600C1A4E /* SDAnimatedImageRep.m */; }; - FCC371F05D4976FC5D6EE74D060394D5 /* HLSAssetTsContent.m in Sources */ = {isa = PBXBuildFile; fileRef = E92E7FCF3175DF867868563AF978025D /* HLSAssetTsContent.m */; }; - FCC9B0687350F6E85BE8452B780E8A83 /* SJSQLite3ColumnOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AABD1076218AB091BBD62C7D05383F9 /* SJSQLite3ColumnOrder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCF253E2655BA662E2E7165507EBE991 /* SJVideoPlayerURLAsset+SJExtendedDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AEF2C9E0B79C0E6E06156DF579C280E /* SJVideoPlayerURLAsset+SJExtendedDefinition.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FD8DE4C408730B9D0E128762B2D71604 /* HTTPErrorResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E819170D2AAF17FD2EA484E41AC969F /* HTTPErrorResponse.m */; }; - FDD7E7AB0B3051FB314187043002EB6F /* SJPageMenuBarSubclass.h in Headers */ = {isa = PBXBuildFile; fileRef = A920C1E9883A141A401E23FB148CDBF0 /* SJPageMenuBarSubclass.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FE3ECCE6EE327F18EFCB475B8E7DFBC6 /* SJStatusBarManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D631794F6FA1377BD1201E1523AD7286 /* SJStatusBarManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FED75165AEF5DEB41BF2FC1705F07E31 /* HTTPServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4622F5B096DAC6516A5285DBD2089482 /* HTTPServer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FF11E0C124CF8A5746A290FD943CCF50 /* CALayer+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 12FC7263674BF8906223315EA6EA2618 /* CALayer+SJBaseVideoPlayerExtended.m */; }; - FF358CA7E36624D6C86B3E99EEA9716C /* SJFullscreenPopGesture.h in Headers */ = {isa = PBXBuildFile; fileRef = E33199CE1C85492B545A39D30086171B /* SJFullscreenPopGesture.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FF65A995815B27B85B6130DEA209B841 /* SJClipsBackButton.m in Sources */ = {isa = PBXBuildFile; fileRef = EF2DC28D1F5573261D4950B2553438D1 /* SJClipsBackButton.m */; }; - FF9BB3332CFE9DF67CD71E40239ED598 /* SJFloatSmallViewControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 68EC83466EFA0C91DF95DCED987EA3EF /* SJFloatSmallViewControlLayer.m */; }; - FFCC88EC5685A96EF031417DC2C4CE89 /* SJViewControllerManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 77B9CDB0C564A3B2E3A5D455DC8B932D /* SJViewControllerManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FFF1823AFC5BE6906662FFBB4FE84404 /* SJObjectContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0907DC601C15D896E168D720258A128E /* SJObjectContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0023DC306272F589256067F2ACDA69A2 /* NSURLRequest+MCS.h in Headers */ = {isa = PBXBuildFile; fileRef = 6230B241517C90A6E328AF141A567AE3 /* NSURLRequest+MCS.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 00AA09185BD96F1D75E25407AA5F0088 /* SJVideoPlayerClipsParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E14ED72F554BB4F9C094A079F3809CF /* SJVideoPlayerClipsParameters.m */; }; + 0192B48A6F26DB7B19707E4C3CEF729B /* SJVideoPlayerPresentView.h in Headers */ = {isa = PBXBuildFile; fileRef = D617643EF140F995BB8416E19E00E895 /* SJVideoPlayerPresentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01D5FBC350E24AD4BF493C0AF742E47E /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = CBECACBF5E53DE58E06DB22750C29FDF /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 02062C9F5DB3F00D0A7B2CC32D743908 /* HTTPAsyncFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 775A07BD148D84CDD2B74442A040606A /* HTTPAsyncFileResponse.m */; }; + 020E74845BFE4C9DD3F846E649E2CA1E /* SJFullscreenPopGesture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9072523E50A872D45927AB47C03EF6E1 /* SJFullscreenPopGesture.m */; }; + 022BAD804C5AC9E8B468250C711707BE /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F1EECE762E5B32AD2E1D04DFB9A099B /* SDWebImageDefine.m */; }; + 02C4037C5816B4A25F33C46D80057FA2 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = BED1592BDDDE5C7CA2ACF981283A6A7F /* UIScrollView+MJRefresh.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 030947B4956D9CA561838D39E556A706 /* SJClipsSaveResultToAlbumHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C2804A441641BF6CE4F8A86D8B096F0 /* SJClipsSaveResultToAlbumHandler.m */; }; + 038624C9D9CAC879C0B263616C798B10 /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B94D677625D5F5775D57AA3BD92C664 /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 03CB9B688CEB23A95689C1D2B6725E32 /* SJUTRegexHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 885C346296ECEA27FBFAB7D857B315E3 /* SJUTRegexHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 040190A5485A4653E84BF38EFA20957C /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A4F7951CFCC69FEB62002D32F10AD1 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0405DBA5581C22FC780BEEDB54D5A4A1 /* SJVideoPlayerConfigurations.m in Sources */ = {isa = PBXBuildFile; fileRef = 97349895656AB185D9533A491E02F37A /* SJVideoPlayerConfigurations.m */; }; + 0440CA41AE86615E5DEEE6BDDDDD90ED /* SJDanmakuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = B323DC0F75EB89858EEBC8504FBFC846 /* SJDanmakuItem.m */; }; + 044D3A0AF8A45B4AFDEEEEC85B4F42A3 /* SJUIMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AC4E676CCA2B49BFDC8429735707001 /* SJUIMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 048C43E79D9C506D16BE9CCBEE0C436E /* SJClipsVideoRecordsControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 70FB44CC5E8F5CE1A7ED3A7283717A82 /* SJClipsVideoRecordsControlLayer.m */; }; + 04AD324EE70A9F6AE12E30CE3EBC98DE /* SJTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C5B5C9ECCC7EEC5EDA3F73BAE659029 /* SJTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 04DF1D079285A302B93F8616729FE30C /* SJFlipTransitionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E7377B8F82FD586B4E53AF38C7AD5658 /* SJFlipTransitionManager.m */; }; + 052DF25E12C02BC0F685CFF8D3319932 /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = B3113787B1E551FFCFE1405FBAC200A6 /* MASConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 058C2A72A36DFBC429508A29A9191D1D /* SJVideoPlayerClipsConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = DB600A2B5CA714871D134C967B74BAB5 /* SJVideoPlayerClipsConfig.m */; }; + 0603071ACFEB40276C1C551A4B0793E6 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A951CAAB21FE543DC58B8680C35B819 /* SDmetamacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 062DAD18D7A281477EE18AE3A9A0504D /* SJFloatSmallViewControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD3305379840B12FF1DF0579050F418 /* SJFloatSmallViewControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0653FFEB27C2C7B6499B639178978F73 /* SJObjectContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DC392352CB9E4CEE547B885EC96F498 /* SJObjectContainer.m */; }; + 06C3DB956415A699D1B6C6DADC7C8DD7 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EDF1DD8A9F2FA8A4FD4BC6CC3B3F0FF /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 06F2E56134B8581A0B8B36D6576F55CC /* SJSQLiteObjectInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7607076960C74ABF61FCC7D159EAD83A /* SJSQLiteObjectInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 073DE4CC827EFD78E9AD5267D7A3812B /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 69A27145F238330217648B0A85BA03B0 /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07B677BDFFB0CCF8F6C4E1CD6DB33081 /* SJMoreSettingControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AE1C7E3CE66F58F5A14E8935EAED63A /* SJMoreSettingControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 08075B6BFC15806BFB338756183430CF /* SJSQLite3ColumnOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 13EC1960408F989E909A495BE61BF7B9 /* SJSQLite3ColumnOrder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 081A1D8194B95CDA73763B917BF3AB53 /* SJClipsGIFRecordsControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = C8AA2A253B37DCFC1A4FA7B63395CE6D /* SJClipsGIFRecordsControlLayer.m */; }; + 08ED047F1B7EE644C1EF573679E72DED /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA28C8E44ADD92530399AA177CB30CB /* NSData+ImageContentType.m */; }; + 09039EBA1D6AA655329EA5F40A43D078 /* Pods-SJVideoPlayer_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ED1E5F2B1C9F3F24472873F259BF832D /* Pods-SJVideoPlayer_Example-dummy.m */; }; + 097CF23D169FA0DECA796B00AA1D05BA /* NSFileManager+MCS.h in Headers */ = {isa = PBXBuildFile; fileRef = 7794B41E55743FD8DF88DD393983472B /* NSFileManager+MCS.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0A391C877E77B7F4392C18CB35FB2CBA /* GCDAsyncUdpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = F5ABDB4B58EEBB5308BC6C971C75B9C8 /* GCDAsyncUdpSocket.m */; }; + 0A7DB695DCE0379D18EE4AC53023ED47 /* SJQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E5E96C769A13E0105E12B793698BB28 /* SJQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0AD45C24A762645050CB5A2D59FF7C56 /* HTTPConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = AA0B983050AE49D47B49663ABD310E21 /* HTTPConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0AD5CC0AB66CB888D8BF334AA4994837 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2644E275CC1F1A4B3875263B78A54E08 /* SDImageAPNGCoder.m */; }; + 0B237F4DFD5D25D8AC3B406E2881B107 /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = D16FD2E64D8429B2FF550D6B264F8771 /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0B745215C3CCF7741612E08E2C092292 /* SJFloatSmallViewControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E7E34B080335DAED1B090A268202CD7 /* SJFloatSmallViewControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0BAC4253602A605D2AF2EAC392C5EE47 /* SJApplicationInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CC879AF08AEC9192A7C2B154F006BE2A /* SJApplicationInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0D77EB05D26FD41AC60AD01D1D551820 /* SJUTRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 13F1718CA73A99051651CAFD7BE18850 /* SJUTRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0DFFB384C8942B4EA4C4F9F4A0BA7405 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = BE769C0E23563F1AF94278367A6044FD /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0E902AC9E363FA7AAE7C041874421922 /* NSString+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B3901427489E2D50848766DBAF7C9B1 /* NSString+SJBaseVideoPlayerExtended.m */; }; + 0EDBB54C826D46C5A180BA3B90642C0D /* SJSQLiteTableInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F0CD8F6FEC6679EE02A839E4C5BAD67 /* SJSQLiteTableInfo.m */; }; + 0F28E6B8929F441D8DE214286E7C4C4C /* SJUIKitAttributesDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = D548AE066A6319627060FAD6F400B71D /* SJUIKitAttributesDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F783F8739AF55648B630C034FF070BA /* SJSQLite3Logger.h in Headers */ = {isa = PBXBuildFile; fileRef = F78235D3963BD9487F66AE5D3BD57B62 /* SJSQLite3Logger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FB551DC68FAFCF00DC0FA2BB4829B06 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = F094744546895DF96099D2E1E00DF9AE /* SDWebImageDownloaderDecryptor.m */; }; + 0FD92290500E8B12466CC28B45617C13 /* SJSQLiteCore.h in Headers */ = {isa = PBXBuildFile; fileRef = CB98C5A7150D8171F4DF6F27A8D1063F /* SJSQLiteCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FE1DE2216F71D07BCD49AEC6BF1B458 /* SJUIKitTextMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 4796885DB1E60E1D77D7A6A07D1E8ED5 /* SJUIKitTextMaker.m */; }; + 107BA2E75DCE0D320712DE0718937202 /* SJFitOnScreenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D4B168FD06B7B160BAF6224BDF3B02F4 /* SJFitOnScreenManager.m */; }; + 10901C40C984A885A20CFFAFAB6CAD70 /* SJSQLite3+RemoveExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DA84214B85B36B936A74F8287873DB7 /* SJSQLite3+RemoveExtended.m */; }; + 10A35D37402A80CA921858BD015A41D5 /* MCSRootDirectory.h in Headers */ = {isa = PBXBuildFile; fileRef = E070A6F19A527F683B6AB640E9C7C635 /* MCSRootDirectory.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10EAEDD432050AF80A34C131BF879526 /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FC80201321AA42F17AB3B81A9674564 /* SDImageIOAnimatedCoder.m */; }; + 11011889E4A6BDC237DDB2EFCEFA3C05 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 447597136D3DB286C03B8BD9AACB8DD5 /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1159294D5409B5F6865A58FE4482E24E /* SJMediaCacheServer.h in Headers */ = {isa = PBXBuildFile; fileRef = B4B8EF9E3BD2107B30516EF614913F5F /* SJMediaCacheServer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 12F0159CFE3E38EA97283060B47C0EAA /* SJRouteObject+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = FDC0461852A3F78C58A085B64A72A009 /* SJRouteObject+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 131BB1EEAF30422751B9DABCBAE1CB19 /* FILEAssetReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B647EF8D999D2E8186BB3A521226B98 /* FILEAssetReader.m */; }; + 133370488D0C8D0118C766616E0C81AE /* SJMakeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3856D75AF7E3EFAD0D54DF40E770C77B /* SJMakeView.m */; }; + 1351741661572689AB572353EED047B2 /* SJPlaybackListControllerInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = 46302D079C103B22321A9B74F9C6B476 /* SJPlaybackListControllerInterfaces.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 135B70A64E10764677E7199DE521F546 /* SJDanmakuPopupController.h in Headers */ = {isa = PBXBuildFile; fileRef = 50346FD6E843B9C0DCD0D8DE6438C4DA /* SJDanmakuPopupController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1378DB380B4113B1F17C16F17F8DCCD2 /* SJPlaybackRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = EAC58BB4255E1B72DA0ABA186F6FD991 /* SJPlaybackRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 13AAFB1A0AF3F9A6BB8D25EACD458700 /* SJVideoDefinitionSwitchingInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D7C55E7EB583D28B995C9306D61B3EAE /* SJVideoDefinitionSwitchingInfo.m */; }; + 13BBC46A5F93EA99DE006C7017F550C9 /* SJSubtitleItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 553EFDB0696A9AC91301292B39A7D0F3 /* SJSubtitleItem.m */; }; + 13E831D83D8FF9EB78DCB5AED2BDFC73 /* CocoaAsyncSocket-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 909775BF0D710EBD0FA91F1EFA0A8B64 /* CocoaAsyncSocket-dummy.m */; }; + 1439BCEA94B67697D6E25679B7281FB9 /* SJBaseTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = C63ADFDBDE9984EA3113FEAE28ABBDB4 /* SJBaseTableViewCell.m */; }; + 15291D0FDD49B1048796296B8541504C /* SJRouteRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A54B32604CE14BED6F3115C686A8499 /* SJRouteRequest.m */; }; + 15484DFA601A92284E1BB722B7277C90 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 715A657E0CC74D8B40E45CA4D3522B3D /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 156383718B8C6F0D20559F292489C6BA /* UIView+SJAnimationAdded.h in Headers */ = {isa = PBXBuildFile; fileRef = A39ECDB4D940A8F2ACAD1ED0506B242E /* UIView+SJAnimationAdded.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 15B7812A37AC7DBD462ECA1415867246 /* MCSAssetExporterDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = E5FCCC28D898A423599704E1EA0F1CC3 /* MCSAssetExporterDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 15F8DB00D33FF2969D485AC91DF8331A /* SJControlLayerSwitcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BEAB602D0842FBCC25A68C3DD029F19 /* SJControlLayerSwitcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 16224DE3C03394C62CC4E6B62BA28746 /* SJVideoPlayerResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CD32B773C6ED156D956B9AA03A8EE86 /* SJVideoPlayerResourceLoader.m */; }; + 1622BB622165DB2E4FEDE856B7997C05 /* SJSQLite3+FoundationExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B36F0A11386C9BFAF81C6DC28C1F7E7 /* SJSQLite3+FoundationExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 16BBF15BF142E96B601A6F988B608D3D /* FILEAssetContentProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 83F7F931C5A9B35E770AE8038F8E7681 /* FILEAssetContentProvider.m */; }; + 16E1C3569093F6581717B9DEAF0ADA76 /* MCSPrefetcherDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 69FA503DC5817D6C005A6C4389D85AC1 /* MCSPrefetcherDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 17283A0C47AD66B0956AA431747DBE17 /* SJSQLite3.h in Headers */ = {isa = PBXBuildFile; fileRef = 92056436F96D182FF7DC887D1CFF8D0F /* SJSQLite3.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 176B49AE30173A87598FBC5B226E2891 /* SJSQLite3+QueryExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 886570E14AD8E3D5960D7F977DEFBF02 /* SJSQLite3+QueryExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 17CDAACAC0481DB76090C960668333D2 /* SJClipsVideoCountDownView.m in Sources */ = {isa = PBXBuildFile; fileRef = E5CBD65134933DF5F54DA8FF80EBC313 /* SJClipsVideoCountDownView.m */; }; + 17DC32428973118802CD2FEAA0493141 /* SJPageMenuBarSubclass.h in Headers */ = {isa = PBXBuildFile; fileRef = D4CA17A1DB3AAE17905F0B7E1AECDAB7 /* SJPageMenuBarSubclass.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 189DF72956AC5644E850264F84BA2D15 /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF048FEB9546C91157F01506F53AF35 /* MJRefreshBackFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 18C4BDA6A51462CC014E65B09BFC7271 /* HTTPResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 130D63586D527C1630C4E31886E2EE95 /* HTTPResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 18E1E212E38C7431D0389A9E80F807E3 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = AE30BD349A6395DD546A92910372A590 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 191E149D12EF6B1D03C4682FC600AEB0 /* NSTimer+SJAssetAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E16ECB33BA542FFC82DE0885B81702 /* NSTimer+SJAssetAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 19401EDC4068F320775ED2F1D6A6F0FF /* MultipartFormDataParser.h in Headers */ = {isa = PBXBuildFile; fileRef = D0F927166E75A1D3D765B9E5C8941271 /* MultipartFormDataParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 19D2008CC3FF69A84C38B1016013286D /* SJVideoPlayer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 655EB80F8612533701711086FD8879FD /* SJVideoPlayer-dummy.m */; }; + 19F739115ABDE2E216F335BD306448C2 /* HTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 888B3360EA2B6287C5326D1A3708F2F4 /* HTTPServer.m */; }; + 1A0D6D03D32D4F1A38C761B89A1BCAD8 /* SJClipsResultsControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = B8489769A9EBE6E7918D0045718DEC1C /* SJClipsResultsControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A3ED44909DFC450A3BC6324D237D0CF /* NSObject+SJObserverHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 20BE12DC21A9AA42080D6D29760AC1E3 /* NSObject+SJObserverHelper.m */; }; + 1B2299DF5B4D32922E62B86CAA5B8DAD /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = E4D7C024E903D1D9220D28006E766910 /* SDAnimatedImageView.m */; }; + 1B41B3D5A91ADF6556AFE3D858417695 /* UIView+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AAB11E367E7CC111285F6514CABC351 /* UIView+SJBaseVideoPlayerExtended.m */; }; + 1BE5481BFE0E92F418ACE3E4E01FEF93 /* MCSAssetContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 3785966BE51938C7714CEBE7559068D7 /* MCSAssetContent.m */; }; + 1C036BD236131BA95E24B4802A95C95C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 89E8FD96E12B95D84295A27E95EB5477 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C0C0BD647CE847CB961C71FA2C04936 /* SJUTAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 71B0E285DF3487D2A56F3C01B0D910FA /* SJUTAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C602D76BE75484028226530049AEAF0 /* SJSQLite3+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6AA2E52A9F795D7EBC65E674F52C1F /* SJSQLite3+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C6A64D960A63E47FA9FF8EC4536E85A /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = FAAD046A95BD8BF9A2D6C4689C02CE68 /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C9429365CB0A88F7D9A1C3245FAB422 /* SJSQLite3Logger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1780BDCC7FD8815D6B93DD6DC07A2FE8 /* SJSQLite3Logger.m */; }; + 1C94530BEC4D84C976078A8D245FBDD4 /* SJMakeView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1176BBA27A6C78CDB1F75DB510933BDD /* SJMakeView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1CBC44945B8145940BDAD9C88650C7D7 /* SJVideoDefinitionSwitchingInfo+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 48C0C915B94C0EDF26EE664009B2393E /* SJVideoDefinitionSwitchingInfo+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1CCF436F02DD6343ACD766879CE26FEB /* SJAsyncLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = ACA13AA1F6C290BC8388EA4D2E7106C5 /* SJAsyncLoader.m */; }; + 1CF14E40016083FD256548F31BFC18C6 /* SJBaseCollectionViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 54CFCC649351D97C30019E93FD754AC3 /* SJBaseCollectionViewCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1D8912CC7A815672911E1B1EE44E904A /* SJSQLiteErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A4253460EF143E6B5DCC6C7B1BE600 /* SJSQLiteErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1D9D3C37224BFFB0C241EC4384417DF5 /* HLSAssetContentReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A553A42EB112AB5D8F8BCAAB415AE8 /* HLSAssetContentReader.m */; }; + 1DD28E56F018B491C846CCDDD978B9B2 /* SJUTRegexHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 885C346296ECEA27FBFAB7D857B315E3 /* SJUTRegexHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E61EC4026FE1CC8BD2BF1EA9D4FC70B /* SJPageViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B9E452C7341DA3F0243668E1E52250B /* SJPageViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1EC381CA9EAC012B5F3D22A1C5FBA429 /* SJSQLiteTableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 01834C4470DCBCB4F100E3A8EC49ED7F /* SJSQLiteTableInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1F2B7DE56D1E969238C6E47D2507009E /* SJSQLite3Condition.m in Sources */ = {isa = PBXBuildFile; fileRef = C64F603B6421CEA1A629B31E54F7B5B9 /* SJSQLite3Condition.m */; }; + 1F4051DE131300FE3E6625FEDB913615 /* SJSQLiteCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E7BA46554207B264CEF12C510BD800E /* SJSQLiteCore.m */; }; + 1F47C4D52C3AFE954AF60515C5D68176 /* SJAttributesFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = D4A8624B6929399B4C3D8104912C77F0 /* SJAttributesFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1FAB7B4DB5DD8E0E9F163B2D15A07A21 /* SJSQLiteTableModelConstraints.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A89B05B7E510F8011308F8969161F /* SJSQLiteTableModelConstraints.m */; }; + 20111CE695E9F3D2459922F84BCDB749 /* SJAsyncLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8366B88B5D76BE68DA0F531D930716D7 /* SJAsyncLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 20624C193FBC15EEF51923E2AA65C7A9 /* SJViewControllerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E273A5851DFECC5D37955005BDB0941 /* SJViewControllerManager.m */; }; + 20BE4534EC54A14AE67E132D094F6F20 /* SJRouteHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 609B4EB84AF43A71C2AF71EB14375F46 /* SJRouteHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 20C8C8CA7BC28CC1F94DF01391A10570 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 443493FA654ACC465DAEFEF6781DDD76 /* MJRefreshConfig.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 20EA9C10DD34B76F7F4D8F2674762448 /* GCDAsyncUdpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 13C2047EA56E993C466F35C07F4F92BF /* GCDAsyncUdpSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21124838EAFF7DCB4CC3942AA2A0AA46 /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E35D960663447D3A8E5EA2FA94E28A9 /* MJRefreshStateHeader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 22985DB6B54D53699513B7845E84E058 /* SJGestureControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = AD9C9A92EC66927937A23BB5B2AB1D20 /* SJGestureControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2340B7CF4CC4D5CEAEDD873DCB055AE3 /* HTTPConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 262682099D3D540485EE94F59B647EFF /* HTTPConnection.m */; }; + 2359D60C5DAA038581685A9A9739A8C7 /* HTTPRedirectResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8037F9D520A66240FD7240E27C368F4B /* HTTPRedirectResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 23916A7DFFB177EAEF3B8AE526A85CD5 /* SJNotReachableControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CE244C613ADC3A4CBF5E71F4B26DB91 /* SJNotReachableControlLayer.m */; }; + 245AB38BE75A718E2D721CB7F5A83ADA /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 35D0180BFCCCCE590CAAA62DAED9C4D3 /* SDImageFrame.m */; }; + 258D48CFF7A1A5CE7471F48049BBC6BA /* SJAttributesRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 50993BB750429201BEF5DBA775183F82 /* SJAttributesRecorder.m */; }; + 261D49C4ACA15ADDA27E69373377954B /* NSAttributedString+SJMake.h in Headers */ = {isa = PBXBuildFile; fileRef = FB8DAB511A91133A1AC99A4CAE4FB78C /* NSAttributedString+SJMake.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2623EF4317F9C025CCECDF569755CD30 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 41C2B7E9415E8ACE00CB90E1DBDD9D44 /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 264D7AB9344E48E3423014322DA24844 /* HLSAssetReader.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C544E399F6ECDD7A9E716E998C6EC /* HLSAssetReader.m */; }; + 26734E1FC5EB3006CC5BBC36F6EA17BB /* SJClipsBackButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 3113FA59340C0F63F2A7CEC7EDDCCB15 /* SJClipsBackButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 26904E0704245545FA38574475B7E09F /* SJAttributesRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E48AD212B00E0E868EDEC3691A1B956 /* SJAttributesRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 26AC00C3C1D0B72CBE53BE1C7228A243 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EC48C6AB645AF18A39092BDAD20F683 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 26EB6FBAAA53394045C0EB2A567CF9A1 /* SJReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = A15D78B0FA43EBD40FACE5A2E7DCD8FC /* SJReachability.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 284FBBB0EEF3145B0916B84FB81D906A /* MCSPrefetcherManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBEC4107C91CF119D8982CE7A6010D7 /* MCSPrefetcherManager.m */; }; + 28B04E97913511374FB2A829FD52AF33 /* SJVideoPlayerURLAsset.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D527855525B48B3578DA8D2967620E9 /* SJVideoPlayerURLAsset.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 28C0F10A3661D9F82E0FDB3111BB81B3 /* SJVideoPlayerRegistrar.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DA83B0F4B2B1443BBA2EC097A678CF5 /* SJVideoPlayerRegistrar.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 28D790D06066EA99A6E90612F6E36B3A /* SJProgressSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 894B0AA413A404063B27A54AC54823B0 /* SJProgressSlider.m */; }; + 298120854633D5B18012CFEB693E74DA /* NSString+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = A10BBB456F8AD57EBC8D19DDF0E518E8 /* NSString+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 29BAE4FDDF823714A6F668E86D20D5EA /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = B9C3DA9F0611E3675BF0214F7C3F3C6D /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2AD4F55B0221B054980F575F45CA450D /* MCSAssetContentReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 81A5F54429D94B7C2DE99635F9C3136B /* MCSAssetContentReader.m */; }; + 2B16EDCC541D3A78E948D47CD2A177ED /* SJPageMenuBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D35E6DC370566A772F84A2BA1C43063 /* SJPageMenuBar.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2BCB2519ED5B8C9C04E321D0DED36C6B /* SJClipsCommonViewLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = C62EDB7CFD26DE1622FEE087F7181150 /* SJClipsCommonViewLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2C1625A602563990AA6F9CB6293032C1 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BF8FA680FE82A8599949050BE9A2BA1 /* SDWebImageDownloader.m */; }; + 2D18151082456D7AD3BDF8FC163413E0 /* SJSQLiteObjectInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 67A63F93FA3FC1C6CEEA94B7989AB551 /* SJSQLiteObjectInfo.m */; }; + 2D37C5B69AC0A3848D4AE9F0B76DA544 /* SJSQLite3.m in Sources */ = {isa = PBXBuildFile; fileRef = CB89A91AC4069F04F4138EBA2A4B4819 /* SJSQLite3.m */; }; + 2D7B5D28ED1967F3560DCA4AEDEEE852 /* SJTextPopupController.h in Headers */ = {isa = PBXBuildFile; fileRef = E30E45269F6FAF0C1697F43369942140 /* SJTextPopupController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D7C1B5C7150027F4EABF20A3BAB5AED /* SJSQLiteTableInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F0CD8F6FEC6679EE02A839E4C5BAD67 /* SJSQLiteTableInfo.m */; }; + 2D7CADA406963BD9442F3C600E9B9F39 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C83FEE136491E56225B8DE5E57B660A6 /* UIView+WebCacheOperation.m */; }; + 2E22E6448FF35F6E5D06BD101031328B /* SJVideoPlayerURLAsset.m in Sources */ = {isa = PBXBuildFile; fileRef = 066D181281DBFE3C16F6E2A2E761FB20 /* SJVideoPlayerURLAsset.m */; }; + 2EA4E6D1679596466BDECF42C75A6524 /* SJItemTags.m in Sources */ = {isa = PBXBuildFile; fileRef = B2BB35AC2F935C866372275931017879 /* SJItemTags.m */; }; + 2EF0DCAAA486DD122AAB2DF65FA54FE6 /* MultipartFormDataParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A6DFB96B40F9343669FBF7D62127779 /* MultipartFormDataParser.m */; }; + 2F4E6FF940175B40C974E14D1463610A /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 967089F38BA440450FA3F3ED47629C84 /* SDWebImageOptionsProcessor.m */; }; + 2F741787E47D7446431AC6D936ECB1D4 /* SJPlaybackListControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = F327EB19B5BB1C379666B49B0B2E574A /* SJPlaybackListControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F97063CAA5BC32101A63E3D16F9BB5C /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C4643B5E02C86DD4EDC79C59CCAA501 /* UIScrollView+MJExtension.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2FC763EB8D4BA342FFABA348774866DC /* SJClipsControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CCCB55BD375EFB892DC6355384E6A06 /* SJClipsControlLayer.m */; }; + 304329B9F20A017B2AD581A8EB2D46FF /* SJItemTags.h in Headers */ = {isa = PBXBuildFile; fileRef = B53ADD5B938712E0D0593A73C5893404 /* SJItemTags.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 30BE0B393FC49E37DA647D7B9C1DE0B4 /* SJClipsResultShareItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD15C29EEAF6A3BBDCA415CF4C2F24F /* SJClipsResultShareItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 30C8CADFA8FD3234678BEFB1E34BEAEE /* SJSQLite3ColumnOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8274A86E4EEFDE65A676AD15E49948 /* SJSQLite3ColumnOrder.m */; }; + 30DE07C7D381EB32DFB48275AA13657B /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B816F130915F94AE33C8619C8ECBAF4 /* UIImage+GIF.m */; }; + 3147BFF7E652D61FC6BECC7323D6B63D /* SJSQLiteObjectInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7607076960C74ABF61FCC7D159EAD83A /* SJSQLiteObjectInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 31EC07FDACD2D9329EC31399F98B10A2 /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BE82CBF35CB3E1791F0ED9DC3681AF64 /* SDDiskCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3279E7189FC4143DDA8326B1DC4A98A1 /* SJUTUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = CE317C4F6961E1CB541CC7858AEDFD9E /* SJUTUtils.m */; }; + 32B3D53A03DDA0E686AED861B2B73E82 /* MCSReadwrite.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EF95AEA493BEC4F0BECF39787AF02A3 /* MCSReadwrite.m */; }; + 32C4C91D571F9E2BB89426A1562A7303 /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = AA51206D33B3915DCEE140E2C4C2DE30 /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3350637DE65E96F3A672DE6C98EB454F /* SJAppearStateObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 10DE3F15AD556E9411F70D5954CAFD92 /* SJAppearStateObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 340473A203C86508F13D281157FCC4CE /* SJUTRangeHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 47DAFC93E68FEC751F9154BBC1FA4EC4 /* SJUTRangeHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 347926BC5E799D3580D2DB2ED7047251 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F0523867D9E0FBB3B6F807A9C8000716 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 34CBB7777CB1611F44843DF9A4CF8B24 /* YYModel.h in Headers */ = {isa = PBXBuildFile; fileRef = B34AF20E103BA2D6EFEBAB5AA7EA95C1 /* YYModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3587C66BF7D3796E8925A260AFA6F4E5 /* MCSProxyTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 38758E6210782BCDACC725D7F4B77776 /* MCSProxyTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 358FA75BF14415A2A3F783F0FA07BBDF /* HLSAssetTsContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 49340CE8860FD9B78D544420A5D1DE66 /* HLSAssetTsContent.m */; }; + 365450816508C6563EE5B1254D7D0E56 /* MCSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 35C040AF3F545E1F665BDB155444C9C6 /* MCSLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 366200CDFF983247A2D246BBCECD2D27 /* SJAVPictureInPictureController.h in Headers */ = {isa = PBXBuildFile; fileRef = B0D96E3303675B775621BCE46792165D /* SJAVPictureInPictureController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36A952A9712DF7AE0FE6C369089409AE /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = E222CDBE9F7EB33781D6BD36AEDA6E83 /* MJRefreshBackNormalFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 36E25CD877F011C66D2D06258F2D0FDE /* SJFlipTransitionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A6FA7855E0E0747DAAF0B83DB13F696 /* SJFlipTransitionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36F4CC3F3ED62D34C5505A869B6259EB /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F5DD4A11BDAFE0E2DCD94FAB41EE084 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 372335926297E6C0EA5E92C6079C51E5 /* HLSAssetTsContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD703BA5D0C48FD15CE2D64B722A6F3 /* HLSAssetTsContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37656DD4A00DB7543B45369CDE768FCB /* SJResidentThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E960FE57F50B36C8BE6AD07476CCB96 /* SJResidentThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 379902484CC10B58ACBD21D949702DC1 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C71F114DC93ECF0A0C8D7BDFBDDE346C /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37CF2D7ABA3A6C27B3DDF43ABA28D417 /* HTTPMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8388812910C1F7547864E602B83D0586 /* HTTPMessage.m */; }; + 3804449134522104A05DB6FC10FB65E5 /* SJDraggingProgressPopupView.m in Sources */ = {isa = PBXBuildFile; fileRef = B572B89B17997E76D86DEF65F97E3E75 /* SJDraggingProgressPopupView.m */; }; + 3820295A6972931BC561F92649028C60 /* SJSpeedupPlaybackPopupView.m in Sources */ = {isa = PBXBuildFile; fileRef = 20436208DA601A6215F809D0708CE68F /* SJSpeedupPlaybackPopupView.m */; }; + 3887803BAE3FB9282D13EBB8C4154E15 /* SJPlaybackObservation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8EDEFACA433E15171B76538DD3D715 /* SJPlaybackObservation.m */; }; + 38ABD33BC2FACA3021EF3E5F169F0B09 /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F4D7824FC6EA0F6D1332DE5474441D2 /* UIView+WebCache.m */; }; + 38E1529BD5F56604382D3154693CC10B /* SJTextPopupController.m in Sources */ = {isa = PBXBuildFile; fileRef = 080C7CD9B10920E0BAFB0AAB57F49187 /* SJTextPopupController.m */; }; + 392BB8D5E74CE3BE18CB48C27E4651B0 /* SJAVMediaPlayerLayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF85D3E495A18149720F39B0463EAEF /* SJAVMediaPlayerLayerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 397C72E5510F61792704B4144CB2F4CA /* HTTPFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = E1D93EA05B30E8571E132A25B6E7AE5E /* HTTPFileResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 39A07109EE09B0AC60EC8B4584B6AF73 /* SJSQLite3+QueryExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = C086016FB7A385F8E657E5AF2789B4C8 /* SJSQLite3+QueryExtended.m */; }; + 3A1FE65E6D1D6A35588C2E624FDFF0CD /* SJClipsResultShareItemsContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = BB977543C0A186871E702BFE07F04FE7 /* SJClipsResultShareItemsContainerView.m */; }; + 3A63A4B57EF20A48CE2B0761E30AE09F /* SJClipsButtonContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = CAF9D4361B5E5193B568818DF8A5A541 /* SJClipsButtonContainerView.m */; }; + 3A7AD29B8D2F32B2FEB0F8207B1F03FD /* FILEPrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 19C83F3E15E142FEF510A1EF385B7F3B /* FILEPrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3A9717EE5A4D22F64E3AAF8E956E1682 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B4111BDFA64E457569D7DCAB90A236B /* SDAssociatedObject.m */; }; + 3AF45D1B033D1A4B64453248E928BC36 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C93F520990FC9742CB6E4B26A7FD3CF8 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B08A5608A720D5A853F0A916CD46C49 /* AVAsset+SJAVMediaExport.m in Sources */ = {isa = PBXBuildFile; fileRef = 49F7B799B47978C788EF418FE35349DE /* AVAsset+SJAVMediaExport.m */; }; + 3B1C28B3E59498311947998468209C84 /* SJTimerControl.m in Sources */ = {isa = PBXBuildFile; fileRef = CBE828BDCA1DAABC0E0EAD2A09093FEB /* SJTimerControl.m */; }; + 3B5590AC6B758A4E5B30CA39D7DF7608 /* SJUIKitTextMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 4796885DB1E60E1D77D7A6A07D1E8ED5 /* SJUIKitTextMaker.m */; }; + 3B749B0DA006A8EC75B9F9D0765EBE6F /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C5D793E073EE82482E7E18670537D3 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3BE5A6979D239E6283A897310E8B08C2 /* SJEdgeControlButtonItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A9FAA6FD100021C0EB6E33D15359FA /* SJEdgeControlButtonItemView.m */; }; + 3BEA24BAC7C008EC40C80610B41B969B /* SJAVMediaPlayerLayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = F51D0BE56D210EC7A45DF9A96EEAC198 /* SJAVMediaPlayerLayerView.m */; }; + 3C47DB4E1E8DE9AD17BDD2F087B2A2B5 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = F8C291AB0A45F81F8E260006E9D7FDE1 /* UIView+MJExtension.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3C99E5504C47B6A9D604A3E27295D858 /* SJSQLiteTableModelProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B363A09A921A928D41905800F10AFFA /* SJSQLiteTableModelProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3CCF700D44C5B521BE141D5D645FAF7A /* SJStatusBarManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2234052EC5245FFC09686458614B084A /* SJStatusBarManager.m */; }; + 3CD2F63E95B9CC6B6061AF1CBD0576E5 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5796B33E91A03E1152C4EB85D77B3C3C /* SDImageCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D7B4B08328B2B2E19BB7409111F9E8F /* WebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C281B145F8EAB623716A0AB2B10D46F /* WebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D7E3EDBDBFCE5530E0D1B5FA8B9BE93 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 23C80FF64D8C6E998A9B74332E2A7F7B /* SDImageCachesManager.m */; }; + 3D9012165E5C342D806C364E6530F612 /* SJAttributeWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 94ED638DF88E299153887EAD85631601 /* SJAttributeWorker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3DBB668CC94B38F4046E8FF2F9BF0503 /* SJTextPopupControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = CF2996A21969460E527712603B99F3D8 /* SJTextPopupControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3DCAD351ECFD7B0C6E0EC80A47001549 /* SJUTAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 810211772F42E78119C94A8A1CCDC33F /* SJUTAttributes.m */; }; + 3DE1E5F4B4EAF03B2B3E7DCB40C0A410 /* HLSPrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B3BC1D6C605AF2686C4450D99D12220E /* HLSPrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3F3F4492BA39F5FB791C6FFF8D80F6C9 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DAD62B381A411776CB11534501D45A4 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3FBD31F48C9B5F05D7AC104F0DA430F4 /* SJEdgeControlButtonItemAdapterLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 4007443FF668DEC10590A3C299A6B003 /* SJEdgeControlButtonItemAdapterLayout.m */; }; + 3FC5EB6084385D3B7EF104D21352DBD2 /* SJVideoPlayerURLAsset+SJExtendedDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = 748117CC5D8B386423B53649A356EBE4 /* SJVideoPlayerURLAsset+SJExtendedDefinition.m */; }; + 41234058B8C00D8A61EE5AE062B3698B /* SJVideoPlayerPlayStatusDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 290D94F2FBA839C64BA358D54F83BE83 /* SJVideoPlayerPlayStatusDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42434DDCFE985C11B07AE57264F33BDF /* SJAVMediaPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = E1D2874CC45800F2F322E4D97BFF7CE4 /* SJAVMediaPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42BBED73FD96CF9F4AABD035A73F914A /* YYClassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = AB1DC0BAE3CE904F7184C45EC89324B6 /* YYClassInfo.m */; }; + 42E543C6C23AF4792D82D23CAC723C12 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D15B4CFB0AB94FEE46F1BDA8F8398CE /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 435526864122F1BB8A684ED10220456B /* NSDate+SJAdded.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CD2CF45FAC66A032E9AC730F5D82EF7 /* NSDate+SJAdded.m */; }; + 437CED364F4531E0949B8F81C4120BF2 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A6B177DCC541646B642B51293271662C /* UIImageView+HighlightedWebCache.m */; }; + 43D040AA3603616B6D916E4662455C5C /* UIScrollView+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E637714353961898B3BAD4FD0A89DCD /* UIScrollView+SJBaseVideoPlayerExtended.m */; }; + 44219909C17B743120FFA9C7EF2D561C /* HTTPDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 860399BF84DE03E77A6D5F77DF1B4138 /* HTTPDataResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 443836726797A61BADD40572375B240C /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E449F5B61ADDC653B9E79AB2315847F /* UIImage+MultiFormat.m */; }; + 44B8D4E26F498801F87969A545672056 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0531B770513FBEE636AF98EA18C5E044 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 44CAB5740A04D84AC72379FE60A6F0F9 /* HLSPrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 83F21FCD5E3182568338E0937C071772 /* HLSPrefetcher.m */; }; + 44F2D49FA9DD66F0ED330825ACCF9E08 /* SJUTRangeHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D6D989ABD04CED73C0494A2995727C20 /* SJUTRangeHandler.m */; }; + 456FC9E43EC312A2C9FD461800271B4F /* SJPlaybackObservation.h in Headers */ = {isa = PBXBuildFile; fileRef = C1DB38ED6838C430B6B5CAA401601880 /* SJPlaybackObservation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 45A1618374168EB6C1E19FECDE9E344B /* DDData.h in Headers */ = {isa = PBXBuildFile; fileRef = A425596A14BE94A416152052726023E3 /* DDData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 45A3C37CD305E903213DC2A4D7EEFB84 /* MultipartMessageHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 90E8465F106C550AD902B8058B90A8AF /* MultipartMessageHeader.m */; }; + 45A807B12495392BC49EA04440D1C9D5 /* MCSProxyServer.m in Sources */ = {isa = PBXBuildFile; fileRef = A0CEDDBBE8572ABEC86C7AC36634451F /* MCSProxyServer.m */; }; + 45CB8565A20CFBB5BCCA3966BBD729CE /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = A4D912D9B61DEF9951A4918C61615C0D /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 46390CD5F7A607AA250A6B7AA8859EB5 /* UIScrollView+SJPageViewControllerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = F06220E951076C76D33FD6ED2DB0B25C /* UIScrollView+SJPageViewControllerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 466A6E28B6617320F1A134CE4270AF73 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 359320249B549DFE6467EF972480C385 /* UIImage+MemoryCacheCost.m */; }; + 467BA5DFDA7AC2BCEB0A7D0A15F2DB14 /* SJPlayerViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BBEDD54E84A6ECE46A703E888C9271E6 /* SJPlayerViewInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 46AE79D58CF186811426DD307556E3F5 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C51B8A56C1A5F901E8EF26991BD0768 /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 47665D5A44B191EFF02F2AAAD8303250 /* SJFloatSmallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A494F52685118B466DB6B1A29EE484BC /* SJFloatSmallViewController.m */; }; + 4807CFEAFDBF753681C9708D1C77D28A /* SJClipsCommonViewLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = EE62BEFCFA8EF039BF62352FAD7405CC /* SJClipsCommonViewLayer.m */; }; + 487CCF1EF4C84CE9DC608B4148ED0DBB /* HTTPDynamicFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F45A1B16BC3C68CBD9282E849F43A82 /* HTTPDynamicFileResponse.m */; }; + 488B42265FF34451712F7FF5769FEB2E /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = D87D7D90010ADA8A499D9DC29C613929 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 488E6E97065CCBE69C251BD7271FB4DC /* SJUTAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 810211772F42E78119C94A8A1CCDC33F /* SJUTAttributes.m */; }; + 48CD9876A42E43EB28EE19904C3DBB65 /* NSTimer+SJAssetAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 695C9C8409DF76DFA89F015E524F6301 /* NSTimer+SJAssetAdd.m */; }; + 4901C985937E822E7EECB587E4327DA4 /* HTTPLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 18E6AB286955742A4F272FDC090D42E2 /* HTTPLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 492AB9A1674E3690881AD7A2ACA77673 /* SJSQLite3TableInfoCache.m in Sources */ = {isa = PBXBuildFile; fileRef = AC01936A82CA431ED572E08FD91AAB46 /* SJSQLite3TableInfoCache.m */; }; + 495FE9EA6A622DE2C936D9F1DFB77067 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CF7F8B9C5538EFF27E6F8FB583DF1B /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49947222A8C7FD51AD55675858BA1190 /* SJBaseVideoPlayerConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F0F72503D5D7295EF07DD04F0E1623C /* SJBaseVideoPlayerConst.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 499B45A5AA7DAE596BEB0D7B9FA56CA9 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 986A62EA6AF2A4C851BF30C5E5BDFBC2 /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49C4D2F08F6F387DB57D0CBFC65AFE8F /* SJClipsBackButton.m in Sources */ = {isa = PBXBuildFile; fileRef = EF2DC28D1F5573261D4950B2553438D1 /* SJClipsBackButton.m */; }; + 49D0CB23341719A4C29D9B784A478554 /* SJBaseProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C4DAFA503034AE5933119679FCBF4AF /* SJBaseProtocols.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49D277F3A240760ECE77659D93723C82 /* SJReachabilityDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = F9CBC4F9C426CF60B3E24591B5F75757 /* SJReachabilityDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49DC936A394CCABBF42CAF089B633679 /* SJApplicationInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F3C2A98E1B04FC192E6BE7299A5CCC7 /* SJApplicationInfo.m */; }; + 49DD4438BF2BB5A625B0A45E393E7985 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C4FDACE7FF44BC62E8290797D884F3B /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49E5002461815D50BAB87B11E73B574E /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BA2EC35412B129157BAC0D1A497C8D9 /* NSBundle+MJRefresh.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4A3927EC15F00308B70AAAFE8668CC57 /* SJBaseVideoPlayer+TestLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FBE4E1577A861DC006673BC6E041BDB /* SJBaseVideoPlayer+TestLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4A8A7B6E07869DD598A25C3DC517306D /* SJMediaCacheServer.m in Sources */ = {isa = PBXBuildFile; fileRef = AFFB3BA820AFA27385483AB38D71F0E3 /* SJMediaCacheServer.m */; }; + 4C08112DD360F3AFC8D6B37331874A7D /* SJVideoPlayerPresentViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 73855928D6CB45F29C3F5EFF8F48FC3F /* SJVideoPlayerPresentViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4C38CCD4B21E3161E3000B375F42FB56 /* SJPageMenuItemViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6FE5BBD05C9E84C03BFA04BD7A10A7 /* SJPageMenuItemViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4C83459AC78CCB3CD20D0D24D14A1746 /* SJQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = FDAF7D92F11A7CEB30DE69CB6515270A /* SJQueue.m */; }; + 4CC56D246C1BABEBBF7A37B6FCD45FF2 /* MCSAssetCacheManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EA10B22C5985D7573A21704EC8472E40 /* MCSAssetCacheManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4CDAC3854B539F96296F7A105FD36A3B /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E0228FE59233070109F2403886FA2923 /* ViewController+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4CF5B4F58BA84BDD0A581FB9EACBF169 /* FILEAsset.h in Headers */ = {isa = PBXBuildFile; fileRef = 18BBCC2C8272952657E3EC3040151D16 /* FILEAsset.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D02C045EBDBA5B696D981F669C177CC /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B1A8BBC3615B8D9B76657122D27CEC /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D373B26D4471E76C63209689D7B8290 /* SJSQLiteColumnInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 03AE8E594CCF2D1AEE07DD21EC35A5FE /* SJSQLiteColumnInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D53C4A9F657E6F8611760183E4F67B2 /* SJDanmakuPopupControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 81EAF62D5C770CB5E7AC1D425E08E689 /* SJDanmakuPopupControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4DFCAC135D8C0C063F08AACDA1B3545C /* SJFitOnScreenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2910A43B51CC86047BC9294FF20272D2 /* SJFitOnScreenManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4E1995E95863D466E15EAA72FA729136 /* SJVideoPlayerClipsDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B753BF6CF4DC76DE0451384BB3FBD3BB /* SJVideoPlayerClipsDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4E5EBC1FC7B50C24ABD8682878AFF840 /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BE293C1EF74747F4672B3B9E851C3DC3 /* SDImageAssetManager.m */; }; + 4F4AAEA62602C95751488A4D2D73D25F /* SJSQLite3+RemoveExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DA84214B85B36B936A74F8287873DB7 /* SJSQLite3+RemoveExtended.m */; }; + 4FAAE39F5CDAA7D062DE9EFBF10A5428 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D68900AF66FEA1436B32625BB529A949 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 500DF5082FDEC4D002C03D0BB51097E0 /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C81F66089F4F17695C34520909B798E /* SDAnimatedImagePlayer.m */; }; + 50E319E46EB1A8B93D193EB70CC45BAB /* MultipartMessageHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = F321E287F7CB3803C50810E14666CD7A /* MultipartMessageHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 511F20CBCB267F17C7E2F433339CA2B2 /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 173902BE7B236E60ABADEE40F62F1E3A /* MJRefreshGifHeader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 51EAEC957CB6E5081F9CC80636AB4FBF /* SJAttributesFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = D4A8624B6929399B4C3D8104912C77F0 /* SJAttributesFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5211182AE701A20C41B7F85E2E211437 /* SJEdgeControlButtonItemView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E9A9C22E03571208664EA009CF0CB2B /* SJEdgeControlButtonItemView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 52392098C02346CE084DF1F03E8AF057 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D5E0D805D3243B658B328DE4B8EBD35 /* SDImageAWebPCoder.m */; }; + 52695E4CCD9694A03EDC912D7CACB343 /* SJFlipTransitionManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = A4EDA8D0B29FE13E7F1C027D271790FE /* SJFlipTransitionManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 52BE4B30A584DFEB823436DFF3CD5C4E /* SJPlaybackHistoryController.h in Headers */ = {isa = PBXBuildFile; fileRef = FC2F2F78C94E53AAA721CD726CC73565 /* SJPlaybackHistoryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 53040D366C4A83EEF45E12B65B22ACEE /* SJEdgeControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = D2A019A0AD97FD48BD74D7F7A8760884 /* SJEdgeControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 534CE953B5F7DBF9D7960D998ACFC815 /* SJControlLayerAppearManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B04DAB6384B8322FB389C4B00605527E /* SJControlLayerAppearManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 540010065DE0F7EE6FE3BC525148A720 /* SJVideoPlayerClipsGeneratedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 639B4B6419CD9C19A68FB7C6F8E320CB /* SJVideoPlayerClipsGeneratedResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 544AAF159DB3FBF39F478057726EEEEE /* SJUIKitAttributesDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = D548AE066A6319627060FAD6F400B71D /* SJUIKitAttributesDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5471E4447E8CB1D852453A0282B31AA2 /* SJSQLite3+FoundationExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 444FCB3EA5A297335E3DA8FB4111301B /* SJSQLite3+FoundationExtended.m */; }; + 55ABEC35AC9B2BE78F893D3DAAE4C146 /* MCSDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = E07A8A9A87DD31233CBFAA6400D21A52 /* MCSDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 57FF7C6419B6CAE8888DD240249E5D2C /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 01BD3800159B08192BA01572EB70DBC4 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 580AAC393F70FB56C7980CAAD340AE63 /* SJControlLayerAppearStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CFEB801AD61A48F35001D499112E4DE3 /* SJControlLayerAppearStateManager.m */; }; + 585F2320036D957B01F93D38DE02E032 /* UIView+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = B8B6F78746C176F1ACFEDC1047695E7B /* UIView+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 592C0587FF1A919281C1117DB791EDD8 /* UIImagePickerController+SJUIKitExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C7AFDE25DB16454F951BBBD8961204 /* UIImagePickerController+SJUIKitExtension.m */; }; + 5932AF0DB03C8CC12811396DC38CA48B /* SJAsyncLoad.h in Headers */ = {isa = PBXBuildFile; fileRef = 809547284B0BC63048E8188D808EF96B /* SJAsyncLoad.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 593EFE3FBB6E3203B69D91B111D929EA /* GCDAsyncSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B7AD1B5A698AF56C118B1122FF936206 /* GCDAsyncSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 599CC29C4A7B3A253FDF66D622682842 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2302FF303A7D61A9CAAE6AFE27066096 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 59CF33F6CB65586F62CDD6FE916610FA /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F82EE2E829B175F325855834CC26716 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A1D6709BA166D0F8E2E7D4B218D890C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A4990C5BD1FE267C5D022756AB21FF /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A5CBE5DF9B75C4A124D6A3CC21AF9E1 /* SJVideoPlayerClipsParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 46C824C75366318E5288BBF888AD5FB2 /* SJVideoPlayerClipsParameters.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5B35D22F7C3E9EDC867738EA63239797 /* MCSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = AD5E6A0CE0354FC1D5EF6BE196B204C5 /* MCSLogger.m */; }; + 5B8E003D6DC7D27F5A251FDE19EEBDFA /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F8E49B716E737024EEFB3D90D13DA79 /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5BB1C9B1CDB87D21CA99854B428DE4D9 /* SJClipsVideoRecordsControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE4E95023B7291C8551D3EB60D6E99E /* SJClipsVideoRecordsControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5C684FE98DA648E4BD4E3ADFBEBF6206 /* NSAttributedString+SJMake.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDAE654785A5F94F62AA5E64A31488 /* NSAttributedString+SJMake.m */; }; + 5C9744F8AE2D7B6EB5F733D746FA2ABF /* SJClipsVideoCountDownView.h in Headers */ = {isa = PBXBuildFile; fileRef = 55EBE1E03E492BA56B07F6FCE1492D34 /* SJClipsVideoCountDownView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5D189D2E6AB579818BDDA987E0A78900 /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFCA953DA178EEA22EBE4C5C685A860 /* SDAsyncBlockOperation.m */; }; + 5D32E4680CD69BCF890D84A0E5EBEDB4 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ED2C0D156B8A12A533C195AC8BBFDD5B /* SDWebImageManager.m */; }; + 5D6E22788272B5D46CAEE02767829638 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A15D7DE324B31E64CAE16FF03EC3793 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5D8498D48C3D00E1046817318FDE5E15 /* MCSAssetContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 415A9E8FD8AC83E2FF048A1C24A69228 /* MCSAssetContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5DFC0BA3F9965A9E43A14241666E71C1 /* SJSQLite3+TableExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 604D826398E8D22E3B61AD1FFA0F6A77 /* SJSQLite3+TableExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5E2D1553A26B900B120223AB39C94781 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 507EEE2973E319418023A9CF7FF1EF1D /* SDImageCache.m */; }; + 5EB9D56C0108E9D4346094F68BCA82FE /* SJClipsSaveResultToAlbumHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = B8E7871B8BAE5A1A1A0C807BFB361231 /* SJClipsSaveResultToAlbumHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5EF7F85C2248D4A2A0B0666D83C782B9 /* SJPresentationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 127B306A8EEBFF68A999E0032B1F4645 /* SJPresentationQueue.m */; }; + 5F54AEC23FD321EFCB8831B08A5E7124 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B8BE680DB38638447568CB8401550D3D /* SDImageLoadersManager.m */; }; + 5FC8F80BED07DE65B60D5E0E43B4778E /* SJSQLite3TableClassCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F2F02F17F7E1331E64603A285A8ABB5E /* SJSQLite3TableClassCache.m */; }; + 5FFA099E4EF8771BFE2AF91485053BA9 /* UITextField+AsyncLoadImage.m in Sources */ = {isa = PBXBuildFile; fileRef = B1DBC6F072831DD044636D140F71FA0F /* UITextField+AsyncLoadImage.m */; }; + 605A400A2393521DA1776104786E623C /* SJAttributeWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 94ED638DF88E299153887EAD85631601 /* SJAttributeWorker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 61027B85E6E97E8C6764C51EF72790FF /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 48023A24530BF8027883A6E3A4E093E7 /* MJRefreshAutoNormalFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 61474AD030287F2254AA7B753B3E44B7 /* HTTPMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = B8BD0A8BB3AD61C5B7FE5B759A71E7C6 /* HTTPMessage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6180765724F0D4844685434240F3BD47 /* YYClassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE714B65BC6D2DE9D3F9B2639A35636 /* YYClassInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 61BC757C493B80E6397BF2410F25E453 /* SJNotReachableControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AD6E80C1A070078C435F98DE2175C8C /* SJNotReachableControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 621C806D0AD52F778EE4EAA2F6BF5778 /* SJPresentationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 127B306A8EEBFF68A999E0032B1F4645 /* SJPresentationQueue.m */; }; + 6242D32137595AF2D24407C6EA909C77 /* HTTPFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 664902A9BC612F4DD0127445FD877632 /* HTTPFileResponse.m */; }; + 624FB0CF8D4E57595BBA3A2CC169DF91 /* SJFullscreenPopGesture.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F5DC7BCB6EEBA1987480A4DC8B677C4 /* SJFullscreenPopGesture.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6257BCE794AB73B68798102660DE703C /* MCSContents.m in Sources */ = {isa = PBXBuildFile; fileRef = 9EBB7329011D77BAE2C5F974B99D953B /* MCSContents.m */; }; + 630E4F32F3B8D1835AE0A9CB40F5C1F3 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = AA4207DB15377251DDF233B9204C7022 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 636CA2BF3939585E7F3B6190B9773219 /* SJSwitchVideoDefinitionControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7613B2B5837FD067B951B1E77D24E455 /* SJSwitchVideoDefinitionControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 63B22BCA7D724013C57CFB920ACC2CBF /* MCSAssetUsageLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4266F54BACFB5E01B2F92CD5464B3E55 /* MCSAssetUsageLog.m */; }; + 63C24C3C1B6DB1958E6355FC15C6DBEA /* SJMediaPlaybackController.h in Headers */ = {isa = PBXBuildFile; fileRef = 55DA5AD14DC8B1342DEF824CBB3F3A4E /* SJMediaPlaybackController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 63FAAB0D781FB4F5D23F620ADF4BAA67 /* SJRotationManager_4.h in Headers */ = {isa = PBXBuildFile; fileRef = 736F1CF68C2AB212149B5A2B1FD0CB91 /* SJRotationManager_4.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 64073288F98D908AB4E74A4266B1AAD0 /* SJTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = CA9A809B44D5FA678D1449340EADDDF3 /* SJTaskQueue.m */; }; + 642240998AFBB89DF3F3C767A162217A /* SJWatermarkViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 500F01094FC2E0BAF1344ABBDF5F55A9 /* SJWatermarkViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6447A71B22EA879E9AF45EE688E08494 /* UILabel+AsyncLoad.h in Headers */ = {isa = PBXBuildFile; fileRef = A12998581DFF80163765A62CF4FA9DC6 /* UILabel+AsyncLoad.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 64DFD8938A93B51CE5B6B4490AFB7657 /* SJUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = DEF1D566576D65204662FA2FFFC7B2D4 /* SJUIKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 64E55DA504F8E56535C881FD9091A3B8 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = AA2EF95B02727250D337361ED0719EBB /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 64FFAA703BE829F23807DD1965B57238 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E6D773DD4369B78D648BEECEFB59283 /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6522472B3BA32F3DF25BCF288A73C697 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C9E549A3FAFF91EEAF036808B603253 /* UIColor+SDHexString.m */; }; + 659D9BCE4AFC04E2B6B909CCB94DABD8 /* DDNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = C2D97547C0E93B7F947F73E764586ADD /* DDNumber.m */; }; + 6601BFFAEC51040EEB222A9561F02C94 /* MCSDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = DDA0D66CF6AE118C10B318FA71A0F921 /* MCSDownload.m */; }; + 66147260AE7B00AC710D78E4817F238A /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = CB0A231B928E08BB94AB7F14DF7C7C18 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 669531877F38BE78072B170D1F88E4AA /* MCSConsts.m in Sources */ = {isa = PBXBuildFile; fileRef = 67431929FDE185BE76CE7D7486D4629F /* MCSConsts.m */; }; + 669792AE808FD1BEE8CD2B2C4EFAB1C9 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 54AEC2BD8581B4B1726BCBC2797E5219 /* MASViewAttribute.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6764FA4EEF2A3644A93FD89FFA518448 /* SJVideoPlayerConfigurations.h in Headers */ = {isa = PBXBuildFile; fileRef = D971A07322B9048E4BCEDBAC83800EAD /* SJVideoPlayerConfigurations.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 676CB2C9FB311A4213B7CB625999942D /* SJVideoPlayerPresentView.m in Sources */ = {isa = PBXBuildFile; fileRef = C8CD95FEB080E848DA806F19EA5D45D6 /* SJVideoPlayerPresentView.m */; }; + 6771ED62E458661E207318E2285D7531 /* SJRotationManagerInternal_4.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DFC7DEAA1E00DE172B667DACFE4FDBA /* SJRotationManagerInternal_4.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67B4150984F775F064E0D00DD6463BA7 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D5A1A8F0C455FAF2D4ACBFC6B0B6C51E /* SDImageCoder.m */; }; + 67FD5B4579123135F2F7CBE01B52BF04 /* SJMediaCacheServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7988C2F93D7BD164E0AB80CA4F805B5A /* SJMediaCacheServer-dummy.m */; }; + 68088E7AE179D8C930E1EC4C8F216650 /* SJSQLite3+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6AA2E52A9F795D7EBC65E674F52C1F /* SJSQLite3+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 68450462DA2DB2A0279C95C297DD80BD /* SJPromptingPopupController.m in Sources */ = {isa = PBXBuildFile; fileRef = A7E71F4B4770C82C3BC3C290FC76070D /* SJPromptingPopupController.m */; }; + 68D889D5200FB0E6A16B09CA8F80931F /* SJClipsButtonContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D0FE6357F65A0ACE1C34CB60F4AC520 /* SJClipsButtonContainerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 69019B1312507D80BAC2673D752CC242 /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = F1143E533762041724F662EB780D2F8C /* MASCompositeConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6923DEC35C9885460DCE5A4710712F33 /* SJSubtitlePopupControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E91B665E49F5BA2E6E0C6BA2C00F072 /* SJSubtitlePopupControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 69FFB4001096FCA91C597C7118E515A9 /* SJUTUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D014B242EACB0879827859EDCE96AF29 /* SJUTUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C0527E5F3C8ACCB8C1FDBBC9B7460A0 /* MultipartMessageHeaderField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDA3887632BBBC9C363EB3450EE00B9 /* MultipartMessageHeaderField.m */; }; + 6CE218C0914367A0CBB486EE3A7D0748 /* HTTPDynamicFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 2375C3ECCB3D6B1B7865813877E83AFE /* HTTPDynamicFileResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D17438979D08199CCE5CA62509FAD13 /* SJPageMenuBarScrollIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = A1781BB8254C369C58A731B81E875929 /* SJPageMenuBarScrollIndicator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D8F9D49A39CF3ADEF877A16ABCFD2EA /* SJPlaybackListController.h in Headers */ = {isa = PBXBuildFile; fileRef = A66CF26FA22E065BF381677F271099E8 /* SJPlaybackListController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6DF3FFED33E393C8C45224AE588EBC80 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 22D3088FBA52DF8DF003A747FCE5D49A /* SDImageCachesManagerOperation.m */; }; + 6E4862D1C5F973B1DF802B32224303CA /* UIImageView+AsyncLoadImage.h in Headers */ = {isa = PBXBuildFile; fileRef = E67DD63064C2FE5066D2F78AE06724F4 /* UIImageView+AsyncLoadImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6F6921BECA66F7E8A20546F47C470581 /* SJAVMediaPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 511AB39E46E0D51D48930E6880FBD260 /* SJAVMediaPlayer.m */; }; + 6F9DD87AA63E04841562D190A883E122 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 6631982D1E6C1EC9E71F984C0948F079 /* SDAnimatedImageRep.m */; }; + 6FDA7F6AD76CF1E5619789E0F070FD90 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = FA9B67487D8A3DBC4C617B0833CE4291 /* SDInternalMacros.m */; }; + 6FEAF8A58DA3E4F8C4C6EEB77DC8D712 /* NSAttributedString+SJMake.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDAE654785A5F94F62AA5E64A31488 /* NSAttributedString+SJMake.m */; }; + 704E6E494A06EA86348E495BBF3C0590 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 68E27B048D3324473984D3C5EB20E2E0 /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 70F07F345936E588038107D3F7657AD5 /* FILEAsset.m in Sources */ = {isa = PBXBuildFile; fileRef = 95602DC89D079908EA066CDD624E405F /* FILEAsset.m */; }; + 712D46616A5FB18F763FB0C8A78938A9 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DF64F54BE9707D539DCA8EB0200D0AB1 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7146D119C90343428E796DF4BC9FED6B /* UIScrollView+ListViewAutoplaySJAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 1390188F41AD2E413E12F9211AFA483D /* UIScrollView+ListViewAutoplaySJAdd.m */; }; + 71569697E2DEDB7EC96CE2DBAF1B4BF4 /* HLSAssetDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 379DC841CE13FE6ACDDE103B1D8CE63B /* HLSAssetDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 716191563C193C478FF53B27F89F0DD4 /* SJPromptingPopupControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D82ED673446533ADC9EF8875C2AA32A /* SJPromptingPopupControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7166B91FCF36E78A88484105D68017BE /* SJEdgeControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C1B227E76AC083FB6F8CAADE5462003 /* SJEdgeControlLayer.m */; }; + 716A73BF582B0970586D6F320E31A549 /* SJPlayModel+SJPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 39F3F4AD37B6D581B9481BDBD52D2F1D /* SJPlayModel+SJPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 719EB6D913C38906B81D5451551F5992 /* SJPlaybackHistoryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A13F4848EB10FC8A178DAC51B036711 /* SJPlaybackHistoryController.m */; }; + 7217D38155C3F032D763F5E985EEF7F9 /* SJProgressSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 78410545552116E1184980863D3DBD98 /* SJProgressSlider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 721CF076DD19EF0453503E769B2D4657 /* SJSubtitlePopupController.m in Sources */ = {isa = PBXBuildFile; fileRef = 99BCB97F37A186731AF4DA3FE6356E34 /* SJSubtitlePopupController.m */; }; + 72BBA305179297278CAAFC8DC4FFFC73 /* SJPlaybackRecordSaveHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D1349F43E096A75765D9E1683F5E4E9 /* SJPlaybackRecordSaveHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 73977E044AACF14ABA21629C1568CFFB /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5FD3D18077BB39F1C0867600CEA3A3 /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 73D8125FB8BB2FD4EBEED7168B77BF96 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = E0425B85618A97714B77D62C9E95ED8C /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m */; }; + 748423641F46A8AB80BE0BDF4D399672 /* SJSQLiteErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1FC0CA3B0EB1756B541166C9D50BF8 /* SJSQLiteErrors.m */; }; + 74C46EC783EC56A2D2A0358F1C84DC46 /* SJSQLite3TableInfoCache.h in Headers */ = {isa = PBXBuildFile; fileRef = EF7CEF02513F092B59BB3B9B4D15B830 /* SJSQLite3TableInfoCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 74DC341A6E04138E815A46A48E2BB832 /* SJViewControllerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1269E5ECA2420221EC3021F7DE878B7F /* SJViewControllerManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 74FBA450B9F8F0931336DC2C6A45E99C /* SJSQLite3Condition.h in Headers */ = {isa = PBXBuildFile; fileRef = ED22F17412C71E70093E8723D973CB41 /* SJSQLite3Condition.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7513C21A1807307AE30D3B59DC49FF2F /* FILEAssetContentProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = CAEBB84CF6AC4F1B7E6952F15006A827 /* FILEAssetContentProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7560B1CA4E33BC0B6A8C46A2B5CE6531 /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E02E185E726FBC23B2B1CCF797DC6E70 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 75791336E57B946239D8BF7C7AA958DA /* SJVideoPlayerURLAssetPrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 202D52E6CD763B7ABA66289A563B6A87 /* SJVideoPlayerURLAssetPrefetcher.m */; }; + 75937F5FB1404895F1CF7F1B38266180 /* UIScrollView+SJRefreshAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = FF8A6A821F0385303AC7929F22E45DBD /* UIScrollView+SJRefreshAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 759C6D77C7355324CFAF0B3308772A2D /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B1B947F216F4BB68383C03E72F0B14A /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 766147950D6C80DE8FD54BB81A6BA273 /* SJRunLoopTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F216DDF4BA3948ADB668604E719DF9 /* SJRunLoopTaskQueue.m */; }; + 76E3CE23E73CCE61AE17E84B0E56362C /* NSFileManager+MCS.m in Sources */ = {isa = PBXBuildFile; fileRef = BE728778C6EB09C7BC761921BF4D4614 /* NSFileManager+MCS.m */; }; + 777AF5ECF38A5C134C70562AE96B7E09 /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E6BFD5A3AD9A62CA3F60188E08D696 /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 778838462DE7977EA481E15D5BA501CC /* SJUTUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = CE317C4F6961E1CB541CC7858AEDFD9E /* SJUTUtils.m */; }; + 77B97B159773A28147A8F846E85B3EB1 /* MCSError.m in Sources */ = {isa = PBXBuildFile; fileRef = A8CC5D71C7A4E3567E62D4F6D912FB04 /* MCSError.m */; }; + 77C67AA9FE2D7F576C84282F52B5AD6C /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 277C1614B8154708179AA8D20ABBC538 /* SDWebImagePrefetcher.m */; }; + 789F569FAA1E69BA13C778502B1E1EB5 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 878C82EE229DE11A18DDC8A3C6CFB13B /* SDImageIOCoder.m */; }; + 78ADFF51DC12C2A6D30BAA6B34B5D777 /* SJDraggingObservation.h in Headers */ = {isa = PBXBuildFile; fileRef = 18AF14DC9F4780968B5A77143106B8B2 /* SJDraggingObservation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 78C0B0DB43A7AAF1B486331429BCF6A4 /* SJBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 60DDCFD9213812CA9F3EC73B3577F27E /* SJBaseViewController.m */; }; + 79390DBB1C80972081F34D4AC793D638 /* SJSQLite3+RemoveExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = C086410D7A42C69D53890ACC96B270C4 /* SJSQLite3+RemoveExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 79E24BCD4A1BBA00EC0AEDE0AB34726A /* SJCommonProgressSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 26D6788B83F99BD7E6F0CF03C40AB7A5 /* SJCommonProgressSlider.m */; }; + 7B3C4949801D9DC3F68309037A71C3EE /* SJMediaPlaybackController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C18F749BE2BBC3ACD38A50E3C2ADCB /* SJMediaPlaybackController.m */; }; + 7B46E9BE3B31EE7837F514529B213D27 /* MCSProxyTask.m in Sources */ = {isa = PBXBuildFile; fileRef = E541C966B4FD35945CE807830917B061 /* MCSProxyTask.m */; }; + 7BCE3E8DC12B3FD92C093BF45CCC7093 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 43B74B770C3C490BA38CD4D430B481EC /* MJRefreshAutoFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7BD8EFCDB8FB92A678BFE15B5676268C /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DDBE942F896A2A1978598E974191373 /* UIButton+WebCache.m */; }; + 7BFA37F060EC5393FD5B7670CCA47D65 /* SJSQLite3Logger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1780BDCC7FD8815D6B93DD6DC07A2FE8 /* SJSQLite3Logger.m */; }; + 7CED05012814D4B44B4DC7DB2BCED999 /* HLSAssetParser.m in Sources */ = {isa = PBXBuildFile; fileRef = B253A0F84B00A030DEE1A0E8029620DC /* HLSAssetParser.m */; }; + 7CF97C6CE278BEB9F966FDA0FF940615 /* WebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 94C5A2FC18FCCA7AA31E05691BD92AE7 /* WebSocket.m */; }; + 7D407F9D8389FC7E26ED497723F844D5 /* UISearchBar+AsyncLoad.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C9F232B6BBE209A9B893A3D3BD46C5F /* UISearchBar+AsyncLoad.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7D6E5385E0D31CA1F6815C71970B6824 /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 9EC39621B2BFF385D11E74F53A5C3326 /* SDWebImageDownloaderResponseModifier.m */; }; + 7DAF7077BA63B723598804488ED7F7D1 /* NSObject+YYModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 715F0F8E9E7668D097DEA3903C71E61E /* NSObject+YYModel.m */; }; + 7E58DF1127094F6AAC1A4AB948FDAFC6 /* SJSQLiteColumnInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 03AE8E594CCF2D1AEE07DD21EC35A5FE /* SJSQLiteColumnInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7EEBA96900D13D60D15CB6551B984E93 /* HLSAssetContentReader.h in Headers */ = {isa = PBXBuildFile; fileRef = AD55EEB13F947F2307EA51528F44A640 /* HLSAssetContentReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8003BE3C4F144E735558CDD2691463A4 /* SJAppearStateObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = C00EF724D95AB145FDF6C925649488F5 /* SJAppearStateObserver.m */; }; + 805C4428FB1AFBD40DC71FB594A41514 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 341B859CCB0F7D935F2C84F180C79BF5 /* SDWebImage-dummy.m */; }; + 80C902CE405FAF1C1501C275D3A48A28 /* SJSQLite3TableClassCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F2F02F17F7E1331E64603A285A8ABB5E /* SJSQLite3TableClassCache.m */; }; + 814FB7E01D2C82AF63220D0D509BFF97 /* SJPageCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = B8BC6D964C8A96E699E6F11A8E6A672E /* SJPageCollectionView.m */; }; + 815242B210D743C1E8D3E2A82FF0BCCC /* MCSReadwrite.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1042C1A05FBAF9D8A9C272A0EEDF4A /* MCSReadwrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 81D2B58F45327142B530DCCA49DCDF09 /* SJScrollingTextMarqueeView.m in Sources */ = {isa = PBXBuildFile; fileRef = D409DF0227B42F346E15A0AA1B6A1737 /* SJScrollingTextMarqueeView.m */; }; + 823335BA2C3EA5318CE04216786EC353 /* SJRouteObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 3685F52A1B2C41038B513EA64C9187A3 /* SJRouteObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 826E3E1E3F5A1D8DAC7229FF326D1010 /* SJRotationManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B87A582F31D401651EC7316A9D06679E /* SJRotationManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 827971675DDE1BD225031B3F3C89450B /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E40D4387AC4D28BC69099B0F4B51DF9 /* MASConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82A9641E72205F131DFAAF15FBB9AD4B /* SJSQLite3+RemoveExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = C086410D7A42C69D53890ACC96B270C4 /* SJSQLite3+RemoveExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83645D5EF2E2E2C3B8D6B5D47CE8C500 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 98572816080B88ED07C88C4CF0EAB44A /* SDImageCodersManager.m */; }; + 83788761F4E5BD265AEDEB53949E7E13 /* SJBaseVideoPlayerResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 51B8525840B132EB1861D6065EA21D2F /* SJBaseVideoPlayerResourceLoader.m */; }; + 8386669236D7CE8DC3A2BF83485E531D /* UIViewController+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 85ABCDF43D596CD4024DFE81DB3B5012 /* UIViewController+SJBaseVideoPlayerExtended.m */; }; + 83F321258AFDB355593C188E33832F5C /* HTTPAuthenticationRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = C269C70C80619B2CD6E406066A13E9F2 /* HTTPAuthenticationRequest.m */; }; + 8424EF687BA103BDEDE01D19166F8AA4 /* SJPageViewControllerItemCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A32C8280690E162805FFD5B3456363E /* SJPageViewControllerItemCell.m */; }; + 84E439408986B311F3CCA57974A61082 /* SJSQLite3+TableExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 604D826398E8D22E3B61AD1FFA0F6A77 /* SJSQLite3+TableExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 858D9CF752D2F971A9548824DD3A8D72 /* NSAttributedString+SJMake.h in Headers */ = {isa = PBXBuildFile; fileRef = FB8DAB511A91133A1AC99A4CAE4FB78C /* NSAttributedString+SJMake.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 85C2C32D54707272E1D8A1AE61B5BAD1 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = D35085DEC9092E6318956FEA656ACCBF /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 860422525770A398B77B1D0EFF3ECCC4 /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = E53769C3419DB9DFD8526B52FE0DB92E /* SDWebImageCacheKeyFilter.m */; }; + 8604E6D11445AC190731486857A9E0A9 /* NSFileHandle+MCS.h in Headers */ = {isa = PBXBuildFile; fileRef = F104155367B91523B2C252EA8BE5310B /* NSFileHandle+MCS.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 861B21F6B97DA1739372BA07CC824CD4 /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0755884873AE380C47B411F931940C2E /* MJRefreshNormalHeader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 86F880BDB62B5541FDC42616BB37A0E4 /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F88D7C3CD7ACA089D922EBDC82191E7 /* SDWebImageTransition.m */; }; + 877314D20C411633E5D724F9E964A4A3 /* SJEdgeControlButtonItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D21A7C30AB67CCF1160AA23A2A10ADB /* SJEdgeControlButtonItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 87C08B58A6DFAA1CA578D06CC1B28F8F /* SJSQLiteErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A4253460EF143E6B5DCC6C7B1BE600 /* SJSQLiteErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 87D4510BB9E48E9D2A3B310AD69235A0 /* SJDanmakuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 849CC26AF3531478DB43C4F030EC3956 /* SJDanmakuItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 87DF30760AD55D7A8141888C805CDF7B /* SJSQLite3+QueryExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 886570E14AD8E3D5960D7F977DEFBF02 /* SJSQLite3+QueryExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8883DEAFCE1A003F1A0F624167D4A9EB /* SJVideoPlayerControlMaskView.h in Headers */ = {isa = PBXBuildFile; fileRef = A5AF8DAF56E7DA13007650E986F7780C /* SJVideoPlayerControlMaskView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 89614CA046BF1CD91E89691E6D12A774 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B9DAA6E3992E053C9A953B80F14027A /* SDImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 897AC76B0E444A158B807B8354E67D5F /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E4CCE76C54CD479F0A58E12561481D1E /* MJRefresh-dummy.m */; }; + 8A67EDF6ECF23D0821A72107B694CE30 /* SJSQLite3ColumnOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 13EC1960408F989E909A495BE61BF7B9 /* SJSQLite3ColumnOrder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8AE42BB51CCB9F82D1C37EFAAC4F4146 /* SJRunLoopTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F216DDF4BA3948ADB668604E719DF9 /* SJRunLoopTaskQueue.m */; }; + 8B34B25C9574DC31B806D03A9E553BD6 /* SJVideoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50A392908D9665C74181E7753861E65D /* SJVideoPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8BED4EF67556CDF7838DEC366B181A10 /* SJPlaybackRecordSaveHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = AE1BB9EF97E3582F740C953EB6FF1B2E /* SJPlaybackRecordSaveHandler.m */; }; + 8C43ED0FF8F951043ADAC17AC24D5C2B /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 28E4B77DEE6ECFE4714A139E0F66F273 /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m */; }; + 8CC584A53711E93E80533A06715EF1CB /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7174109E1CBB5CA93F6C71234622ED /* NSBezierPath+SDRoundedCorners.m */; }; + 8CF522FDAAE50EC57132C507B7604871 /* SJSQLiteColumnInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 164A4CDF6C931C116125B775ABEA39A6 /* SJSQLiteColumnInfo.m */; }; + 8CF9609C1373722047FFF47D26DFAFDD /* UIViewController+SJPageViewControllerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = D5DAB1AF60F4D1217620A63ADAB12895 /* UIViewController+SJPageViewControllerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8D20B22A8FC66004FED792FC022B0B77 /* SJSubtitleItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 24927765EFD9A8457333CEE1BE623275 /* SJSubtitleItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8DF1D1728882D771CC68BDBF04845F7A /* UISearchBar+AsyncLoad.m in Sources */ = {isa = PBXBuildFile; fileRef = A6338C94112B5C5393405A10DA52FF93 /* UISearchBar+AsyncLoad.m */; }; + 8E78686CE13A5A607ECE51D2BFE56313 /* SJEdgeControlLayerAdapters.h in Headers */ = {isa = PBXBuildFile; fileRef = EFD7D4387694049AF38DA990C80643D2 /* SJEdgeControlLayerAdapters.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 90FE163D3306074ED3E3E3906DE97CC3 /* SJVideoPlayerURLAsset+SJControlAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = D0253F24C0C0FAB8E507421CB162D2C6 /* SJVideoPlayerURLAsset+SJControlAdd.m */; }; + 911F98D81855F38C6D88C669DD26FA43 /* SJLoadingView.m in Sources */ = {isa = PBXBuildFile; fileRef = F30FAD3E41CA3CA6EA88FCEAAD57E591 /* SJLoadingView.m */; }; + 91234D01A154DA3756AB9A1C2665E924 /* MultipartMessageHeaderField.h in Headers */ = {isa = PBXBuildFile; fileRef = C9F930437D8B7167E9E19298B006102B /* MultipartMessageHeaderField.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 91C5E5DD9C19C2373E2AFFED4AA98731 /* UIButton+AsyncLoadImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FE845842EA054B1DBF9BC6EDE7C5DA1 /* UIButton+AsyncLoadImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 91DA669AD86A42C926A12AD4E00C9985 /* SJAVMediaPlayerLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = FB099C6F5208FE8FFEDF4A8CED16B394 /* SJAVMediaPlayerLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 91EEBC2BAD44BEA13A0FFEB208131DC7 /* NSObject+SJObserverHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = AA64DC5170CFE7EBD06BFD2291455BC5 /* NSObject+SJObserverHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9227EC4510B728FDED554435D36B76E0 /* SJClipsResultShareItemsContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 11F5C1C1D209E0978F434B46A288BA37 /* SJClipsResultShareItemsContainerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9233F807F5A647B46D9E05F131BB478B /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E839C820F7D5B753A787C979DACCA04 /* MJRefreshConst.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 926A5DFF0930563D90D8C75ED8FFC535 /* SJBaseVideoPlayer+TestLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 05885CA8A88AEDFA2F58C3E0F70FA83A /* SJBaseVideoPlayer+TestLog.m */; }; + 926B19A866979180873167CE49041ED6 /* SJFloatSmallViewControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 68EC83466EFA0C91DF95DCED987EA3EF /* SJFloatSmallViewControlLayer.m */; }; + 92A2BBC4A7A3514F491BD8B15E57E67E /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 224620EF4ADDAF3C827F0710960B1AF5 /* MASViewConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 93A8908E315916E409DC750523ABDEAF /* SJBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 865D238261BA397D9C045C0979845F43 /* SJBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 93ABBF8927B7A905AAAC4355F3F78E42 /* MCSConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = C45253F394120D4F418467035EAC4660 /* MCSConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9413125214E3AF7700E77129C200D04C /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A01F6FCFBB3426A8A8156E9C65CF441 /* MASConstraintMaker.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 942D9AF7144970783B45552EFCDBE39F /* MCSInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = D48C72794A8445AC8A953622B2C8E5E2 /* MCSInterfaces.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 94C3A77C7856917DDB52C05C54E1ECCE /* SJPictureInPictureControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 54B636245206B9C63808DA52DDB60094 /* SJPictureInPictureControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 94EB305DB2B68222A9987C3CFBAFE4B1 /* SJDraggingProgressPopupView.h in Headers */ = {isa = PBXBuildFile; fileRef = D1D8A74AB5B7C8EEC5413809FBA48D2B /* SJDraggingProgressPopupView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 951173A90ABEAAFD2B1987F00C52B764 /* NSURLRequest+MCS.m in Sources */ = {isa = PBXBuildFile; fileRef = B1016335EF8123CE074F486A4E66222D /* NSURLRequest+MCS.m */; }; + 956F2594FB3F9C2EE8779331B621BB25 /* UIViewController+SJPageViewControllerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 3859BDA6262AEAAA60E3A3B0F19B9DD5 /* UIViewController+SJPageViewControllerExtended.m */; }; + 95C738C249FE11091AB70D5303AFE46F /* SJUTRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 31BFBB8CE1105BAA4AB398A8EE0896B1 /* SJUTRecorder.m */; }; + 9660DBC68520B30E235359CD61C7C3F8 /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C9127A063C23E447D94765AB736B93A /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 966ECED706BAAB8D1479C4F1369CE10C /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 17F454440778375A6C65AB8DC61BC6EC /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9677DEE2BA723F08604A21F6C5F07A6D /* SJFullscreenPopGesture-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B1FE99CD2EC4BF2D2217FC9A6A5A03D0 /* SJFullscreenPopGesture-dummy.m */; }; + 9889C305D6960209BBBDDD89414CE55A /* SJScrollingTextMarqueeView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D6D7DF771F31BB280AD6A3AB4608929 /* SJScrollingTextMarqueeView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 98AB593046125983E49C63EC5C2C4070 /* NSDate+SJAdded.h in Headers */ = {isa = PBXBuildFile; fileRef = CD90946CD81C4BD2C3C3854D4A4E1547 /* NSDate+SJAdded.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 994B1FB05C949307269C3D5B7AEECA8F /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = 09A6F60F054C786AA05EF0719696B62F /* SDWebImageError.m */; }; + 9974AA036F2C2B21FEADF853D13058DE /* SJClipsControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 801598796BA3A3E2129534F9BC427B11 /* SJClipsControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9A071EC47BAA41511AC5F90213B47134 /* SJSQLite3Logger.h in Headers */ = {isa = PBXBuildFile; fileRef = F78235D3963BD9487F66AE5D3BD57B62 /* SJSQLite3Logger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9A253B9744D384DEC04B9015CAC49591 /* SJSwitchVideoDefinitionControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 88FBC6EBE3A22061D837CB9FE5521E03 /* SJSwitchVideoDefinitionControlLayer.m */; }; + 9A2D9374AC287F50CFFB2BCA3B5F4C4A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 95CEBD575D566218CAD9A300F5378FFD /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9AB93EB9BD812DB4291CBECD27B868F4 /* SJVideoPlayerResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = AEF9BCFEBC35BF8C6AE1F60121AF196D /* SJVideoPlayerResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9AB992460E0813A3C62BF5EF9B7344AF /* SJAVMediaPlaybackController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FCCE83AA5DD20B56D00E2E6CC8FD444 /* SJAVMediaPlaybackController.m */; }; + 9AC661E960C89CB3DAF97AFB6AA0908C /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 403BD2D5226086BD074D17B0E029F4D7 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9B9D5BF5A9583E295E2DC177F33044E5 /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = BC608420CB1A79126EF0764BFD558E2F /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C0264AD5C65197A312C869A3F265279 /* SJControlLayerAppearStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F799EBB34FA8F11CB70BADF6F2A5EC9A /* SJControlLayerAppearStateManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C448750402F9B05F5DF50D87466A838 /* SJPromptingPopupController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DAB68A0DBEF33E6E21ABD29BB8517A7 /* SJPromptingPopupController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9CB28B6C71358B10743929E1F1C6E072 /* SJEdgeControlButtonItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 50B3AE830FC3103F0F2C808E22973EC8 /* SJEdgeControlButtonItem.m */; }; + 9CBBFC93FB6A6188598B25F800FB14E9 /* DDData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B5AAFF44F99112E7D7A608B90492974 /* DDData.m */; }; + 9CCBBF929B5B91BEBCEB5CF82A22E2E5 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 450CBE0EA2ABADA7ABFB0EFCAF1E9AC3 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9CE2991627D42178BF760D89B8987E7C /* SJSQLite3TableClassCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E23D957C728AC6A6439217247DCA8177 /* SJSQLite3TableClassCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D90930838FCF0C5FF2ED5E443F22AF9 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C691F4F13F40F7AE547823BD0C808A3 /* SDWebImageCacheSerializer.m */; }; + 9E951DFEFAB985D70CD0985826EC4083 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 88977EEA967DDE48DF8ADA1AE415C7EC /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9EF9614BE2AF94CA7073B6F074885D98 /* SJRouteObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A84894D7B272BE724822DEABC6232D7 /* SJRouteObject.m */; }; + 9F82CB2189315A0C1AC221A6B0856223 /* SJSpeedupPlaybackPopupView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B44BCA30C3E50316415C4E8F086BA53 /* SJSpeedupPlaybackPopupView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9F9AF4CDD9745D4EE6A09591925167E2 /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 538B83846E4517F5455801BEABAF5144 /* MJRefreshHeader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9FB6141CDC4740245A4A1F80E36550EB /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C7D39C6D9BAD7C7F14661D1A4179E2B /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9FFB593F45C2C9350C28928F6ED3C091 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFF08E38744028E0DD079ABA65415DD /* Masonry-dummy.m */; }; + A05B88A3C5611D987485543AF7EC4A83 /* SJSQLiteTableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 01834C4470DCBCB4F100E3A8EC49ED7F /* SJSQLiteTableInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A061ED0D96590386D603A8A7B96AE64F /* SJVideoPlayerRegistrar.m in Sources */ = {isa = PBXBuildFile; fileRef = 19EC805ECD47181B62827C1C7BDA8254 /* SJVideoPlayerRegistrar.m */; }; + A095B190E1EC78255A6F8CBB2CDCAF3B /* SJClipsResultShareItem.m in Sources */ = {isa = PBXBuildFile; fileRef = D7EE22B61151054A1453DEE032661281 /* SJClipsResultShareItem.m */; }; + A0B4DB0A9FBEC84BE84A8205FF34344B /* UIScrollView+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 020E1E98FB86F32664FD4DF60847EAFE /* UIScrollView+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A2CC2F5F5EB3F98830482FA32260E6E7 /* HLSAsset.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F57C4AC78A42F25654A8D1E3BB0835C /* HLSAsset.m */; }; + A322C98BAC427F6167B0BB41E23F34AE /* SJWatermarkView.m in Sources */ = {isa = PBXBuildFile; fileRef = 64ECF9C28B8DE9D6C303FC0FFD49EE33 /* SJWatermarkView.m */; }; + A412E33A873A7002E35B27C98CBAE417 /* SJSQLiteObjectInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 67A63F93FA3FC1C6CEEA94B7989AB551 /* SJSQLiteObjectInfo.m */; }; + A4F9685F05F02476D5E84BF375BB0E8D /* SJClipsGIFRecordsControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DDCA9C09DA65845ACB1BE42BCA013EC /* SJClipsGIFRecordsControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A51928AB65DBD8FF60E4FEB2B037E333 /* SJEdgeControlButtonItemAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E31A37EE26260BA33445511C79D14D4 /* SJEdgeControlButtonItemAdapter.m */; }; + A59770298373C69FF1D441F09A7ABDC4 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = B622C7B0CD999FCA85738007ECBA3EE8 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A619E6CC7EEE8A6B6CEB2CFC48D1E338 /* SJPlaybackHistoryControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 296856407CE92708C88C7889484D05D7 /* SJPlaybackHistoryControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A71B1EA83E0E11F7BADBBB57D1772318 /* UIImageView+AsyncLoadImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CCAF49B9D3A9671545221F31F8150FA /* UIImageView+AsyncLoadImage.m */; }; + A74AB61F28808CF9F248E7A3F615B0BB /* SJPresentationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F9DF7C80596BCC67B303442CEC24862 /* SJPresentationQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A7AA57B0AADC1FCDF0F6375AE5EEC117 /* SJDeviceVolumeAndBrightnessManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EEB9DDAE62AD828C4B3A567E9E9D221 /* SJDeviceVolumeAndBrightnessManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A7EA9E77F7CE178FDADA36794817133A /* SJSQLite3ColumnOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8274A86E4EEFDE65A676AD15E49948 /* SJSQLite3ColumnOrder.m */; }; + A803DB854C994DDE2F8C0827F99D30B6 /* MCSRootDirectory.m in Sources */ = {isa = PBXBuildFile; fileRef = 89EDA3A2FB6EC72691ADD88AEB311432 /* MCSRootDirectory.m */; }; + A84B038FBBCA1A7126F0F2B30820B635 /* SJSQLite3TableInfoCache.h in Headers */ = {isa = PBXBuildFile; fileRef = EF7CEF02513F092B59BB3B9B4D15B830 /* SJSQLite3TableInfoCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A893327B94B19484DA26913ABE80E109 /* MCSDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 90CD6B01259ADB10D20AD0E74BD8389E /* MCSDatabase.m */; }; + A8A1FAC00286FF8918EC4EE1B868EEEC /* SJEdgeControlButtonItemAdapterLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BC4D00142FF15E6E7A038F80C2D4BA0 /* SJEdgeControlButtonItemAdapterLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A8DAD74A8D8BEE38A28D9BC533762203 /* SJBaseTableViewHeaderFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1981922428A12965A3579BA1E522EAA6 /* SJBaseTableViewHeaderFooterView.m */; }; + A8F3F3A7DC3D9F6811E5EC85E0A85FE4 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 249BE349A9B6FD01152FB23E5AD8BB58 /* SDWebImageDownloaderConfig.m */; }; + A996C45F8888CF679BC73A7D1E7CF3D1 /* MCSAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EA5FEE718CD5CC695233E27BB0EA7621 /* MCSAssetManager.m */; }; + A9E3EBC5A1978CB9337FF7284A8F4304 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EC7C3182C798384275CA2F2F1F078436 /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9F2E319ED1E4845FC4999980CC14863 /* SJDeviceVolumeAndBrightnessManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 886CCF0E74D1BD4C2997A053F8510C28 /* SJDeviceVolumeAndBrightnessManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9FF1ED66B3F53181925814A40BF74BB /* SJPageCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5B9A53F69AD306644BACB934DE5B9A /* SJPageCollectionView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AA0DDE9E54B1042B7E74FE3CA3F395CC /* HLSAssetContentProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 61952F6979FE919435BF2FA6F5CACE79 /* HLSAssetContentProvider.m */; }; + AA18F3FEB93F5D3794A57F9A0C88F2FE /* FILEPrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FD204D8EA21C5B64548FD39DBC4E0EA /* FILEPrefetcher.m */; }; + AA5C715DE6380E78D5F5B76F4E3CD7B0 /* SJVideoPlayerPlaybackControllerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 69AD63F175783C07BA9AECA9CB8C8028 /* SJVideoPlayerPlaybackControllerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AA5E37C941B4C1E8D27AB0D68A696D67 /* UITextField+AsyncLoadImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F917C5B5C1104B61A04001B111A3A7 /* UITextField+AsyncLoadImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AA8BD5A065320296F671F3858E592207 /* SJCornerMask.h in Headers */ = {isa = PBXBuildFile; fileRef = C832A3E0D797D1954A47F05FF379ADB8 /* SJCornerMask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ABDD3343C444B22AA7FE321F1C7A31F7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 98231343A68650106AE1E5B46461DAD1 /* UIImage+Transform.m */; }; + AC29C0BBC68FAA2C3F6A6BED42C335AC /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 2028E91F27CE08D209E3372568A9A6EF /* SDImageFrame.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ACBEEC6EE5F9224B1B84A4D4DACF1476 /* SJPlayerAutoplayConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B32D2AF64F83FCBB50619E1498D599 /* SJPlayerAutoplayConfig.m */; }; + ACE84EB117EDD90B79AF71B105CCCBD9 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BD3C3C5463B31C6C5A19D4840C61437 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD00D13D7C516B24657782472D71E2E4 /* HLSAssetContentProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B67E645578690F575DA9BC92EC0E8CA /* HLSAssetContentProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD417C6E2F6E8E12B01497804683B740 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 530AD6DC9DE0E33FCA28DFA7161565BF /* SDImageLoader.m */; }; + AE4BAF64D44E7FC6BD4C1BA5D60BC43F /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EEC043C6C541A48BB36804CB8F5C962 /* MJRefresh.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AE7B459DED690D28CA0E01232A9E8902 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = B04D62F9557E4458628188CB6C180B8F /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AE87A53FA438306374C6450DEBDE8262 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = CA2BCA4320480C03C5B508F285953B52 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AEBC200DBD0527C805EA6A9419F96D56 /* SJSQLite3+TableExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 3538059A8200384BB83FC0FDD67048B8 /* SJSQLite3+TableExtended.m */; }; + B07A8273DB6F5785CF89DAE43347EFE5 /* SJImagePickerController.h in Headers */ = {isa = PBXBuildFile; fileRef = A70F74AD9D08942F41FC9C36107E24E2 /* SJImagePickerController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B0A4389776760BF70BB619AC45F67986 /* CALayer+SJBaseVideoPlayerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 90A02B95A6676D3781D29C1E9BD692C6 /* CALayer+SJBaseVideoPlayerExtended.m */; }; + B1473D6DA0B97A7A94DABED6E85B9965 /* SJRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = F8CA8D2DAED8630C17698123CFE17C9F /* SJRouter.m */; }; + B17663EE6A681DEC628F1F576F3EFCAB /* SJRunLoopTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A40557A96561E21A7370CFE58EFB61B2 /* SJRunLoopTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B1D4D6955A10330DF544E5E31366AC9B /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 34CB1FC5BBA3A0AABA5839077E48CC79 /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B1EF84AC0254F4880BA17092FDA47966 /* MCSAssetCacheManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 44A87E204D2D151FB3DEB6D0B822E09A /* MCSAssetCacheManager.m */; }; + B24CBC816E8775914AFA97C67E882F35 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FE52265BA55D4E9D075D4283E5E47A2 /* SDImageHEICCoder.m */; }; + B280488BC44DCB29807F0F575D17DCE4 /* YYModel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BE7C176E52D2707EBB49F45F3C786B38 /* YYModel-dummy.m */; }; + B39A8F05D9A5CD3298698FAF3A953515 /* SJAVMediaPlayerLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = A9C55BE5D7F9CDE909477792C02D62C2 /* SJAVMediaPlayerLoader.m */; }; + B47228C3C86E83967E3E03C277E62475 /* SJUIKitTextMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 67385BB1A2463FDC34EDF3ACF664CBE1 /* SJUIKitTextMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B48E20024AE55DDA45036D66BC0EC3A4 /* SJDeviceVolumeAndBrightnessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EEFC2C6F41E4196D03B8BE3949AA4DE /* SJDeviceVolumeAndBrightnessManager.m */; }; + B55ACF180E148940BE1A2F0A50E47ADF /* SJPlayModelPropertiesObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = E8500125D22029106258F1A750EC6AA4 /* SJPlayModelPropertiesObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B5A517463BDB209A6519BD451CC62DA8 /* SJSQLiteTableModelProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B363A09A921A928D41905800F10AFFA /* SJSQLiteTableModelProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B5AC12EE126E6705A47FDF5732F56AD1 /* SJSubtitlePopupController.h in Headers */ = {isa = PBXBuildFile; fileRef = B105DC39548D51422A70F2EE49DF712A /* SJSubtitlePopupController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B5BBA13AB170E16E5856A0D789E7097A /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3677CA14658AFA64E1415C7C38E328FA /* SDDiskCache.m */; }; + B6182F0BCDABCF641E50161BC56843C3 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F0C79CE6394F43E786FE7EAB73B84E31 /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B6C0AEF01937EC3CC592E306BD7DD526 /* SJClipsGIFCountDownView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BEF0AD407085C1B9C47C9C518A8B44B /* SJClipsGIFCountDownView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B6C9569F430EB10DB619EDCCAE19AB59 /* SJSQLite3+FoundationExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 444FCB3EA5A297335E3DA8FB4111301B /* SJSQLite3+FoundationExtended.m */; }; + B6DEEA0B5F85A365AF31D26E99C924DD /* SJAttributeWorker.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F3D951B76FC5D759CD1A98CCEFF52BD /* SJAttributeWorker.m */; }; + B75538251C4D72044582C6EC4FF41377 /* SJTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C5B5C9ECCC7EEC5EDA3F73BAE659029 /* SJTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B75B1A534AC91F10723259563F92C1AF /* DDRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1FC6E6636DE619E8F16A9FBC87AFB6 /* DDRange.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B7C1959C6CE44D11969D4FDA406EC8F3 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E34FB61A572E416B416E798952A745A /* SDImageCoderHelper.m */; }; + B81D3654371F13425D06DB2A17FF1321 /* SJSQLite3.h in Headers */ = {isa = PBXBuildFile; fileRef = 92056436F96D182FF7DC887D1CFF8D0F /* SJSQLite3.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8878CBE8444B7076214AC22CF5772C3 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 313EE882A1E43B9BDEBA93E2F09979CA /* NSLayoutConstraint+MASDebugAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B8A144E8939EDE91E681901AFF42E9E4 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 64B87C63E1FB125F9ABFE8BD643117C9 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8A5D800E37F6FEFEEE0D4FBA1BA5FEE /* SJCommonProgressSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 330085ECE299AAA0D6D06A5A2C89A17D /* SJCommonProgressSlider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8A8AE3BC598BB6A0605162B2560063D /* HTTPAuthenticationRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = BF6D10EBF3B96C6F2D115DBEBF4E9F45 /* HTTPAuthenticationRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8F0E2FFBB93B0FA21F553C9AE94B4B7 /* MCSURL.h in Headers */ = {isa = PBXBuildFile; fileRef = E0A0848641F1F3FF0F0F9C148D60FDF5 /* MCSURL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B9CFA88AF0F6A7ED8FFBECD7C2A1ED58 /* HTTPAsyncFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8E8B57C107273BB2F5EEDA076DBBBA /* HTTPAsyncFileResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B9EA9E456C72B3BAF9EC9BE7275BBA85 /* SJPageMenuItemView.h in Headers */ = {isa = PBXBuildFile; fileRef = D8FEBFF92B98E6D32E8E26D9623C1C2C /* SJPageMenuItemView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B9FBDDD487C4C5CF9FCD5F93DA35026E /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 82A4340DD5C1F47459F9CC47223BC1B7 /* SDGraphicsImageRenderer.m */; }; + BA0388EA5B8CDD265F65ADC45B0AAED1 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F8A6786416D17D5765D53869E38CE9 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA12A8D51AD1278830881F02169D2607 /* KTVCocoaHTTPServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A341BA05158D57DD0E66B9F57A743FBD /* KTVCocoaHTTPServer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA492D17AEC4C52C479E16FC0CD4CAB4 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A19DB112C32063877E5B3397058A78C /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA89EFDEE9B8A6B571003CA05E73BF69 /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6023EA14E869300BCAA17D36D279F725 /* MJRefreshBackGifFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BAD6516901D95C5CD0552838ECAF0B9B /* SJControlLayerIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C159B02CFBE39DE633D38BD594EB2E /* SJControlLayerIdentifiers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BAEACBAFE3B28AF2B1C9A9445576502D /* SJBaseTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = FF733A4AEC09838B7D41C66FA5B7C84C /* SJBaseTableViewCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BAEB3A88EAA9B3D8BD12DEEE82BD5776 /* MCSDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = A1E2E15E149DC6F085F11BBE627E0FD0 /* MCSDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BBA5DFECD18DE66D21F135EBFA07799E /* SJImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 50523936CC75A8879998453482EA9A1D /* SJImagePickerController.m */; }; + BBDE761F0564F92BD845D3088014C2EC /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F03DC35A1C35B7F58FE24EFB40774C /* View+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BBE280B755334C0E6A54A6B4A582A698 /* SJPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE78A76B99BA45A8DC4CDE08B13C844 /* SJPlayerView.m */; }; + BCE703BC4846A398F437D215391FC79B /* SJUIKit-68d28646-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 986A50BE440262C08D4211B4E8C46294 /* SJUIKit-68d28646-dummy.m */; }; + BD02B10330B7E975A846077ED5679A1E /* SJVideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D0BD99B56E4327A147144EB10F0CE /* SJVideoPlayer.m */; }; + BD9396569B14A925036350740A5CE607 /* SJBaseVideoPlayerConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 5646A8653C2CF2B835A0EF78E51CCBB0 /* SJBaseVideoPlayerConst.m */; }; + BE0554B61B60C600D4EF1353E962FD1E /* SJObjectContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E5309BA8377273556B14C367A7AADF /* SJObjectContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BED9DFF9B6CF729BDB8913FE50780C4C /* SJUIKit-98d45660-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E6514FFAA5A1184432B3B4DDD2EA9527 /* SJUIKit-98d45660-dummy.m */; }; + BEF5FF204D42D6BC93025C1155C4D0BD /* HTTPErrorResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 40E452CBE760761F2153C50DC4B5A830 /* HTTPErrorResponse.m */; }; + BF7AF36D83760FB52BB031185C3BB0D0 /* HTTPLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = ACEF25214BFF221D8F384D9EFD16AF5F /* HTTPLogging.m */; }; + BF8C77C8CF6F0F811E84E8C3E8E40FA1 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DF964DAD9E0AE854DC7D436F8BB3E79 /* SDWebImageDownloaderOperation.m */; }; + BFA2840F95D69E544FB8B7B003877E79 /* SJUTAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 71B0E285DF3487D2A56F3C01B0D910FA /* SJUTAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BFCA34833F4E1E5FD02BA028BCCF740A /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D3D7AE7A79837A093BA206615956FDB /* SDAnimatedImage.m */; }; + BFE5416C934C85B80C0BD14ED730A07F /* SJScrollingTextMarqueeViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 518E513655E9DA0B74F4F946DDB00628 /* SJScrollingTextMarqueeViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BFFF00C93AE4CE5460A242D266BCA2DE /* MCSAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8612516790E154DF42DA9623B1DFEB46 /* MCSAssetManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C023600705E1EBBB522B20F8A2DD2051 /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 896C3B83FAAEDE7B6F2CA9C756BC4DD8 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0357E7A14538D3440FF6D1053CDADAC /* MCSAssetDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EB6FBA9CF225682334991586973DB9C /* MCSAssetDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C09F2CF864594CABFC3FD316381C49D6 /* SJSQLiteColumnInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 164A4CDF6C931C116125B775ABEA39A6 /* SJSQLiteColumnInfo.m */; }; + C19D130AFB48991224E67DEDC2B78438 /* NSObject+SJAsyncLoad.h in Headers */ = {isa = PBXBuildFile; fileRef = 77B6012BDD2B5544640DCC165A436B72 /* NSObject+SJAsyncLoad.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C1C54212C88997B1E359C128A3AFB5CF /* SJBaseCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E563A9E576EE97BDC7563CE78136B41 /* SJBaseCollectionViewCell.m */; }; + C244A0CD1A1D63360CB03B6ACBFB0C91 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A13A92595300422DEA2DB2EE89355E7A /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C2980CFCDA3888CA59DC2DC6BB6B2E4E /* SJSQLite3Condition.h in Headers */ = {isa = PBXBuildFile; fileRef = ED22F17412C71E70093E8723D973CB41 /* SJSQLite3Condition.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C29DD88D600B71F5F75A5E8097E9DC04 /* SJPresentationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F9DF7C80596BCC67B303442CEC24862 /* SJPresentationQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C2BECD3D679321F93E4362BCA847D740 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = AAA6E12AB16A3555DCC97CCD7BCAA94F /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C2C8A737613AE1EFDE6E63CC4E90F08B /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = BC880E9375741C54ED2B5BC668E17B91 /* SDDisplayLink.m */; }; + C36F84FBFB76C9C75D9BAF6359A11DBF /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F12ABCAB5CD208E6006C778B08B2856 /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C3AE2A783139610D9BE4973D1FF20429 /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C34DBD321F8D66203E83A27F3D63662 /* MJRefreshFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C41B0BCEF2A8D9F3BCB38F5C03AA9B17 /* SJFullscreenModeStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 2608F2C6511AB60E8C605B529BD685EF /* SJFullscreenModeStatusBar.m */; }; + C43937FA7A755A4A4BB581CA2319EB7F /* SJMoreSettingControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 527E3BC497A270E892D39802BEC992D5 /* SJMoreSettingControlLayer.m */; }; + C4A05378C85C0A95E8F0F72B339360A0 /* SJAVMediaPlaybackController.h in Headers */ = {isa = PBXBuildFile; fileRef = EE266BF020C471C927D7E464E6C1C8CF /* SJAVMediaPlaybackController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C53FB52DDC02945F1CC2C1C9F6724F8E /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = ACB333095E7506AE56D5C2A4C0356D20 /* SDImageGraphics.m */; }; + C5686D27EB42A9771FD2B95F208B331B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = F821A641800545B29F6D2A416BF3E8BB /* SDWebImageCompat.m */; }; + C577FD35304F8AD605CFAF4ADAD34F38 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 03579E576BD55CC052A74C8A8070B196 /* UIImage+ExtendedCacheData.m */; }; + C64805664771D936166ED3D5E7E46F81 /* SJEdgeControlLayerAdapters.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F4C95B603CF7091192F53C30A7E6912 /* SJEdgeControlLayerAdapters.m */; }; + C73DAC4869F3D5A25EBBC7F939B3A424 /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = FD2823F2FEC1A058F68330C0C4E048C6 /* MJRefreshAutoGifFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C7A0316E568D6D8A701B003D5B1F25E1 /* SJSQLite3TableClassCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E23D957C728AC6A6439217247DCA8177 /* SJSQLite3TableClassCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C7F9CFE75C4C1FA055C09BA7538DFB8D /* MCSProxyServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B2483EB00C2EBEB0B898C5AC86BC87A /* MCSProxyServer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C862E38F70E85476E6649BEC74B6CADE /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D4185252FDC8BB1CFF74E1F824D52503 /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C9029837F49A86CD662F4B587D7CC977 /* MCSQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A464A2B7644E6218CB9713C6FB94E843 /* MCSQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C90338FBF2F1288FF3064E7ECE3DC65B /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB413A96BF48AE0FDB89815AE4FA220 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C96A5CF5E452EE7D0ABBB94A17F07445 /* SJClipsResultsControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AC07D35EEE7B113C647489113B845E5 /* SJClipsResultsControlLayer.m */; }; + C9717523058C7976860DFAEA22DBC611 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = BD36EBA34CDE7B95FAC1BC22A395A705 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C984436637D89D4B0821495DE2E3E2CE /* SJSQLiteTableModelConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = C29310E7B9989F798A056BF13F707CE1 /* SJSQLiteTableModelConstraints.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C9B0C996FE206A714B8278A8FDF36012 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EB9DC955AEBF33E11DFAAF8C066853 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CA1C49C3D0EBDEE968AB63754C724194 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E2A075386116A79775340724640A98 /* SDWebImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CA7695949B82DCC953C611D26801347F /* SJUIKitTextMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 67385BB1A2463FDC34EDF3ACF664CBE1 /* SJUIKitTextMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CA7F97BAF79AB107467907A865A0B949 /* NSObject+SJObserverHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 20BE12DC21A9AA42080D6D29760AC1E3 /* NSObject+SJObserverHelper.m */; }; + CA827DDCBFA3ED028ECBB5C825026779 /* SJLoadFailedControlLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0444116F11EF9930E9DB4CFB2814A987 /* SJLoadFailedControlLayer.m */; }; + CAB3E3EEA92F8D3DDD1BAB6408195B3E /* SJSQLiteTableModelConstraints.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A89B05B7E510F8011308F8969161F /* SJSQLiteTableModelConstraints.m */; }; + CAF1A513F6F218BA82D26158C9CEC57E /* HLSAsset.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE75211A37FC02A9F37F4C983D26DA8 /* HLSAsset.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB1117310DB4DA22016E2EFFF6456E53 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 1553F3B0152B660C6F8D19AD7B23C830 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB191345BCC56C623BB5B802261183A7 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E4E2ECF6DB946FF46E85767E4F9C68 /* MASUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB2E0A32C2FE32C7EDE9DD8D850ED2D1 /* SJWatermarkView.h in Headers */ = {isa = PBXBuildFile; fileRef = E7FE0F33809D2267D2972E4ADE35CFA8 /* SJWatermarkView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB49F0209454EF0CC5E76DE13DBBF85E /* SJTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = CA9A809B44D5FA678D1449340EADDDF3 /* SJTaskQueue.m */; }; + CB89548F8BAB9EAF9A9DA5CC887F841D /* SJFullscreenModeStatusBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EF94BE8847E1BFA6816D62BFABAFFB8 /* SJFullscreenModeStatusBar.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB90B40D8A0829D4F9FEA8E0E58E100C /* SJVideoPlayerURLAssetPrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = A24B42380767C85C9BD029D20A20FE33 /* SJVideoPlayerURLAssetPrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB9113AAB48D3514FA3CECF557D956AB /* SJAttributeWorker.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F3D951B76FC5D759CD1A98CCEFF52BD /* SJAttributeWorker.m */; }; + CBA22314FBE2F599C4EC983CF5FF3BD4 /* MCSContents.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E919D66D2265424EA2C01FEA02093C /* MCSContents.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CBF475C10A83D36224F50171F0538880 /* FILEAssetReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 48E513E7F2BE692C01EB51E97B4BE445 /* FILEAssetReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CC2809CAACB1F83357200EF9B96AFA58 /* MCSPrefetcherManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B46F894CD07A0BC82DF5C72BE6D27C97 /* MCSPrefetcherManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CCDB753F74B9A7CF439BD0B9A7ABC729 /* SJReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 012B1D66BFF3C374A422A1182DDB2C43 /* SJReachability.m */; }; + CD12B6AC301CC6D3E89D64742EADC39F /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = F78DA132F52B2F151D2FFE54EC2982AE /* Masonry.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD3C3F01AE8047588A394CA5CFBAAA8D /* SJBaseVideoPlayerResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = D3EC0A73AD1368608343B165C1510E72 /* SJBaseVideoPlayerResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD7ABA0273809D566319998BE623856B /* MCSConsts.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC54BD695F27C644AA35EB61EABEA98 /* MCSConsts.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CDED785169CC8E01F31127CBC4CF2EDF /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 89A45F69313D9611C8E1CF7450058AFD /* MJRefreshComponent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CE1B4C13E27DF6855A9655CCB14C459B /* NSObject+SJAsyncLoad.m in Sources */ = {isa = PBXBuildFile; fileRef = A874CD95A69F2D44AAA5A0CFA9FDCDE4 /* NSObject+SJAsyncLoad.m */; }; + CE23D6DAD687CED9BBE35F0E27AA436D /* SJQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E5E96C769A13E0105E12B793698BB28 /* SJQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CE24812C6F00C5CDE54252162CDB2644 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E77D811014FA1354DAD6B0738E2F8D93 /* SDMemoryCache.m */; }; + CF6251F4E983398AAD7F7AC22F87CC71 /* DDRange.m in Sources */ = {isa = PBXBuildFile; fileRef = B9C2E472862E97BC9B1558C851B944F0 /* DDRange.m */; }; + CF849EF3B451496941D38162AC448785 /* SJVideoPlayerURLAsset+SJExtendedDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AEF2C9E0B79C0E6E06156DF579C280E /* SJVideoPlayerURLAsset+SJExtendedDefinition.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CFA1F4C8C5D680D356FD122C66E36B8C /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = C7777DA98834F0A5D11CC0933CF18A8D /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CFA9CFDF5BA5BA47653DF577EF23A6E2 /* SJSQLite3.m in Sources */ = {isa = PBXBuildFile; fileRef = CB89A91AC4069F04F4138EBA2A4B4819 /* SJSQLite3.m */; }; + CFBD7413C90B8B962AE03E6B9EF46C4A /* SJCornerMask.m in Sources */ = {isa = PBXBuildFile; fileRef = D9FACF7BC4F3DA200F1F388E0CC43D4E /* SJCornerMask.m */; }; + D02EF5D23A78095942A709C22BAB9787 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B48C7F907789B8D6421B206F92EC9ED1 /* SDAnimatedImageView+WebCache.m */; }; + D07F721988E3C8E64FF769C5171A2714 /* MCSURL.m in Sources */ = {isa = PBXBuildFile; fileRef = A55A4ACD89C6716B1A0C2587DF437275 /* MCSURL.m */; }; + D13216393C172D6222CC631F57690B59 /* MCSDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = D1D91D55B891A868229903447F9AE57E /* MCSDownload.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D150DB8BC8F090691D73903EC243945C /* SJAttributesRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 50993BB750429201BEF5DBA775183F82 /* SJAttributesRecorder.m */; }; + D1C67F80F656A05B621C4EBFB9BD0091 /* MCSConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = E50F887059AABC45445CD293A77BCD62 /* MCSConfiguration.m */; }; + D282CD515ECB4D344D99048D72F2186D /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = A6E2308FD8E0CFDC694F317C6B4A60D2 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D2A711AEB8D04FCBB79B83C86FE42EFB /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = F7994722EB5159511EA09F70175082E4 /* SDImageCacheDefine.m */; }; + D32BB2CA953F57B648D79EB9513E015D /* HTTPRedirectResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 125DFB9742FADEA9EE7FFDE90EE5616A /* HTTPRedirectResponse.m */; }; + D3438950066B33BF6B097EFBA64441D0 /* SJRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 648E0FF1AC6C5ED31096409BF73BC764 /* SJRouter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D357151C056CF9D8D578D00FE479E991 /* SJBaseCollectionReusableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DE711F0E535B1E9252AFBEF671F9507 /* SJBaseCollectionReusableView.m */; }; + D38E7294D4900FA3F0B986E21C7DF2C7 /* SJControlLayerSwitcher.m in Sources */ = {isa = PBXBuildFile; fileRef = FCDE97EDBFD7DF62B0B9622B2F3EA8A6 /* SJControlLayerSwitcher.m */; }; + D3C7CC11BF2B4F75715CDC67066820EF /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C3C3E232AAD1CB1EE1E85D50614B54A /* SDImageGIFCoder.m */; }; + D43380309815EEA67C52B47B4DE0A025 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 402BA9A1F307AC921A111BBB879D12E8 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D441EDBE0D6B607DA3189DE81F47FAD6 /* SJPlaybackListController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1772E67C06E7481150409015C1A71FED /* SJPlaybackListController.m */; }; + D4451BCF95B86638C63406520DA42736 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CD040FC6F5801B9A701C050A4D8B0755 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D46ECA1600D1249FC986C154868650CB /* SJPlayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = C340FDA18F8A115F68699CB5CF6AD66E /* SJPlayerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D4A36983EB96898340A90B2D6AE6E532 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 3843893BC6D1BEAB54272577EC9696E9 /* NSImage+Compatibility.m */; }; + D4E4F9DE728B699B62DAB502DFA855E1 /* SJBaseTableViewHeaderFooterView.h in Headers */ = {isa = PBXBuildFile; fileRef = 80D8109360F109B5AEA7108A88881E54 /* SJBaseTableViewHeaderFooterView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D58B8DA89ED5239507C7166CC7AB12BA /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 449FA6E85959AEB0E64362202C0D0A97 /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D5955319F4F943F24E11C9074C2F2428 /* SJVideoPlayerURLAsset+SJControlAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E06013AFE67C792673E399D6AA244C9 /* SJVideoPlayerURLAsset+SJControlAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D60A001C956846227C2A3A6845835D43 /* SJUTRegexHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = AEAB7906EBC279A0421D4A1D79A15D78 /* SJUTRegexHandler.m */; }; + D628DA1C810CDAE0B46792278483A612 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C187C3565C491B576506C452A89C37F /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D677EC6B63F2DFDFD91373F441B0C284 /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DC68872E443BB6F78147F2DB89B58DD /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D71DB4FE03EC36A3A29701F680241749 /* SJResidentThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 02C885C3FFBA8DF40FDF8F7007B402ED /* SJResidentThread.m */; }; + D751BA3F74B9EA708AE4CAC5D15D5670 /* UIViewController+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BEB4A44C4EBE4BE297ACBAF4A3FB1D3 /* UIViewController+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D78F74B23CC869022B66EB840BA7426E /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 12702AB873E34D912F798843E620B6C3 /* MJRefreshAutoStateFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D837CB3C60C3E6FD060B8394271CE4B3 /* SJSQLite3+FoundationExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B36F0A11386C9BFAF81C6DC28C1F7E7 /* SJSQLite3+FoundationExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D84979AA73BD0BDDD997A52A346D001E /* AVAsset+SJAVMediaExport.h in Headers */ = {isa = PBXBuildFile; fileRef = D19DD8F57A0F9CA56A3D28D9D2F590C0 /* AVAsset+SJAVMediaExport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D8AC165795D5EBA6AEBD19063FFFF5B9 /* SJSQLiteErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1FC0CA3B0EB1756B541166C9D50BF8 /* SJSQLiteErrors.m */; }; + D8ADEB482D015FDDFD47040D8BD6E9B1 /* SJPageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F33F130F0109BC1FD1480ED3410BDDEB /* SJPageViewController.m */; }; + D8C2F5B9DAE36E3BC11AB6C55EF34B3F /* SJDraggingObservationDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B4459DA15487099BAAF757D68CA71B5E /* SJDraggingObservationDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D91C6D7BAB3CB5CFB22EC59BC3C60E13 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = F96B07564307CD9292CE442341CCD518 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D94606FD6932B455C44EDAE275073C9F /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 167A062757724741853B54809C7759E5 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D978C4B4B4B2D7DE0F3B36D9083E3810 /* SJDanmakuPopupController.m in Sources */ = {isa = PBXBuildFile; fileRef = 08BA1E63C9A99335017167654118341A /* SJDanmakuPopupController.m */; }; + D9F4BA55BAD18943BE90938DDC8968A7 /* UILabel+AsyncLoad.m in Sources */ = {isa = PBXBuildFile; fileRef = E680F82D160CB64A2DC4EAAD059C18B1 /* UILabel+AsyncLoad.m */; }; + DA8B49C337EC93F8802E78489F9F8392 /* UIColor+SJPageMenuBarExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = 263FE047C63E733FAF464B4D4C2E8824 /* UIColor+SJPageMenuBarExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DAAA5826F4AB434C679F68525742694A /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = AF85BB8468BB41F3B121C35AFAF81515 /* UIImageView+WebCache.m */; }; + DAADF082F67860C85F482A3F53008333 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = B8513F5943988A7CC6C50601DCD57911 /* SDImageCacheConfig.m */; }; + DAB598ADA057F6B259EFB929B38A19A3 /* SJViewControllerManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = E63DCC4AF0C765E8FCBD7E05E403A1D3 /* SJViewControllerManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DB5E2BF80CB7CCA4E1D8874505E44687 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CA5AA58BD98EA3A524DCEFC10FB8DAC1 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DB95DEB693E988038CDE96DF47C13274 /* SJRouteRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 74A41507846770BCDB3055018DED74F5 /* SJRouteRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DBF7FE54C147D2448691E9C3AD23B035 /* SJControlLayerIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = DF2061CB493F5AAC1E6EFFD6764B21D9 /* SJControlLayerIdentifiers.m */; }; + DC309AC4E019D8A288FD56F685BE4821 /* SJPlayModel.m in Sources */ = {isa = PBXBuildFile; fileRef = DEC1C1260AFE7C4C1D79AFCDCF4BE44D /* SJPlayModel.m */; }; + DC391B3149148E80D13780F3EAEB03C8 /* SJSQLite3TableInfoCache.m in Sources */ = {isa = PBXBuildFile; fileRef = AC01936A82CA431ED572E08FD91AAB46 /* SJSQLite3TableInfoCache.m */; }; + DC3AE7C039B697A4F68BA467E9732304 /* SJRouteInterceptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BF4D0AC95D1FB14F2AB6FCDD4CC6D3C /* SJRouteInterceptor.m */; }; + DD0D8111B2E20BDB4D80175A809680A6 /* SJPlayModelPropertiesObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 987BA6ACEED1A1F90AC153776EE8263F /* SJPlayModelPropertiesObserver.m */; }; + DD2070B577B662F62192639368718FB9 /* SJPageMenuBarScrollIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 49CF46C8BE0AA026868A0F7CE111B532 /* SJPageMenuBarScrollIndicator.m */; }; + DD71A2BECF361EC1D7E8BF7A5F98AE79 /* MCSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 91B5F2EBBEA00A9D4E1C5556FF4AE57C /* MCSUtils.m */; }; + DD7BB2E5B279CF1565B4696997F7B537 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = C2C0337106C1162DBA4A5D6A611609F9 /* SDFileAttributeHelper.m */; }; + DDAD92BEDB049587EF0EDFBC4FF41885 /* SJPageMenuItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = E192C42904EA1C4D9AB277FE7DA04393 /* SJPageMenuItemView.m */; }; + DDC4328205ECDBF7AB7161E5299DD174 /* SJPlayerAutoplayConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A3ED4C4D4F30644F3A17A59C59CC2F /* SJPlayerAutoplayConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DDCE9E17FFA867D59F897E8AFF52220C /* SJSQLiteCore.h in Headers */ = {isa = PBXBuildFile; fileRef = CB98C5A7150D8171F4DF6F27A8D1063F /* SJSQLiteCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DE03824ADA847692600223F5CF734FEF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BD6463286717AECE7ED4FFF4B7FCE1 /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DE8D973AC246C4DE2E6C91AFD79C010A /* SJBaseCollectionReusableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A02484D4CF83694D7EA45411A3ABABD /* SJBaseCollectionReusableView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DEA144FEC3D3D9B062FD8641F28BAB98 /* DDNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = FF220E736C62F24802DBAA8269B7EFF0 /* DDNumber.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DEF5281EB32331FB4600B0923368A78B /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = B24758E8F3E0396D0319CF5BFD3F4301 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DF3DD8F24A709ADAA7DB567D50DFDBBF /* SJTimerControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 391AA8E15BF23F82709F524F3FBE66ED /* SJTimerControl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DF51F95E4422E2B2A99698F67F7EE1E9 /* SJVideoPlayerLocalizedStringKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 4565924477651BCEE1243CDC8CE7F238 /* SJVideoPlayerLocalizedStringKeys.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DFBB945670BE9D15DC6090C4F95B9B35 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2388A9426B0E77CAB5C90E3A157B25 /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DFF760EEBB7A4719499CEB6F4AE072DC /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BFF48074355D8B68E2B9C45D0521A49 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E125E2961755952D9747F14774A9402D /* SJBaseVideoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = CFD62E7DACDE23B29F11F6A5B35C9DC1 /* SJBaseVideoPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1744972C2CFEE6189494D25796D0FAC /* SJUIMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = B68517FE741CE3C0D6E9CFF37E5354C7 /* SJUIMaker.m */; }; + E1BBFB018923F57C914B5BFEA3E96B3F /* SJPlayModel.h in Headers */ = {isa = PBXBuildFile; fileRef = E7BCEE6E0D3139967AACB9F929641428 /* SJPlayModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1C40422C7E1C8DBCAAE43940EA14778 /* SJSpeedupPlaybackPopupViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 4024459B3153A8CA0FE7D072F17F486F /* SJSpeedupPlaybackPopupViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1EC3E39D7057D8BF9E606129F61B084 /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 0009D34B181A4884E1CF0C006A69166D /* UIImage+Metadata.m */; }; + E2B1DE2FC0F0449E2FA693E247075E3C /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F87289E69F097C295E27EB3AE25C9F2 /* SDWeakProxy.m */; }; + E2CEBECF4F2C639A2434FD63D4336D67 /* HTTPServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 30FAD863C0D41599EAB5B2EE01B4E54A /* HTTPServer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E2F5C95E165ACE619C38AA54C04CF60B /* SJUTRangeHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 47DAFC93E68FEC751F9154BBC1FA4EC4 /* SJUTRangeHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E311E4ED1B19E0064D4519A4187AC008 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = EFEDF2D5ECC753AE8571D614B1963798 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E31DC18AECC945BEB1B35F2D7FF09639 /* SJLoadFailedControlLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = CF71BD8DBCA3A0D7BBB352B44D69F4B4 /* SJLoadFailedControlLayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E336A29135FEECA8B8A70E73EFC122B8 /* SJDraggingObservation.m in Sources */ = {isa = PBXBuildFile; fileRef = 57818C1BC83C0FB8D0EAB961BC4BEAC0 /* SJDraggingObservation.m */; }; + E3CC6920B6C574C77F83A358D83F4DAE /* SJUTUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D014B242EACB0879827859EDCE96AF29 /* SJUTUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E4053586654152953D523730951835FE /* SJButtonProgressSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 727FB18E52B98BCC1F886145DE2AD0D6 /* SJButtonProgressSlider.m */; }; + E476CE5411BA3050B14B9392500F156C /* NSFileHandle+MCS.m in Sources */ = {isa = PBXBuildFile; fileRef = F2C775408969D3A0D0515AE6D0A0A6A2 /* NSFileHandle+MCS.m */; }; + E4EBACBAAF120B0E295DF2FD01AD7194 /* HTTPDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 471E985621AA5AED3EDB4335D8401789 /* HTTPDataResponse.m */; }; + E519D3EDD90D0CCAAD6BE92DB38B2737 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = B694757AFB5759988A7BB4DC1448BFE2 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E67C154CA9A9160185441E07CB111D65 /* SJUTRangeHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D6D989ABD04CED73C0494A2995727C20 /* SJUTRangeHandler.m */; }; + E6C5FB550ADD18C6668DE28ACE2AED47 /* SJQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = FDAF7D92F11A7CEB30DE69CB6515270A /* SJQueue.m */; }; + E7908E8B1DD2988B3F1A058BF5B654D7 /* SJFloatSmallViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = DF186A960A18E6AEAA960DEE183217DB /* SJFloatSmallViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7DF2D8FAA40AD48410CE5BE1F6A68AF /* MCSQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = F1138FD1DCB7BA4EAFA474FB07F7F898 /* MCSQueue.m */; }; + E7E9E166CC45F308EC81F38FA45F30EF /* SJSQLiteCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E7BA46554207B264CEF12C510BD800E /* SJSQLiteCore.m */; }; + E856E954571300067DE9110D88A46650 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = ACF00F5FD86E252DDAFC06977B45A496 /* NSButton+WebCache.m */; }; + E8B08CB730E25D0A9AA373C92D7C6D2A /* SJSQLite3Condition.m in Sources */ = {isa = PBXBuildFile; fileRef = C64F603B6421CEA1A629B31E54F7B5B9 /* SJSQLite3Condition.m */; }; + E8D4B81750591DC5A41175B36EF4BCC4 /* SJBaseVideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = E965566DBA7C1D2BB05EF96D9560C523 /* SJBaseVideoPlayer.m */; }; + E95554B859F7380F9B6BB23425BCABDC /* MCSResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 121DBD3343262EF7B7A3BB91ED5A6CDE /* MCSResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E9A220BFA68826D0E46C28157488080C /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E0E5769D55F8C5C1B4F185EC401907 /* SDImageTransformer.m */; }; + E9A4195AF9250D6BACC717FB0DEDD7AD /* SJUTRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 13F1718CA73A99051651CAFD7BE18850 /* SJUTRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EA4DEDF85F748699EF67B7DC20DA6EC5 /* NSObject+SJObserverHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = AA64DC5170CFE7EBD06BFD2291455BC5 /* NSObject+SJObserverHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EA64C44052A20E32EE24DCEB6BB546E2 /* SJAVPictureInPictureController.m in Sources */ = {isa = PBXBuildFile; fileRef = C09CC286171F951CB069ADE737041D25 /* SJAVPictureInPictureController.m */; }; + EA7BB095B0C9E1D151BCD55BBFA3D4E3 /* SJUTRegexHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = AEAB7906EBC279A0421D4A1D79A15D78 /* SJUTRegexHandler.m */; }; + EA92989B416530D80B57FE4E1CCCC826 /* SJUTRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 31BFBB8CE1105BAA4AB398A8EE0896B1 /* SJUTRecorder.m */; }; + EAEE9B8D66590573551907879907B8E6 /* SJSQLite3+TableExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 3538059A8200384BB83FC0FDD67048B8 /* SJSQLite3+TableExtended.m */; }; + EB2F87F5C410C009C278B853B80D5A19 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = F64679B7AB2D6B29A809279D0F6389CC /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EB3A1D3E2575FBC938F1F15022188217 /* SJRouteInterceptor.h in Headers */ = {isa = PBXBuildFile; fileRef = D8ECD054B30A3197AB846A5D3AD9CD30 /* SJRouteInterceptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EB70321ADF5F76C4805A3A8D73AEF5AA /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E02896548BB33036A2C56C996E1A38B /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EB900A0CA6132E4025F1B5C757E53FF6 /* SJPlaybackRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E02B34FD5927F4E4F3B80AB1DA28619 /* SJPlaybackRecord.m */; }; + EBBFA95924A8068E2F7F6167B7593523 /* SJClipsGIFCountDownView.m in Sources */ = {isa = PBXBuildFile; fileRef = F0B48D7AEBC288C381A352E83EBF0AAA /* SJClipsGIFCountDownView.m */; }; + EBF64AB9977847F4A12C111E867A708A /* SJSQLite3+QueryExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = C086016FB7A385F8E657E5AF2789B4C8 /* SJSQLite3+QueryExtended.m */; }; + EC17D6E4D616A8AE930FCB7B590553B8 /* SJLoadingViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = D038BED15C69F6B4B88BFF462D3E440F /* SJLoadingViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ECBE9E4901AF644308B111EE4A063A3D /* SJRouter-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 521C4478730C8E456ECD8C8532D62E2E /* SJRouter-dummy.m */; }; + ECD0832A0A810C2BC6B3132E00F87913 /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = 640F9BB21EFCF9820909D99C53832B76 /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EDA54FA53E737D361DB51167E893101F /* SJEdgeControlButtonItemAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EED3B219964945EDEFA0CD9F661035E /* SJEdgeControlButtonItemAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EEA82BB3E8EDFD3269B827821FE15B5E /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = B89B48EEC902B56C99B054A4DCFADF2A /* SDWebImageIndicator.m */; }; + EF421A3598B8DD4ABD09E90CA27E326E /* SJVideoPlayerControlMaskView.m in Sources */ = {isa = PBXBuildFile; fileRef = B43F6AEB05D31EAE479BDF9288373CB0 /* SJVideoPlayerControlMaskView.m */; }; + EF4D248C4B0B57BAEF039BFF832A4FEA /* SJVideoPlayerClipsConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E50A8C76370804B7BC47E3FC78C9872 /* SJVideoPlayerClipsConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF78CB5BF7C2C497315DC415C655C6A7 /* MCSResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 354B796824FBBC76505371660F62E817 /* MCSResponse.m */; }; + EF9916C63A1783A49665D6B507330D72 /* SJVideoPlayerLocalizedStringKeys.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C966AC3BD5064BA778AB7FE9F8718D /* SJVideoPlayerLocalizedStringKeys.m */; }; + EFF891F96AB4A03690A511A4B87F21C5 /* SJControlLayerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 913302C2FA39148ADA681DE449BFF28D /* SJControlLayerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F008D61BBFA1245A3C00C85A905083A7 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = E5B314324AF6556A32CCFF41A79A65F4 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F094D2FE99BFA7D03819BF78BE59DE49 /* MCSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EF1F6BE490A086F1661F886EEA2657 /* MCSError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F12EB7DF51A64F59A4D4DF3D69E4A5AF /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = C9ECF9FE81C7D47848CDC8FE75FF47C9 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F1A5133612FCB0C0C9BC54BD286EA845 /* NSObject+YYModel.h in Headers */ = {isa = PBXBuildFile; fileRef = A2C7D499C51A39879954015BC1CD7C25 /* NSObject+YYModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F2902F263D705D2C20BB749AF5B21109 /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 019AED80FEA640EF6E6B6D058FA1568C /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F2D0D9886A5D0E30CDB9F773EA5008CD /* CALayer+SJBaseVideoPlayerExtended.h in Headers */ = {isa = PBXBuildFile; fileRef = C5171D1C6F88AB024988EC8EAFD42E94 /* CALayer+SJBaseVideoPlayerExtended.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F335951C22E760B369D5DE1126F30FBB /* MCSAssetExporterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A5D34E131BBC71377DA28F2B86E3D16 /* MCSAssetExporterManager.m */; }; + F3807277B5C1F6C4C004A0A0C89A0536 /* UIScrollView+SJRefreshAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = C2DD493F1CE7D8D7F2335DE28EAACCAA /* UIScrollView+SJRefreshAdd.m */; }; + F395C081C9A048EA3646A18077BCA360 /* SJPageViewControllerItemCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 120857FFEE1974341C26B723EF722234 /* SJPageViewControllerItemCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F3BA012B7E55634352ABA988E1F86DB5 /* SJRotationManager_4.m in Sources */ = {isa = PBXBuildFile; fileRef = DA14265683AEBD8AB86A22DA0CFFD33B /* SJRotationManager_4.m */; }; + F3DCCCD549FD5B56D4CABDE523546D4E /* SJLoadingView.h in Headers */ = {isa = PBXBuildFile; fileRef = CABA7896EC27F5C017ADF1FD1D1BE108 /* SJLoadingView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F403F9ABF36C19FD18BA9D68E6A5933D /* UIImagePickerController+SJUIKitExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 575DE72F96583F8BB9C83888704F39DE /* UIImagePickerController+SJUIKitExtension.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F4424AE287A4B6246579AE9C4D6A4210 /* UIButton+AsyncLoadImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 42CF1AB1E9A3660981662A104EDB284B /* UIButton+AsyncLoadImage.m */; }; + F472BD28B82BDD4EE44638ADA250F1A3 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A953BB5BCF6FF74C1210A20D89F9CF4 /* MASLayoutConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F4A1D1A5A6E0553A20EBA15F98F81A3E /* MCSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B9EAC370190981B4A7E38B0DC473894 /* MCSUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F4A6CE2EB5809C8EE32590DA9E6C8D0C /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DB2763CD039B0FEB334FD32846611CB /* GCDAsyncSocket.m */; }; + F500CDA3C7783B2AC92B0FE982326005 /* HLSAssetReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C8C9E593BD3BB4CA920EBD0BCB25ED2 /* HLSAssetReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F57BC657370BF54188EB7156394D13BD /* HTTPErrorResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = B2B25EEB41F406864A4E8DB55F4F4156 /* HTTPErrorResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F5E158CAEBCA1677DD2C4EC27B57EF74 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 17AEA77DDBF2940C0257BC4C9C44A7B8 /* MJRefreshBackStateFooter.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F5FEAAE4F6449687CFC1972C2BAFB305 /* SJDraggingProgressPopupViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = C2F0FA4F98A998A5819D89E2A49A386F /* SJDraggingProgressPopupViewDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F60916751D5E49F38B15D0AE60090AFC /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = AE443D904D27CCDFC8A5A5744CD4393B /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F6317EBA867ABA454D15EEBC1BCF3137 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 6575EE9937AFEE339C50E7EAF20E0E70 /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F73C386B7C6D8902311FAA8045492E9B /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A60C66492F80542846683251BE37E9 /* NSArray+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F7FA870F3887DD00BDDCBDF9E517E5D5 /* SJVideoPlayerControlLayerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FB320C8A5FB0D611B34517F47318B6A /* SJVideoPlayerControlLayerProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F7FEE1E97E065F55DFDA4D130CDABA1D /* MCSAssetContentReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E8090AEB6809FB636A7C87126A90225 /* MCSAssetContentReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F86E1B0E0F9BE00F2279078F73EF5C30 /* SJRunLoopTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A40557A96561E21A7370CFE58EFB61B2 /* SJRunLoopTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F8BB40D5799C255C713B618EADD61D52 /* Pods-iPadDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FB158D8A0DD065B6ECA106AF66D5013 /* Pods-iPadDemo-dummy.m */; }; + F8C132DF61B93549E63E5BE8ED84B242 /* SJAttributesRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E48AD212B00E0E868EDEC3691A1B956 /* SJAttributesRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F8C6D75843DCB176CE2BDBE05B595B75 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 78B13DF72793869FB174879AF7B350F5 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F8D1D64B61BC648D98554301EFE9971C /* SJSQLiteTableModelConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = C29310E7B9989F798A056BF13F707CE1 /* SJSQLiteTableModelConstraints.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F99186CC4948F3A22F5F0554A674F22B /* SJPageMenuBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C0180F0B23805DFB448CC303CF488C9 /* SJPageMenuBar.m */; }; + F9AC2056AEDC6C5F2B197D23FCD13CF2 /* SJButtonProgressSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = E5646BC6E9398DFB6A748933FAAC8590 /* SJButtonProgressSlider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FA5C78B0A438DDA789AEC22AB9BF15FD /* SJFitOnScreenManagerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 583BA5CA5FEB8ACB149A238FD82704ED /* SJFitOnScreenManagerDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB16C045A069D74F4C3937AD20435F1F /* MCSAssetUsageLog.h in Headers */ = {isa = PBXBuildFile; fileRef = C2165E986742B6627764AAAF2C9ABDA4 /* MCSAssetUsageLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FBB26EE2842CD858D6C8AEA024523166 /* SJVideoPlayerClipsGeneratedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = D1ABEDA1C56F54F2F00CD316F291413B /* SJVideoPlayerClipsGeneratedResult.m */; }; + FD00DE99A0128C6C3627210DBEBF0A3A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 576C90F420ED9959ADCA100227637DA2 /* SDWebImageOperation.m */; }; + FD3A538BB2D9A642D9A3353A794D84EF /* SJStatusBarManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 13A2FFF8AFB2C5868910E889B9285FEB /* SJStatusBarManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FDCDC56E819B256F2BED52318F94D9E1 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A721DAC02D027449C6B7600BFF0F17F /* SDDeviceHelper.m */; }; + FDEFC0913376D6924FE8ADBB45644834 /* SJVideoDefinitionSwitchingInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 62146703542E4171F562EAD8E011A00E /* SJVideoDefinitionSwitchingInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE2D3FBD895EC15C6E9DC7828ADE507D /* SJFullscreenModeStatusBarDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 12861D4CFB626041A9297BDE6AA375F9 /* SJFullscreenModeStatusBarDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE47BBF43CA4AB95AC91E8AA45810F60 /* HLSAssetParser.h in Headers */ = {isa = PBXBuildFile; fileRef = F4148B1025FDA6FA348183E28440A0AA /* HLSAssetParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE5892912E5909BB9EDEAA19BF8BD23B /* SJBaseVideoPlayer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6770FFDFD3D31529F7092CD60C41390C /* SJBaseVideoPlayer-dummy.m */; }; + FEE376DAD73EC0A4B40E754325CB8F23 /* UIColor+SJPageMenuBarExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 29FCEB5ADA7D9ED95703798455492C6D /* UIColor+SJPageMenuBarExtended.m */; }; + FEF48069488B15726282FBBF1D17334B /* UIView+SJAnimationAdded.m in Sources */ = {isa = PBXBuildFile; fileRef = 36402D1ACDE5AE5F02AEBE64E4E535F0 /* UIView+SJAnimationAdded.m */; }; + FF11BCD57D7EE41EEBFF0AA09A937E8F /* UIScrollView+ListViewAutoplaySJAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 79504201DC2BA88A3DAB0FEECAD28CA8 /* UIScrollView+ListViewAutoplaySJAdd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF1B95AE282371B2C7E924A5FDCB750A /* SJBaseViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BF8E50B75BCB142C3E0728DD0E1429F /* SJBaseViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF5378138FF731C8AE8BB739A6ECD9B9 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 23DD6C7239D10FA464DB0828145931C4 /* UIImage+ForceDecode.m */; }; + FF770492174AAF9D972CC900F71A44ED /* MCSAssetExporterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2507FFE78B01267D4F049D9C81E95BAB /* MCSAssetExporterManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF8226B1EBE733DD7ED7304094E89CFB /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 192EA25AB06B5234FDBA9D0077BC3E83 /* SDWebImageDownloaderRequestModifier.m */; }; + FFE28DD7D6ED9BBF3E2ADC5A909C5C52 /* UIScrollView+SJPageViewControllerExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 03C72E202294EC2CD3543D193351E0D2 /* UIScrollView+SJPageViewControllerExtended.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 05E3C6783F740368659E6565A1EE25C3 /* PBXContainerItemProxy */ = { + 0D18E36BAB0A83ABF5F936986A0C2DA9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; - remoteInfo = MJRefresh; + remoteGlobalIDString = 6083682834ABE0AE7BD1CBF06CADD036; + remoteInfo = CocoaAsyncSocket; }; - 0695FAB7F02A96DA702536F76C37C568 /* PBXContainerItemProxy */ = { + 0E636900BE40CE2C9D5A5159FD9EB21A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; remoteInfo = Masonry; }; - 0E46B402C36A4398F372D6CE4A3B5325 /* PBXContainerItemProxy */ = { + 0ECDDB4F483BAA83B6CCEA1E9DB30C5F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = AC7ED7554C07C41E51C8BD5248179FED; - remoteInfo = SJRouter; + remoteGlobalIDString = 76A445C38D13436849B0EAD21F555034; + remoteInfo = SJBaseVideoPlayer; }; - 1752F1C03718B8E0706738E1EE8EDECD /* PBXContainerItemProxy */ = { + 16A70C3F03DD59324DE9D38F7261EFC8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 66EF777DAC384165A40F94DC7D0BD98F; - remoteInfo = SJUIKit; + remoteGlobalIDString = 84B44807A12996D487A4A591A481D6A0; + remoteInfo = YYModel; }; - 1B511546C7DAAE1B1587C4E4FE385129 /* PBXContainerItemProxy */ = { + 24B57FBF077B7FDB058904B741C7BC1C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 76A445C38D13436849B0EAD21F555034; - remoteInfo = SJBaseVideoPlayer; + remoteGlobalIDString = 84B44807A12996D487A4A591A481D6A0; + remoteInfo = YYModel; }; - 3DB1CE2EBB9C931BA014F99BA0F9D93F /* PBXContainerItemProxy */ = { + 2893177E1AD7427EA75F38519A85BDC0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9D30A64C17E5B9AF4D9239A2C2A7630F; - remoteInfo = SJVideoPlayer; + remoteGlobalIDString = A2E0E2D60BE654B306C0ECB654A8212F; + remoteInfo = "SJUIKit-68d28646"; }; - 6805B9D5739E05E46F3B37D026216B6C /* PBXContainerItemProxy */ = { + 30C505B82BCFDED0A9FA1B1FC30D49E5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; + remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; + remoteInfo = SDWebImage; }; - 7C3D34F729728919DF0CB72EFF1E5FE6 /* PBXContainerItemProxy */ = { + 3215A6261674F23902A4111DCBFD34F6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A19FC1B5D5F291312B4944B9B7DBF0A0; - remoteInfo = SJFullscreenPopGesture; + remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; + remoteInfo = MJRefresh; + }; + 4A02189845E4E315C2D3869F187423F5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 84B44807A12996D487A4A591A481D6A0; + remoteInfo = YYModel; + }; + 4A953460765C681474A9F99730A675D6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A2E0E2D60BE654B306C0ECB654A8212F; + remoteInfo = "SJUIKit-68d28646"; }; - 7F80165A3063B4A43068E163E184154A /* PBXContainerItemProxy */ = { + 5B3522C2D812899E073E1609E97DA779 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 6083682834ABE0AE7BD1CBF06CADD036; remoteInfo = CocoaAsyncSocket; }; - 8BFF662189582A5EC6BCAEEB4E8DC948 /* PBXContainerItemProxy */ = { + 5DE81885EE3171806614FAF27BB1F7E7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 84B44807A12996D487A4A591A481D6A0; remoteInfo = YYModel; }; - 8C0F2394A98F84B8D5D6464CCB071BF9 /* PBXContainerItemProxy */ = { + 6319EA56A49DCBA651EA2105A440190A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 66EF777DAC384165A40F94DC7D0BD98F; - remoteInfo = SJUIKit; + remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; + remoteInfo = MJRefresh; }; - 8E509587138A722305276A3007248EBB /* PBXContainerItemProxy */ = { + 710C17942257F8442DA3B3FC6D5D1376 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; - remoteInfo = SDWebImage; + remoteGlobalIDString = 9D30A64C17E5B9AF4D9239A2C2A7630F; + remoteInfo = SJVideoPlayer; }; - 9BD5AE57825ACB916ED8FD1E0B253A4B /* PBXContainerItemProxy */ = { + 7BAC79CA1F28E38473D2D260A4C4669A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; + remoteGlobalIDString = A2E0E2D60BE654B306C0ECB654A8212F; + remoteInfo = "SJUIKit-68d28646"; + }; + 86142F09F5625DAE852B4EFD6FE410A9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A19FC1B5D5F291312B4944B9B7DBF0A0; + remoteInfo = SJFullscreenPopGesture; + }; + 8672D4A1B2AD57681C30B741F3471F0F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9D30A64C17E5B9AF4D9239A2C2A7630F; + remoteInfo = SJVideoPlayer; + }; + ABDFBE8DCE62100575430CBDFB40D254 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 76A445C38D13436849B0EAD21F555034; + remoteInfo = SJBaseVideoPlayer; + }; + B12300F9260FE68EF253FBDB38C1A6DC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; + remoteInfo = MJRefresh; + }; + B81DF1ADDDD82311ECDDF59B3D91532C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A2E0E2D60BE654B306C0ECB654A8212F; + remoteInfo = "SJUIKit-68d28646"; }; - BE4A91ECB76701B51DE7EC541E0F82B5 /* PBXContainerItemProxy */ = { + BA79B9D6E97B37E027732F4D0C424FAD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 66EF777DAC384165A40F94DC7D0BD98F; - remoteInfo = SJUIKit; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; }; - C5B774C564C0112D35983E87B885EC99 /* PBXContainerItemProxy */ = { + CA40D601580DD86B6D026B871AC2D01E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 76A445C38D13436849B0EAD21F555034; remoteInfo = SJBaseVideoPlayer; }; - D11E55CC83647E52C9B61476EAF989C6 /* PBXContainerItemProxy */ = { + CBBF7191C0FD88EDA55A5B7FDACB3D93 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 53EA424E9D34B39228682599B5DABD60; remoteInfo = SJMediaCacheServer; }; - D337F93B5713867421651EFBDFE8382B /* PBXContainerItemProxy */ = { + CD7928E4299E071EBF8CC91FD9FE636C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6083682834ABE0AE7BD1CBF06CADD036; - remoteInfo = CocoaAsyncSocket; + remoteGlobalIDString = AC7ED7554C07C41E51C8BD5248179FED; + remoteInfo = SJRouter; }; - E1B251A913E92D01EE373E578F523678 /* PBXContainerItemProxy */ = { + DB433CD1D80D3F41DCE21E2F42B33420 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 84B44807A12996D487A4A591A481D6A0; - remoteInfo = YYModel; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; }; - E1E2A3BC22E9D5523ACB4B5661D1F81F /* PBXContainerItemProxy */ = { + E0A2F711F9BF71E7247C6BA7BC4102CF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 66EF777DAC384165A40F94DC7D0BD98F; - remoteInfo = SJUIKit; + remoteGlobalIDString = EF627DF8F333CD0DEF8046D659DC9477; + remoteInfo = "SJUIKit-98d45660"; }; - F566493F220CBE1A612781CF4660A486 /* PBXContainerItemProxy */ = { + F5B2A6C61D07C2A0C3A8545FFF36E825 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; - remoteInfo = MJRefresh; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0037E39EB4D7F6DA3701F457D3EC20C4 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; - 003CFACA1FC996C625966F930B4D2F89 /* SJAVMediaPlaybackController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVMediaPlaybackController.h; path = SJBaseVideoPlayer/AVPlayer/SJAVMediaPlaybackController.h; sourceTree = ""; }; - 0051CE79B33E6BB729E838479155ED3F /* SJFloatSmallViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJFloatSmallViewController.m; path = SJBaseVideoPlayer/Common/Implements/SJFloatSmallViewController.m; sourceTree = ""; }; - 0096A1C86657361F8C73A7CDA6610D93 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; - 00B0A538FDC7CAE79FC847F0E378A213 /* SJViewControllerManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJViewControllerManager.m; path = SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.m; sourceTree = ""; }; - 00E115F4BD8D7320CDD559CFCED2EE5B /* SJApplicationInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJApplicationInfo.h; path = SJUIKit/Other/SJApplicationInfo.h; sourceTree = ""; }; - 014A11017EECFB590E6EE19F8799C0C1 /* SJVideoPlayerPresentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerPresentView.h; path = SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.h; sourceTree = ""; }; - 014B0A9FD5E5B604F44D6BD75802AC5D /* SJAppearStateObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAppearStateObserver.m; path = SJUIKit/Base/Core/SJAppearStateObserver.m; sourceTree = ""; }; - 01C82C208B0A4A92A9E70847FA57A410 /* SJUIKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJUIKit.debug.xcconfig; sourceTree = ""; }; - 0262B471253B5BB680F4E1BF702B043E /* MultipartMessageHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MultipartMessageHeader.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartMessageHeader.m; sourceTree = ""; }; - 033A5E86DB8DE11284C535DD5E4EF0D9 /* SJSQLite3+TableExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJSQLite3+TableExtended.m"; path = "SJUIKit/SQLite3/SJSQLite3+TableExtended.m"; sourceTree = ""; }; - 0354BE69712F9FD299E25A0DE35F8F9A /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; - 036AD705508BBDF5E0A821036BC33E52 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; - 03888391B5161257680388A1D70E6B36 /* SJAttributesRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAttributesRecorder.m; path = SJUIKit/AttributesFactory/Deprecated/SJAttributesRecorder.m; sourceTree = ""; }; - 040661A83621B0F8775E45CBE8CE4818 /* HLSPrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSPrefetcher.m; path = SJMediaCacheServer/Core/Prefetch/HLSPrefetcher.m; sourceTree = ""; }; + 0009D34B181A4884E1CF0C006A69166D /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; + 009A89B05B7E510F8011308F8969161F /* SJSQLiteTableModelConstraints.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteTableModelConstraints.m; path = SJUIKit/SQLite3/Core/SJSQLiteTableModelConstraints.m; sourceTree = ""; }; + 012B1D66BFF3C374A422A1182DDB2C43 /* SJReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJReachability.m; path = SJBaseVideoPlayer/Common/Implements/SJReachability.m; sourceTree = ""; }; + 01834C4470DCBCB4F100E3A8EC49ED7F /* SJSQLiteTableInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteTableInfo.h; path = SJUIKit/SQLite3/Core/SJSQLiteTableInfo.h; sourceTree = ""; }; + 019AED80FEA640EF6E6B6D058FA1568C /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; + 01BD3800159B08192BA01572EB70DBC4 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; + 020E1E98FB86F32664FD4DF60847EAFE /* UIScrollView+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/UIKit/UIScrollView+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; + 0253AB53B6D7184C77FA8D594626A84B /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; + 02C885C3FFBA8DF40FDF8F7007B402ED /* SJResidentThread.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJResidentThread.m; path = SJUIKit/Thread/SJResidentThread.m; sourceTree = ""; }; + 03579E576BD55CC052A74C8A8070B196 /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; + 03AE8E594CCF2D1AEE07DD21EC35A5FE /* SJSQLiteColumnInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteColumnInfo.h; path = SJUIKit/SQLite3/Core/SJSQLiteColumnInfo.h; sourceTree = ""; }; + 03C72E202294EC2CD3543D193351E0D2 /* UIScrollView+SJPageViewControllerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+SJPageViewControllerExtended.m"; path = "SJUIKit/PageViewController/Core/UIScrollView+SJPageViewControllerExtended.m"; sourceTree = ""; }; 0444116F11EF9930E9DB4CFB2814A987 /* SJLoadFailedControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJLoadFailedControlLayer.m; sourceTree = ""; }; - 04F9CE0F748B0C5C430B59A68F800E48 /* SJUIMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUIMaker.h; path = SJUIKit/UIMaker/SJUIMaker.h; sourceTree = ""; }; - 05165E3B61A6AC4ACB8E359ADDFAF3A9 /* SJVideoPlayerRegistrar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerRegistrar.h; path = SJBaseVideoPlayer/Common/Utils/SJVideoPlayerRegistrar.h; sourceTree = ""; }; - 053F8D2303B2B9B46AA98AC4DD7FFD3A /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; - 059862E687856F86474FFBC16DE7A911 /* MCSAssetContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetContent.h; path = SJMediaCacheServer/Core/Asset/MCSAssetContent.h; sourceTree = ""; }; - 05CF5C16FC5EA0177A4BF58C7758852E /* SJRunLoopTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRunLoopTaskQueue.m; path = SJUIKit/Queues/SJRunLoopTaskQueue.m; sourceTree = ""; }; - 05FD6C1E9AF3BA06CC7BFDD59F92EC20 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; - 0684D36A6E3AA23CB54EB1E5EC8FCAF2 /* HTTPDataResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPDataResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPDataResponse.h; sourceTree = ""; }; - 06896347C383BCAA151C113068E31848 /* SJPlayerGestureControlDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayerGestureControlDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJPlayerGestureControlDefines.h; sourceTree = ""; }; - 06CEA4CB5F33BCE21D25B130007D7D77 /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; - 070166A4276093BB4D882D923D8EF4EB /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; - 0715D640583BBA7271BAFA9B21207EA2 /* NSFileManager+MCS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileManager+MCS.h"; path = "SJMediaCacheServer/Core/Common/NSFileManager+MCS.h"; sourceTree = ""; }; - 0720AF1CCC4F0B76089383A8C0A0C6F8 /* SJAsyncLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAsyncLoader.h; path = SJUIKit/AsyncLoad/SJAsyncLoader.h; sourceTree = ""; }; - 080DAD015F2F240DE2AEE9593D2F2FC4 /* SJSQLite3ColumnOrder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3ColumnOrder.m; path = SJUIKit/SQLite3/Core/SJSQLite3ColumnOrder.m; sourceTree = ""; }; - 0907DC601C15D896E168D720258A128E /* SJObjectContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJObjectContainer.h; path = SJUIKit/Other/SJObjectContainer.h; sourceTree = ""; }; - 09CC4BAAC35CF23B251B49E6A13739F3 /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; - 09FAD31258382D3E1171F30A6A61D033 /* Pods-SJVideoPlayer_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SJVideoPlayer_Example.release.xcconfig"; sourceTree = ""; }; - 0A22A24EF7C88E55E445B392F5D0F5A4 /* SJRouteInterceptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouteInterceptor.h; path = SJRouter/Core/SJRouteInterceptor.h; sourceTree = ""; }; - 0AE4DE26E0A0AE87F0E9C63E73AB22F0 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; - 0C893E79895620E54E2D8EB898BCAF22 /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; + 0531B770513FBEE636AF98EA18C5E044 /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; + 05885CA8A88AEDFA2F58C3E0F70FA83A /* SJBaseVideoPlayer+TestLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJBaseVideoPlayer+TestLog.m"; path = "SJBaseVideoPlayer/SJBaseVideoPlayer+TestLog.m"; sourceTree = ""; }; + 066D181281DBFE3C16F6E2A2E761FB20 /* SJVideoPlayerURLAsset.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayerURLAsset.m; path = SJBaseVideoPlayer/Common/Implements/SJVideoPlayerURLAsset.m; sourceTree = ""; }; + 0755884873AE380C47B411F931940C2E /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; + 080C7CD9B10920E0BAFB0AAB57F49187 /* SJTextPopupController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJTextPopupController.m; path = SJBaseVideoPlayer/Common/Implements/SJTextPopupController.m; sourceTree = ""; }; + 08BA1E63C9A99335017167654118341A /* SJDanmakuPopupController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJDanmakuPopupController.m; path = SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.m; sourceTree = ""; }; + 09A6F60F054C786AA05EF0719696B62F /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; + 0A721DAC02D027449C6B7600BFF0F17F /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; + 0AC4E676CCA2B49BFDC8429735707001 /* SJUIMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUIMaker.h; path = SJUIKit/UIMaker/SJUIMaker.h; sourceTree = ""; }; + 0B1B947F216F4BB68383C03E72F0B14A /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; + 0BBEC4107C91CF119D8982CE7A6010D7 /* MCSPrefetcherManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSPrefetcherManager.m; path = SJMediaCacheServer/Core/Prefetch/MCSPrefetcherManager.m; sourceTree = ""; }; + 0CD703BA5D0C48FD15CE2D64B722A6F3 /* HLSAssetTsContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetTsContent.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetTsContent.h; sourceTree = ""; }; + 0DB2763CD039B0FEB334FD32846611CB /* GCDAsyncSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GCDAsyncSocket.m; path = Source/GCD/GCDAsyncSocket.m; sourceTree = ""; }; + 0DC68872E443BB6F78147F2DB89B58DD /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; + 0DDBE942F896A2A1978598E974191373 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; + 0DE711F0E535B1E9252AFBEF671F9507 /* SJBaseCollectionReusableView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseCollectionReusableView.m; path = SJUIKit/Base/SJBaseCollectionReusableView.m; sourceTree = ""; }; + 0DFC7DEAA1E00DE172B667DACFE4FDBA /* SJRotationManagerInternal_4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRotationManagerInternal_4.h; path = SJBaseVideoPlayer/Common/Implements/SJRotationManagerInternal_4.h; sourceTree = ""; }; 0E14ED72F554BB4F9C094A079F3809CF /* SJVideoPlayerClipsParameters.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJVideoPlayerClipsParameters.m; sourceTree = ""; }; - 0E32CA41D536F40425F0069CAC1D2C35 /* SJVideoDefinitionSwitchingInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoDefinitionSwitchingInfo.h; path = SJBaseVideoPlayer/Common/Implements/SJVideoDefinitionSwitchingInfo.h; sourceTree = ""; }; - 0E916C64B0563C0CAD6E4FF346567647 /* SJPageMenuBar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageMenuBar.m; path = SJUIKit/PageViewController/SJPageMenuBar.m; sourceTree = ""; }; - 0EAE49A9BF14B726D5931A0D6E93F009 /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; - 0EDB1E5B3E80E12BD16FD682E1691547 /* GCDAsyncSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GCDAsyncSocket.h; path = Source/GCD/GCDAsyncSocket.h; sourceTree = ""; }; - 0EF28C5B701AE7BD90B69026BF18C0B7 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; - 0F6ED404D65110CB02F5A6F663940CA1 /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; - 10AC34D16AD56DF01B15E4015991BB88 /* MCSUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSUtils.m; path = SJMediaCacheServer/Core/Common/MCSUtils.m; sourceTree = ""; }; - 11430920277C0AB970C25D9FDCEC4D54 /* FILEAssetContentProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FILEAssetContentProvider.m; path = SJMediaCacheServer/Core/Asset/FILE/FILEAssetContentProvider.m; sourceTree = ""; }; - 116204D8A2875F177C221F0E75307EFD /* SJPageCollectionView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageCollectionView.m; path = SJUIKit/PageViewController/Core/SJPageCollectionView.m; sourceTree = ""; }; - 11AF08AEB2B51075485C049711A0CA56 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; + 0E34FB61A572E416B416E798952A745A /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; + 0E35D960663447D3A8E5EA2FA94E28A9 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; + 0E449F5B61ADDC653B9E79AB2315847F /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; + 0E6D773DD4369B78D648BEECEFB59283 /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; + 0ED99FB4B9CCDA506993C9A82E69656A /* Pods-iPadDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-iPadDemo-acknowledgements.markdown"; sourceTree = ""; }; + 0EF95AEA493BEC4F0BECF39787AF02A3 /* MCSReadwrite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSReadwrite.m; path = SJMediaCacheServer/Core/Common/MCSReadwrite.m; sourceTree = ""; }; + 0F3D951B76FC5D759CD1A98CCEFF52BD /* SJAttributeWorker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAttributeWorker.m; path = SJUIKit/AttributesFactory/Deprecated/SJAttributeWorker.m; sourceTree = ""; }; + 0FF85D3E495A18149720F39B0463EAEF /* SJAVMediaPlayerLayerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVMediaPlayerLayerView.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLayerView.h; sourceTree = ""; }; + 10DE3F15AD556E9411F70D5954CAFD92 /* SJAppearStateObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAppearStateObserver.h; path = SJUIKit/Base/Core/SJAppearStateObserver.h; sourceTree = ""; }; + 1176BBA27A6C78CDB1F75DB510933BDD /* SJMakeView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJMakeView.h; path = SJUIKit/UIMaker/Core/SJMakeView.h; sourceTree = ""; }; 11F5C1C1D209E0978F434B46A288BA37 /* SJClipsResultShareItemsContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsResultShareItemsContainerView.h; sourceTree = ""; }; - 124779B8192089BA31CA8E1E41361249 /* HTTPMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPMessage.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPMessage.h; sourceTree = ""; }; - 12840B35E73A76B99955960B035AEFC4 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + 120857FFEE1974341C26B723EF722234 /* SJPageViewControllerItemCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageViewControllerItemCell.h; path = SJUIKit/PageViewController/Core/SJPageViewControllerItemCell.h; sourceTree = ""; }; + 121DBD3343262EF7B7A3BB91ED5A6CDE /* MCSResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSResponse.h; path = SJMediaCacheServer/Core/ProxyServer/MCSResponse.h; sourceTree = ""; }; + 125DFB9742FADEA9EE7FFDE90EE5616A /* HTTPRedirectResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPRedirectResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPRedirectResponse.m; sourceTree = ""; }; + 1269E5ECA2420221EC3021F7DE878B7F /* SJViewControllerManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJViewControllerManager.h; path = SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.h; sourceTree = ""; }; + 12702AB873E34D912F798843E620B6C3 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; + 127B306A8EEBFF68A999E0032B1F4645 /* SJPresentationQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPresentationQueue.m; path = SJUIKit/Queues/SJPresentationQueue.m; sourceTree = ""; }; 12861D4CFB626041A9297BDE6AA375F9 /* SJFullscreenModeStatusBarDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJFullscreenModeStatusBarDefines.h; sourceTree = ""; }; - 12B90A694A0547E1744E10F64B7E9F32 /* SJFitOnScreenManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJFitOnScreenManager.m; path = SJBaseVideoPlayer/Common/Implements/SJFitOnScreenManager.m; sourceTree = ""; }; - 12CA954C09180751F50E4902ADAA5627 /* UIScrollView+ListViewAutoplaySJAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+ListViewAutoplaySJAdd.h"; path = "SJBaseVideoPlayer/UIScrollView+ListViewAutoplaySJAdd.h"; sourceTree = ""; }; - 12FC7263674BF8906223315EA6EA2618 /* CALayer+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/UIKit/CALayer+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; - 1325DBC8D4CCAD854E72BF24D1EB0530 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; - 1444D7D8C01715403BC3944CAA490042 /* SJRouter-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJRouter-prefix.pch"; sourceTree = ""; }; - 14643B73F61B8B7B40E7FB5A321DE307 /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; - 14B6B58110C685495047366A05397BDF /* MCSProxyServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSProxyServer.m; path = SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.m; sourceTree = ""; }; - 1538272FD9D0D545417F5A5C6E843F0C /* SJBaseViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseViewController.m; path = SJUIKit/Base/SJBaseViewController.m; sourceTree = ""; }; - 155BA38F7BEE983C0C89B4F405355CFD /* NSURLRequest+MCS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLRequest+MCS.m"; path = "SJMediaCacheServer/Core/Common/NSURLRequest+MCS.m"; sourceTree = ""; }; - 15E1591DA337D219AFA0E3DAD4DA5344 /* SJUTUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTUtils.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTUtils.h; sourceTree = ""; }; - 16566FD805F18DA44C2B3514FD1AA5BA /* YYModel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YYModel-prefix.pch"; sourceTree = ""; }; - 168BC5A7FA90E984F1F2A86F1505A9F8 /* SJAppearStateObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAppearStateObserver.h; path = SJUIKit/Base/Core/SJAppearStateObserver.h; sourceTree = ""; }; - 16CFED6E36C78399540850E30625CFA6 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; - 17BC8EBC209F51DF511D50F41D1517D8 /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; - 17DE82202D4726202916843449CB4976 /* HTTPServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPServer.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPServer.m; sourceTree = ""; }; - 17FBDFCEE51A2D0BB66309AB748C8F0D /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; - 184347B2F86538F8D5B17715AF3CD3B7 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; - 18507B27A3402374E0CF315144B2C1E7 /* SJBaseVideoPlayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJBaseVideoPlayer.release.xcconfig; sourceTree = ""; }; - 1879A0EB8878046A8AFF1CCC22EFAFEB /* MCSAssetExporterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetExporterManager.m; path = SJMediaCacheServer/Core/Export/MCSAssetExporterManager.m; sourceTree = ""; }; + 130D63586D527C1630C4E31886E2EE95 /* HTTPResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPResponse.h; sourceTree = ""; }; + 1381FB90C8E2453615937EE8638E098C /* Pods-SJVideoPlayer_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SJVideoPlayer_Example-acknowledgements.plist"; sourceTree = ""; }; + 1390188F41AD2E413E12F9211AFA483D /* UIScrollView+ListViewAutoplaySJAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+ListViewAutoplaySJAdd.m"; path = "SJBaseVideoPlayer/UIScrollView+ListViewAutoplaySJAdd.m"; sourceTree = ""; }; + 13A2FFF8AFB2C5868910E889B9285FEB /* SJStatusBarManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJStatusBarManager.h; path = SJUIKit/Base/Core/SJStatusBarManager.h; sourceTree = ""; }; + 13C2047EA56E993C466F35C07F4F92BF /* GCDAsyncUdpSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GCDAsyncUdpSocket.h; path = Source/GCD/GCDAsyncUdpSocket.h; sourceTree = ""; }; + 13EC1960408F989E909A495BE61BF7B9 /* SJSQLite3ColumnOrder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3ColumnOrder.h; path = SJUIKit/SQLite3/Core/SJSQLite3ColumnOrder.h; sourceTree = ""; }; + 13F1718CA73A99051651CAFD7BE18850 /* SJUTRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTRecorder.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTRecorder.h; sourceTree = ""; }; + 1553F3B0152B660C6F8D19AD7B23C830 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; + 164A4CDF6C931C116125B775ABEA39A6 /* SJSQLiteColumnInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteColumnInfo.m; path = SJUIKit/SQLite3/Core/SJSQLiteColumnInfo.m; sourceTree = ""; }; + 167A062757724741853B54809C7759E5 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; + 173902BE7B236E60ABADEE40F62F1E3A /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; + 1772E67C06E7481150409015C1A71FED /* SJPlaybackListController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackListController.m; path = SJUIKit/PlaybackListController/SJPlaybackListController.m; sourceTree = ""; }; + 1780BDCC7FD8815D6B93DD6DC07A2FE8 /* SJSQLite3Logger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3Logger.m; path = SJUIKit/SQLite3/Core/SJSQLite3Logger.m; sourceTree = ""; }; + 17AEA77DDBF2940C0257BC4C9C44A7B8 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; + 17F454440778375A6C65AB8DC61BC6EC /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; + 187AB600A55E85E922E7B7BF1FE83EAE /* SJBaseVideoPlayer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJBaseVideoPlayer-prefix.pch"; sourceTree = ""; }; 18AF14DC9F4780968B5A77143106B8B2 /* SJDraggingObservation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJDraggingObservation.h; sourceTree = ""; }; - 1936E463DB375C1D52A383049C3A0FB7 /* UIScrollView+SJRefreshAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+SJRefreshAdd.h"; path = "SJUIKit/Refresh/UIScrollView+SJRefreshAdd.h"; sourceTree = ""; }; - 197513FBB17F0449581E0FE5B5A9D2A3 /* UILabel+AsyncLoad.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+AsyncLoad.h"; path = "SJUIKit/AsyncLoad/UILabel+AsyncLoad.h"; sourceTree = ""; }; - 19AB9122BE353834805FC95E8F570CE0 /* UIScrollView+ListViewAutoplaySJAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+ListViewAutoplaySJAdd.m"; path = "SJBaseVideoPlayer/UIScrollView+ListViewAutoplaySJAdd.m"; sourceTree = ""; }; - 19FEE760FB04EB57125FC4138579A486 /* SJUIMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUIMaker.m; path = SJUIKit/UIMaker/SJUIMaker.m; sourceTree = ""; }; - 1AA6B38E7EA69BD70B6880BAF703BFFC /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; + 18BBCC2C8272952657E3EC3040151D16 /* FILEAsset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FILEAsset.h; path = SJMediaCacheServer/Core/Asset/FILE/FILEAsset.h; sourceTree = ""; }; + 18E6AB286955742A4F272FDC090D42E2 /* HTTPLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPLogging.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPLogging.h; sourceTree = ""; }; + 192EA25AB06B5234FDBA9D0077BC3E83 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; + 1981922428A12965A3579BA1E522EAA6 /* SJBaseTableViewHeaderFooterView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseTableViewHeaderFooterView.m; path = SJUIKit/Base/SJBaseTableViewHeaderFooterView.m; sourceTree = ""; }; + 19C83F3E15E142FEF510A1EF385B7F3B /* FILEPrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FILEPrefetcher.h; path = SJMediaCacheServer/Core/Prefetch/FILEPrefetcher.h; sourceTree = ""; }; + 19EC805ECD47181B62827C1C7BDA8254 /* SJVideoPlayerRegistrar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayerRegistrar.m; path = SJBaseVideoPlayer/Common/Utils/SJVideoPlayerRegistrar.m; sourceTree = ""; }; + 1A32C8280690E162805FFD5B3456363E /* SJPageViewControllerItemCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageViewControllerItemCell.m; path = SJUIKit/PageViewController/Core/SJPageViewControllerItemCell.m; sourceTree = ""; }; + 1AAB11E367E7CC111285F6514CABC351 /* UIView+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/UIKit/UIView+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; 1AC07D35EEE7B113C647489113B845E5 /* SJClipsResultsControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsResultsControlLayer.m; sourceTree = ""; }; - 1BD0D4E3498989281E2B345E338236B7 /* SJPictureInPictureControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPictureInPictureControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJPictureInPictureControllerDefines.h; sourceTree = ""; }; - 1C05E718863B171F795E53DDE2BAECE4 /* SJMediaCacheServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJMediaCacheServer.debug.xcconfig; sourceTree = ""; }; - 1C1A64733F20770F31EC31F6D89C34CC /* SJPromptPopupController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPromptPopupController.h; path = SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.h; sourceTree = ""; }; + 1B3901427489E2D50848766DBAF7C9B1 /* NSString+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/Foundation/NSString+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; + 1B5AAFF44F99112E7D7A608B90492974 /* DDData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDData.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDData.m; sourceTree = ""; }; + 1B9E452C7341DA3F0243668E1E52250B /* SJPageViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageViewController.h; path = SJUIKit/PageViewController/SJPageViewController.h; sourceTree = ""; }; + 1B9EAC370190981B4A7E38B0DC473894 /* MCSUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSUtils.h; path = SJMediaCacheServer/Core/Common/MCSUtils.h; sourceTree = ""; }; + 1CD2CF45FAC66A032E9AC730F5D82EF7 /* NSDate+SJAdded.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDate+SJAdded.m"; path = "SJUIKit/Date/NSDate+SJAdded.m"; sourceTree = ""; }; + 1D35E6DC370566A772F84A2BA1C43063 /* SJPageMenuBar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuBar.h; path = SJUIKit/PageViewController/SJPageMenuBar.h; sourceTree = ""; }; 1D6D7DF771F31BB280AD6A3AB4608929 /* SJScrollingTextMarqueeView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJScrollingTextMarqueeView.h; sourceTree = ""; }; - 1DD80D2B81E957EC08C271B2008A6709 /* MCSQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSQueue.h; path = SJMediaCacheServer/Core/Common/MCSQueue.h; sourceTree = ""; }; - 1E56A1F424C8D6E8849E3A12BC3D1CDA /* SJUTAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTAttributes.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTAttributes.m; sourceTree = ""; }; + 1DC392352CB9E4CEE547B885EC96F498 /* SJObjectContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJObjectContainer.m; path = SJUIKit/Other/SJObjectContainer.m; sourceTree = ""; }; + 1E5B9A53F69AD306644BACB934DE5B9A /* SJPageCollectionView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageCollectionView.h; path = SJUIKit/PageViewController/Core/SJPageCollectionView.h; sourceTree = ""; }; 1E9A9C22E03571208664EA009CF0CB2B /* SJEdgeControlButtonItemView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJEdgeControlButtonItemView.h; sourceTree = ""; }; - 1EA78FE444BC23A0A689142FB3CFE1CE /* YYModel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYModel.release.xcconfig; sourceTree = ""; }; - 1FCC7D946DC63960299D1DB57E738488 /* SJControlLayerAppearStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJControlLayerAppearStateManager.m; path = SJBaseVideoPlayer/Common/Implements/SJControlLayerAppearStateManager.m; sourceTree = ""; }; - 1FD3C8D1B62B2F517D89BA8E592DDBCA /* SJFullscreenPopGesture-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJFullscreenPopGesture-dummy.m"; sourceTree = ""; }; - 1FFED36A657123030ABB700256D73F15 /* libMasonry.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMasonry.a; path = libMasonry.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 1F0CD8F6FEC6679EE02A839E4C5BAD67 /* SJSQLiteTableInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteTableInfo.m; path = SJUIKit/SQLite3/Core/SJSQLiteTableInfo.m; sourceTree = ""; }; + 1F57C4AC78A42F25654A8D1E3BB0835C /* HLSAsset.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAsset.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAsset.m; sourceTree = ""; }; + 1F6AA2E52A9F795D7EBC65E674F52C1F /* SJSQLite3+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+Private.h"; path = "SJUIKit/SQLite3/SJSQLite3+Private.h"; sourceTree = ""; }; + 1FFCA953DA178EEA22EBE4C5C685A860 /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; + 1FFED36A657123030ABB700256D73F15 /* Masonry */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = Masonry; path = libMasonry.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2028E91F27CE08D209E3372568A9A6EF /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; + 202D52E6CD763B7ABA66289A563B6A87 /* SJVideoPlayerURLAssetPrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayerURLAssetPrefetcher.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAssetPrefetcher.m; sourceTree = ""; }; 20436208DA601A6215F809D0708CE68F /* SJSpeedupPlaybackPopupView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJSpeedupPlaybackPopupView.m; sourceTree = ""; }; - 21940795A3E8F2B93ED8CA5D6FFE812F /* HTTPConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPConnection.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPConnection.m; sourceTree = ""; }; - 21B36C58B63F486BEB91CAFE492C84F8 /* libSJUIKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSJUIKit.a; path = libSJUIKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 2338CE541EF0E31053F74D487B439369 /* HLSAssetDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetDefines.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetDefines.h; sourceTree = ""; }; - 246CDF7769E5A1A220713B2A15CFF9FF /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; - 24801FA3A136072FAF5BB6A397E42C62 /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; - 24C761B08CD2612D577F00993D5F7477 /* SJPageViewControllerItemCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageViewControllerItemCell.h; path = SJUIKit/PageViewController/Core/SJPageViewControllerItemCell.h; sourceTree = ""; }; - 254D09E17D9229A90BAACE8231240B24 /* SJMediaPlaybackController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJMediaPlaybackController.h; path = SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.h; sourceTree = ""; }; - 255E1E694C5A89C3F97CB6CC514F692A /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; - 25928B0F9D432F2FCB96986DC2A298B6 /* SJVideoPlayerRegistrar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayerRegistrar.m; path = SJBaseVideoPlayer/Common/Utils/SJVideoPlayerRegistrar.m; sourceTree = ""; }; + 20BE12DC21A9AA42080D6D29760AC1E3 /* NSObject+SJObserverHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+SJObserverHelper.m"; path = "SJUIKit/ObserverHelper/NSObject+SJObserverHelper.m"; sourceTree = ""; }; + 2234052EC5245FFC09686458614B084A /* SJStatusBarManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJStatusBarManager.m; path = SJUIKit/Base/Core/SJStatusBarManager.m; sourceTree = ""; }; + 224620EF4ADDAF3C827F0710960B1AF5 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; + 22A3ED4C4D4F30644F3A17A59C59CC2F /* SJPlayerAutoplayConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayerAutoplayConfig.h; path = SJBaseVideoPlayer/Common/Implements/SJPlayerAutoplayConfig.h; sourceTree = ""; }; + 22D3088FBA52DF8DF003A747FCE5D49A /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; + 2302FF303A7D61A9CAAE6AFE27066096 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; + 2375C3ECCB3D6B1B7865813877E83AFE /* HTTPDynamicFileResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPDynamicFileResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPDynamicFileResponse.h; sourceTree = ""; }; + 2392D1712FB4E48BFA3421F87A3F7E63 /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; + 23C80FF64D8C6E998A9B74332E2A7F7B /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; + 23DD6C7239D10FA464DB0828145931C4 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; + 24904781138D7343D9FDA30B31B9480C /* Pods-SJVideoPlayer_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SJVideoPlayer_Example-acknowledgements.markdown"; sourceTree = ""; }; + 24927765EFD9A8457333CEE1BE623275 /* SJSubtitleItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSubtitleItem.h; path = SJBaseVideoPlayer/Common/Implements/SJSubtitleItem.h; sourceTree = ""; }; + 249BE349A9B6FD01152FB23E5AD8BB58 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; + 2507FFE78B01267D4F049D9C81E95BAB /* MCSAssetExporterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetExporterManager.h; path = SJMediaCacheServer/Core/Export/MCSAssetExporterManager.h; sourceTree = ""; }; 2608F2C6511AB60E8C605B529BD685EF /* SJFullscreenModeStatusBar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJFullscreenModeStatusBar.m; sourceTree = ""; }; - 261CD5468B6982A3716E4B77F3ADD224 /* MCSProxyTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSProxyTask.m; path = SJMediaCacheServer/Core/ProxyServer/MCSProxyTask.m; sourceTree = ""; }; - 2622C915C5313EADAD56750D52E52FED /* MCSConsts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSConsts.h; path = SJMediaCacheServer/Core/Common/MCSConsts.h; sourceTree = ""; }; - 2662D60C5B5E2FE77BED0F86537820B0 /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; - 266DE3DF25B3C7FEBE8FE679F9DFCA0E /* SJFlipTransitionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJFlipTransitionManager.m; path = SJBaseVideoPlayer/Common/Implements/SJFlipTransitionManager.m; sourceTree = ""; }; - 2693DB83F28B5058E515B705600C1A4E /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; - 26D5B0EEA6D883D4649CD796EF75FC22 /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h"; path = "SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h"; sourceTree = ""; }; + 262682099D3D540485EE94F59B647EFF /* HTTPConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPConnection.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPConnection.m; sourceTree = ""; }; + 263FE047C63E733FAF464B4D4C2E8824 /* UIColor+SJPageMenuBarExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SJPageMenuBarExtended.h"; path = "SJUIKit/PageViewController/Core/UIColor+SJPageMenuBarExtended.h"; sourceTree = ""; }; + 2644E275CC1F1A4B3875263B78A54E08 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; + 26BD6463286717AECE7ED4FFF4B7FCE1 /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; + 26C5D793E073EE82482E7E18670537D3 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; 26D6788B83F99BD7E6F0CF03C40AB7A5 /* SJCommonProgressSlider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJCommonProgressSlider.m; sourceTree = ""; }; - 270E391169EBC2E040B3BCFA01007370 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; - 274614174FF74BCDAA35C36358AAAA28 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; - 275A28647FDA8BC7AF0B790517E1B9C2 /* UISearchBar+AsyncLoad.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UISearchBar+AsyncLoad.h"; path = "SJUIKit/AsyncLoad/UISearchBar+AsyncLoad.h"; sourceTree = ""; }; - 286B00B8F38F983BE61523CDF9B30B9A /* MCSConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSConfiguration.m; path = SJMediaCacheServer/Core/Asset/MCSConfiguration.m; sourceTree = ""; }; - 29047C599E4AA11666D41888CF47C96B /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJVideoPlayerURLAsset+SJSubtitlesAdd.m"; path = "SJBaseVideoPlayer/Common/Implements/SJVideoPlayerURLAsset+SJSubtitlesAdd.m"; sourceTree = ""; }; - 29219778F980B4BF94048D0AA1352AFC /* HTTPMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPMessage.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPMessage.m; sourceTree = ""; }; - 2925CD50B5FE585633338A48D1CD9C21 /* SJReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJReachability.h; path = SJBaseVideoPlayer/Common/Implements/SJReachability.h; sourceTree = ""; }; - 2A3E5496C4E1C5DD3FEF845C4EA00BCC /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; - 2A47D8C15668541E49C219CE3BB89270 /* MCSURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSURL.m; path = SJMediaCacheServer/Core/Common/MCSURL.m; sourceTree = ""; }; - 2AC03F3A359105D0C74A628102A1C9E8 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; - 2AFDD564F0094A0BAF05DFB55F22A864 /* SJFloatSmallViewControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFloatSmallViewControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJFloatSmallViewControllerDefines.h; sourceTree = ""; }; - 2B350113431B328301E06AB8622AFA0B /* SJSQLiteColumnInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteColumnInfo.h; path = SJUIKit/SQLite3/Core/SJSQLiteColumnInfo.h; sourceTree = ""; }; - 2B97FBAC1A99BB00369CA4CD71CD075C /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; - 2B99E7040780085E8D21931D0394D1FC /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; - 2C14EA7A89E899FBA93DFD352CCD7BD5 /* MCSRootDirectory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSRootDirectory.h; path = SJMediaCacheServer/Core/Common/MCSRootDirectory.h; sourceTree = ""; }; - 2C8B9623F55D4F3E4ECDA78DCE63625C /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; - 2CA0D17A981E18F105B4F44721EAE8D0 /* SJSQLiteTableModelConstraints.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteTableModelConstraints.h; path = SJUIKit/SQLite3/Core/SJSQLiteTableModelConstraints.h; sourceTree = ""; }; - 2CC890EEBEEC7EBABCB7D424B6AFA176 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; + 277C1614B8154708179AA8D20ABBC538 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; + 27C7AFDE25DB16454F951BBBD8961204 /* UIImagePickerController+SJUIKitExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImagePickerController+SJUIKitExtension.m"; path = "SJUIKit/Photo/UIImagePickerController+SJUIKitExtension.m"; sourceTree = ""; }; + 28C18F749BE2BBC3ACD38A50E3C2ADCB /* SJMediaPlaybackController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJMediaPlaybackController.m; path = SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.m; sourceTree = ""; }; + 28E4B77DEE6ECFE4714A139E0F66F273 /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m"; path = "SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m"; sourceTree = ""; }; + 290D94F2FBA839C64BA358D54F83BE83 /* SJVideoPlayerPlayStatusDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerPlayStatusDefines.h; path = SJBaseVideoPlayer/Common/Const/SJVideoPlayerPlayStatusDefines.h; sourceTree = ""; }; + 2910A43B51CC86047BC9294FF20272D2 /* SJFitOnScreenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFitOnScreenManager.h; path = SJBaseVideoPlayer/Common/Implements/SJFitOnScreenManager.h; sourceTree = ""; }; + 296856407CE92708C88C7889484D05D7 /* SJPlaybackHistoryControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackHistoryControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJPlaybackHistoryControllerDefines.h; sourceTree = ""; }; + 29FCEB5ADA7D9ED95703798455492C6D /* UIColor+SJPageMenuBarExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SJPageMenuBarExtended.m"; path = "SJUIKit/PageViewController/Core/UIColor+SJPageMenuBarExtended.m"; sourceTree = ""; }; + 2A19DB112C32063877E5B3397058A78C /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; + 2AE78A76B99BA45A8DC4CDE08B13C844 /* SJPlayerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlayerView.m; path = SJBaseVideoPlayer/Common/Implements/SJPlayerView.m; sourceTree = ""; }; + 2B94D677625D5F5775D57AA3BD92C664 /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; + 2C8C9E593BD3BB4CA920EBD0BCB25ED2 /* HLSAssetReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetReader.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetReader.h; sourceTree = ""; }; 2D21A7C30AB67CCF1160AA23A2A10ADB /* SJEdgeControlButtonItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJEdgeControlButtonItem.h; sourceTree = ""; }; - 2D4B3116B97A0CA72775221FF48D017A /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; - 2E41F39113856F732378D5FEFC180143 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; - 2E5EE376B231CB1583254A9EE0B298B5 /* SJSQLite3+QueryExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJSQLite3+QueryExtended.m"; path = "SJUIKit/SQLite3/SJSQLite3+QueryExtended.m"; sourceTree = ""; }; - 2E993A0B11A18E6202B2FE45BD6AF329 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; - 2EA1782BC13299207C54F063F2DEE102 /* SJFloatSmallViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFloatSmallViewController.h; path = SJBaseVideoPlayer/Common/Implements/SJFloatSmallViewController.h; sourceTree = ""; }; - 2ED87ACDD95338C5536463E5B428F782 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; - 2FA3FD0732C214457D70D760E0EEEF96 /* SJAVMediaPlayerLayerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVMediaPlayerLayerView.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLayerView.h; sourceTree = ""; }; - 30543B3AC628D48A00E49E7164F7A78D /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; - 30AC790BC9CCC7F08D364202B380BFD9 /* SJVideoPlayerPlaybackControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerPlaybackControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPlaybackControllerDefines.h; sourceTree = ""; }; + 2D7174109E1CBB5CA93F6C71234622ED /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; + 2D82ED673446533ADC9EF8875C2AA32A /* SJPromptingPopupControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPromptingPopupControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJPromptingPopupControllerDefines.h; sourceTree = ""; }; + 2DA84214B85B36B936A74F8287873DB7 /* SJSQLite3+RemoveExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJSQLite3+RemoveExtended.m"; path = "SJUIKit/SQLite3/SJSQLite3+RemoveExtended.m"; sourceTree = ""; }; + 2E8582F6624C07B0A6CB1D5E2D9ED5E5 /* SJBaseVideoPlayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJBaseVideoPlayer.debug.xcconfig; sourceTree = ""; }; + 2EC48C6AB645AF18A39092BDAD20F683 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; + 2F87289E69F097C295E27EB3AE25C9F2 /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; + 2FB158D8A0DD065B6ECA106AF66D5013 /* Pods-iPadDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-iPadDemo-dummy.m"; sourceTree = ""; }; + 30BBE9C6A34AA927FEC8A0CAE08F28A8 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; + 30FAD863C0D41599EAB5B2EE01B4E54A /* HTTPServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPServer.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPServer.h; sourceTree = ""; }; 3113FA59340C0F63F2A7CEC7EDDCCB15 /* SJClipsBackButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsBackButton.h; sourceTree = ""; }; - 31B536733AE5C23D1CCE6A214A391079 /* SJReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJReachability.m; path = SJBaseVideoPlayer/Common/Implements/SJReachability.m; sourceTree = ""; }; - 32427D9180628EE0ABA520ADD2EEF27E /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; - 32F8925415F5CA27384EB12021384B32 /* SJSubtitlesPromptControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSubtitlesPromptControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJSubtitlesPromptControllerDefines.h; sourceTree = ""; }; + 313EE882A1E43B9BDEBA93E2F09979CA /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; + 31BFBB8CE1105BAA4AB398A8EE0896B1 /* SJUTRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTRecorder.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTRecorder.m; sourceTree = ""; }; + 32B32D2AF64F83FCBB50619E1498D599 /* SJPlayerAutoplayConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlayerAutoplayConfig.m; path = SJBaseVideoPlayer/Common/Implements/SJPlayerAutoplayConfig.m; sourceTree = ""; }; 330085ECE299AAA0D6D06A5A2C89A17D /* SJCommonProgressSlider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJCommonProgressSlider.h; sourceTree = ""; }; - 335DD33F58FD5C7A543B21CC56D6035B /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; - 3379B70F642E3A1BB128EAA6553FDFD6 /* SJPlayerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlayerView.m; path = SJBaseVideoPlayer/Common/Implements/SJPlayerView.m; sourceTree = ""; }; - 3411F81777FF74984A109E5EEF10C857 /* NSString+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/Foundation/NSString+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; - 3452691E390DC84D8B0BA661CBF5A8A9 /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; - 34D401B538A33E8C6CDD3CC87F01E5A6 /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; - 34FBF2995D86EDCF5AD0A4B2823D249E /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; - 35377A6E2DB38AFF58EBB8402C41E15E /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; - 356175F598EA47D1804B4F9E897AD93E /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; - 361A5B72D7F97E5631E4315E95787BF8 /* SJAsyncLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAsyncLoader.m; path = SJUIKit/AsyncLoad/SJAsyncLoader.m; sourceTree = ""; }; + 33DA61999313283B127B41CCCAA46FE6 /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; + 341B859CCB0F7D935F2C84F180C79BF5 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + 34CB1FC5BBA3A0AABA5839077E48CC79 /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; + 34F03DC35A1C35B7F58FE24EFB40774C /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + 3538059A8200384BB83FC0FDD67048B8 /* SJSQLite3+TableExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJSQLite3+TableExtended.m"; path = "SJUIKit/SQLite3/SJSQLite3+TableExtended.m"; sourceTree = ""; }; + 354B796824FBBC76505371660F62E817 /* MCSResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSResponse.m; path = SJMediaCacheServer/Core/ProxyServer/MCSResponse.m; sourceTree = ""; }; + 359320249B549DFE6467EF972480C385 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; + 35C040AF3F545E1F665BDB155444C9C6 /* MCSLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSLogger.h; path = SJMediaCacheServer/Core/Common/MCSLogger.h; sourceTree = ""; }; + 35D0180BFCCCCE590CAAA62DAED9C4D3 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; + 35E4E2ECF6DB946FF46E85767E4F9C68 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; 36402D1ACDE5AE5F02AEBE64E4E535F0 /* UIView+SJAnimationAdded.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIView+SJAnimationAdded.m"; sourceTree = ""; }; - 3641097E8A78FCE467574CE6A017FDF3 /* MCSDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSDefines.h; path = SJMediaCacheServer/Core/Common/MCSDefines.h; sourceTree = ""; }; - 367CCF62D97AE14378B92126C56326F4 /* SJVideoPlayerControlLayerProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerControlLayerProtocol.h; path = SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerControlLayerProtocol.h; sourceTree = ""; }; - 3697B28CE578065D0DB2C1E0DEFCEBE5 /* MCSProxyServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSProxyServer.h; path = SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.h; sourceTree = ""; }; - 369DCD12354EB8D32B2861F19DA188FF /* SJQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJQueue.h; path = SJUIKit/Queues/SJQueue.h; sourceTree = ""; }; - 36B60032FE481D958AEC32B9FD388D83 /* SJSQLite3TableClassCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3TableClassCache.m; path = SJUIKit/SQLite3/Core/SJSQLite3TableClassCache.m; sourceTree = ""; }; - 36FF553E46882A25530C24DB23C09A63 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; - 375CE25BBD97BE0E0C61426F50C57CEE /* SJSQLite3+QueryExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+QueryExtended.h"; path = "SJUIKit/SQLite3/SJSQLite3+QueryExtended.h"; sourceTree = ""; }; - 385E844801B8350C0862C8E2A69BFE25 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; - 3A1530A79C3796D1C6F9262DB3BC64C5 /* YYModel.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYModel.debug.xcconfig; sourceTree = ""; }; - 3ACA912397A3894221BD9F4832E6E5E3 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; + 3677CA14658AFA64E1415C7C38E328FA /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; + 3685F52A1B2C41038B513EA64C9187A3 /* SJRouteObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouteObject.h; path = SJRouter/Core/SJRouteObject.h; sourceTree = ""; }; + 3785966BE51938C7714CEBE7559068D7 /* MCSAssetContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetContent.m; path = SJMediaCacheServer/Core/Asset/MCSAssetContent.m; sourceTree = ""; }; + 379DC841CE13FE6ACDDE103B1D8CE63B /* HLSAssetDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetDefines.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetDefines.h; sourceTree = ""; }; + 3843893BC6D1BEAB54272577EC9696E9 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; + 3856D75AF7E3EFAD0D54DF40E770C77B /* SJMakeView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJMakeView.m; path = SJUIKit/UIMaker/Core/SJMakeView.m; sourceTree = ""; }; + 3859BDA6262AEAAA60E3A3B0F19B9DD5 /* UIViewController+SJPageViewControllerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+SJPageViewControllerExtended.m"; path = "SJUIKit/PageViewController/Core/UIViewController+SJPageViewControllerExtended.m"; sourceTree = ""; }; + 38758E6210782BCDACC725D7F4B77776 /* MCSProxyTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSProxyTask.h; path = SJMediaCacheServer/Core/ProxyServer/MCSProxyTask.h; sourceTree = ""; }; + 391AA8E15BF23F82709F524F3FBE66ED /* SJTimerControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJTimerControl.h; path = SJBaseVideoPlayer/Common/Utils/SJTimerControl.h; sourceTree = ""; }; + 39F3F4AD37B6D581B9481BDBD52D2F1D /* SJPlayModel+SJPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJPlayModel+SJPrivate.h"; path = "SJBaseVideoPlayer/Common/Implements/SJPlayModel+SJPrivate.h"; sourceTree = ""; }; + 3A953BB5BCF6FF74C1210A20D89F9CF4 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; 3AEF2C9E0B79C0E6E06156DF579C280E /* SJVideoPlayerURLAsset+SJExtendedDefinition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJVideoPlayerURLAsset+SJExtendedDefinition.h"; sourceTree = ""; }; - 3B442CF56552CA00A0406BB58C7895DF /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; - 3B6104EC9A6F4C98EA3BAEEC28EAB151 /* SJVideoDefinitionSwitchingInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoDefinitionSwitchingInfo.m; path = SJBaseVideoPlayer/Common/Implements/SJVideoDefinitionSwitchingInfo.m; sourceTree = ""; }; - 3BA1B86C3F08F4E0CDB4C4B4F1A1F89F /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; - 3BC96F8795104F9AABB6893EBCE26CCC /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; - 3BE6245A7CEF0A0621AE4E12648D9B74 /* HLSPrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSPrefetcher.h; path = SJMediaCacheServer/Core/Prefetch/HLSPrefetcher.h; sourceTree = ""; }; + 3BA75F6111352F2EF77F4DB1521E8B67 /* Pods-iPadDemo */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "Pods-iPadDemo"; path = "libPods-iPadDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 3C1B227E76AC083FB6F8CAADE5462003 /* SJEdgeControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJEdgeControlLayer.m; sourceTree = ""; }; 3C2804A441641BF6CE4F8A86D8B096F0 /* SJClipsSaveResultToAlbumHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsSaveResultToAlbumHandler.m; sourceTree = ""; }; - 3C6DF3A60ACBAD897174E8E18D9807FC /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; - 3C6E8E794AAC215DD09FEA70ACB88F19 /* FILEPrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FILEPrefetcher.h; path = SJMediaCacheServer/Core/Prefetch/FILEPrefetcher.h; sourceTree = ""; }; - 3CA6BCAA5FE4BCC1F6CE9C6AB4E01C3B /* NSDate+SJAdded.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDate+SJAdded.h"; path = "SJUIKit/Date/NSDate+SJAdded.h"; sourceTree = ""; }; - 3CBE449F5B0773D2B6B88962793BD651 /* MultipartFormDataParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MultipartFormDataParser.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartFormDataParser.m; sourceTree = ""; }; - 3CCD09A2C32E295659A3875670E65EBD /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; - 3D60D4A6B54F473D3D1920A0024B3F14 /* SJAVMediaPlayerLayerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVMediaPlayerLayerView.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLayerView.m; sourceTree = ""; }; - 3DE3236CA4EDB6B82FF8B3252B27C133 /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; - 3E7084C3CF72AD5C0E7D9ACD3E672508 /* SJImagePickerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJImagePickerController.h; path = SJUIKit/Photo/SJImagePickerController.h; sourceTree = ""; }; - 3EEEFACF4DBE0026A9F06FC4F8C3FAA0 /* HTTPErrorResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPErrorResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPErrorResponse.h; sourceTree = ""; }; - 3F92D809EB47FA6E52DD57A1C67497D4 /* YYClassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YYClassInfo.h; path = YYModel/YYClassInfo.h; sourceTree = ""; }; + 3C3C3E232AAD1CB1EE1E85D50614B54A /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; + 3C586C773E6AFE5B333737FA964AFF9B /* SJUIKit-98d45660.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "SJUIKit-98d45660.release.xcconfig"; path = "../SJUIKit-98d45660/SJUIKit-98d45660.release.xcconfig"; sourceTree = ""; }; + 3D1349F43E096A75765D9E1683F5E4E9 /* SJPlaybackRecordSaveHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackRecordSaveHandler.h; path = SJBaseVideoPlayer/SJPlaybackRecordSaveHandler.h; sourceTree = ""; }; + 3D527855525B48B3578DA8D2967620E9 /* SJVideoPlayerURLAsset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerURLAsset.h; path = SJBaseVideoPlayer/Common/Implements/SJVideoPlayerURLAsset.h; sourceTree = ""; }; + 3DA83B0F4B2B1443BBA2EC097A678CF5 /* SJVideoPlayerRegistrar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerRegistrar.h; path = SJBaseVideoPlayer/Common/Utils/SJVideoPlayerRegistrar.h; sourceTree = ""; }; + 3DC54BD695F27C644AA35EB61EABEA98 /* MCSConsts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSConsts.h; path = SJMediaCacheServer/Core/Common/MCSConsts.h; sourceTree = ""; }; + 3E563A9E576EE97BDC7563CE78136B41 /* SJBaseCollectionViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseCollectionViewCell.m; path = SJUIKit/Base/SJBaseCollectionViewCell.m; sourceTree = ""; }; + 3E8090AEB6809FB636A7C87126A90225 /* MCSAssetContentReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetContentReader.h; path = SJMediaCacheServer/Core/Asset/MCSAssetContentReader.h; sourceTree = ""; }; + 3F15576331C614C17D74760D1E2D9241 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + 3F9DF7C80596BCC67B303442CEC24862 /* SJPresentationQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPresentationQueue.h; path = SJUIKit/Queues/SJPresentationQueue.h; sourceTree = ""; }; 3FE4E95023B7291C8551D3EB60D6E99E /* SJClipsVideoRecordsControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsVideoRecordsControlLayer.h; sourceTree = ""; }; - 4005EE343940833790D50A2EFE5A32C6 /* SJPromptDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPromptDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJPromptDefines.h; sourceTree = ""; }; 4007443FF668DEC10590A3C299A6B003 /* SJEdgeControlButtonItemAdapterLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJEdgeControlButtonItemAdapterLayout.m; sourceTree = ""; }; 4024459B3153A8CA0FE7D072F17F486F /* SJSpeedupPlaybackPopupViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJSpeedupPlaybackPopupViewDefines.h; sourceTree = ""; }; - 403F827743567CFD3F1A6D8FECEC9118 /* HLSAssetParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetParser.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetParser.h; sourceTree = ""; }; - 40F143EDDDA79A6948C71D4A51EB0FBD /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; - 4187CA309920190BCFE967BC4FEE7690 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; - 41D7B71FF250EC03901FFED103732ABE /* SJTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJTaskQueue.m; path = SJUIKit/Queues/SJTaskQueue.m; sourceTree = ""; }; - 420C4B37A147BBEDC399E5D8A39B6946 /* SJRotationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRotationManager.h; path = SJBaseVideoPlayer/Common/Implements/SJRotationManager.h; sourceTree = ""; }; - 423A23C008456522CE96850DC6D9147C /* AVAsset+SJAVMediaExport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "AVAsset+SJAVMediaExport.m"; path = "SJBaseVideoPlayer/AVPlayer/Core/AVAsset+SJAVMediaExport.m"; sourceTree = ""; }; - 42EAE425238193AE6EC5215836C41F35 /* SJPrompt.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPrompt.m; path = SJBaseVideoPlayer/Common/Implements/SJPrompt.m; sourceTree = ""; }; - 43B2754699DE7E14F2D2E781DC17197C /* HLSAssetTsContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetTsContent.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetTsContent.h; sourceTree = ""; }; - 446EEA38EACED61AE17EA0A98522BA31 /* SJUTAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTAttributes.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTAttributes.h; sourceTree = ""; }; - 4561D0BCC7AF543BE2D7932646F1760B /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; + 402BA9A1F307AC921A111BBB879D12E8 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; + 403BD2D5226086BD074D17B0E029F4D7 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; + 40660CEB9E983CC24BD8D018F5F68718 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; + 40E452CBE760761F2153C50DC4B5A830 /* HTTPErrorResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPErrorResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPErrorResponse.m; sourceTree = ""; }; + 415A9E8FD8AC83E2FF048A1C24A69228 /* MCSAssetContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetContent.h; path = SJMediaCacheServer/Core/Asset/MCSAssetContent.h; sourceTree = ""; }; + 41C2B7E9415E8ACE00CB90E1DBDD9D44 /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; + 41EB9DC955AEBF33E11DFAAF8C066853 /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; + 4266F54BACFB5E01B2F92CD5464B3E55 /* MCSAssetUsageLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetUsageLog.m; path = SJMediaCacheServer/Core/Asset/MCSAssetUsageLog.m; sourceTree = ""; }; + 42CF1AB1E9A3660981662A104EDB284B /* UIButton+AsyncLoadImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AsyncLoadImage.m"; path = "SJUIKit/AsyncLoad/UIButton+AsyncLoadImage.m"; sourceTree = ""; }; + 43B74B770C3C490BA38CD4D430B481EC /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; + 443493FA654ACC465DAEFEF6781DDD76 /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; + 444FCB3EA5A297335E3DA8FB4111301B /* SJSQLite3+FoundationExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJSQLite3+FoundationExtended.m"; path = "SJUIKit/SQLite3/SJSQLite3+FoundationExtended.m"; sourceTree = ""; }; + 447597136D3DB286C03B8BD9AACB8DD5 /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; + 449FA6E85959AEB0E64362202C0D0A97 /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; + 44A87E204D2D151FB3DEB6D0B822E09A /* MCSAssetCacheManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetCacheManager.m; path = SJMediaCacheServer/Core/Cache/MCSAssetCacheManager.m; sourceTree = ""; }; + 450CBE0EA2ABADA7ABFB0EFCAF1E9AC3 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; 4565924477651BCEE1243CDC8CE7F238 /* SJVideoPlayerLocalizedStringKeys.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJVideoPlayerLocalizedStringKeys.h; sourceTree = ""; }; - 459CD217F76029EEFE9337CE1AF68274 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; - 45F6A58D6A2A84E02F799E908AEB6457 /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; - 46116736D8C9A45F0FC9B7AC4F4CA2CA /* MCSAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetManager.h; path = SJMediaCacheServer/Core/Asset/MCSAssetManager.h; sourceTree = ""; }; - 4622F5B096DAC6516A5285DBD2089482 /* HTTPServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPServer.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPServer.h; sourceTree = ""; }; - 465162822C09DF37A53EC3FCF96AD13E /* MCSRootDirectory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSRootDirectory.m; path = SJMediaCacheServer/Core/Common/MCSRootDirectory.m; sourceTree = ""; }; + 46302D079C103B22321A9B74F9C6B476 /* SJPlaybackListControllerInterfaces.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackListControllerInterfaces.h; path = SJUIKit/PlaybackListController/SJPlaybackListControllerInterfaces.h; sourceTree = ""; }; 46C824C75366318E5288BBF888AD5FB2 /* SJVideoPlayerClipsParameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJVideoPlayerClipsParameters.h; sourceTree = ""; }; - 470956E98CEF45711C4689E7FDA72D1E /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; - 474BC59CA485D7DFC8B9D56CD7683C60 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; - 47610E332009B7B179162A9184BA8DA5 /* HTTPFileResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPFileResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPFileResponse.m; sourceTree = ""; }; - 476EEDA6A28322B59914AB9F5B678003 /* SJBaseVideoPlayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJBaseVideoPlayer.debug.xcconfig; sourceTree = ""; }; - 47788FFD89498C90A203AA80D9942DCA /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; + 46E2A075386116A79775340724640A98 /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; + 471E985621AA5AED3EDB4335D8401789 /* HTTPDataResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPDataResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPDataResponse.m; sourceTree = ""; }; + 4796885DB1E60E1D77D7A6A07D1E8ED5 /* SJUIKitTextMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUIKitTextMaker.m; path = SJUIKit/AttributesFactory/UIKitText/SJUIKitTextMaker.m; sourceTree = ""; }; + 47DAFC93E68FEC751F9154BBC1FA4EC4 /* SJUTRangeHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTRangeHandler.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTRangeHandler.h; sourceTree = ""; }; + 48023A24530BF8027883A6E3A4E093E7 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; 482568E694A91364C440FD44CDBF6881 /* SJVideoPlayer.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = SJVideoPlayer.bundle; path = SJVideoPlayer/ResourceLoader/SJVideoPlayer.bundle; sourceTree = ""; }; - 4874D2F3F2914BB13AD2E72DC8257457 /* CocoaAsyncSocket.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CocoaAsyncSocket.debug.xcconfig; sourceTree = ""; }; - 4885EF421AD6AE00BF0E6CF9260BC937 /* SJBaseVideoPlayer+TestLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJBaseVideoPlayer+TestLog.h"; path = "SJBaseVideoPlayer/SJBaseVideoPlayer+TestLog.h"; sourceTree = ""; }; - 493E7E2162EC86B88A694B51FA7F6F6F /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; - 4942CD1FD5E67D8CB9B4DA79686F5871 /* MCSError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSError.m; path = SJMediaCacheServer/Core/Common/MCSError.m; sourceTree = ""; }; - 4947858B07C21E6711BF11360156ED38 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; - 49BC510ABA659B2C0556CEA638342088 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; - 49C1C82972DC2857F7182E6B7A758B5E /* SJImagePickerController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJImagePickerController.m; path = SJUIKit/Photo/SJImagePickerController.m; sourceTree = ""; }; - 49D7F9648A76EE8E51E553D2ECAE72BB /* UIViewController+SJRotationPrivate_FixSafeArea.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+SJRotationPrivate_FixSafeArea.h"; path = "SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h"; sourceTree = ""; }; - 49FD48FC263AA7E99A5A64D1A673383D /* UIScrollView+SJPageViewControllerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+SJPageViewControllerExtended.m"; path = "SJUIKit/PageViewController/Core/UIScrollView+SJPageViewControllerExtended.m"; sourceTree = ""; }; - 4AABD1076218AB091BBD62C7D05383F9 /* SJSQLite3ColumnOrder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3ColumnOrder.h; path = SJUIKit/SQLite3/Core/SJSQLite3ColumnOrder.h; sourceTree = ""; }; - 4ACEEA16E132EA825423312DBAD12157 /* SJPageMenuItemView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageMenuItemView.m; path = SJUIKit/PageViewController/Core/SJPageMenuItemView.m; sourceTree = ""; }; - 4B892520AAEF44618600BBE5EFE690CE /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; + 48C0C915B94C0EDF26EE664009B2393E /* SJVideoDefinitionSwitchingInfo+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJVideoDefinitionSwitchingInfo+Private.h"; path = "SJBaseVideoPlayer/Common/Implements/SJVideoDefinitionSwitchingInfo+Private.h"; sourceTree = ""; }; + 48E513E7F2BE692C01EB51E97B4BE445 /* FILEAssetReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FILEAssetReader.h; path = SJMediaCacheServer/Core/Asset/FILE/FILEAssetReader.h; sourceTree = ""; }; + 49340CE8860FD9B78D544420A5D1DE66 /* HLSAssetTsContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetTsContent.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetTsContent.m; sourceTree = ""; }; + 49C110A917127C0F02A789C6FD9CBAB8 /* SJRouter-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJRouter-prefix.pch"; sourceTree = ""; }; + 49CF46C8BE0AA026868A0F7CE111B532 /* SJPageMenuBarScrollIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageMenuBarScrollIndicator.m; path = SJUIKit/PageViewController/Core/SJPageMenuBarScrollIndicator.m; sourceTree = ""; }; + 49F7B799B47978C788EF418FE35349DE /* AVAsset+SJAVMediaExport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "AVAsset+SJAVMediaExport.m"; path = "SJBaseVideoPlayer/AVPlayer/Core/AVAsset+SJAVMediaExport.m"; sourceTree = ""; }; + 4A8E8B57C107273BB2F5EEDA076DBBBA /* HTTPAsyncFileResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPAsyncFileResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPAsyncFileResponse.h; sourceTree = ""; }; + 4AE714B65BC6D2DE9D3F9B2639A35636 /* YYClassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YYClassInfo.h; path = YYModel/YYClassInfo.h; sourceTree = ""; }; + 4AE75211A37FC02A9F37F4C983D26DA8 /* HLSAsset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAsset.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAsset.h; sourceTree = ""; }; + 4AF8CA819E92155BD87EA9FCEC08BE12 /* YYModel.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYModel.debug.xcconfig; sourceTree = ""; }; + 4B67E645578690F575DA9BC92EC0E8CA /* HLSAssetContentProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetContentProvider.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetContentProvider.h; sourceTree = ""; }; + 4B816F130915F94AE33C8619C8ECBAF4 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; 4BD15C29EEAF6A3BBDCA415CF4C2F24F /* SJClipsResultShareItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsResultShareItem.h; sourceTree = ""; }; - 4C27FD0CE8B6E418D931480BD4496B24 /* SJAVMediaPlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVMediaPlayer.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayer.m; sourceTree = ""; }; - 4C575EDB0772D3D444A0A0383572E911 /* HTTPLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPLogging.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPLogging.m; sourceTree = ""; }; - 4C78C12B413A5A0F66A00F8371029E3C /* Pods-SJVideoPlayer_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SJVideoPlayer_Example-resources.sh"; sourceTree = ""; }; - 4C8B4E10F602762593A417B7A4B00C70 /* SJSQLite3Condition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3Condition.h; path = SJUIKit/SQLite3/Core/SJSQLite3Condition.h; sourceTree = ""; }; - 4CB17780062FA736988A65845A007BC5 /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; - 4CEDAEFE4D0039DF4E1DCACAB36F0829 /* SJPlaybackListController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackListController.h; path = SJUIKit/PlaybackListController/SJPlaybackListController.h; sourceTree = ""; }; - 4D3CB7690E496179FD04036479419436 /* SJBaseVideoPlayerConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseVideoPlayerConst.h; path = SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.h; sourceTree = ""; }; - 4DF4680805E85AABD2A4EC9290BE686D /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; - 4E22162319F459550401D0118E0C6867 /* UIImagePickerController+SJUIKitExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImagePickerController+SJUIKitExtension.m"; path = "SJUIKit/Photo/UIImagePickerController+SJUIKitExtension.m"; sourceTree = ""; }; - 4E819170D2AAF17FD2EA484E41AC969F /* HTTPErrorResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPErrorResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPErrorResponse.m; sourceTree = ""; }; - 4E9D6D0CF10962604C27777756BF59B9 /* HTTPDynamicFileResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPDynamicFileResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPDynamicFileResponse.h; sourceTree = ""; }; + 4C1FC0CA3B0EB1756B541166C9D50BF8 /* SJSQLiteErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteErrors.m; path = SJUIKit/SQLite3/Core/SJSQLiteErrors.m; sourceTree = ""; }; + 4C691F4F13F40F7AE547823BD0C808A3 /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; + 4E02896548BB33036A2C56C996E1A38B /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; + 4E02B34FD5927F4E4F3B80AB1DA28619 /* SJPlaybackRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackRecord.m; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackRecord.m; sourceTree = ""; }; + 4E637714353961898B3BAD4FD0A89DCD /* UIScrollView+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/UIKit/UIScrollView+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; + 4E960FE57F50B36C8BE6AD07476CCB96 /* SJResidentThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJResidentThread.h; path = SJUIKit/Thread/SJResidentThread.h; sourceTree = ""; }; + 4EDF1DD8A9F2FA8A4FD4BC6CC3B3F0FF /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; 4EF94BE8847E1BFA6816D62BFABAFFB8 /* SJFullscreenModeStatusBar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJFullscreenModeStatusBar.h; sourceTree = ""; }; - 4FB040FE130EA6CDF546D9CA3C96062E /* SJPromptPopupControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPromptPopupControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJPromptPopupControllerDefines.h; sourceTree = ""; }; - 503B0CD0C670D93F70E62237DC1A0019 /* UITextField+AsyncLoadImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+AsyncLoadImage.h"; path = "SJUIKit/AsyncLoad/UITextField+AsyncLoadImage.h"; sourceTree = ""; }; + 4F0F72503D5D7295EF07DD04F0E1623C /* SJBaseVideoPlayerConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseVideoPlayerConst.h; path = SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.h; sourceTree = ""; }; + 4F82EE2E829B175F325855834CC26716 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; + 4FE52265BA55D4E9D075D4283E5E47A2 /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; + 4FE845842EA054B1DBF9BC6EDE7C5DA1 /* UIButton+AsyncLoadImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AsyncLoadImage.h"; path = "SJUIKit/AsyncLoad/UIButton+AsyncLoadImage.h"; sourceTree = ""; }; + 500F01094FC2E0BAF1344ABBDF5F55A9 /* SJWatermarkViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJWatermarkViewDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJWatermarkViewDefines.h; sourceTree = ""; }; + 50346FD6E843B9C0DCD0D8DE6438C4DA /* SJDanmakuPopupController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJDanmakuPopupController.h; path = SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.h; sourceTree = ""; }; + 50523936CC75A8879998453482EA9A1D /* SJImagePickerController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJImagePickerController.m; path = SJUIKit/Photo/SJImagePickerController.m; sourceTree = ""; }; + 507EEE2973E319418023A9CF7FF1EF1D /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; + 50993BB750429201BEF5DBA775183F82 /* SJAttributesRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAttributesRecorder.m; path = SJUIKit/AttributesFactory/Deprecated/SJAttributesRecorder.m; sourceTree = ""; }; 50A392908D9665C74181E7753861E65D /* SJVideoPlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayer.h; path = SJVideoPlayer/SJVideoPlayer.h; sourceTree = ""; }; 50B3AE830FC3103F0F2C808E22973EC8 /* SJEdgeControlButtonItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJEdgeControlButtonItem.m; sourceTree = ""; }; - 50FED1D354E634327716E8954642DF13 /* MCSLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSLogger.m; path = SJMediaCacheServer/Core/Common/MCSLogger.m; sourceTree = ""; }; - 512928C8EAC7D1F7B0F7C0573664A679 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; - 5131059FAAE8EB82E40456DFE2409E3A /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; - 51847EF8EFE0177B262EE41E1508864D /* SJBaseVideoPlayer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJBaseVideoPlayer-prefix.pch"; sourceTree = ""; }; - 518B4D911AA28E209C96CAA19D3B62B8 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; + 511AB39E46E0D51D48930E6880FBD260 /* SJAVMediaPlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVMediaPlayer.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayer.m; sourceTree = ""; }; 518E513655E9DA0B74F4F946DDB00628 /* SJScrollingTextMarqueeViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJScrollingTextMarqueeViewDefines.h; sourceTree = ""; }; - 51AF23CB92C8BB88C0B20DB5A47901DE /* libSJBaseVideoPlayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSJBaseVideoPlayer.a; path = libSJBaseVideoPlayer.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 5206C6A43FF7BA85292C903B820D8B02 /* AVAsset+SJAVMediaExport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "AVAsset+SJAVMediaExport.h"; path = "SJBaseVideoPlayer/AVPlayer/Core/AVAsset+SJAVMediaExport.h"; sourceTree = ""; }; + 51AF23CB92C8BB88C0B20DB5A47901DE /* SJBaseVideoPlayer */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SJBaseVideoPlayer; path = libSJBaseVideoPlayer.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 51B8525840B132EB1861D6065EA21D2F /* SJBaseVideoPlayerResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseVideoPlayerResourceLoader.m; path = SJBaseVideoPlayer/ResourceLoader/SJBaseVideoPlayerResourceLoader.m; sourceTree = ""; }; + 521C4478730C8E456ECD8C8532D62E2E /* SJRouter-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJRouter-dummy.m"; sourceTree = ""; }; 527E3BC497A270E892D39802BEC992D5 /* SJMoreSettingControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJMoreSettingControlLayer.m; sourceTree = ""; }; - 52A0A5C0220AFFABAC2E738A86F11F40 /* SJAttributeWorker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAttributeWorker.h; path = SJUIKit/AttributesFactory/Deprecated/SJAttributeWorker.h; sourceTree = ""; }; - 52A98E5128993AA3DF10963CD124C979 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; - 53028853810282EED89D452B24CC3BB7 /* FILEAssetReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FILEAssetReader.h; path = SJMediaCacheServer/Core/Asset/FILE/FILEAssetReader.h; sourceTree = ""; }; - 5415FF86CEBD575DD571E29C23B94D62 /* SJFitOnScreenManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFitOnScreenManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJFitOnScreenManagerDefines.h; sourceTree = ""; }; - 54B959DBEBA1368FC9A0CB77DE37E8EF /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; - 55064031BE0299A3D86B98F38E325BB0 /* UIView+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/UIKit/UIView+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; - 5549FC7B6502A30760FC103CDB5910EF /* SJPageMenuItemViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuItemViewDefines.h; path = SJUIKit/PageViewController/Core/SJPageMenuItemViewDefines.h; sourceTree = ""; }; - 556C50F8F7E41D374219C4BB72C7ED1B /* HTTPConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPConnection.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPConnection.h; sourceTree = ""; }; - 55BA50143EB3AD43978067F96B0DE5F9 /* SJSQLite3Logger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3Logger.h; path = SJUIKit/SQLite3/Core/SJSQLite3Logger.h; sourceTree = ""; }; - 55DA3778AB82C39EAAF9FA60FC1D02B6 /* SJPlaybackListControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackListControllerDefines.h; path = SJUIKit/PlaybackListController/SJPlaybackListControllerDefines.h; sourceTree = ""; }; + 530AD6DC9DE0E33FCA28DFA7161565BF /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; + 538B83846E4517F5455801BEABAF5144 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; + 54AEC2BD8581B4B1726BCBC2797E5219 /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; + 54B636245206B9C63808DA52DDB60094 /* SJPictureInPictureControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPictureInPictureControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJPictureInPictureControllerDefines.h; sourceTree = ""; }; + 54CFCC649351D97C30019E93FD754AC3 /* SJBaseCollectionViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseCollectionViewCell.h; path = SJUIKit/Base/SJBaseCollectionViewCell.h; sourceTree = ""; }; + 553EFDB0696A9AC91301292B39A7D0F3 /* SJSubtitleItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSubtitleItem.m; path = SJBaseVideoPlayer/Common/Implements/SJSubtitleItem.m; sourceTree = ""; }; + 55DA5AD14DC8B1342DEF824CBB3F3A4E /* SJMediaPlaybackController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJMediaPlaybackController.h; path = SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.h; sourceTree = ""; }; 55EBE1E03E492BA56B07F6FCE1492D34 /* SJClipsVideoCountDownView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsVideoCountDownView.h; sourceTree = ""; }; - 56D6D448DDC127062BD711254710B4E4 /* HTTPResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPResponse.h; sourceTree = ""; }; - 57735687B8A6FBAFD141692D2E4268C0 /* MCSDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSDatabase.h; path = SJMediaCacheServer/Core/Common/MCSDatabase.h; sourceTree = ""; }; + 5646A8653C2CF2B835A0EF78E51CCBB0 /* SJBaseVideoPlayerConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseVideoPlayerConst.m; path = SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.m; sourceTree = ""; }; + 56A553A42EB112AB5D8F8BCAAB415AE8 /* HLSAssetContentReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetContentReader.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetContentReader.m; sourceTree = ""; }; + 56A60C66492F80542846683251BE37E9 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + 56AC2771F7D56E9C3BB8227B3F3503E5 /* Pods-SJVideoPlayer_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SJVideoPlayer_Example.release.xcconfig"; sourceTree = ""; }; + 575DE72F96583F8BB9C83888704F39DE /* UIImagePickerController+SJUIKitExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImagePickerController+SJUIKitExtension.h"; path = "SJUIKit/Photo/UIImagePickerController+SJUIKitExtension.h"; sourceTree = ""; }; + 576C90F420ED9959ADCA100227637DA2 /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; 57818C1BC83C0FB8D0EAB961BC4BEAC0 /* SJDraggingObservation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJDraggingObservation.m; sourceTree = ""; }; - 57C40C150B4054C45603084455C1F2ED /* SJRouteObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRouteObject.m; path = SJRouter/Core/SJRouteObject.m; sourceTree = ""; }; - 5819094964959B3103EF6857C62CB645 /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; - 581DACCEDA40C80BE18A869CABE3E011 /* SJPageViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageViewController.h; path = SJUIKit/PageViewController/SJPageViewController.h; sourceTree = ""; }; - 5842ACB28A7891860A033AC3B8EDAA83 /* libSJFullscreenPopGesture.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSJFullscreenPopGesture.a; path = libSJFullscreenPopGesture.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 58B7D63C51D6A80D9A196F0523329B84 /* SJAVMediaPlayerLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVMediaPlayerLoader.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLoader.m; sourceTree = ""; }; - 595607877C699E01610AD8F9260C072A /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; - 59702A9FC3DCE324C13A7690A2067472 /* MCSAssetContentReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetContentReader.m; path = SJMediaCacheServer/Core/Asset/MCSAssetContentReader.m; sourceTree = ""; }; - 5997D26B1A0CC2B051FD4AF1AF100BAD /* NSDate+SJAdded.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDate+SJAdded.m"; path = "SJUIKit/Date/NSDate+SJAdded.m"; sourceTree = ""; }; - 59E8A59D96FCEDD5B9BE6E1E38408F2C /* SJMakeView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJMakeView.h; path = SJUIKit/UIMaker/Core/SJMakeView.h; sourceTree = ""; }; - 5A976A641573157DE1578A20873686EF /* SJMediaCacheServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJMediaCacheServer-prefix.pch"; sourceTree = ""; }; - 5AEE607F27CB5D343FDAF9ECCC290E16 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; - 5B0B62E47996AAC595072E38311007EA /* SJUTRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTRecorder.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTRecorder.m; sourceTree = ""; }; - 5B7ADF6654441718146E3CEE442E73DA /* UIScrollView+SJPageViewControllerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+SJPageViewControllerExtended.h"; path = "SJUIKit/PageViewController/Core/UIScrollView+SJPageViewControllerExtended.h"; sourceTree = ""; }; - 5BB4BBF24468A1C878D7312C83E593BB /* MCSAssetExporterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetExporterManager.h; path = SJMediaCacheServer/Core/Export/MCSAssetExporterManager.h; sourceTree = ""; }; - 5BF21AF03F80E16A7092400E739075E0 /* SJPresentationQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPresentationQueue.h; path = SJUIKit/Queues/SJPresentationQueue.h; sourceTree = ""; }; - 5C466BD98DF99C6115D7708EB1E1D340 /* SJSQLite3TableInfoCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3TableInfoCache.h; path = SJUIKit/SQLite3/Core/SJSQLite3TableInfoCache.h; sourceTree = ""; }; - 5C6E2C9B0C938C8AFD934FED12E8926A /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; - 5C7ADB7B7D47617E21D17C4F9B722315 /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; + 5796B33E91A03E1152C4EB85D77B3C3C /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; + 583BA5CA5FEB8ACB149A238FD82704ED /* SJFitOnScreenManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFitOnScreenManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJFitOnScreenManagerDefines.h; sourceTree = ""; }; + 5842ACB28A7891860A033AC3B8EDAA83 /* SJFullscreenPopGesture */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SJFullscreenPopGesture; path = libSJFullscreenPopGesture.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 5863B4913058748C41512FF2E19108B5 /* SJUIKit-98d45660.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "SJUIKit-98d45660.debug.xcconfig"; path = "../SJUIKit-98d45660/SJUIKit-98d45660.debug.xcconfig"; sourceTree = ""; }; + 59EDAE654785A5F94F62AA5E64A31488 /* NSAttributedString+SJMake.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+SJMake.m"; path = "SJUIKit/AttributesFactory/NSAttributedString+SJMake.m"; sourceTree = ""; }; + 5B4111BDFA64E457569D7DCAB90A236B /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; + 5C187C3565C491B576506C452A89C37F /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; + 5C5B5C9ECCC7EEC5EDA3F73BAE659029 /* SJTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJTaskQueue.h; path = SJUIKit/Queues/SJTaskQueue.h; sourceTree = ""; }; + 5C7B5B2F9FBB694DA59C873C45DC5917 /* SJRouter.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJRouter.release.xcconfig; sourceTree = ""; }; + 5C9F232B6BBE209A9B893A3D3BD46C5F /* UISearchBar+AsyncLoad.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UISearchBar+AsyncLoad.h"; path = "SJUIKit/AsyncLoad/UISearchBar+AsyncLoad.h"; sourceTree = ""; }; + 5CCAF49B9D3A9671545221F31F8150FA /* UIImageView+AsyncLoadImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AsyncLoadImage.m"; path = "SJUIKit/AsyncLoad/UIImageView+AsyncLoadImage.m"; sourceTree = ""; }; 5CCCB55BD375EFB892DC6355384E6A06 /* SJClipsControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsControlLayer.m; sourceTree = ""; }; - 5DB7BECCC2E1CE23D187A071D3589D56 /* NSTimer+SJAssetAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTimer+SJAssetAdd.h"; path = "SJBaseVideoPlayer/Common/Foundation/NSTimer+SJAssetAdd.h"; sourceTree = ""; }; - 5E21D0B48F96771E7B8F8BA9BBC451E3 /* SJSQLiteTableModelProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteTableModelProtocol.h; path = SJUIKit/SQLite3/Protocol/SJSQLiteTableModelProtocol.h; sourceTree = ""; }; + 5D15B4CFB0AB94FEE46F1BDA8F8398CE /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; + 5D8EDEFACA433E15171B76538DD3D715 /* SJPlaybackObservation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackObservation.m; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackObservation.m; sourceTree = ""; }; + 5DAB68A0DBEF33E6E21ABD29BB8517A7 /* SJPromptingPopupController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPromptingPopupController.h; path = SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.h; sourceTree = ""; }; 5E31A37EE26260BA33445511C79D14D4 /* SJEdgeControlButtonItemAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJEdgeControlButtonItemAdapter.m; sourceTree = ""; }; + 5EB6FBA9CF225682334991586973DB9C /* MCSAssetDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetDefines.h; path = SJMediaCacheServer/Core/Asset/MCSAssetDefines.h; sourceTree = ""; }; 5EED3B219964945EDEFA0CD9F661035E /* SJEdgeControlButtonItemAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJEdgeControlButtonItemAdapter.h; sourceTree = ""; }; - 5F3CD15871B8E41796C038153FA4CC78 /* SJSQLite3+RemoveExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+RemoveExtended.h"; path = "SJUIKit/SQLite3/SJSQLite3+RemoveExtended.h"; sourceTree = ""; }; + 5EEFC2C6F41E4196D03B8BE3949AA4DE /* SJDeviceVolumeAndBrightnessManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJDeviceVolumeAndBrightnessManager.m; path = SJBaseVideoPlayer/Common/Implements/SJDeviceVolumeAndBrightnessManager.m; sourceTree = ""; }; 5F4C95B603CF7091192F53C30A7E6912 /* SJEdgeControlLayerAdapters.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJEdgeControlLayerAdapters.m; sourceTree = ""; }; - 5FA568F50DD461EE70052F114C48C2C8 /* DDData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDData.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDData.m; sourceTree = ""; }; - 5FD20B07A302E845938F958948493019 /* YYClassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YYClassInfo.m; path = YYModel/YYClassInfo.m; sourceTree = ""; }; - 5FD2EB9A1D919E68C0C1B0FCBDCD3009 /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; - 60F8C08E919561DBBDDE91381293AD2D /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; - 611C324442ABE3D0A8A1510E6F0B1A4A /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; - 618A5798F2C9A9E9A2975C55B0B141A6 /* MCSReadwrite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSReadwrite.m; path = SJMediaCacheServer/Core/Common/MCSReadwrite.m; sourceTree = ""; }; - 61E93D53929723D56F0B391AB315F8E9 /* SJVideoDefinitionSwitchingInfo+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJVideoDefinitionSwitchingInfo+Private.h"; path = "SJBaseVideoPlayer/Common/Implements/SJVideoDefinitionSwitchingInfo+Private.h"; sourceTree = ""; }; - 61F3081C514FFF1C018C0F0CE9250506 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; - 62BF1B78791EFCD5D7663DB067D5A849 /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; - 62DB00B0CAE84DF3F350EC3035541DDD /* MCSDownload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSDownload.h; path = SJMediaCacheServer/Core/Download/MCSDownload.h; sourceTree = ""; }; - 632AFE289709A58345A6C401D3BE4039 /* SJWatermarkViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJWatermarkViewDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJWatermarkViewDefines.h; sourceTree = ""; }; - 6344F0AC2BE8319242CEFA60533A15E9 /* SJSQLite3TableClassCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3TableClassCache.h; path = SJUIKit/SQLite3/Core/SJSQLite3TableClassCache.h; sourceTree = ""; }; - 635A6B234C1AEA4EAA0280AC6675FF5D /* SJPlayModel+SJPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJPlayModel+SJPrivate.h"; path = "SJBaseVideoPlayer/Common/Implements/SJPlayModel+SJPrivate.h"; sourceTree = ""; }; + 5F88D7C3CD7ACA089D922EBDC82191E7 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; + 5FB320C8A5FB0D611B34517F47318B6A /* SJVideoPlayerControlLayerProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerControlLayerProtocol.h; path = SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerControlLayerProtocol.h; sourceTree = ""; }; + 6023EA14E869300BCAA17D36D279F725 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; + 604D826398E8D22E3B61AD1FFA0F6A77 /* SJSQLite3+TableExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+TableExtended.h"; path = "SJUIKit/SQLite3/SJSQLite3+TableExtended.h"; sourceTree = ""; }; + 609B4EB84AF43A71C2AF71EB14375F46 /* SJRouteHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouteHandler.h; path = SJRouter/Core/SJRouteHandler.h; sourceTree = ""; }; + 60D106FCD9C7CEDC8B89BC3E75C13800 /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; + 60DDCFD9213812CA9F3EC73B3577F27E /* SJBaseViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseViewController.m; path = SJUIKit/Base/SJBaseViewController.m; sourceTree = ""; }; + 61952F6979FE919435BF2FA6F5CACE79 /* HLSAssetContentProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetContentProvider.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetContentProvider.m; sourceTree = ""; }; + 62146703542E4171F562EAD8E011A00E /* SJVideoDefinitionSwitchingInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoDefinitionSwitchingInfo.h; path = SJBaseVideoPlayer/Common/Implements/SJVideoDefinitionSwitchingInfo.h; sourceTree = ""; }; + 6230B241517C90A6E328AF141A567AE3 /* NSURLRequest+MCS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLRequest+MCS.h"; path = "SJMediaCacheServer/Core/Common/NSURLRequest+MCS.h"; sourceTree = ""; }; + 62E0E5769D55F8C5C1B4F185EC401907 /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; 639B4B6419CD9C19A68FB7C6F8E320CB /* SJVideoPlayerClipsGeneratedResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJVideoPlayerClipsGeneratedResult.h; sourceTree = ""; }; - 640D94371A4C03828D27C093B3E4B027 /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; - 6410928180119AE960509F1C346ADFF3 /* SJAttributesRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAttributesRecorder.h; path = SJUIKit/AttributesFactory/Deprecated/SJAttributesRecorder.h; sourceTree = ""; }; - 6443014553B16DA9CB936744B82B9B3B /* SJUTUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTUtils.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTUtils.m; sourceTree = ""; }; - 6452C15CFE7FAC999C262C6B2D4A5694 /* SJBarrageQueueControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBarrageQueueControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJBarrageQueueControllerDefines.h; sourceTree = ""; }; - 6485158CFC0ACB8DDAE04B139CCFCCBB /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; - 649CAB588C92ED4A60753F5A8622BD0C /* SJAVPictureInPictureController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVPictureInPictureController.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVPictureInPictureController.h; sourceTree = ""; }; - 652813F4263753D6D6E54EE3BCAD7055 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; - 652C00F28A20500864AE33EB8E1FBCA8 /* libPods-SJVideoPlayer_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-SJVideoPlayer_Example.a"; path = "libPods-SJVideoPlayer_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 640F9BB21EFCF9820909D99C53832B76 /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; + 648E0FF1AC6C5ED31096409BF73BC764 /* SJRouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouter.h; path = SJRouter/SJRouter.h; sourceTree = ""; }; + 64B87C63E1FB125F9ABFE8BD643117C9 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; + 64ECF9C28B8DE9D6C303FC0FFD49EE33 /* SJWatermarkView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJWatermarkView.m; path = SJBaseVideoPlayer/Common/Implements/SJWatermarkView.m; sourceTree = ""; }; + 652C00F28A20500864AE33EB8E1FBCA8 /* Pods-SJVideoPlayer_Example */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "Pods-SJVideoPlayer_Example"; path = "libPods-SJVideoPlayer_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 655EB80F8612533701711086FD8879FD /* SJVideoPlayer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJVideoPlayer-dummy.m"; sourceTree = ""; }; - 65A02E76ACA587EE3AFA833C54E3B090 /* UIViewController+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/UIKit/UIViewController+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; - 65CB492F77775D641DB99E9E764FB92B /* SJWatermarkView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJWatermarkView.h; path = SJBaseVideoPlayer/Common/Implements/SJWatermarkView.h; sourceTree = ""; }; - 65EBACFA989176D05AFC74118C37DD4F /* SJSQLiteObjectInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteObjectInfo.h; path = SJUIKit/SQLite3/Core/SJSQLiteObjectInfo.h; sourceTree = ""; }; - 662A97FD69B199EA1EFD2BF57255A1D2 /* SJPageMenuBarScrollIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuBarScrollIndicator.h; path = SJUIKit/PageViewController/Core/SJPageMenuBarScrollIndicator.h; sourceTree = ""; }; - 667247C1C106855597108467A198E382 /* MCSProxyTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSProxyTask.h; path = SJMediaCacheServer/Core/ProxyServer/MCSProxyTask.h; sourceTree = ""; }; - 669EA9AAD729B17BE354561A8E6A6F8C /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; - 66CED631CA87B4C2F76A9CA73D436E34 /* GCDAsyncUdpSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GCDAsyncUdpSocket.m; path = Source/GCD/GCDAsyncUdpSocket.m; sourceTree = ""; }; - 6707E7ABA6C90AEFB9CE5E394B1C0177 /* SJPlayModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayModel.h; path = SJBaseVideoPlayer/Common/Implements/SJPlayModel.h; sourceTree = ""; }; - 6739079FE29D319EE64B9D92CB4CF4B0 /* SJSQLiteErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteErrors.h; path = SJUIKit/SQLite3/Core/SJSQLiteErrors.h; sourceTree = ""; }; - 67F1FF78E9714D9BF165E43B22ED8788 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; - 682BC904C2F73456D44B3588987A843B /* SJVideoPlayerURLAssetPrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayerURLAssetPrefetcher.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAssetPrefetcher.m; sourceTree = ""; }; - 686B82FA7D1911EBE18A78CCAE5F0136 /* UITextField+AsyncLoadImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+AsyncLoadImage.m"; path = "SJUIKit/AsyncLoad/UITextField+AsyncLoadImage.m"; sourceTree = ""; }; + 6575EE9937AFEE339C50E7EAF20E0E70 /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; + 6631982D1E6C1EC9E71F984C0948F079 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; + 664902A9BC612F4DD0127445FD877632 /* HTTPFileResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPFileResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPFileResponse.m; sourceTree = ""; }; + 67385BB1A2463FDC34EDF3ACF664CBE1 /* SJUIKitTextMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUIKitTextMaker.h; path = SJUIKit/AttributesFactory/UIKitText/SJUIKitTextMaker.h; sourceTree = ""; }; + 67431929FDE185BE76CE7D7486D4629F /* MCSConsts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSConsts.m; path = SJMediaCacheServer/Core/Common/MCSConsts.m; sourceTree = ""; }; + 6770FFDFD3D31529F7092CD60C41390C /* SJBaseVideoPlayer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJBaseVideoPlayer-dummy.m"; sourceTree = ""; }; + 67A63F93FA3FC1C6CEEA94B7989AB551 /* SJSQLiteObjectInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteObjectInfo.m; path = SJUIKit/SQLite3/Core/SJSQLiteObjectInfo.m; sourceTree = ""; }; + 68E27B048D3324473984D3C5EB20E2E0 /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; 68EC83466EFA0C91DF95DCED987EA3EF /* SJFloatSmallViewControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJFloatSmallViewControlLayer.m; sourceTree = ""; }; - 691FD37660C87759AB14901DCC4ACAAA /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; - 696BAF6D2B90F94F13F036F40F771478 /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; - 69A61C8C8A82A510D2860323E8C883BB /* SJUTRangeHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTRangeHandler.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTRangeHandler.m; sourceTree = ""; }; - 6A106E740798E62D3A288F5C71263A5B /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; - 6A2EB43B0E07804ABD97933EA389D38D /* SJRouter.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJRouter.debug.xcconfig; sourceTree = ""; }; - 6AB2FC1D65492DDC9AD3A07670DFB84A /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; - 6B67CABF1A98F0BD7E77252C7F79E7CC /* UIImagePickerController+SJUIKitExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImagePickerController+SJUIKitExtension.h"; path = "SJUIKit/Photo/UIImagePickerController+SJUIKitExtension.h"; sourceTree = ""; }; + 695C9C8409DF76DFA89F015E524F6301 /* NSTimer+SJAssetAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTimer+SJAssetAdd.m"; path = "SJBaseVideoPlayer/Common/Foundation/NSTimer+SJAssetAdd.m"; sourceTree = ""; }; + 69A27145F238330217648B0A85BA03B0 /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; + 69AD63F175783C07BA9AECA9CB8C8028 /* SJVideoPlayerPlaybackControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerPlaybackControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPlaybackControllerDefines.h; sourceTree = ""; }; + 69FA503DC5817D6C005A6C4389D85AC1 /* MCSPrefetcherDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSPrefetcherDefines.h; path = SJMediaCacheServer/Core/Prefetch/MCSPrefetcherDefines.h; sourceTree = ""; }; + 6A01F6FCFBB3426A8A8156E9C65CF441 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + 6B363A09A921A928D41905800F10AFFA /* SJSQLiteTableModelProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteTableModelProtocol.h; path = SJUIKit/SQLite3/Protocol/SJSQLiteTableModelProtocol.h; sourceTree = ""; }; + 6B36F0A11386C9BFAF81C6DC28C1F7E7 /* SJSQLite3+FoundationExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+FoundationExtended.h"; path = "SJUIKit/SQLite3/SJSQLite3+FoundationExtended.h"; sourceTree = ""; }; + 6B647EF8D999D2E8186BB3A521226B98 /* FILEAssetReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FILEAssetReader.m; path = SJMediaCacheServer/Core/Asset/FILE/FILEAssetReader.m; sourceTree = ""; }; + 6B9DAA6E3992E053C9A953B80F14027A /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; + 6BA2EC35412B129157BAC0D1A497C8D9 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; 6BC4D00142FF15E6E7A038F80C2D4BA0 /* SJEdgeControlButtonItemAdapterLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJEdgeControlButtonItemAdapterLayout.h; sourceTree = ""; }; - 6CB37230A576BA87DA33CAEDB259D340 /* WebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = WebSocket.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/WebSocket.h; sourceTree = ""; }; - 6CBEFE4F9E22AFDC6347A739BB35FF8C /* libCocoaAsyncSocket.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libCocoaAsyncSocket.a; path = libCocoaAsyncSocket.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 6BF8FA680FE82A8599949050BE9A2BA1 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; + 6BFF48074355D8B68E2B9C45D0521A49 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJVideoPlayerURLAsset+SJSubtitlesAdd.h"; path = "SJBaseVideoPlayer/Common/Implements/SJVideoPlayerURLAsset+SJSubtitlesAdd.h"; sourceTree = ""; }; + 6C4FDACE7FF44BC62E8290797D884F3B /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; + 6C81F66089F4F17695C34520909B798E /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; + 6C9127A063C23E447D94765AB736B93A /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; + 6CBEFE4F9E22AFDC6347A739BB35FF8C /* CocoaAsyncSocket */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = CocoaAsyncSocket; path = libCocoaAsyncSocket.a; sourceTree = BUILT_PRODUCTS_DIR; }; 6CD32B773C6ED156D956B9AA03A8EE86 /* SJVideoPlayerResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayerResourceLoader.m; path = SJVideoPlayer/ResourceLoader/SJVideoPlayerResourceLoader.m; sourceTree = ""; }; - 6D9E79BB430A332E8B949F1F233DFF1B /* HLSAssetContentReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetContentReader.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetContentReader.m; sourceTree = ""; }; 6E06013AFE67C792673E399D6AA244C9 /* SJVideoPlayerURLAsset+SJControlAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJVideoPlayerURLAsset+SJControlAdd.h"; sourceTree = ""; }; - 6E395F3FDF754505AE4A25EAD4462634 /* GCDAsyncUdpSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GCDAsyncUdpSocket.h; path = Source/GCD/GCDAsyncUdpSocket.h; sourceTree = ""; }; - 6E58413F224471DC4F4C6BC46D2B5BBF /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; - 7009E1A9D42BC0CF10CA09AA87874FDA /* SJSubtitleItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSubtitleItem.m; path = SJBaseVideoPlayer/Common/Implements/SJSubtitleItem.m; sourceTree = ""; }; - 704BDA24D5FB797AF694EBA9AC10528C /* SJMediaCacheServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJMediaCacheServer-dummy.m"; sourceTree = ""; }; - 709D2A170D98EA72FBFC2D5BA0173A70 /* HTTPAsyncFileResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPAsyncFileResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPAsyncFileResponse.h; sourceTree = ""; }; + 6E273A5851DFECC5D37955005BDB0941 /* SJViewControllerManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJViewControllerManager.m; path = SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.m; sourceTree = ""; }; + 6E48AD212B00E0E868EDEC3691A1B956 /* SJAttributesRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAttributesRecorder.h; path = SJUIKit/AttributesFactory/Deprecated/SJAttributesRecorder.h; sourceTree = ""; }; + 6E5E96C769A13E0105E12B793698BB28 /* SJQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJQueue.h; path = SJUIKit/Queues/SJQueue.h; sourceTree = ""; }; + 6EDA3887632BBBC9C363EB3450EE00B9 /* MultipartMessageHeaderField.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MultipartMessageHeaderField.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartMessageHeaderField.m; sourceTree = ""; }; + 6F12ABCAB5CD208E6006C778B08B2856 /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; + 6F4D7824FC6EA0F6D1332DE5474441D2 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; + 6F5DC7BCB6EEBA1987480A4DC8B677C4 /* SJFullscreenPopGesture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFullscreenPopGesture.h; path = SJFullscreenPopGesture/ObjC/SJFullscreenPopGesture.h; sourceTree = ""; }; + 6F5DD4A11BDAFE0E2DCD94FAB41EE084 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; + 6F8E49B716E737024EEFB3D90D13DA79 /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; + 6FCCE83AA5DD20B56D00E2E6CC8FD444 /* SJAVMediaPlaybackController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVMediaPlaybackController.m; path = SJBaseVideoPlayer/AVPlayer/SJAVMediaPlaybackController.m; sourceTree = ""; }; + 6FFA8263DFA5190B140E95C24E8EE6D2 /* SJFullscreenPopGesture.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJFullscreenPopGesture.debug.xcconfig; sourceTree = ""; }; + 6FFF08E38744028E0DD079ABA65415DD /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; 70FB44CC5E8F5CE1A7ED3A7283717A82 /* SJClipsVideoRecordsControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsVideoRecordsControlLayer.m; sourceTree = ""; }; - 714048E7758AA67BFC8F2AA0B02E09C9 /* MCSAssetContentReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetContentReader.h; path = SJMediaCacheServer/Core/Asset/MCSAssetContentReader.h; sourceTree = ""; }; - 71503EB67F2400159C69A9ED726E59A0 /* SJRotationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRotationManager.m; path = SJBaseVideoPlayer/Common/Implements/SJRotationManager.m; sourceTree = ""; }; - 719274D088B9D9B939B7935F6332B340 /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; - 7259BA5D7008F925077F5C1A0D45D681 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; - 727F06A72DB64D29459AC2CB23D556B2 /* SJVideoPlayerPresentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayerPresentView.m; path = SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.m; sourceTree = ""; }; + 715A657E0CC74D8B40E45CA4D3522B3D /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; + 715F0F8E9E7668D097DEA3903C71E61E /* NSObject+YYModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+YYModel.m"; path = "YYModel/NSObject+YYModel.m"; sourceTree = ""; }; + 71B0E285DF3487D2A56F3C01B0D910FA /* SJUTAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTAttributes.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTAttributes.h; sourceTree = ""; }; 727FB18E52B98BCC1F886145DE2AD0D6 /* SJButtonProgressSlider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJButtonProgressSlider.m; sourceTree = ""; }; - 72A005107E7499A45629FA070CF38162 /* MultipartMessageHeaderField.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MultipartMessageHeaderField.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartMessageHeaderField.m; sourceTree = ""; }; - 733C8AE0E4870F0410E71BE6E0A2DE69 /* HTTPAuthenticationRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPAuthenticationRequest.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPAuthenticationRequest.m; sourceTree = ""; }; - 7342B3363CF74AD152F235742475B98B /* SJApplicationInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJApplicationInfo.m; path = SJUIKit/Other/SJApplicationInfo.m; sourceTree = ""; }; + 736F1CF68C2AB212149B5A2B1FD0CB91 /* SJRotationManager_4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRotationManager_4.h; path = SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.h; sourceTree = ""; }; 7383BB11DA23178EC273C513C98EB9B3 /* LICENSE.md */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE.md; sourceTree = ""; }; - 73B21AF491F2929D827C4477DD89F622 /* SJPageMenuItemView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuItemView.h; path = SJUIKit/PageViewController/Core/SJPageMenuItemView.h; sourceTree = ""; }; - 73E75A6A471DE609CA91AD80189C5DBC /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; - 744AA1C011D6BB324E92E2269CC1FB28 /* HTTPDynamicFileResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPDynamicFileResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPDynamicFileResponse.m; sourceTree = ""; }; + 73855928D6CB45F29C3F5EFF8F48FC3F /* SJVideoPlayerPresentViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerPresentViewDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPresentViewDefines.h; sourceTree = ""; }; + 73E5FBDE07C568B19B47E7FFD4B79B0B /* SJUIKit-68d28646.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SJUIKit-68d28646.debug.xcconfig"; sourceTree = ""; }; 748117CC5D8B386423B53649A356EBE4 /* SJVideoPlayerURLAsset+SJExtendedDefinition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJVideoPlayerURLAsset+SJExtendedDefinition.m"; sourceTree = ""; }; - 748397912AF7C193420306B48CDBFDC9 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; - 75900AD5FB7E5FEFA499BB969F21F59C /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; + 74A41507846770BCDB3055018DED74F5 /* SJRouteRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouteRequest.h; path = SJRouter/Core/SJRouteRequest.h; sourceTree = ""; }; 75A9FAA6FD100021C0EB6E33D15359FA /* SJEdgeControlButtonItemView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJEdgeControlButtonItemView.m; sourceTree = ""; }; + 7607076960C74ABF61FCC7D159EAD83A /* SJSQLiteObjectInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteObjectInfo.h; path = SJUIKit/SQLite3/Core/SJSQLiteObjectInfo.h; sourceTree = ""; }; 7613B2B5837FD067B951B1E77D24E455 /* SJSwitchVideoDefinitionControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJSwitchVideoDefinitionControlLayer.h; sourceTree = ""; }; 76C159B02CFBE39DE633D38BD594EB2E /* SJControlLayerIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJControlLayerIdentifiers.h; sourceTree = ""; }; - 774EE19CE764EBE2DDE6D0AC5703F493 /* SJDeviceVolumeAndBrightnessManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJDeviceVolumeAndBrightnessManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJDeviceVolumeAndBrightnessManagerDefines.h; sourceTree = ""; }; - 77B2408BF5673486400CA557D5D61BE7 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; - 77B9CDB0C564A3B2E3A5D455DC8B932D /* SJViewControllerManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJViewControllerManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJViewControllerManagerDefines.h; sourceTree = ""; }; - 780634E729C4D79FBA038A7CA9ED0127 /* Pods-SJVideoPlayer_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SJVideoPlayer_Example.debug.xcconfig"; sourceTree = ""; }; + 775A07BD148D84CDD2B74442A040606A /* HTTPAsyncFileResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPAsyncFileResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPAsyncFileResponse.m; sourceTree = ""; }; + 7794B41E55743FD8DF88DD393983472B /* NSFileManager+MCS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileManager+MCS.h"; path = "SJMediaCacheServer/Core/Common/NSFileManager+MCS.h"; sourceTree = ""; }; + 77B6012BDD2B5544640DCC165A436B72 /* NSObject+SJAsyncLoad.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+SJAsyncLoad.h"; path = "SJUIKit/AsyncLoad/NSObject+SJAsyncLoad.h"; sourceTree = ""; }; 78410545552116E1184980863D3DBD98 /* SJProgressSlider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJProgressSlider.h; sourceTree = ""; }; - 79183B7E64CAD06350A22AAA3CD54A04 /* MCSAssetUsageLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetUsageLog.h; path = SJMediaCacheServer/Core/Asset/MCSAssetUsageLog.h; sourceTree = ""; }; - 794BA1FDD834178E1B14119549563082 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; - 794C350CE87DE87A02B571FEB8D37898 /* SJMediaCacheServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJMediaCacheServer.release.xcconfig; sourceTree = ""; }; - 7959DA22A968AC1B8B20902BD3E109F6 /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; - 79689F37A5CF6A89FC2DB99C594AE867 /* SJStatusBarManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJStatusBarManager.m; path = SJUIKit/Base/Core/SJStatusBarManager.m; sourceTree = ""; }; - 7A0D846CD2874AE3A834F956C1DFA5BE /* UIScrollView+SJRefreshAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+SJRefreshAdd.m"; path = "SJUIKit/Refresh/UIScrollView+SJRefreshAdd.m"; sourceTree = ""; }; - 7A5C39A9808E3DBA0E030961BF6EA188 /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; - 7A961442A951AD4743D626428CC377BF /* Pods-SJVideoPlayer_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SJVideoPlayer_Example-dummy.m"; sourceTree = ""; }; + 7874E0FFF61012E569C77850FC1E5718 /* SJMediaCacheServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJMediaCacheServer.debug.xcconfig; sourceTree = ""; }; + 78B13DF72793869FB174879AF7B350F5 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; + 79504201DC2BA88A3DAB0FEECAD28CA8 /* UIScrollView+ListViewAutoplaySJAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+ListViewAutoplaySJAdd.h"; path = "SJBaseVideoPlayer/UIScrollView+ListViewAutoplaySJAdd.h"; sourceTree = ""; }; + 7988C2F93D7BD164E0AB80CA4F805B5A /* SJMediaCacheServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJMediaCacheServer-dummy.m"; sourceTree = ""; }; + 79F917C5B5C1104B61A04001B111A3A7 /* UITextField+AsyncLoadImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+AsyncLoadImage.h"; path = "SJUIKit/AsyncLoad/UITextField+AsyncLoadImage.h"; sourceTree = ""; }; + 7A13F4848EB10FC8A178DAC51B036711 /* SJPlaybackHistoryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackHistoryController.m; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackHistoryController.m; sourceTree = ""; }; + 7A54B32604CE14BED6F3115C686A8499 /* SJRouteRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRouteRequest.m; path = SJRouter/Core/SJRouteRequest.m; sourceTree = ""; }; + 7A6DFB96B40F9343669FBF7D62127779 /* MultipartFormDataParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MultipartFormDataParser.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartFormDataParser.m; sourceTree = ""; }; + 7A6FA7855E0E0747DAAF0B83DB13F696 /* SJFlipTransitionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFlipTransitionManager.h; path = SJBaseVideoPlayer/Common/Implements/SJFlipTransitionManager.h; sourceTree = ""; }; + 7A84894D7B272BE724822DEABC6232D7 /* SJRouteObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRouteObject.m; path = SJRouter/Core/SJRouteObject.m; sourceTree = ""; }; + 7A951CAAB21FE543DC58B8680C35B819 /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; 7AD6E80C1A070078C435F98DE2175C8C /* SJNotReachableControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJNotReachableControlLayer.h; sourceTree = ""; }; - 7AE13BC3C15975798B496E1041CC194E /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; - 7AF7DCA779DFF2547BB76ACB69FCCDFC /* SJSQLiteColumnInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteColumnInfo.m; path = SJUIKit/SQLite3/Core/SJSQLiteColumnInfo.m; sourceTree = ""; }; - 7B160F4179DD4BAED1AC8ABD3826354A /* UIButton+AsyncLoadImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AsyncLoadImage.h"; path = "SJUIKit/AsyncLoad/UIButton+AsyncLoadImage.h"; sourceTree = ""; }; - 7B3905681F4F517B8731C2E8C1443930 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; 7B44BCA30C3E50316415C4E8F086BA53 /* SJSpeedupPlaybackPopupView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJSpeedupPlaybackPopupView.h; sourceTree = ""; }; - 7B4EBBF3E47C54F5B7D49DC877624907 /* SJMakeView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJMakeView.m; path = SJUIKit/UIMaker/Core/SJMakeView.m; sourceTree = ""; }; - 7BA4C8CA905F7A3FCDCA49049392CDA1 /* SJAttributeWorker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAttributeWorker.m; path = SJUIKit/AttributesFactory/Deprecated/SJAttributeWorker.m; sourceTree = ""; }; 7BEAB602D0842FBCC25A68C3DD029F19 /* SJControlLayerSwitcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJControlLayerSwitcher.h; sourceTree = ""; }; - 7C3CAE22738B7067A16E205C3E833231 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; - 7C62A439ED3FC0FFB57693DA8829D685 /* MCSPrefetcherManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSPrefetcherManager.m; path = SJMediaCacheServer/Core/Prefetch/MCSPrefetcherManager.m; sourceTree = ""; }; + 7BEB4A44C4EBE4BE297ACBAF4A3FB1D3 /* UIViewController+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/UIKit/UIViewController+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; + 7C0180F0B23805DFB448CC303CF488C9 /* SJPageMenuBar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageMenuBar.m; path = SJUIKit/PageViewController/SJPageMenuBar.m; sourceTree = ""; }; + 7C4643B5E02C86DD4EDC79C59CCAA501 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; + 7C4DAFA503034AE5933119679FCBF4AF /* SJBaseProtocols.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseProtocols.h; path = SJUIKit/Base/Core/SJBaseProtocols.h; sourceTree = ""; }; + 7C51B8A56C1A5F901E8EF26991BD0768 /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; + 7C7D39C6D9BAD7C7F14661D1A4179E2B /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; + 7C9E549A3FAFF91EEAF036808B603253 /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; 7CE244C613ADC3A4CBF5E71F4B26DB91 /* SJNotReachableControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJNotReachableControlLayer.m; sourceTree = ""; }; - 7D32E53A538D653692FAAFA14F496DC1 /* SJFullscreenPopGesture-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJFullscreenPopGesture-prefix.pch"; sourceTree = ""; }; - 7D385B183460A47CC5B3378C8CFCCE8B /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - 7F048C2959833A03AFCEE28F9955024F /* SJBaseVideoPlayerConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseVideoPlayerConst.m; path = SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.m; sourceTree = ""; }; - 7F92F2CEBB6A711D2536296D346B92D4 /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; - 800EC3EAFFA4712A08D9C292A98E2FCA /* SJBarrageItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBarrageItem.m; path = SJBaseVideoPlayer/Common/Implements/SJBarrageItem.m; sourceTree = ""; }; + 7D3D7AE7A79837A093BA206615956FDB /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; + 7E3BF6D4E9A269FDD7F390EC0EAED390 /* SJBaseVideoPlayerResources.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = SJBaseVideoPlayerResources.bundle; path = SJBaseVideoPlayer/ResourceLoader/SJBaseVideoPlayerResources.bundle; sourceTree = ""; }; + 7E839C820F7D5B753A787C979DACCA04 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; + 7E91B665E49F5BA2E6E0C6BA2C00F072 /* SJSubtitlePopupControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSubtitlePopupControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJSubtitlePopupControllerDefines.h; sourceTree = ""; }; + 7F45A1B16BC3C68CBD9282E849F43A82 /* HTTPDynamicFileResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPDynamicFileResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPDynamicFileResponse.m; sourceTree = ""; }; 801598796BA3A3E2129534F9BC427B11 /* SJClipsControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsControlLayer.h; sourceTree = ""; }; + 8037F9D520A66240FD7240E27C368F4B /* HTTPRedirectResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPRedirectResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPRedirectResponse.h; sourceTree = ""; }; + 809547284B0BC63048E8188D808EF96B /* SJAsyncLoad.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAsyncLoad.h; path = SJUIKit/AsyncLoad/SJAsyncLoad.h; sourceTree = ""; }; 80A242144415A05CFCF6F2AC5FF00240 /* SJVideoPlayer.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = SJVideoPlayer.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 80B06EA2E14B2E593786483F3113764C /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; - 80BE8141DA0C17384DE720A6A14E37FD /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; - 81EAA01DE713584867348545B2F47321 /* SJSQLite3Condition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3Condition.m; path = SJUIKit/SQLite3/Core/SJSQLite3Condition.m; sourceTree = ""; }; - 824532C2D9FF2C7F2F036CEC1481E1A1 /* SJVideoPlayerURLAsset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerURLAsset.h; path = SJBaseVideoPlayer/Common/Implements/SJVideoPlayerURLAsset.h; sourceTree = ""; }; - 82EC894487A2A2F9A5507ED8FDF81AB0 /* SJUTRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTRecorder.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTRecorder.h; sourceTree = ""; }; - 8348B0C55ED6C914685D26F0723A8207 /* SJSQLite3+FoundationExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJSQLite3+FoundationExtended.m"; path = "SJUIKit/SQLite3/SJSQLite3+FoundationExtended.m"; sourceTree = ""; }; - 849483F7C2F853C00D14697696B90310 /* SJBaseVideoPlayerResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseVideoPlayerResourceLoader.h; path = SJBaseVideoPlayer/ResourceLoader/SJBaseVideoPlayerResourceLoader.h; sourceTree = ""; }; - 84E67573A19E50DF1241A6929AC4728C /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; - 85544B75D3FCBAD6B8B955A75C99005D /* SJRouteRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouteRequest.h; path = SJRouter/Core/SJRouteRequest.h; sourceTree = ""; }; - 85946BC317749323316815E749BA9B3D /* Pods-SJVideoPlayer_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SJVideoPlayer_Example-acknowledgements.markdown"; sourceTree = ""; }; - 85978CD214BFAD661D800CA5B32A0A15 /* SJPlaybackRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackRecord.m; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackRecord.m; sourceTree = ""; }; - 863EDFE78BE1328E59A8ABF8A6971626 /* SJSQLiteTableModelConstraints.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteTableModelConstraints.m; path = SJUIKit/SQLite3/Core/SJSQLiteTableModelConstraints.m; sourceTree = ""; }; - 87A8FF6A5C7CA85FB814C0FCB3F3ECF4 /* SJPromptPopupController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPromptPopupController.m; path = SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.m; sourceTree = ""; }; - 87D25F3ABD8FA9FCAB3866065A59C243 /* CocoaAsyncSocket.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CocoaAsyncSocket.release.xcconfig; sourceTree = ""; }; - 87DD09E9671254490757F33906D49399 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; - 88685A005FD6DDBF2211983DC3D92A82 /* MCSDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSDatabase.m; path = SJMediaCacheServer/Core/Common/MCSDatabase.m; sourceTree = ""; }; - 8879A8C7414278F6BF994CFD696803D5 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; - 8899B5E5723BBE5CB2101CB3FD0F8ED6 /* SJReachabilityDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJReachabilityDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJReachabilityDefines.h; sourceTree = ""; }; - 88A99CB7A31D1B61929503B9300D703B /* SJUIKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJUIKit-dummy.m"; sourceTree = ""; }; - 88D5806613DE9FA5FC14057BF494B9AC /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; - 88E26DF3D50094EA3683F187FABD8DAA /* NSFileManager+MCS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileManager+MCS.m"; path = "SJMediaCacheServer/Core/Common/NSFileManager+MCS.m"; sourceTree = ""; }; + 80D8109360F109B5AEA7108A88881E54 /* SJBaseTableViewHeaderFooterView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseTableViewHeaderFooterView.h; path = SJUIKit/Base/SJBaseTableViewHeaderFooterView.h; sourceTree = ""; }; + 810211772F42E78119C94A8A1CCDC33F /* SJUTAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTAttributes.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTAttributes.m; sourceTree = ""; }; + 81A5F54429D94B7C2DE99635F9C3136B /* MCSAssetContentReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetContentReader.m; path = SJMediaCacheServer/Core/Asset/MCSAssetContentReader.m; sourceTree = ""; }; + 81EAF62D5C770CB5E7AC1D425E08E689 /* SJDanmakuPopupControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJDanmakuPopupControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJDanmakuPopupControllerDefines.h; sourceTree = ""; }; + 82A4340DD5C1F47459F9CC47223BC1B7 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; + 8366B88B5D76BE68DA0F531D930716D7 /* SJAsyncLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAsyncLoader.h; path = SJUIKit/AsyncLoad/SJAsyncLoader.h; sourceTree = ""; }; + 8388812910C1F7547864E602B83D0586 /* HTTPMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPMessage.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPMessage.m; sourceTree = ""; }; + 83E919D66D2265424EA2C01FEA02093C /* MCSContents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSContents.h; path = SJMediaCacheServer/Core/Download/MCSContents.h; sourceTree = ""; }; + 83F21FCD5E3182568338E0937C071772 /* HLSPrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSPrefetcher.m; path = SJMediaCacheServer/Core/Prefetch/HLSPrefetcher.m; sourceTree = ""; }; + 83F7F931C5A9B35E770AE8038F8E7681 /* FILEAssetContentProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FILEAssetContentProvider.m; path = SJMediaCacheServer/Core/Asset/FILE/Private/FILEAssetContentProvider.m; sourceTree = ""; }; + 849CC26AF3531478DB43C4F030EC3956 /* SJDanmakuItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJDanmakuItem.h; path = SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.h; sourceTree = ""; }; + 85ABCDF43D596CD4024DFE81DB3B5012 /* UIViewController+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/UIKit/UIViewController+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; + 860399BF84DE03E77A6D5F77DF1B4138 /* HTTPDataResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPDataResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPDataResponse.h; sourceTree = ""; }; + 8612516790E154DF42DA9623B1DFEB46 /* MCSAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetManager.h; path = SJMediaCacheServer/Core/Asset/MCSAssetManager.h; sourceTree = ""; }; + 865D238261BA397D9C045C0979845F43 /* SJBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBase.h; path = SJUIKit/Base/SJBase.h; sourceTree = ""; }; + 86C8F11C8F2483821B3B127D1E761C85 /* CocoaAsyncSocket-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CocoaAsyncSocket-prefix.pch"; sourceTree = ""; }; + 86EF1F6BE490A086F1661F886EEA2657 /* MCSError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSError.h; path = SJMediaCacheServer/Core/Common/MCSError.h; sourceTree = ""; }; + 878C82EE229DE11A18DDC8A3C6CFB13B /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; + 885C346296ECEA27FBFAB7D857B315E3 /* SJUTRegexHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTRegexHandler.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTRegexHandler.h; sourceTree = ""; }; + 886570E14AD8E3D5960D7F977DEFBF02 /* SJSQLite3+QueryExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+QueryExtended.h"; path = "SJUIKit/SQLite3/SJSQLite3+QueryExtended.h"; sourceTree = ""; }; + 886CCF0E74D1BD4C2997A053F8510C28 /* SJDeviceVolumeAndBrightnessManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJDeviceVolumeAndBrightnessManager.h; path = SJBaseVideoPlayer/Common/Implements/SJDeviceVolumeAndBrightnessManager.h; sourceTree = ""; }; + 888B3360EA2B6287C5326D1A3708F2F4 /* HTTPServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPServer.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPServer.m; sourceTree = ""; }; + 88977EEA967DDE48DF8ADA1AE415C7EC /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; + 88A4990C5BD1FE267C5D022756AB21FF /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; 88FBC6EBE3A22061D837CB9FE5521E03 /* SJSwitchVideoDefinitionControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJSwitchVideoDefinitionControlLayer.m; sourceTree = ""; }; 894B0AA413A404063B27A54AC54823B0 /* SJProgressSlider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJProgressSlider.m; sourceTree = ""; }; - 89E198D84C6514C2387F4EAF407B8E86 /* SJAttributesFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAttributesFactory.h; path = SJUIKit/AttributesFactory/SJAttributesFactory.h; sourceTree = ""; }; - 8AC6AEC688698D55BA95C07E122E7F8D /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; - 8B3FC2C300DFD25419CACAF269427731 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; - 8B53E9CC14C18E51B35E0DAE2E6C4856 /* SJSQLiteTableInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteTableInfo.m; path = SJUIKit/SQLite3/Core/SJSQLiteTableInfo.m; sourceTree = ""; }; - 8BC077638DE430F42EE2415012991437 /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; - 8BC16F52C9EAF78A8E60C38AFDDB8669 /* SJAVMediaPlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVMediaPlayer.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayer.h; sourceTree = ""; }; + 896C3B83FAAEDE7B6F2CA9C756BC4DD8 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; + 89A45F69313D9611C8E1CF7450058AFD /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; + 89E8FD96E12B95D84295A27E95EB5477 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; + 89EDA3A2FB6EC72691ADD88AEB311432 /* MCSRootDirectory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSRootDirectory.m; path = SJMediaCacheServer/Core/Common/MCSRootDirectory.m; sourceTree = ""; }; + 8A02484D4CF83694D7EA45411A3ABABD /* SJBaseCollectionReusableView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseCollectionReusableView.h; path = SJUIKit/Base/SJBaseCollectionReusableView.h; sourceTree = ""; }; + 8A5D34E131BBC71377DA28F2B86E3D16 /* MCSAssetExporterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetExporterManager.m; path = SJMediaCacheServer/Core/Export/MCSAssetExporterManager.m; sourceTree = ""; }; + 8B2483EB00C2EBEB0B898C5AC86BC87A /* MCSProxyServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSProxyServer.h; path = SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.h; sourceTree = ""; }; 8BEF0AD407085C1B9C47C9C518A8B44B /* SJClipsGIFCountDownView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsGIFCountDownView.h; sourceTree = ""; }; - 8C111A1AE32D51FAC358EDF4CE2C383F /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; - 8C2CD6B6D8876491C00916AB9F7CABB9 /* MCSPrefetcherManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSPrefetcherManager.h; path = SJMediaCacheServer/Core/Prefetch/MCSPrefetcherManager.h; sourceTree = ""; }; - 8C3D3464F1DC3BE3CCFA6759C4648228 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; - 8C51F9C53DAA09F339ADBBAF64EDFB49 /* SJPlaybackHistoryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackHistoryController.h; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackHistoryController.h; sourceTree = ""; }; + 8BEF6641726D93A0A6D26DBCE82709B1 /* SJRouter.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJRouter.debug.xcconfig; sourceTree = ""; }; + 8C281B145F8EAB623716A0AB2B10D46F /* WebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = WebSocket.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/WebSocket.h; sourceTree = ""; }; + 8C34DBD321F8D66203E83A27F3D63662 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; 8C6D0BD99B56E4327A147144EB10F0CE /* SJVideoPlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayer.m; path = SJVideoPlayer/SJVideoPlayer.m; sourceTree = ""; }; 8D0FE6357F65A0ACE1C34CB60F4AC520 /* SJClipsButtonContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsButtonContainerView.h; sourceTree = ""; }; - 8D1C25BFC7B60D8E2A0ADC8308363D36 /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; - 8D1EE56EBEDDF86D4EBA1BCB57070AA9 /* libSJVideoPlayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSJVideoPlayer.a; path = libSJVideoPlayer.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D612B8B2F19918B37A9EB832A291CB9 /* SJRouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRouter.m; path = SJRouter/SJRouter.m; sourceTree = ""; }; + 8D1EE56EBEDDF86D4EBA1BCB57070AA9 /* SJVideoPlayer */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SJVideoPlayer; path = libSJVideoPlayer.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D5E0D805D3243B658B328DE4B8EBD35 /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; 8DDCA9C09DA65845ACB1BE42BCA013EC /* SJClipsGIFRecordsControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsGIFRecordsControlLayer.h; sourceTree = ""; }; - 8E11BF300CC67EFC4DF3FB0062A98428 /* UIColor+SJPageMenuBarExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SJPageMenuBarExtended.m"; path = "SJUIKit/PageViewController/Core/UIColor+SJPageMenuBarExtended.m"; sourceTree = ""; }; - 8EB21CCF5A14806E7856DBF7CC67026B /* SJRouter.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJRouter.release.xcconfig; sourceTree = ""; }; - 8F108A06125024AD23CBECDE0E11790F /* SJPlaybackRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackRecord.h; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackRecord.h; sourceTree = ""; }; - 8F169F9CAA943E3F5B57576928CBD890 /* SJBaseVideoPlayer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJBaseVideoPlayer-dummy.m"; sourceTree = ""; }; - 8FA2A8379528E2E07E1DF1999C46596E /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; - 8FC1801985D20234A703D2F9B2CEFF51 /* SJPageViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageViewController.m; path = SJUIKit/PageViewController/SJPageViewController.m; sourceTree = ""; }; - 8FCD068A9459D9BA241862FD1B03E535 /* NSURLRequest+MCS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLRequest+MCS.h"; path = "SJMediaCacheServer/Core/Common/NSURLRequest+MCS.h"; sourceTree = ""; }; - 9067DD3A390FBACCCCCE1160B88CDE31 /* SJBarrageItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBarrageItem.h; path = SJBaseVideoPlayer/Common/Implements/SJBarrageItem.h; sourceTree = ""; }; - 90D1EF0384C2FBC87D01646A5267157E /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; - 9123A3521B8504CDBF9AD51B0DB505CD /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; - 91314A7227B1E54CAC73B762A98E5CF4 /* SJBaseTableViewHeaderFooterView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseTableViewHeaderFooterView.m; path = SJUIKit/Base/SJBaseTableViewHeaderFooterView.m; sourceTree = ""; }; + 8DF964DAD9E0AE854DC7D436F8BB3E79 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + 8FD204D8EA21C5B64548FD39DBC4E0EA /* FILEPrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FILEPrefetcher.m; path = SJMediaCacheServer/Core/Prefetch/FILEPrefetcher.m; sourceTree = ""; }; + 9072523E50A872D45927AB47C03EF6E1 /* SJFullscreenPopGesture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJFullscreenPopGesture.m; path = SJFullscreenPopGesture/ObjC/SJFullscreenPopGesture.m; sourceTree = ""; }; + 909775BF0D710EBD0FA91F1EFA0A8B64 /* CocoaAsyncSocket-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CocoaAsyncSocket-dummy.m"; sourceTree = ""; }; + 90A02B95A6676D3781D29C1E9BD692C6 /* CALayer+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/UIKit/CALayer+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; + 90CD6B01259ADB10D20AD0E74BD8389E /* MCSDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSDatabase.m; path = SJMediaCacheServer/Core/Common/MCSDatabase.m; sourceTree = ""; }; + 90E8465F106C550AD902B8058B90A8AF /* MultipartMessageHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MultipartMessageHeader.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartMessageHeader.m; sourceTree = ""; }; 913302C2FA39148ADA681DE449BFF28D /* SJControlLayerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJControlLayerDefines.h; sourceTree = ""; }; - 915BE4B6E9A0BCCB742B4A4EB5F82F2D /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; - 918F2ADA4548FBA7B859AAC4FCE61D54 /* CALayer+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/UIKit/CALayer+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; - 92CC0C7355A5708E819F98605653C46E /* SJControlLayerAppearStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJControlLayerAppearStateManager.h; path = SJBaseVideoPlayer/Common/Implements/SJControlLayerAppearStateManager.h; sourceTree = ""; }; - 942E0A4A04454EC8C14AF4611A02D1CD /* MCSPrefetcherDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSPrefetcherDefines.h; path = SJMediaCacheServer/Core/Prefetch/MCSPrefetcherDefines.h; sourceTree = ""; }; - 9446811F8A2CA42929BAFFBAC2583ED2 /* SJRouteRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRouteRequest.m; path = SJRouter/Core/SJRouteRequest.m; sourceTree = ""; }; - 94679E79D829B7FD6DD0960E95D6196E /* MCSURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSURL.h; path = SJMediaCacheServer/Core/Common/MCSURL.h; sourceTree = ""; }; - 9554E26AF2A9EC4FBF74C7D4DC2F7599 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; - 9646597F4DF9F850F0F0273DFF2DD73E /* UISearchBar+AsyncLoad.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UISearchBar+AsyncLoad.m"; path = "SJUIKit/AsyncLoad/UISearchBar+AsyncLoad.m"; sourceTree = ""; }; - 971A3662A95B2F6A4EC4DF4FD6236478 /* MCSAssetCacheManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetCacheManager.m; path = SJMediaCacheServer/Core/Cache/MCSAssetCacheManager.m; sourceTree = ""; }; - 972C7303D00A6BECD2E953A4001D3114 /* NSAttributedString+SJMake.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+SJMake.h"; path = "SJUIKit/AttributesFactory/NSAttributedString+SJMake.h"; sourceTree = ""; }; + 9176794C559C07226EA8C954208D77F4 /* SJUIKit-68d28646-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJUIKit-68d28646-prefix.pch"; sourceTree = ""; }; + 91B5F2EBBEA00A9D4E1C5556FF4AE57C /* MCSUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSUtils.m; path = SJMediaCacheServer/Core/Common/MCSUtils.m; sourceTree = ""; }; + 92056436F96D182FF7DC887D1CFF8D0F /* SJSQLite3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3.h; path = SJUIKit/SQLite3/SJSQLite3.h; sourceTree = ""; }; + 92CF7F8B9C5538EFF27E6F8FB583DF1B /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; + 93A4F7951CFCC69FEB62002D32F10AD1 /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; + 94BBA5DDF624E3B9A3079B3FE81C38AA /* SJUIKit-98d45660-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJUIKit-98d45660-prefix.pch"; path = "../SJUIKit-98d45660/SJUIKit-98d45660-prefix.pch"; sourceTree = ""; }; + 94C5A2FC18FCCA7AA31E05691BD92AE7 /* WebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = WebSocket.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/WebSocket.m; sourceTree = ""; }; + 94ED638DF88E299153887EAD85631601 /* SJAttributeWorker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAttributeWorker.h; path = SJUIKit/AttributesFactory/Deprecated/SJAttributeWorker.h; sourceTree = ""; }; + 95602DC89D079908EA066CDD624E405F /* FILEAsset.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FILEAsset.m; path = SJMediaCacheServer/Core/Asset/FILE/FILEAsset.m; sourceTree = ""; }; + 95CEBD575D566218CAD9A300F5378FFD /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; + 967089F38BA440450FA3F3ED47629C84 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; 97349895656AB185D9533A491E02F37A /* SJVideoPlayerConfigurations.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJVideoPlayerConfigurations.m; sourceTree = ""; }; - 974F658B3C3B1A8D0F191360D8B15859 /* UIButton+AsyncLoadImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AsyncLoadImage.m"; path = "SJUIKit/AsyncLoad/UIButton+AsyncLoadImage.m"; sourceTree = ""; }; - 982627BBD869F9657560BC2A540B8FCD /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; - 9853387CE17A0788117A43C8F700034D /* SJRouteObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouteObject.h; path = SJRouter/Core/SJRouteObject.h; sourceTree = ""; }; - 98DC184F062F51F845BD9614E607898A /* DDRange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDRange.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDRange.h; sourceTree = ""; }; - 991D0EFFE2E42D9966BC76B6BCD4A721 /* SJFullscreenPopGesture.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJFullscreenPopGesture.release.xcconfig; sourceTree = ""; }; - 99229577C2DF4DD77CDF6C978AB586A8 /* SJSQLiteObjectInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteObjectInfo.m; path = SJUIKit/SQLite3/Core/SJSQLiteObjectInfo.m; sourceTree = ""; }; - 9963E705B0F81FE6D5DA1220EE7E9640 /* SJUIKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJUIKit.release.xcconfig; sourceTree = ""; }; - 99E9AF69A4670D8AD651E5BCDEFA1BE2 /* SJPlayerAutoplayConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayerAutoplayConfig.h; path = SJBaseVideoPlayer/Common/Implements/SJPlayerAutoplayConfig.h; sourceTree = ""; }; - 9A6733D51BC7579BB89C9779A3294A35 /* MultipartMessageHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MultipartMessageHeader.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartMessageHeader.h; sourceTree = ""; }; - 9AA092AD010D80E2DA92FC13BFABA8FA /* SJSubtitlesPromptController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSubtitlesPromptController.m; path = SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.m; sourceTree = ""; }; - 9AC76170A9E577FA21B7AA90CE786E66 /* HTTPDataResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPDataResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPDataResponse.m; sourceTree = ""; }; + 97972692067CBBC77C1570F5057D1388 /* SJMediaCacheServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJMediaCacheServer-prefix.pch"; sourceTree = ""; }; + 98231343A68650106AE1E5B46461DAD1 /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; + 98572816080B88ED07C88C4CF0EAB44A /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; + 986A50BE440262C08D4211B4E8C46294 /* SJUIKit-68d28646-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJUIKit-68d28646-dummy.m"; sourceTree = ""; }; + 986A62EA6AF2A4C851BF30C5E5BDFBC2 /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; + 987BA6ACEED1A1F90AC153776EE8263F /* SJPlayModelPropertiesObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlayModelPropertiesObserver.m; path = SJBaseVideoPlayer/Common/Implements/SJPlayModelPropertiesObserver.m; sourceTree = ""; }; + 99BCB97F37A186731AF4DA3FE6356E34 /* SJSubtitlePopupController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSubtitlePopupController.m; path = SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.m; sourceTree = ""; }; + 9A15D7DE324B31E64CAE16FF03EC3793 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; 9AE1C7E3CE66F58F5A14E8935EAED63A /* SJMoreSettingControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJMoreSettingControlLayer.h; sourceTree = ""; }; - 9B04FD1392A1F87CBA220A6FC3FC7C91 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; - 9B3B7D05DD79196EFC0C580C86C436DA /* SJUIKitTextMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUIKitTextMaker.h; path = SJUIKit/AttributesFactory/UIKitText/SJUIKitTextMaker.h; sourceTree = ""; }; - 9C1BD6D92E12294E546ACC3C7D3665AB /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; - 9C54B6407F10EABFDB20A94DBAF52B2B /* SJBaseCollectionViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseCollectionViewCell.m; path = SJUIKit/Base/SJBaseCollectionViewCell.m; sourceTree = ""; }; - 9CE42A4FA342D6F2ED20362267F2A070 /* FILEAsset.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FILEAsset.m; path = SJMediaCacheServer/Core/Asset/FILE/FILEAsset.m; sourceTree = ""; }; - 9D3B530C4EDB6B601D72D6EE5CAEEEF2 /* NSTimer+SJAssetAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTimer+SJAssetAdd.m"; path = "SJBaseVideoPlayer/Common/Foundation/NSTimer+SJAssetAdd.m"; sourceTree = ""; }; + 9BD3C3C5463B31C6C5A19D4840C61437 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + 9BF4D0AC95D1FB14F2AB6FCDD4CC6D3C /* SJRouteInterceptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRouteInterceptor.m; path = SJRouter/Core/SJRouteInterceptor.m; sourceTree = ""; }; + 9BF8E50B75BCB142C3E0728DD0E1429F /* SJBaseViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseViewController.h; path = SJUIKit/Base/SJBaseViewController.h; sourceTree = ""; }; + 9D1FC6E6636DE619E8F16A9FBC87AFB6 /* DDRange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDRange.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDRange.h; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9D959AA1C085D01EC7E15EA15DEA6AB4 /* SJUTRegexHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTRegexHandler.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTRegexHandler.h; sourceTree = ""; }; - 9DA2BA92F5AF8BAFD2655F3E3899E875 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; - 9DB10D827BEF1A951B5803C4D2BA3F3D /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; - 9DF57889CF7522F73517AE58A2C8AF40 /* SJBaseCollectionViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseCollectionViewCell.h; path = SJUIKit/Base/SJBaseCollectionViewCell.h; sourceTree = ""; }; - 9E1420619555CDC4D62691FE8EB5DDD8 /* MCSAssetCacheManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetCacheManager.h; path = SJMediaCacheServer/Core/Cache/MCSAssetCacheManager.h; sourceTree = ""; }; + 9DAD62B381A411776CB11534501D45A4 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; + 9DD8B36A3841A80B8018118E71DD5C43 /* Pods-iPadDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-iPadDemo.debug.xcconfig"; sourceTree = ""; }; + 9E40D4387AC4D28BC69099B0F4B51DF9 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; 9E50A8C76370804B7BC47E3FC78C9872 /* SJVideoPlayerClipsConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJVideoPlayerClipsConfig.h; sourceTree = ""; }; - 9E5E1FCA7EFA2C2F57B7C500F7027BB6 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; - 9F2E1583D74C05601B0F4415461E553A /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m"; path = "SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m"; sourceTree = ""; }; - 9FAD1D167CCE9EF065317A85C9D578A2 /* SJDeviceVolumeAndBrightnessManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJDeviceVolumeAndBrightnessManager.h; path = SJBaseVideoPlayer/Common/Implements/SJDeviceVolumeAndBrightnessManager.h; sourceTree = ""; }; - 9FCD36264BA2B5F4BF86E9D1785CFF45 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; - A050446BD9F8EA24906B963FE3319925 /* SJSQLite3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3.m; path = SJUIKit/SQLite3/SJSQLite3.m; sourceTree = ""; }; + 9E7BA46554207B264CEF12C510BD800E /* SJSQLiteCore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteCore.m; path = SJUIKit/SQLite3/Core/SJSQLiteCore.m; sourceTree = ""; }; + 9E7E34B080335DAED1B090A268202CD7 /* SJFloatSmallViewControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFloatSmallViewControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJFloatSmallViewControllerDefines.h; sourceTree = ""; }; + 9EBB7329011D77BAE2C5F974B99D953B /* MCSContents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSContents.m; path = SJMediaCacheServer/Core/Download/MCSContents.m; sourceTree = ""; }; + 9EC39621B2BFF385D11E74F53A5C3326 /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; + 9EEB9DDAE62AD828C4B3A567E9E9D221 /* SJDeviceVolumeAndBrightnessManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJDeviceVolumeAndBrightnessManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJDeviceVolumeAndBrightnessManagerDefines.h; sourceTree = ""; }; + 9EEC043C6C541A48BB36804CB8F5C962 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; + 9F1EECE762E5B32AD2E1D04DFB9A099B /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; + 9F3C2A98E1B04FC192E6BE7299A5CCC7 /* SJApplicationInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJApplicationInfo.m; path = SJUIKit/Other/SJApplicationInfo.m; sourceTree = ""; }; + 9FA28C8E44ADD92530399AA177CB30CB /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; + 9FBE4E1577A861DC006673BC6E041BDB /* SJBaseVideoPlayer+TestLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJBaseVideoPlayer+TestLog.h"; path = "SJBaseVideoPlayer/SJBaseVideoPlayer+TestLog.h"; sourceTree = ""; }; + 9FC80201321AA42F17AB3B81A9674564 /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; + 9FF622CE4D37727C4098EAE839C32A2B /* Pods-iPadDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-iPadDemo-acknowledgements.plist"; sourceTree = ""; }; A0C966AC3BD5064BA778AB7FE9F8718D /* SJVideoPlayerLocalizedStringKeys.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJVideoPlayerLocalizedStringKeys.m; sourceTree = ""; }; - A0CA1B6EF742025C3A52915BCFC98BDD /* FILEAsset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FILEAsset.h; path = SJMediaCacheServer/Core/Asset/FILE/FILEAsset.h; sourceTree = ""; }; - A0CD1BBBAA2372033E80B8842F11437A /* SJPlaybackHistoryControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackHistoryControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJPlaybackHistoryControllerDefines.h; sourceTree = ""; }; - A0E7C42B7752D5E273314585CFF1B9EF /* FILEAssetReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FILEAssetReader.m; path = SJMediaCacheServer/Core/Asset/FILE/FILEAssetReader.m; sourceTree = ""; }; - A13976C66C7A9209EFA873AE522A11F6 /* HTTPRedirectResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPRedirectResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPRedirectResponse.m; sourceTree = ""; }; - A160D4E4AE8B066E876890A4FE7E512D /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; - A2A20B9946FA613A7D8F609B799F1412 /* SJSubtitlesPromptController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSubtitlesPromptController.h; path = SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.h; sourceTree = ""; }; - A33D9972066737C1476906F48882629E /* SJObjectContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJObjectContainer.m; path = SJUIKit/Other/SJObjectContainer.m; sourceTree = ""; }; + A0CEDDBBE8572ABEC86C7AC36634451F /* MCSProxyServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSProxyServer.m; path = SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.m; sourceTree = ""; }; + A10BBB456F8AD57EBC8D19DDF0E518E8 /* NSString+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/Foundation/NSString+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; + A12998581DFF80163765A62CF4FA9DC6 /* UILabel+AsyncLoad.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+AsyncLoad.h"; path = "SJUIKit/AsyncLoad/UILabel+AsyncLoad.h"; sourceTree = ""; }; + A13A92595300422DEA2DB2EE89355E7A /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; + A15D78B0FA43EBD40FACE5A2E7DCD8FC /* SJReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJReachability.h; path = SJBaseVideoPlayer/Common/Implements/SJReachability.h; sourceTree = ""; }; + A1781BB8254C369C58A731B81E875929 /* SJPageMenuBarScrollIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuBarScrollIndicator.h; path = SJUIKit/PageViewController/Core/SJPageMenuBarScrollIndicator.h; sourceTree = ""; }; + A1E2E15E149DC6F085F11BBE627E0FD0 /* MCSDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSDefines.h; path = SJMediaCacheServer/Core/Common/MCSDefines.h; sourceTree = ""; }; + A24B42380767C85C9BD029D20A20FE33 /* SJVideoPlayerURLAssetPrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerURLAssetPrefetcher.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAssetPrefetcher.h; sourceTree = ""; }; + A2C7D499C51A39879954015BC1CD7C25 /* NSObject+YYModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+YYModel.h"; path = "YYModel/NSObject+YYModel.h"; sourceTree = ""; }; + A341BA05158D57DD0E66B9F57A743FBD /* KTVCocoaHTTPServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KTVCocoaHTTPServer.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/KTVCocoaHTTPServer.h; sourceTree = ""; }; A39ECDB4D940A8F2ACAD1ED0506B242E /* UIView+SJAnimationAdded.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIView+SJAnimationAdded.h"; sourceTree = ""; }; - A3DE979A5047694D6076DABF605E4B78 /* MCSConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSConfiguration.h; path = SJMediaCacheServer/Core/Asset/MCSConfiguration.h; sourceTree = ""; }; - A4054EA7AB619E7D79D30D8EA4E451C2 /* SJSQLite3TableInfoCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3TableInfoCache.m; path = SJUIKit/SQLite3/Core/SJSQLite3TableInfoCache.m; sourceTree = ""; }; - A40A5DF70ABCE78C1B1035F6D37895C4 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; - A4D0791B81E870AEF6897506646C0402 /* MCSUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSUtils.h; path = SJMediaCacheServer/Core/Common/MCSUtils.h; sourceTree = ""; }; - A4DC4D0C6F94FB1DC319784A5DFD692E /* HLSAsset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAsset.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAsset.h; sourceTree = ""; }; - A4E45EC0F047B3EEE969774F02E6D66E /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; - A56698AC9E049EED42E6D240BA616D7B /* FILEAssetContentProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FILEAssetContentProvider.h; path = SJMediaCacheServer/Core/Asset/FILE/FILEAssetContentProvider.h; sourceTree = ""; }; + A3B931976F43771E70FFA2216B171FB9 /* YYModel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YYModel-prefix.pch"; sourceTree = ""; }; + A40557A96561E21A7370CFE58EFB61B2 /* SJRunLoopTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRunLoopTaskQueue.h; path = SJUIKit/Queues/SJRunLoopTaskQueue.h; sourceTree = ""; }; + A425596A14BE94A416152052726023E3 /* DDData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDData.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDData.h; sourceTree = ""; }; + A464A2B7644E6218CB9713C6FB94E843 /* MCSQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSQueue.h; path = SJMediaCacheServer/Core/Common/MCSQueue.h; sourceTree = ""; }; + A494F52685118B466DB6B1A29EE484BC /* SJFloatSmallViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJFloatSmallViewController.m; path = SJBaseVideoPlayer/Common/Implements/SJFloatSmallViewController.m; sourceTree = ""; }; + A4D912D9B61DEF9951A4918C61615C0D /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; + A4EDA8D0B29FE13E7F1C027D271790FE /* SJFlipTransitionManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFlipTransitionManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJFlipTransitionManagerDefines.h; sourceTree = ""; }; + A55A4ACD89C6716B1A0C2587DF437275 /* MCSURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSURL.m; path = SJMediaCacheServer/Core/Common/MCSURL.m; sourceTree = ""; }; A5AF8DAF56E7DA13007650E986F7780C /* SJVideoPlayerControlMaskView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJVideoPlayerControlMaskView.h; sourceTree = ""; }; - A624A454BB92A5FA5D5B5C347BB1C2B9 /* SJQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJQueue.m; path = SJUIKit/Queues/SJQueue.m; sourceTree = ""; }; - A734C9C7A88FCB2051879B145246A17A /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; - A78E043AF4AB2849F946B81C70738063 /* SJSubtitleItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSubtitleItem.h; path = SJBaseVideoPlayer/Common/Implements/SJSubtitleItem.h; sourceTree = ""; }; - A7A5E1B4349EF495176EB125E4EF09F3 /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; - A7B1D19D59A980ED85586D753954DB0F /* MCSResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSResponse.m; path = SJMediaCacheServer/Core/ProxyServer/MCSResponse.m; sourceTree = ""; }; - A7DA6ADD5A168C4F1BF94A71CC99B181 /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; - A83B0AFF3CD9F7C156207C6BB518C6CE /* SJBarrageQueueController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBarrageQueueController.m; path = SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.m; sourceTree = ""; }; - A85AF5C4D19F0A17BE9821B57E46A220 /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; - A869E4A993F661D3D2915795CE9DA7BE /* SJUTRegexHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTRegexHandler.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTRegexHandler.m; sourceTree = ""; }; - A9097D398AABEAB3E0D1AA8612D4A2CC /* UIScrollView+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/UIKit/UIScrollView+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; - A90D07F9C4C45070DE6EC8EDD779FAFA /* SJBarrageQueueController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBarrageQueueController.h; path = SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.h; sourceTree = ""; }; - A920C1E9883A141A401E23FB148CDBF0 /* SJPageMenuBarSubclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuBarSubclass.h; path = SJUIKit/PageViewController/SJPageMenuBarSubclass.h; sourceTree = ""; }; - A9C3BE7173C734AADF6B9BA8A1E830A9 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; - AA0B7FAFB7D167BBBD4C8CA8089E68E7 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; - AA21471CCAFAE35383EB8ED422FC96A0 /* SJPlaybackListController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackListController.m; path = SJUIKit/PlaybackListController/SJPlaybackListController.m; sourceTree = ""; }; - AA245BD8755BF42C2DF0045BB29D90FB /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; - AAA30465B69981C2EF2DC8DBB22A187D /* MCSAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetManager.m; path = SJMediaCacheServer/Core/Asset/MCSAssetManager.m; sourceTree = ""; }; - AABAAB5D1C26A90E47F65439BBF18DBF /* NSObject+SJObserverHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+SJObserverHelper.m"; path = "SJUIKit/ObserverHelper/NSObject+SJObserverHelper.m"; sourceTree = ""; }; - AADBDBA9F85ED617021FB0C140A8B065 /* HLSAssetParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetParser.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetParser.m; sourceTree = ""; }; - AAF782D2946C9056CA07FFCDA64DACEB /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; - AB54C4DF61CCAB892943990AFC3ED5C6 /* SJRotationManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRotationManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJRotationManagerDefines.h; sourceTree = ""; }; - AB5E9A76F4EC72DFE58A75807D0CC83F /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; - AB67F2E4A3AD486FB2ED48724C4C7C0A /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; - AB76BBD96F1A08F1882FCD504D522386 /* SJSQLite3Logger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3Logger.m; path = SJUIKit/SQLite3/Core/SJSQLite3Logger.m; sourceTree = ""; }; - AC2DC9268758D54B33BDF3713D83FD5C /* NSAttributedString+SJMake.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+SJMake.m"; path = "SJUIKit/AttributesFactory/NSAttributedString+SJMake.m"; sourceTree = ""; }; - AD0D35EEB9E25AE303FBCD6EAD2EE82D /* SJVideoPlayerURLAsset.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayerURLAsset.m; path = SJBaseVideoPlayer/Common/Implements/SJVideoPlayerURLAsset.m; sourceTree = ""; }; - AD1BAC557A4598D0856FD9B642C60651 /* SJSQLite3+FoundationExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+FoundationExtended.h"; path = "SJUIKit/SQLite3/SJSQLite3+FoundationExtended.h"; sourceTree = ""; }; - AD62F12F96599A62BE003992E7393491 /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; - AD7DF0A2721A8C7E652671511C276672 /* SJControlLayerAppearManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJControlLayerAppearManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJControlLayerAppearManagerDefines.h; sourceTree = ""; }; - AE013FC8992535CD4EDD1FE30ACA8D3C /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; - AE0C1A12FD30F5734368969C9D334F83 /* SJPlayerAutoplayConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlayerAutoplayConfig.m; path = SJBaseVideoPlayer/Common/Implements/SJPlayerAutoplayConfig.m; sourceTree = ""; }; - AE6C6681855B19F8F02C858F8F49BABA /* SJUIKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJUIKit-prefix.pch"; sourceTree = ""; }; - AEC56783EAB97E9680566615D2A12113 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + A6338C94112B5C5393405A10DA52FF93 /* UISearchBar+AsyncLoad.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UISearchBar+AsyncLoad.m"; path = "SJUIKit/AsyncLoad/UISearchBar+AsyncLoad.m"; sourceTree = ""; }; + A66CF26FA22E065BF381677F271099E8 /* SJPlaybackListController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackListController.h; path = SJUIKit/PlaybackListController/SJPlaybackListController.h; sourceTree = ""; }; + A6B177DCC541646B642B51293271662C /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + A6E2308FD8E0CFDC694F317C6B4A60D2 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + A70F74AD9D08942F41FC9C36107E24E2 /* SJImagePickerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJImagePickerController.h; path = SJUIKit/Photo/SJImagePickerController.h; sourceTree = ""; }; + A7B1A8BBC3615B8D9B76657122D27CEC /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; + A7E16ECB33BA542FFC82DE0885B81702 /* NSTimer+SJAssetAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTimer+SJAssetAdd.h"; path = "SJBaseVideoPlayer/Common/Foundation/NSTimer+SJAssetAdd.h"; sourceTree = ""; }; + A7E71F4B4770C82C3BC3C290FC76070D /* SJPromptingPopupController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPromptingPopupController.m; path = SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.m; sourceTree = ""; }; + A874CD95A69F2D44AAA5A0CFA9FDCDE4 /* NSObject+SJAsyncLoad.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+SJAsyncLoad.m"; path = "SJUIKit/AsyncLoad/NSObject+SJAsyncLoad.m"; sourceTree = ""; }; + A8CC5D71C7A4E3567E62D4F6D912FB04 /* MCSError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSError.m; path = SJMediaCacheServer/Core/Common/MCSError.m; sourceTree = ""; }; + A9C55BE5D7F9CDE909477792C02D62C2 /* SJAVMediaPlayerLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVMediaPlayerLoader.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLoader.m; sourceTree = ""; }; + AA0B983050AE49D47B49663ABD310E21 /* HTTPConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPConnection.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPConnection.h; sourceTree = ""; }; + AA2EF95B02727250D337361ED0719EBB /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; + AA4207DB15377251DDF233B9204C7022 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; + AA51206D33B3915DCEE140E2C4C2DE30 /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; + AA64DC5170CFE7EBD06BFD2291455BC5 /* NSObject+SJObserverHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+SJObserverHelper.h"; path = "SJUIKit/ObserverHelper/NSObject+SJObserverHelper.h"; sourceTree = ""; }; + AAA6E12AB16A3555DCC97CCD7BCAA94F /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; + AB1DC0BAE3CE904F7184C45EC89324B6 /* YYClassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YYClassInfo.m; path = YYModel/YYClassInfo.m; sourceTree = ""; }; + AC01936A82CA431ED572E08FD91AAB46 /* SJSQLite3TableInfoCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3TableInfoCache.m; path = SJUIKit/SQLite3/Core/SJSQLite3TableInfoCache.m; sourceTree = ""; }; + ACA13AA1F6C290BC8388EA4D2E7106C5 /* SJAsyncLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAsyncLoader.m; path = SJUIKit/AsyncLoad/SJAsyncLoader.m; sourceTree = ""; }; + ACB333095E7506AE56D5C2A4C0356D20 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; + ACEF25214BFF221D8F384D9EFD16AF5F /* HTTPLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPLogging.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPLogging.m; sourceTree = ""; }; + ACF00F5FD86E252DDAFC06977B45A496 /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; + AD55EEB13F947F2307EA51528F44A640 /* HLSAssetContentReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetContentReader.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetContentReader.h; sourceTree = ""; }; + AD5E6A0CE0354FC1D5EF6BE196B204C5 /* MCSLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSLogger.m; path = SJMediaCacheServer/Core/Common/MCSLogger.m; sourceTree = ""; }; + AD6FE5BBD05C9E84C03BFA04BD7A10A7 /* SJPageMenuItemViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuItemViewDefines.h; path = SJUIKit/PageViewController/Core/SJPageMenuItemViewDefines.h; sourceTree = ""; }; + AD9C9A92EC66927937A23BB5B2AB1D20 /* SJGestureControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJGestureControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJGestureControllerDefines.h; sourceTree = ""; }; + AE1BB9EF97E3582F740C953EB6FF1B2E /* SJPlaybackRecordSaveHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackRecordSaveHandler.m; path = SJBaseVideoPlayer/SJPlaybackRecordSaveHandler.m; sourceTree = ""; }; + AE30BD349A6395DD546A92910372A590 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; + AE443D904D27CCDFC8A5A5744CD4393B /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; + AEAB7906EBC279A0421D4A1D79A15D78 /* SJUTRegexHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTRegexHandler.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTRegexHandler.m; sourceTree = ""; }; AEF9BCFEBC35BF8C6AE1F60121AF196D /* SJVideoPlayerResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerResourceLoader.h; path = SJVideoPlayer/ResourceLoader/SJVideoPlayerResourceLoader.h; sourceTree = ""; }; - AF1453B7BE55F5B18EFA4F3ED41BB139 /* HTTPFileResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPFileResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPFileResponse.h; sourceTree = ""; }; - AF1B69B374E5801367E813BF1E50384B /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; - AF2344BB1C2E2338A85466E58BA107F1 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; - AF918B00724632A3D24030DC66D147A3 /* SJRunLoopTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRunLoopTaskQueue.h; path = SJUIKit/Queues/SJRunLoopTaskQueue.h; sourceTree = ""; }; - B08F4D41D62B8A3C8A674DAF4980B486 /* SJPlaybackObservation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackObservation.h; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackObservation.h; sourceTree = ""; }; - B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSDWebImage.a; path = libSDWebImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B0CBAC88DCB985B4C100C5370F9B643B /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; - B1BE88798111F0CBE4D6CAD163724B1B /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; - B1C5CBA4D92F33A3A6F73B234A87BDF3 /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; - B1EBD4B2F92FD222D82BC06FA0A2226C /* SJRouter-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJRouter-dummy.m"; sourceTree = ""; }; - B1F8BE8F62B77BEE0417B2E1B2DD056F /* SJFullscreenPopGesture.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJFullscreenPopGesture.debug.xcconfig; sourceTree = ""; }; - B1FD07D2AA5B91C9591B71770AEF06BB /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; - B2002E1E221F8F47A1355596E2F58E7A /* SJTimerControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJTimerControl.m; path = SJBaseVideoPlayer/Common/Utils/SJTimerControl.m; sourceTree = ""; }; + AF1042C1A05FBAF9D8A9C272A0EEDF4A /* MCSReadwrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSReadwrite.h; path = SJMediaCacheServer/Core/Common/MCSReadwrite.h; sourceTree = ""; }; + AF85BB8468BB41F3B121C35AFAF81515 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; + AFFB3BA820AFA27385483AB38D71F0E3 /* SJMediaCacheServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJMediaCacheServer.m; path = SJMediaCacheServer/SJMediaCacheServer.m; sourceTree = ""; }; + B04D62F9557E4458628188CB6C180B8F /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; + B04DAB6384B8322FB389C4B00605527E /* SJControlLayerAppearManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJControlLayerAppearManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJControlLayerAppearManagerDefines.h; sourceTree = ""; }; + B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SDWebImage; path = libSDWebImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B0D96E3303675B775621BCE46792165D /* SJAVPictureInPictureController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVPictureInPictureController.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVPictureInPictureController.h; sourceTree = ""; }; + B1016335EF8123CE074F486A4E66222D /* NSURLRequest+MCS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLRequest+MCS.m"; path = "SJMediaCacheServer/Core/Common/NSURLRequest+MCS.m"; sourceTree = ""; }; + B105DC39548D51422A70F2EE49DF712A /* SJSubtitlePopupController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSubtitlePopupController.h; path = SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.h; sourceTree = ""; }; + B1DBC6F072831DD044636D140F71FA0F /* UITextField+AsyncLoadImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+AsyncLoadImage.m"; path = "SJUIKit/AsyncLoad/UITextField+AsyncLoadImage.m"; sourceTree = ""; }; + B1FE99CD2EC4BF2D2217FC9A6A5A03D0 /* SJFullscreenPopGesture-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJFullscreenPopGesture-dummy.m"; sourceTree = ""; }; + B24758E8F3E0396D0319CF5BFD3F4301 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; + B253A0F84B00A030DEE1A0E8029620DC /* HLSAssetParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetParser.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetParser.m; sourceTree = ""; }; + B2B25EEB41F406864A4E8DB55F4F4156 /* HTTPErrorResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPErrorResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPErrorResponse.h; sourceTree = ""; }; + B2B44B4BDF38E3CE9D822B92ACD5AE80 /* Pods-SJVideoPlayer_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SJVideoPlayer_Example.debug.xcconfig"; sourceTree = ""; }; B2BB35AC2F935C866372275931017879 /* SJItemTags.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJItemTags.m; sourceTree = ""; }; - B2E6A5F8443EF285015920B4C0DAA0B9 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; - B42CC36848DBFDE075B95EFECCBDF0B3 /* SJBaseCollectionReusableView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseCollectionReusableView.m; path = SJUIKit/Base/SJBaseCollectionReusableView.m; sourceTree = ""; }; + B2E6BFD5A3AD9A62CA3F60188E08D696 /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; + B3113787B1E551FFCFE1405FBAC200A6 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; + B323DC0F75EB89858EEBC8504FBFC846 /* SJDanmakuItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJDanmakuItem.m; path = SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.m; sourceTree = ""; }; + B34AF20E103BA2D6EFEBAB5AA7EA95C1 /* YYModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YYModel.h; path = YYModel/YYModel.h; sourceTree = ""; }; + B3BC1D6C605AF2686C4450D99D12220E /* HLSPrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSPrefetcher.h; path = SJMediaCacheServer/Core/Prefetch/HLSPrefetcher.h; sourceTree = ""; }; B43F6AEB05D31EAE479BDF9288373CB0 /* SJVideoPlayerControlMaskView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJVideoPlayerControlMaskView.m; sourceTree = ""; }; B4459DA15487099BAAF757D68CA71B5E /* SJDraggingObservationDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJDraggingObservationDefines.h; sourceTree = ""; }; - B4497100A41EAC9FDDD470D15800E2CC /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; - B46B408EE59F98E109FFBC2F5BDE355B /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + B46F894CD07A0BC82DF5C72BE6D27C97 /* MCSPrefetcherManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSPrefetcherManager.h; path = SJMediaCacheServer/Core/Prefetch/MCSPrefetcherManager.h; sourceTree = ""; }; + B48C7F907789B8D6421B206F92EC9ED1 /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; B49C9C421A2389B673870CBC0281AFDB /* SJVideoPlayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJVideoPlayer.release.xcconfig; sourceTree = ""; }; - B4ACD57CC82541FFCF0F14992D34D7CE /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + B4B8EF9E3BD2107B30516EF614913F5F /* SJMediaCacheServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJMediaCacheServer.h; path = SJMediaCacheServer/SJMediaCacheServer.h; sourceTree = ""; }; B53ADD5B938712E0D0593A73C5893404 /* SJItemTags.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJItemTags.h; sourceTree = ""; }; B572B89B17997E76D86DEF65F97E3E75 /* SJDraggingProgressPopupView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJDraggingProgressPopupView.m; sourceTree = ""; }; - B60C96F403104D06142B611D6963D851 /* HLSAssetContentProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetContentProvider.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetContentProvider.m; sourceTree = ""; }; - B62903F9E7AD70F3338CB8A5FF12993A /* SJSQLite3+RemoveExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJSQLite3+RemoveExtended.m"; path = "SJUIKit/SQLite3/SJSQLite3+RemoveExtended.m"; sourceTree = ""; }; - B654A0746A7806B9B8983FE7D1D7CC8B /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; + B5C697DA1B9409BF6A3D63699A4C2687 /* Pods-iPadDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-iPadDemo.release.xcconfig"; sourceTree = ""; }; + B60F8FB3816E1B0EB1F333B2FFA54A60 /* SJFullscreenPopGesture-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJFullscreenPopGesture-prefix.pch"; sourceTree = ""; }; + B622C7B0CD999FCA85738007ECBA3EE8 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; B66BAE0E6D2328E826BBB9F6D9B80B34 /* SJVideoPlayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJVideoPlayer.debug.xcconfig; sourceTree = ""; }; - B6E2FF310C032ED137B935B7FC8B4330 /* SJRouteInterceptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRouteInterceptor.m; path = SJRouter/Core/SJRouteInterceptor.m; sourceTree = ""; }; - B7220462914E7A000A0B352185527A06 /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; - B7327C043EC6A08B424124BB68FDD4F1 /* UIView+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/UIKit/UIView+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; + B68517FE741CE3C0D6E9CFF37E5354C7 /* SJUIMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUIMaker.m; path = SJUIKit/UIMaker/SJUIMaker.m; sourceTree = ""; }; + B694757AFB5759988A7BB4DC1448BFE2 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; B753BF6CF4DC76DE0451384BB3FBD3BB /* SJVideoPlayerClipsDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJVideoPlayerClipsDefines.h; sourceTree = ""; }; - B78CC481B2010D487903DBD4C27B4450 /* MCSAssetDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetDefines.h; path = SJMediaCacheServer/Core/Asset/MCSAssetDefines.h; sourceTree = ""; }; - B8008B8E257C51676DF6BA11AC779D21 /* SJBaseVideoPlayerResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseVideoPlayerResourceLoader.m; path = SJBaseVideoPlayer/ResourceLoader/SJBaseVideoPlayerResourceLoader.m; sourceTree = ""; }; - B8403895F07811267DA3E105378CF6AD /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; - B843C4955CAF68E70AC497F5C4C7D3BE /* SJPageMenuBar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuBar.h; path = SJUIKit/PageViewController/SJPageMenuBar.h; sourceTree = ""; }; + B7AD1B5A698AF56C118B1122FF936206 /* GCDAsyncSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GCDAsyncSocket.h; path = Source/GCD/GCDAsyncSocket.h; sourceTree = ""; }; B8489769A9EBE6E7918D0045718DEC1C /* SJClipsResultsControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsResultsControlLayer.h; sourceTree = ""; }; - B888F0C2AEE3BC8D9BAEF322D83988AF /* CocoaAsyncSocket-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CocoaAsyncSocket-dummy.m"; sourceTree = ""; }; - B8C0A063B2E23BFEFF5C539D82E7BB9F /* MCSLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSLogger.h; path = SJMediaCacheServer/Core/Common/MCSLogger.h; sourceTree = ""; }; + B8513F5943988A7CC6C50601DCD57911 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; + B87A582F31D401651EC7316A9D06679E /* SJRotationManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRotationManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJRotationManagerDefines.h; sourceTree = ""; }; + B89B48EEC902B56C99B054A4DCFADF2A /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; + B8B6F78746C176F1ACFEDC1047695E7B /* UIView+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/UIKit/UIView+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; + B8BC6D964C8A96E699E6F11A8E6A672E /* SJPageCollectionView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageCollectionView.m; path = SJUIKit/PageViewController/Core/SJPageCollectionView.m; sourceTree = ""; }; + B8BD0A8BB3AD61C5B7FE5B759A71E7C6 /* HTTPMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPMessage.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPMessage.h; sourceTree = ""; }; + B8BE680DB38638447568CB8401550D3D /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; B8E7871B8BAE5A1A1A0C807BFB361231 /* SJClipsSaveResultToAlbumHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsSaveResultToAlbumHandler.h; sourceTree = ""; }; - BA23D0D59E61B9D05F724343621C6D0E /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; + B9C2E472862E97BC9B1558C851B944F0 /* DDRange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDRange.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDRange.m; sourceTree = ""; }; + B9C3DA9F0611E3675BF0214F7C3F3C6D /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; BAD3305379840B12FF1DF0579050F418 /* SJFloatSmallViewControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJFloatSmallViewControlLayer.h; sourceTree = ""; }; - BAF4DB20F53D2C3A7E33A82E2B2B4490 /* NSString+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/Foundation/NSString+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; BB51895A440BEADFEFD6CDB3E6834716 /* SJVideoPlayer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SJVideoPlayer-prefix.pch"; sourceTree = ""; }; + BB8308C6B88D4323C3EB4DDCEA2156EB /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; BB977543C0A186871E702BFE07F04FE7 /* SJClipsResultShareItemsContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsResultShareItemsContainerView.m; sourceTree = ""; }; - BCEC95E7E4DA772B43DED3A9C8C9D2B7 /* SJPlaybackRecordSaveHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackRecordSaveHandler.h; path = SJBaseVideoPlayer/SJPlaybackRecordSaveHandler.h; sourceTree = ""; }; - BD04EA8132DAAEC3F7DF34B43CD112EE /* SJBaseTableViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseTableViewCell.h; path = SJUIKit/Base/SJBaseTableViewCell.h; sourceTree = ""; }; - BD401691DAE0CEDB5BC4A097E7A1B8CA /* UIViewController+SJPageViewControllerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+SJPageViewControllerExtended.h"; path = "SJUIKit/PageViewController/Core/UIViewController+SJPageViewControllerExtended.h"; sourceTree = ""; }; - BD5D9CA89EC8B7000A0E6A4015253E9C /* HLSAsset.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAsset.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAsset.m; sourceTree = ""; }; - BDEA67717E76B4E870E5D63F2618293A /* SJPlaybackRecordSaveHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackRecordSaveHandler.m; path = SJBaseVideoPlayer/SJPlaybackRecordSaveHandler.m; sourceTree = ""; }; - BDFC910E3706B02800F43A441A61766A /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; - BE6D5C330D250E12CC9DEAC0B4D22846 /* MCSConsts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSConsts.m; path = SJMediaCacheServer/Core/Common/MCSConsts.m; sourceTree = ""; }; - BEDCF9BDDED29D83F3B9ADEFAD25A020 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; - BF6DE3A270BE4CC5B1B9C92CC4938950 /* FILEPrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FILEPrefetcher.m; path = SJMediaCacheServer/Core/Prefetch/FILEPrefetcher.m; sourceTree = ""; }; - BF929E78550F3DA7BC3A21210AE62F23 /* NSFileHandle+MCS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileHandle+MCS.m"; path = "SJMediaCacheServer/Core/Common/NSFileHandle+MCS.m"; sourceTree = ""; }; - BFC72DD279E29F75761B74EE4AD91535 /* SJFlipTransitionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFlipTransitionManager.h; path = SJBaseVideoPlayer/Common/Implements/SJFlipTransitionManager.h; sourceTree = ""; }; - C1267E7FB7A8053544568415B40A58B0 /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; - C15C0D734C9FE703D28D38688B5894D2 /* SJAVPictureInPictureController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVPictureInPictureController.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVPictureInPictureController.m; sourceTree = ""; }; - C15D832134358CC8D7CDD7FDB011EB5C /* SJWatermarkView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJWatermarkView.m; path = SJBaseVideoPlayer/Common/Implements/SJWatermarkView.m; sourceTree = ""; }; - C1763BD877967CEE14201939E0AE2D1B /* SJPlayModelPropertiesObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlayModelPropertiesObserver.m; path = SJBaseVideoPlayer/Common/Implements/SJPlayModelPropertiesObserver.m; sourceTree = ""; }; - C1CDEED96788B91F5975845B4A257DF7 /* KTVCocoaHTTPServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KTVCocoaHTTPServer.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/KTVCocoaHTTPServer.h; sourceTree = ""; }; - C29F3A1666B4FF15FAC165CAD8DE1CA8 /* SJPlayModelPropertiesObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayModelPropertiesObserver.h; path = SJBaseVideoPlayer/Common/Implements/SJPlayModelPropertiesObserver.h; sourceTree = ""; }; + BBEDD54E84A6ECE46A703E888C9271E6 /* SJPlayerViewInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayerViewInternal.h; path = SJBaseVideoPlayer/Common/Implements/SJPlayerViewInternal.h; sourceTree = ""; }; + BBF048FEB9546C91157F01506F53AF35 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; + BC608420CB1A79126EF0764BFD558E2F /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + BC880E9375741C54ED2B5BC668E17B91 /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; + BD36EBA34CDE7B95FAC1BC22A395A705 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; + BDEA0A834299060B79A9CDBE5CBD1532 /* Pods-iPadDemo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-iPadDemo-resources.sh"; sourceTree = ""; }; + BE293C1EF74747F4672B3B9E851C3DC3 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; + BE728778C6EB09C7BC761921BF4D4614 /* NSFileManager+MCS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileManager+MCS.m"; path = "SJMediaCacheServer/Core/Common/NSFileManager+MCS.m"; sourceTree = ""; }; + BE769C0E23563F1AF94278367A6044FD /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; + BE7C176E52D2707EBB49F45F3C786B38 /* YYModel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YYModel-dummy.m"; sourceTree = ""; }; + BE82CBF35CB3E1791F0ED9DC3681AF64 /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; + BED1592BDDDE5C7CA2ACF981283A6A7F /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; + BF5FD3D18077BB39F1C0867600CEA3A3 /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; + BF6D10EBF3B96C6F2D115DBEBF4E9F45 /* HTTPAuthenticationRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPAuthenticationRequest.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPAuthenticationRequest.h; sourceTree = ""; }; + C00EF724D95AB145FDF6C925649488F5 /* SJAppearStateObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAppearStateObserver.m; path = SJUIKit/Base/Core/SJAppearStateObserver.m; sourceTree = ""; }; + C07C580CD43A147229B21D0D1BD93130 /* Pods-SJVideoPlayer_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SJVideoPlayer_Example-resources.sh"; sourceTree = ""; }; + C086016FB7A385F8E657E5AF2789B4C8 /* SJSQLite3+QueryExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJSQLite3+QueryExtended.m"; path = "SJUIKit/SQLite3/SJSQLite3+QueryExtended.m"; sourceTree = ""; }; + C086410D7A42C69D53890ACC96B270C4 /* SJSQLite3+RemoveExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+RemoveExtended.h"; path = "SJUIKit/SQLite3/SJSQLite3+RemoveExtended.h"; sourceTree = ""; }; + C09CC286171F951CB069ADE737041D25 /* SJAVPictureInPictureController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVPictureInPictureController.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVPictureInPictureController.m; sourceTree = ""; }; + C1DB38ED6838C430B6B5CAA401601880 /* SJPlaybackObservation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackObservation.h; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackObservation.h; sourceTree = ""; }; + C2165E986742B6627764AAAF2C9ABDA4 /* MCSAssetUsageLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetUsageLog.h; path = SJMediaCacheServer/Core/Asset/MCSAssetUsageLog.h; sourceTree = ""; }; + C269C70C80619B2CD6E406066A13E9F2 /* HTTPAuthenticationRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPAuthenticationRequest.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPAuthenticationRequest.m; sourceTree = ""; }; + C29310E7B9989F798A056BF13F707CE1 /* SJSQLiteTableModelConstraints.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteTableModelConstraints.h; path = SJUIKit/SQLite3/Core/SJSQLiteTableModelConstraints.h; sourceTree = ""; }; + C2C0337106C1162DBA4A5D6A611609F9 /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; + C2D97547C0E93B7F947F73E764586ADD /* DDNumber.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDNumber.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDNumber.m; sourceTree = ""; }; + C2DD493F1CE7D8D7F2335DE28EAACCAA /* UIScrollView+SJRefreshAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+SJRefreshAdd.m"; path = "SJUIKit/Refresh/UIScrollView+SJRefreshAdd.m"; sourceTree = ""; }; C2F0FA4F98A998A5819D89E2A49A386F /* SJDraggingProgressPopupViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJDraggingProgressPopupViewDefines.h; sourceTree = ""; }; - C36854FC37D08E860DABC7FC72498F79 /* MCSAssetContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetContent.m; path = SJMediaCacheServer/Core/Asset/MCSAssetContent.m; sourceTree = ""; }; - C38A805FB2AA57E1DD1AF1E5644E7E6E /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; - C3C353770B2032844233173540079D9F /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; - C3F20CE8E68E4A6746D284A3AA320086 /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; - C40D24208B6143F821EAA152E001259E /* HLSAssetReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetReader.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetReader.h; sourceTree = ""; }; - C46DCD53C4E62C5952BF9060F6BF3EB9 /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; - C5D14AADE1A44E61B43638CC91B29759 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; - C5D8271283CC6535C8FD1A63FAB3947A /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + C340FDA18F8A115F68699CB5CF6AD66E /* SJPlayerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayerView.h; path = SJBaseVideoPlayer/Common/Implements/SJPlayerView.h; sourceTree = ""; }; + C45253F394120D4F418467035EAC4660 /* MCSConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSConfiguration.h; path = SJMediaCacheServer/Core/Asset/MCSConfiguration.h; sourceTree = ""; }; + C5171D1C6F88AB024988EC8EAFD42E94 /* CALayer+SJBaseVideoPlayerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+SJBaseVideoPlayerExtended.h"; path = "SJBaseVideoPlayer/Common/UIKit/CALayer+SJBaseVideoPlayerExtended.h"; sourceTree = ""; }; C62EDB7CFD26DE1622FEE087F7181150 /* SJClipsCommonViewLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJClipsCommonViewLayer.h; sourceTree = ""; }; - C6722082297D35CE17D0F096DC4C3737 /* SJVideoPlayerURLAssetPrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerURLAssetPrefetcher.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAssetPrefetcher.h; sourceTree = ""; }; - C6CEDCFE73E6F6B35149526A5F2C1181 /* UIImageView+AsyncLoadImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AsyncLoadImage.h"; path = "SJUIKit/AsyncLoad/UIImageView+AsyncLoadImage.h"; sourceTree = ""; }; - C6DEA52011B5A5BE5BF8BC292D60E4B4 /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; - C6EB44D4E64707DFDCF66BFB471D0B61 /* MCSAssetUsageLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetUsageLog.m; path = SJMediaCacheServer/Core/Asset/MCSAssetUsageLog.m; sourceTree = ""; }; - C709A6F22DB4CCD150E48276A147D8AB /* UIViewController+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/UIKit/UIViewController+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; - C71FDA590C90713AD940014C7CFC208D /* HTTPAsyncFileResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HTTPAsyncFileResponse.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPAsyncFileResponse.m; sourceTree = ""; }; - C7FC6C2563CA16A5F15DB1B070F322E1 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; - C88E0918856389B8BF071F10147E8727 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; + C63ADFDBDE9984EA3113FEAE28ABBDB4 /* SJBaseTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseTableViewCell.m; path = SJUIKit/Base/SJBaseTableViewCell.m; sourceTree = ""; }; + C64F603B6421CEA1A629B31E54F7B5B9 /* SJSQLite3Condition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3Condition.m; path = SJUIKit/SQLite3/Core/SJSQLite3Condition.m; sourceTree = ""; }; + C6E5309BA8377273556B14C367A7AADF /* SJObjectContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJObjectContainer.h; path = SJUIKit/Other/SJObjectContainer.h; sourceTree = ""; }; + C6F8A6786416D17D5765D53869E38CE9 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; + C71F114DC93ECF0A0C8D7BDFBDDE346C /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; + C7777DA98834F0A5D11CC0933CF18A8D /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h"; path = "SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h"; sourceTree = ""; }; + C832A3E0D797D1954A47F05FF379ADB8 /* SJCornerMask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJCornerMask.h; path = SJUIKit/CornerMask/SJCornerMask.h; sourceTree = ""; }; + C83FEE136491E56225B8DE5E57B660A6 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; C8AA2A253B37DCFC1A4FA7B63395CE6D /* SJClipsGIFRecordsControlLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsGIFRecordsControlLayer.m; sourceTree = ""; }; - C8CC50B40F3AE8BF712478DEE455A533 /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; - C8F370FD117F2B84206D33710DD33CFD /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; + C8CD95FEB080E848DA806F19EA5D45D6 /* SJVideoPlayerPresentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoPlayerPresentView.m; path = SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.m; sourceTree = ""; }; C90861117464D3763C168EA4023C6A0F /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - C9ABD9B8718153A189B30850D3BC1E18 /* DDNumber.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDNumber.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDNumber.h; sourceTree = ""; }; - CA3B5AA51D8652925F88F7DEEA6BD494 /* NSFileHandle+MCS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileHandle+MCS.h"; path = "SJMediaCacheServer/Core/Common/NSFileHandle+MCS.h"; sourceTree = ""; }; - CA67125CDE8DA05C96780604169151CF /* SJVideoPlayerPlayStatusDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerPlayStatusDefines.h; path = SJBaseVideoPlayer/Common/Const/SJVideoPlayerPlayStatusDefines.h; sourceTree = ""; }; + C93F520990FC9742CB6E4B26A7FD3CF8 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; + C9ECF9FE81C7D47848CDC8FE75FF47C9 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; + C9F930437D8B7167E9E19298B006102B /* MultipartMessageHeaderField.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MultipartMessageHeaderField.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartMessageHeaderField.h; sourceTree = ""; }; + C9FA8B0EADE926499067630A39F8DD60 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + CA2BCA4320480C03C5B508F285953B52 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; + CA3CE244DB7B414821DB7453782583ED /* SJUIKit-68d28646.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SJUIKit-68d28646.release.xcconfig"; sourceTree = ""; }; + CA5AA58BD98EA3A524DCEFC10FB8DAC1 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; + CA9A809B44D5FA678D1449340EADDDF3 /* SJTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJTaskQueue.m; path = SJUIKit/Queues/SJTaskQueue.m; sourceTree = ""; }; CABA7896EC27F5C017ADF1FD1D1BE108 /* SJLoadingView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJLoadingView.h; sourceTree = ""; }; - CACA716977F4870EFB905286F25D42BD /* SJBaseVideoPlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseVideoPlayer.h; path = SJBaseVideoPlayer/SJBaseVideoPlayer.h; sourceTree = ""; }; + CAEBB84CF6AC4F1B7E6952F15006A827 /* FILEAssetContentProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FILEAssetContentProvider.h; path = SJMediaCacheServer/Core/Asset/FILE/Private/FILEAssetContentProvider.h; sourceTree = ""; }; CAF9D4361B5E5193B568818DF8A5A541 /* SJClipsButtonContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsButtonContainerView.m; sourceTree = ""; }; - CB29202A124A25AF6A537E5AC2074CFC /* SJBaseViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseViewController.h; path = SJUIKit/Base/SJBaseViewController.h; sourceTree = ""; }; - CC724F0BCB5903A32DC068916092CF89 /* Pods-SJVideoPlayer_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SJVideoPlayer_Example-acknowledgements.plist"; sourceTree = ""; }; - CCAB306467B0C32EFFB6F0C73B830573 /* SJTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJTaskQueue.h; path = SJUIKit/Queues/SJTaskQueue.h; sourceTree = ""; }; - CCADD81376F095067E6122F10F6889E1 /* UIScrollView+SJBaseVideoPlayerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+SJBaseVideoPlayerExtended.m"; path = "SJBaseVideoPlayer/Common/UIKit/UIScrollView+SJBaseVideoPlayerExtended.m"; sourceTree = ""; }; - CCF3B211701FA0C5E40980C3219709F8 /* HTTPLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPLogging.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPLogging.h; sourceTree = ""; }; - CEBCA422E38F38F664A5F5BB55ECDC02 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; - CF4D537D00093CFE837E4287C7717F5E /* SJUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUIKit.h; path = SJUIKit/SJUIKit.h; sourceTree = ""; }; + CB0A231B928E08BB94AB7F14DF7C7C18 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; + CB18C8ACCF5E92C528AE5CF228B6BE98 /* SJUIKit-98d45660 */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "SJUIKit-98d45660"; path = "libSJUIKit-98d45660.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + CB2388A9426B0E77CAB5C90E3A157B25 /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; + CB89A91AC4069F04F4138EBA2A4B4819 /* SJSQLite3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3.m; path = SJUIKit/SQLite3/SJSQLite3.m; sourceTree = ""; }; + CB98C5A7150D8171F4DF6F27A8D1063F /* SJSQLiteCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteCore.h; path = SJUIKit/SQLite3/Core/SJSQLiteCore.h; sourceTree = ""; }; + CBE828BDCA1DAABC0E0EAD2A09093FEB /* SJTimerControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJTimerControl.m; path = SJBaseVideoPlayer/Common/Utils/SJTimerControl.m; sourceTree = ""; }; + CBECACBF5E53DE58E06DB22750C29FDF /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; + CC879AF08AEC9192A7C2B154F006BE2A /* SJApplicationInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJApplicationInfo.h; path = SJUIKit/Other/SJApplicationInfo.h; sourceTree = ""; }; + CD040FC6F5801B9A701C050A4D8B0755 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + CD90946CD81C4BD2C3C3854D4A4E1547 /* NSDate+SJAdded.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDate+SJAdded.h"; path = "SJUIKit/Date/NSDate+SJAdded.h"; sourceTree = ""; }; + CE317C4F6961E1CB541CC7858AEDFD9E /* SJUTUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTUtils.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTUtils.m; sourceTree = ""; }; + CF2996A21969460E527712603B99F3D8 /* SJTextPopupControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJTextPopupControllerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJTextPopupControllerDefines.h; sourceTree = ""; }; CF71BD8DBCA3A0D7BBB352B44D69F4B4 /* SJLoadFailedControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJLoadFailedControlLayer.h; sourceTree = ""; }; + CFD62E7DACDE23B29F11F6A5B35C9DC1 /* SJBaseVideoPlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseVideoPlayer.h; path = SJBaseVideoPlayer/SJBaseVideoPlayer.h; sourceTree = ""; }; + CFEB801AD61A48F35001D499112E4DE3 /* SJControlLayerAppearStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJControlLayerAppearStateManager.m; path = SJBaseVideoPlayer/Common/Implements/SJControlLayerAppearStateManager.m; sourceTree = ""; }; + D014B242EACB0879827859EDCE96AF29 /* SJUTUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTUtils.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTUtils.h; sourceTree = ""; }; D0253F24C0C0FAB8E507421CB162D2C6 /* SJVideoPlayerURLAsset+SJControlAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SJVideoPlayerURLAsset+SJControlAdd.m"; sourceTree = ""; }; - D026338B8715B34F9A1A464CCB0FCD7A /* YYModel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YYModel-dummy.m"; sourceTree = ""; }; D038BED15C69F6B4B88BFF462D3E440F /* SJLoadingViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJLoadingViewDefines.h; sourceTree = ""; }; - D0D6F816AE6B30D489F9825771CAA629 /* UIImageView+AsyncLoadImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AsyncLoadImage.m"; path = "SJUIKit/AsyncLoad/UIImageView+AsyncLoadImage.m"; sourceTree = ""; }; - D1934FF36DD8AE86F62842E7C0F037CC /* HTTPAuthenticationRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPAuthenticationRequest.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/HTTPAuthenticationRequest.h; sourceTree = ""; }; + D0F927166E75A1D3D765B9E5C8941271 /* MultipartFormDataParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MultipartFormDataParser.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartFormDataParser.h; sourceTree = ""; }; + D147B945EEA5271B3E1E2A441DDCB21D /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; + D16FD2E64D8429B2FF550D6B264F8771 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; + D19DD8F57A0F9CA56A3D28D9D2F590C0 /* AVAsset+SJAVMediaExport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "AVAsset+SJAVMediaExport.h"; path = "SJBaseVideoPlayer/AVPlayer/Core/AVAsset+SJAVMediaExport.h"; sourceTree = ""; }; D1ABEDA1C56F54F2F00CD316F291413B /* SJVideoPlayerClipsGeneratedResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJVideoPlayerClipsGeneratedResult.m; sourceTree = ""; }; D1D8A74AB5B7C8EEC5413809FBA48D2B /* SJDraggingProgressPopupView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJDraggingProgressPopupView.h; sourceTree = ""; }; - D258A3BB9BC3F9D6BABEC75187E30AF3 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; + D1D91D55B891A868229903447F9AE57E /* MCSDownload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSDownload.h; path = SJMediaCacheServer/Core/Download/MCSDownload.h; sourceTree = ""; }; D2A019A0AD97FD48BD74D7F7A8760884 /* SJEdgeControlLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJEdgeControlLayer.h; sourceTree = ""; }; - D2E7D1E3701CBD75BF3C47850F6ECE70 /* SJViewControllerManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJViewControllerManager.h; path = SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.h; sourceTree = ""; }; + D35085DEC9092E6318956FEA656ACCBF /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; + D3DEC4F18D607D9000086A2149510CC4 /* CocoaAsyncSocket.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CocoaAsyncSocket.release.xcconfig; sourceTree = ""; }; + D3EC0A73AD1368608343B165C1510E72 /* SJBaseVideoPlayerResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseVideoPlayerResourceLoader.h; path = SJBaseVideoPlayer/ResourceLoader/SJBaseVideoPlayerResourceLoader.h; sourceTree = ""; }; D409DF0227B42F346E15A0AA1B6A1737 /* SJScrollingTextMarqueeView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJScrollingTextMarqueeView.m; sourceTree = ""; }; - D444CDB611C89A31497695905D2BA023 /* libSJRouter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSJRouter.a; path = libSJRouter.a; sourceTree = BUILT_PRODUCTS_DIR; }; - D44A5841123BE08D33F9E792F5D1494C /* CocoaAsyncSocket-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CocoaAsyncSocket-prefix.pch"; sourceTree = ""; }; - D513DA4F5D2248AB231EE0D9A9BDCC34 /* NSObject+YYModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+YYModel.h"; path = "YYModel/NSObject+YYModel.h"; sourceTree = ""; }; - D58A4E6649B25E04F65C4616A9A98452 /* SJPageViewControllerItemCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageViewControllerItemCell.m; path = SJUIKit/PageViewController/Core/SJPageViewControllerItemCell.m; sourceTree = ""; }; - D600FC885579116BDB13CB8416626502 /* NSObject+SJObserverHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+SJObserverHelper.h"; path = "SJUIKit/ObserverHelper/NSObject+SJObserverHelper.h"; sourceTree = ""; }; - D631794F6FA1377BD1201E1523AD7286 /* SJStatusBarManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJStatusBarManager.h; path = SJUIKit/Base/Core/SJStatusBarManager.h; sourceTree = ""; }; - D658DEDDFE0E7D6CE06FDAF159A53987 /* SJBaseVideoPlayer+TestLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJBaseVideoPlayer+TestLog.m"; path = "SJBaseVideoPlayer/SJBaseVideoPlayer+TestLog.m"; sourceTree = ""; }; - D67E679C82D397C13ABFA9E517790895 /* SJPageCollectionView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageCollectionView.h; path = SJUIKit/PageViewController/Core/SJPageCollectionView.h; sourceTree = ""; }; - D6B31DBF7441C3F380AB8352038D06BD /* MCSError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSError.h; path = SJMediaCacheServer/Core/Common/MCSError.h; sourceTree = ""; }; - D6C014522BC8DCBFE85BE88E0F4CFDDE /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; - D6FD9959DAD88E2F3AAA16AE0BFA62BC /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; - D759FC719C17D96C649DA84ED5860481 /* HLSAssetReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetReader.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetReader.m; sourceTree = ""; }; - D76E29F1761EAA5FCFF285BA160F4650 /* SJRouteHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouteHandler.h; path = SJRouter/Core/SJRouteHandler.h; sourceTree = ""; }; + D4185252FDC8BB1CFF74E1F824D52503 /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; + D444CDB611C89A31497695905D2BA023 /* SJRouter */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SJRouter; path = libSJRouter.a; sourceTree = BUILT_PRODUCTS_DIR; }; + D48C72794A8445AC8A953622B2C8E5E2 /* MCSInterfaces.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSInterfaces.h; path = SJMediaCacheServer/Core/Common/MCSInterfaces.h; sourceTree = ""; }; + D4A8624B6929399B4C3D8104912C77F0 /* SJAttributesFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAttributesFactory.h; path = SJUIKit/AttributesFactory/SJAttributesFactory.h; sourceTree = ""; }; + D4B168FD06B7B160BAF6224BDF3B02F4 /* SJFitOnScreenManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJFitOnScreenManager.m; path = SJBaseVideoPlayer/Common/Implements/SJFitOnScreenManager.m; sourceTree = ""; }; + D4CA17A1DB3AAE17905F0B7E1AECDAB7 /* SJPageMenuBarSubclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuBarSubclass.h; path = SJUIKit/PageViewController/SJPageMenuBarSubclass.h; sourceTree = ""; }; + D548AE066A6319627060FAD6F400B71D /* SJUIKitAttributesDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUIKitAttributesDefines.h; path = SJUIKit/AttributesFactory/UIKitText/SJUIKitAttributesDefines.h; sourceTree = ""; }; + D5A1A8F0C455FAF2D4ACBFC6B0B6C51E /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; + D5DAB1AF60F4D1217620A63ADAB12895 /* UIViewController+SJPageViewControllerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+SJPageViewControllerExtended.h"; path = "SJUIKit/PageViewController/Core/UIViewController+SJPageViewControllerExtended.h"; sourceTree = ""; }; + D617643EF140F995BB8416E19E00E895 /* SJVideoPlayerPresentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerPresentView.h; path = SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.h; sourceTree = ""; }; + D68900AF66FEA1436B32625BB529A949 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + D6D989ABD04CED73C0494A2995727C20 /* SJUTRangeHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUTRangeHandler.m; path = SJUIKit/AttributesFactory/UIKitText/SJUTRangeHandler.m; sourceTree = ""; }; + D7C55E7EB583D28B995C9306D61B3EAE /* SJVideoDefinitionSwitchingInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJVideoDefinitionSwitchingInfo.m; path = SJBaseVideoPlayer/Common/Implements/SJVideoDefinitionSwitchingInfo.m; sourceTree = ""; }; D7EE22B61151054A1453DEE032661281 /* SJClipsResultShareItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsResultShareItem.m; sourceTree = ""; }; - D7EF4909A3DD134C7D0BC7A4C48DA45C /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; - D84D697A647E1257202C422EC5BF23C2 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; - D850D5C1B8B698E724D199AD8467FD73 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; - D866F5DD36C0551B2383B20B4B7A7BEC /* UIViewController+SJPageViewControllerExtended.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+SJPageViewControllerExtended.m"; path = "SJUIKit/PageViewController/Core/UIViewController+SJPageViewControllerExtended.m"; sourceTree = ""; }; - D873506980AB2892EA851537007F570F /* SJAVMediaPlayerLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVMediaPlayerLoader.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLoader.h; sourceTree = ""; }; - D87E4C611585ED036A3D17669214DA2C /* SJDeviceVolumeAndBrightnessManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJDeviceVolumeAndBrightnessManager.m; path = SJBaseVideoPlayer/Common/Implements/SJDeviceVolumeAndBrightnessManager.m; sourceTree = ""; }; - D8D6D1752FA32001E1CE597ADC95739C /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + D87D7D90010ADA8A499D9DC29C613929 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; + D8ECD054B30A3197AB846A5D3AD9CD30 /* SJRouteInterceptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouteInterceptor.h; path = SJRouter/Core/SJRouteInterceptor.h; sourceTree = ""; }; + D8FEBFF92B98E6D32E8E26D9623C1C2C /* SJPageMenuItemView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPageMenuItemView.h; path = SJUIKit/PageViewController/Core/SJPageMenuItemView.h; sourceTree = ""; }; D971A07322B9048E4BCEDBAC83800EAD /* SJVideoPlayerConfigurations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJVideoPlayerConfigurations.h; sourceTree = ""; }; - D9B895DFCCB644F385AB56C195DD04F8 /* SJUIKitTextMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJUIKitTextMaker.m; path = SJUIKit/AttributesFactory/UIKitText/SJUIKitTextMaker.m; sourceTree = ""; }; - D9C2C8DA0B3BA41485EC0E4481AC08CF /* SJPlaybackListControllerInterfaces.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackListControllerInterfaces.h; path = SJUIKit/PlaybackListController/SJPlaybackListControllerInterfaces.h; sourceTree = ""; }; - DA109D9BC90DF16C1874B4370EB71641 /* SJMediaCacheServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJMediaCacheServer.m; path = SJMediaCacheServer/SJMediaCacheServer.m; sourceTree = ""; }; - DA3DEF04B15CB1CAFD4E00FED9C0FA34 /* SJSQLite3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3.h; path = SJUIKit/SQLite3/SJSQLite3.h; sourceTree = ""; }; - DA5E0550E828BB81117BDC1606627DC2 /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; - DB46681174303E1A7F435AC549465297 /* SJPageMenuBarScrollIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageMenuBarScrollIndicator.m; path = SJUIKit/PageViewController/Core/SJPageMenuBarScrollIndicator.m; sourceTree = ""; }; + D9FACF7BC4F3DA200F1F388E0CC43D4E /* SJCornerMask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJCornerMask.m; path = SJUIKit/CornerMask/SJCornerMask.m; sourceTree = ""; }; + DA14265683AEBD8AB86A22DA0CFFD33B /* SJRotationManager_4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRotationManager_4.m; path = SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.m; sourceTree = ""; }; DB600A2B5CA714871D134C967B74BAB5 /* SJVideoPlayerClipsConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJVideoPlayerClipsConfig.m; sourceTree = ""; }; - DB633C9DCA3BA68A2696BEDB1CD6D286 /* MCSResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSResponse.h; path = SJMediaCacheServer/Core/ProxyServer/MCSResponse.h; sourceTree = ""; }; - DB90184640F959245C0E031EA239C96B /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; - DC41B74943A4C66222331DD415698B1E /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; - DC487B87FE6176797CCB88066897F735 /* SJAVMediaPlaybackController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVMediaPlaybackController.m; path = SJBaseVideoPlayer/AVPlayer/SJAVMediaPlaybackController.m; sourceTree = ""; }; - DC9C3859D2739FC120237FF8C01DABB5 /* UILabel+AsyncLoad.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+AsyncLoad.m"; path = "SJUIKit/AsyncLoad/UILabel+AsyncLoad.m"; sourceTree = ""; }; - DCA9BCFC6492FD71B840A871ED332581 /* MCSDownload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSDownload.m; path = SJMediaCacheServer/Core/Download/MCSDownload.m; sourceTree = ""; }; - DD2C0DD991A93EFB15FCCC3831E190D6 /* SJVideoPlayerPresentViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJVideoPlayerPresentViewDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPresentViewDefines.h; sourceTree = ""; }; - DD309E05395EA9C6523F0B618D7E6C7F /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; - DD35D5B4D1B5350A9A4894B8B0185A35 /* SJPlaybackObservation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackObservation.m; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackObservation.m; sourceTree = ""; }; - DDA680496F782C0504B07CED4BC71F02 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; - DE91C0CC3B6C322C365E8506ACCA0656 /* SJResidentThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJResidentThread.h; path = SJUIKit/Thread/SJResidentThread.h; sourceTree = ""; }; + DDA0D66CF6AE118C10B318FA71A0F921 /* MCSDownload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSDownload.m; path = SJMediaCacheServer/Core/Download/MCSDownload.m; sourceTree = ""; }; + DEC1C1260AFE7C4C1D79AFCDCF4BE44D /* SJPlayModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlayModel.m; path = SJBaseVideoPlayer/Common/Implements/SJPlayModel.m; sourceTree = ""; }; + DEF1D566576D65204662FA2FFFC7B2D4 /* SJUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUIKit.h; path = SJUIKit/SJUIKit.h; sourceTree = ""; }; + DF186A960A18E6AEAA960DEE183217DB /* SJFloatSmallViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFloatSmallViewController.h; path = SJBaseVideoPlayer/Common/Implements/SJFloatSmallViewController.h; sourceTree = ""; }; DF2061CB493F5AAC1E6EFFD6764B21D9 /* SJControlLayerIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJControlLayerIdentifiers.m; sourceTree = ""; }; - DF21D93DAE55278A7F01716A00EBA719 /* SJUIKitAttributesDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUIKitAttributesDefines.h; path = SJUIKit/AttributesFactory/UIKitText/SJUIKitAttributesDefines.h; sourceTree = ""; }; - DFEE41876F3F9F2A5F2DB9883159B904 /* UIColor+SJPageMenuBarExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SJPageMenuBarExtended.h"; path = "SJUIKit/PageViewController/Core/UIColor+SJPageMenuBarExtended.h"; sourceTree = ""; }; - E09FFACD11D512B1EACB621B8EF6D395 /* SJSQLite3+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+Private.h"; path = "SJUIKit/SQLite3/SJSQLite3+Private.h"; sourceTree = ""; }; - E22DE067B4419C2815B2857F8E539DFE /* DDData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDData.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDData.h; sourceTree = ""; }; - E28AE61AF1C867E3372A91A8977D0E7F /* HLSAssetContentReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetContentReader.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetContentReader.h; sourceTree = ""; }; - E33199CE1C85492B545A39D30086171B /* SJFullscreenPopGesture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFullscreenPopGesture.h; path = SJFullscreenPopGesture/ObjC/SJFullscreenPopGesture.h; sourceTree = ""; }; - E3A0F89B3617EC017786DED5F77F572E /* DDNumber.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDNumber.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDNumber.m; sourceTree = ""; }; - E3E049CCBC9F70981B1B1D7211E24378 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; - E4026E5D8BC3C71638E3BBB1A4995389 /* SJFullscreenPopGesture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJFullscreenPopGesture.m; path = SJFullscreenPopGesture/ObjC/SJFullscreenPopGesture.m; sourceTree = ""; }; - E4394D759F954D2780A05C8B803A62BD /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; - E460D5B0416D36F66EE8EC89E5D2FA0A /* libYYModel.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libYYModel.a; path = libYYModel.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E49D6D248DD1CEE584E6776B9164A1B2 /* libMJRefresh.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMJRefresh.a; path = libMJRefresh.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E4DA2B3045349477790AF7CEB8D643D5 /* SJPresentationQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPresentationQueue.m; path = SJUIKit/Queues/SJPresentationQueue.m; sourceTree = ""; }; - E4FF71E5CA80528882C87C59F23F19A9 /* YYModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YYModel.h; path = YYModel/YYModel.h; sourceTree = ""; }; - E54512C7DF7AB5BC5741553F177A8D47 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJVideoPlayerURLAsset+SJSubtitlesAdd.h"; path = "SJBaseVideoPlayer/Common/Implements/SJVideoPlayerURLAsset+SJSubtitlesAdd.h"; sourceTree = ""; }; - E548BE78DD83090F02AAB4FB8B900692 /* SJMediaPlaybackController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJMediaPlaybackController.m; path = SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.m; sourceTree = ""; }; - E55058F9A47D7D11231197776451D4EE /* SJBaseProtocols.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseProtocols.h; path = SJUIKit/Base/Core/SJBaseProtocols.h; sourceTree = ""; }; + DF64F54BE9707D539DCA8EB0200D0AB1 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; + E0228FE59233070109F2403886FA2923 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; + E02E185E726FBC23B2B1CCF797DC6E70 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; + E0425B85618A97714B77D62C9E95ED8C /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJVideoPlayerURLAsset+SJSubtitlesAdd.m"; path = "SJBaseVideoPlayer/Common/Implements/SJVideoPlayerURLAsset+SJSubtitlesAdd.m"; sourceTree = ""; }; + E070A6F19A527F683B6AB640E9C7C635 /* MCSRootDirectory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSRootDirectory.h; path = SJMediaCacheServer/Core/Common/MCSRootDirectory.h; sourceTree = ""; }; + E07A8A9A87DD31233CBFAA6400D21A52 /* MCSDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSDatabase.h; path = SJMediaCacheServer/Core/Common/MCSDatabase.h; sourceTree = ""; }; + E0A0848641F1F3FF0F0F9C148D60FDF5 /* MCSURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSURL.h; path = SJMediaCacheServer/Core/Common/MCSURL.h; sourceTree = ""; }; + E192C42904EA1C4D9AB277FE7DA04393 /* SJPageMenuItemView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageMenuItemView.m; path = SJUIKit/PageViewController/Core/SJPageMenuItemView.m; sourceTree = ""; }; + E1D2874CC45800F2F322E4D97BFF7CE4 /* SJAVMediaPlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVMediaPlayer.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayer.h; sourceTree = ""; }; + E1D93EA05B30E8571E132A25B6E7AE5E /* HTTPFileResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPFileResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPFileResponse.h; sourceTree = ""; }; + E222CDBE9F7EB33781D6BD36AEDA6E83 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; + E23D957C728AC6A6439217247DCA8177 /* SJSQLite3TableClassCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3TableClassCache.h; path = SJUIKit/SQLite3/Core/SJSQLite3TableClassCache.h; sourceTree = ""; }; + E30E45269F6FAF0C1697F43369942140 /* SJTextPopupController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJTextPopupController.h; path = SJBaseVideoPlayer/Common/Implements/SJTextPopupController.h; sourceTree = ""; }; + E460D5B0416D36F66EE8EC89E5D2FA0A /* YYModel */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = YYModel; path = libYYModel.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = MJRefresh; path = libMJRefresh.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E4CCE76C54CD479F0A58E12561481D1E /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; + E4D7C024E903D1D9220D28006E766910 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; + E50F887059AABC45445CD293A77BCD62 /* MCSConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSConfiguration.m; path = SJMediaCacheServer/Core/Asset/MCSConfiguration.m; sourceTree = ""; }; + E53769C3419DB9DFD8526B52FE0DB92E /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; + E541C966B4FD35945CE807830917B061 /* MCSProxyTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSProxyTask.m; path = SJMediaCacheServer/Core/ProxyServer/MCSProxyTask.m; sourceTree = ""; }; E5646BC6E9398DFB6A748933FAAC8590 /* SJButtonProgressSlider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJButtonProgressSlider.h; sourceTree = ""; }; - E5705694A76194E48078BD26BE9639C9 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; - E575F65CCD8DCEFCF4C12204CE08F741 /* SJCornerMask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJCornerMask.m; path = SJUIKit/CornerMask/SJCornerMask.m; sourceTree = ""; }; - E5799EEDE9580630B0422D4E3D14B6C1 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; - E59BCAC42A771576A49D1A091D4B70BB /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; - E5AD19299EF9DE6F3485B90E2BAF1855 /* SJSQLiteTableInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteTableInfo.h; path = SJUIKit/SQLite3/Core/SJSQLiteTableInfo.h; sourceTree = ""; }; + E5B314324AF6556A32CCFF41A79A65F4 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; E5CBD65134933DF5F54DA8FF80EBC313 /* SJClipsVideoCountDownView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsVideoCountDownView.m; sourceTree = ""; }; - E628037044AE6530E5BE7298EE76D5F4 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; - E634C9226C2C52DEE1DC414A0DFB4220 /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; - E6403DFC0F53A5077D7572BB323B296D /* SJAsyncLoad.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAsyncLoad.h; path = SJUIKit/AsyncLoad/SJAsyncLoad.h; sourceTree = ""; }; - E65CBD93BBCF1B30961612388455C464 /* SJPlayModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlayModel.m; path = SJBaseVideoPlayer/Common/Implements/SJPlayModel.m; sourceTree = ""; }; - E69B7C7835764A92E5B7E40EA8EA1262 /* NSObject+YYModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+YYModel.m"; path = "YYModel/NSObject+YYModel.m"; sourceTree = ""; }; - E6E451878DCA37FDBABA8A55E43BBD3E /* SJBaseTableViewHeaderFooterView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseTableViewHeaderFooterView.h; path = SJUIKit/Base/SJBaseTableViewHeaderFooterView.h; sourceTree = ""; }; - E73231902F9415D919F84ECE75B42D51 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; - E7552C34658825C1FE0E7CDC4D0D72F4 /* SJPlayerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayerView.h; path = SJBaseVideoPlayer/Common/Implements/SJPlayerView.h; sourceTree = ""; }; - E78F872AE11C12AF729FA9E877F45094 /* MCSContents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSContents.m; path = SJMediaCacheServer/Core/Download/MCSContents.m; sourceTree = ""; }; - E79CC6C95EDB8D2D558EB4B31142BFB1 /* SJSQLite3+TableExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJSQLite3+TableExtended.h"; path = "SJUIKit/SQLite3/SJSQLite3+TableExtended.h"; sourceTree = ""; }; - E84AB23B1E40E8B79EA02BB89B24B902 /* MCSContents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSContents.h; path = SJMediaCacheServer/Core/Download/MCSContents.h; sourceTree = ""; }; - E8715BA9BB9E3615E849E55416EC0279 /* NSObject+SJAsyncLoad.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+SJAsyncLoad.m"; path = "SJUIKit/AsyncLoad/NSObject+SJAsyncLoad.m"; sourceTree = ""; }; - E92E7FCF3175DF867868563AF978025D /* HLSAssetTsContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetTsContent.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetTsContent.m; sourceTree = ""; }; - E951DDE18886DEEF046EBC796567EAAF /* GCDAsyncSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GCDAsyncSocket.m; path = Source/GCD/GCDAsyncSocket.m; sourceTree = ""; }; - EA02E1AFA77B567CD9786B65B7630888 /* HLSAssetContentProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetContentProvider.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetContentProvider.h; sourceTree = ""; }; - EA65AA42230D624F4B181C423FDFB63E /* SJBaseVideoPlayerResources.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = SJBaseVideoPlayerResources.bundle; path = SJBaseVideoPlayer/ResourceLoader/SJBaseVideoPlayerResources.bundle; sourceTree = ""; }; - EAAC26D5E47AFC671437F5A0F4E969DD /* DDRange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DDRange.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDRange.m; sourceTree = ""; }; - EADE370EC709344632A59499BCC2E9D5 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; - EB8D410FCA0272B802042B0C97F2CBCA /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; - EBC53ECC031973A232E37A8F4A2A5939 /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; - EC28F404C4C8C666794FEDE499FC2FFC /* SJPlaybackHistoryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPlaybackHistoryController.m; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackHistoryController.m; sourceTree = ""; }; - EC6F651B98D708C03DF9CF92DBF049EC /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; - EC96153203E971D2C8017F1D5DA87766 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; - ED75555ECE3DBF739232D47E4EDA98B3 /* MCSQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSQueue.m; path = SJMediaCacheServer/Core/Common/MCSQueue.m; sourceTree = ""; }; - EDE3D0911B4390B1712FF728BA12C647 /* SJFitOnScreenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFitOnScreenManager.h; path = SJBaseVideoPlayer/Common/Implements/SJFitOnScreenManager.h; sourceTree = ""; }; + E5FCCC28D898A423599704E1EA0F1CC3 /* MCSAssetExporterDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetExporterDefines.h; path = SJMediaCacheServer/Core/Export/MCSAssetExporterDefines.h; sourceTree = ""; }; + E63DCC4AF0C765E8FCBD7E05E403A1D3 /* SJViewControllerManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJViewControllerManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJViewControllerManagerDefines.h; sourceTree = ""; }; + E6514FFAA5A1184432B3B4DDD2EA9527 /* SJUIKit-98d45660-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SJUIKit-98d45660-dummy.m"; path = "../SJUIKit-98d45660/SJUIKit-98d45660-dummy.m"; sourceTree = ""; }; + E67DD63064C2FE5066D2F78AE06724F4 /* UIImageView+AsyncLoadImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AsyncLoadImage.h"; path = "SJUIKit/AsyncLoad/UIImageView+AsyncLoadImage.h"; sourceTree = ""; }; + E680F82D160CB64A2DC4EAAD059C18B1 /* UILabel+AsyncLoad.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+AsyncLoad.m"; path = "SJUIKit/AsyncLoad/UILabel+AsyncLoad.m"; sourceTree = ""; }; + E7377B8F82FD586B4E53AF38C7AD5658 /* SJFlipTransitionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJFlipTransitionManager.m; path = SJBaseVideoPlayer/Common/Implements/SJFlipTransitionManager.m; sourceTree = ""; }; + E77D811014FA1354DAD6B0738E2F8D93 /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; + E7BCEE6E0D3139967AACB9F929641428 /* SJPlayModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayModel.h; path = SJBaseVideoPlayer/Common/Implements/SJPlayModel.h; sourceTree = ""; }; + E7FE0F33809D2267D2972E4ADE35CFA8 /* SJWatermarkView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJWatermarkView.h; path = SJBaseVideoPlayer/Common/Implements/SJWatermarkView.h; sourceTree = ""; }; + E81C544E399F6ECDD7A9E716E998C6EC /* HLSAssetReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HLSAssetReader.m; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetReader.m; sourceTree = ""; }; + E8500125D22029106258F1A750EC6AA4 /* SJPlayModelPropertiesObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlayModelPropertiesObserver.h; path = SJBaseVideoPlayer/Common/Implements/SJPlayModelPropertiesObserver.h; sourceTree = ""; }; + E8F216DDF4BA3948ADB668604E719DF9 /* SJRunLoopTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRunLoopTaskQueue.m; path = SJUIKit/Queues/SJRunLoopTaskQueue.m; sourceTree = ""; }; + E965566DBA7C1D2BB05EF96D9560C523 /* SJBaseVideoPlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseVideoPlayer.m; path = SJBaseVideoPlayer/SJBaseVideoPlayer.m; sourceTree = ""; }; + EA10B22C5985D7573A21704EC8472E40 /* MCSAssetCacheManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetCacheManager.h; path = SJMediaCacheServer/Core/Cache/MCSAssetCacheManager.h; sourceTree = ""; }; + EA5FEE718CD5CC695233E27BB0EA7621 /* MCSAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSAssetManager.m; path = SJMediaCacheServer/Core/Asset/MCSAssetManager.m; sourceTree = ""; }; + EA8274A86E4EEFDE65A676AD15E49948 /* SJSQLite3ColumnOrder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3ColumnOrder.m; path = SJUIKit/SQLite3/Core/SJSQLite3ColumnOrder.m; sourceTree = ""; }; + EAC58BB4255E1B72DA0ABA186F6FD991 /* SJPlaybackRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackRecord.h; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackRecord.h; sourceTree = ""; }; + EC51E16D80527BCF308A41618087DF85 /* SJBaseVideoPlayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJBaseVideoPlayer.release.xcconfig; sourceTree = ""; }; + EC7C3182C798384275CA2F2F1F078436 /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; + ED1E5F2B1C9F3F24472873F259BF832D /* Pods-SJVideoPlayer_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SJVideoPlayer_Example-dummy.m"; sourceTree = ""; }; + ED22F17412C71E70093E8723D973CB41 /* SJSQLite3Condition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3Condition.h; path = SJUIKit/SQLite3/Core/SJSQLite3Condition.h; sourceTree = ""; }; + ED2C0D156B8A12A533C195AC8BBFDD5B /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; + EE1B4AC61AF0B0353D4D0EF8E93ED596 /* SJFullscreenPopGesture.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJFullscreenPopGesture.release.xcconfig; sourceTree = ""; }; + EE266BF020C471C927D7E464E6C1C8CF /* SJAVMediaPlaybackController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVMediaPlaybackController.h; path = SJBaseVideoPlayer/AVPlayer/SJAVMediaPlaybackController.h; sourceTree = ""; }; EE62BEFCFA8EF039BF62352FAD7405CC /* SJClipsCommonViewLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsCommonViewLayer.m; sourceTree = ""; }; - EEEA9C67CC77428D3D1359743742025C /* MCSAssetExporterDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSAssetExporterDefines.h; path = SJMediaCacheServer/Core/Export/MCSAssetExporterDefines.h; sourceTree = ""; }; EF2DC28D1F5573261D4950B2553438D1 /* SJClipsBackButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsBackButton.m; sourceTree = ""; }; + EF6F3CF2205E966D8B6E8F8585173363 /* SJMediaCacheServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SJMediaCacheServer.release.xcconfig; sourceTree = ""; }; + EF7CEF02513F092B59BB3B9B4D15B830 /* SJSQLite3TableInfoCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3TableInfoCache.h; path = SJUIKit/SQLite3/Core/SJSQLite3TableInfoCache.h; sourceTree = ""; }; EFD7D4387694049AF38DA990C80643D2 /* SJEdgeControlLayerAdapters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SJEdgeControlLayerAdapters.h; sourceTree = ""; }; + EFEDF2D5ECC753AE8571D614B1963798 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; + F0523867D9E0FBB3B6F807A9C8000716 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; + F06220E951076C76D33FD6ED2DB0B25C /* UIScrollView+SJPageViewControllerExtended.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+SJPageViewControllerExtended.h"; path = "SJUIKit/PageViewController/Core/UIScrollView+SJPageViewControllerExtended.h"; sourceTree = ""; }; + F094744546895DF96099D2E1E00DF9AE /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; F0B48D7AEBC288C381A352E83EBF0AAA /* SJClipsGIFCountDownView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJClipsGIFCountDownView.m; sourceTree = ""; }; - F0C41815A28D9D182C18B92C97C26C3A /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; - F0E10F0F7F28E16DBCCDDE76651B5E86 /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; - F105924E75BB4F7C7BBBEBD47ECE7535 /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; - F1E1731527E490F0DF4380DC3A4269AA /* NSObject+SJAsyncLoad.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+SJAsyncLoad.h"; path = "SJUIKit/AsyncLoad/NSObject+SJAsyncLoad.h"; sourceTree = ""; }; - F1EEC65D05265977815D036C885D2162 /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; - F1FFFBC9BE4BBE52952C5975DBDB201C /* SJPrompt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPrompt.h; path = SJBaseVideoPlayer/Common/Implements/SJPrompt.h; sourceTree = ""; }; - F24BA80B774C1780AEFD6CF896D177F8 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; - F2BF6FEE9114722E2780279D8F8C5DC0 /* SJBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBase.h; path = SJUIKit/Base/SJBase.h; sourceTree = ""; }; + F0C79CE6394F43E786FE7EAB73B84E31 /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; + F104155367B91523B2C252EA8BE5310B /* NSFileHandle+MCS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileHandle+MCS.h"; path = "SJMediaCacheServer/Core/Common/NSFileHandle+MCS.h"; sourceTree = ""; }; + F1138FD1DCB7BA4EAFA474FB07F7F898 /* MCSQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MCSQueue.m; path = SJMediaCacheServer/Core/Common/MCSQueue.m; sourceTree = ""; }; + F1143E533762041724F662EB780D2F8C /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + F14EC65F8CB3145E2587F51546C6DFF5 /* SJUIKit-68d28646 */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "SJUIKit-68d28646"; path = "libSJUIKit-68d28646.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + F2C775408969D3A0D0515AE6D0A0A6A2 /* NSFileHandle+MCS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileHandle+MCS.m"; path = "SJMediaCacheServer/Core/Common/NSFileHandle+MCS.m"; sourceTree = ""; }; + F2F02F17F7E1331E64603A285A8ABB5E /* SJSQLite3TableClassCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLite3TableClassCache.m; path = SJUIKit/SQLite3/Core/SJSQLite3TableClassCache.m; sourceTree = ""; }; F30FAD3E41CA3CA6EA88FCEAAD57E591 /* SJLoadingView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJLoadingView.m; sourceTree = ""; }; - F3281CCC32D50DF58F8AC0D2F791BB4C /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; - F494805241F221238B557778563DD740 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; - F4A28DF515B343546414853C796B28F2 /* SJMediaCacheServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJMediaCacheServer.h; path = SJMediaCacheServer/SJMediaCacheServer.h; sourceTree = ""; }; - F56C12D80976E0C8118D867F7392F670 /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; - F59B1A300C9BECD3D6D22E3CD64511BB /* SJBaseTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseTableViewCell.m; path = SJUIKit/Base/SJBaseTableViewCell.m; sourceTree = ""; }; - F5C9048A59B80E267431210693DAAC86 /* SJRouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJRouter.h; path = SJRouter/SJRouter.h; sourceTree = ""; }; - F610DC0FCA992C34A1372657CF69816C /* SJUTRangeHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJUTRangeHandler.h; path = SJUIKit/AttributesFactory/UIKitText/SJUTRangeHandler.h; sourceTree = ""; }; - F6EAFF42EBC4075E40DDA99088CE9383 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; - F735397CB1454DE8586CB97E63AF6366 /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; - F7785B72FFA7AD5738D7E285153CEECD /* libSJMediaCacheServer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSJMediaCacheServer.a; path = libSJMediaCacheServer.a; sourceTree = BUILT_PRODUCTS_DIR; }; - F79C2C557E3D961D185C78E0080EB591 /* MCSReadwrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSReadwrite.h; path = SJMediaCacheServer/Core/Common/MCSReadwrite.h; sourceTree = ""; }; - F7A616DEE45EC73F4D8AABFA71F21A7D /* SJFlipTransitionManagerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJFlipTransitionManagerDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJFlipTransitionManagerDefines.h; sourceTree = ""; }; - F7D4A1AAC1253E71CA3D6F5EA98EB7BD /* SJBaseCollectionReusableView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseCollectionReusableView.h; path = SJUIKit/Base/SJBaseCollectionReusableView.h; sourceTree = ""; }; - F835836E07A0C7594F495FDD49D7C296 /* HTTPRedirectResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HTTPRedirectResponse.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Responses/HTTPRedirectResponse.h; sourceTree = ""; }; - F937602F49AE8206D8DE1FD8FBBDFA86 /* SJSQLiteCore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteCore.m; path = SJUIKit/SQLite3/Core/SJSQLiteCore.m; sourceTree = ""; }; - F96B78C14D2B5624F6C7C785C4641FB0 /* SJSQLiteErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJSQLiteErrors.m; path = SJUIKit/SQLite3/Core/SJSQLiteErrors.m; sourceTree = ""; }; - F9E7261D8793680F386FA65B7BBDA97F /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; - FADB652D304EAC67F9003F69E21F2A34 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; - FB023066FFD290320425BB56E5448521 /* UIViewController+SJRotationPrivate_FixSafeArea.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+SJRotationPrivate_FixSafeArea.m"; path = "SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.m"; sourceTree = ""; }; - FB2D58C307FFDFCF3D49A8DC295A3CBB /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; - FB5C0563B12FE2442A28E00897CA1881 /* SJRouteObject+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJRouteObject+Private.h"; path = "SJRouter/Core/SJRouteObject+Private.h"; sourceTree = ""; }; - FBE1790C3CA485D47AE8CEA8AC69C2C0 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; - FBF0CBD94FB6E66F097385542B25DD6F /* SJCornerMask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJCornerMask.h; path = SJUIKit/CornerMask/SJCornerMask.h; sourceTree = ""; }; + F321E287F7CB3803C50810E14666CD7A /* MultipartMessageHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MultipartMessageHeader.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartMessageHeader.h; sourceTree = ""; }; + F327EB19B5BB1C379666B49B0B2E574A /* SJPlaybackListControllerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackListControllerDefines.h; path = SJUIKit/PlaybackListController/SJPlaybackListControllerDefines.h; sourceTree = ""; }; + F33F130F0109BC1FD1480ED3410BDDEB /* SJPageViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJPageViewController.m; path = SJUIKit/PageViewController/SJPageViewController.m; sourceTree = ""; }; + F4148B1025FDA6FA348183E28440A0AA /* HLSAssetParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HLSAssetParser.h; path = SJMediaCacheServer/Core/Asset/HLS/HLSAssetParser.h; sourceTree = ""; }; + F47B7EFCF9AFA47EA2B01C675A3054CA /* CocoaAsyncSocket.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CocoaAsyncSocket.debug.xcconfig; sourceTree = ""; }; + F51D0BE56D210EC7A45DF9A96EEAC198 /* SJAVMediaPlayerLayerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJAVMediaPlayerLayerView.m; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLayerView.m; sourceTree = ""; }; + F5ABDB4B58EEBB5308BC6C971C75B9C8 /* GCDAsyncUdpSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GCDAsyncUdpSocket.m; path = Source/GCD/GCDAsyncUdpSocket.m; sourceTree = ""; }; + F64679B7AB2D6B29A809279D0F6389CC /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; + F7785B72FFA7AD5738D7E285153CEECD /* SJMediaCacheServer */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SJMediaCacheServer; path = libSJMediaCacheServer.a; sourceTree = BUILT_PRODUCTS_DIR; }; + F78235D3963BD9487F66AE5D3BD57B62 /* SJSQLite3Logger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLite3Logger.h; path = SJUIKit/SQLite3/Core/SJSQLite3Logger.h; sourceTree = ""; }; + F78DA132F52B2F151D2FFE54EC2982AE /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + F7994722EB5159511EA09F70175082E4 /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; + F799EBB34FA8F11CB70BADF6F2A5EC9A /* SJControlLayerAppearStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJControlLayerAppearStateManager.h; path = SJBaseVideoPlayer/Common/Implements/SJControlLayerAppearStateManager.h; sourceTree = ""; }; + F7A4253460EF143E6B5DCC6C7B1BE600 /* SJSQLiteErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteErrors.h; path = SJUIKit/SQLite3/Core/SJSQLiteErrors.h; sourceTree = ""; }; + F821A641800545B29F6D2A416BF3E8BB /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; + F8C291AB0A45F81F8E260006E9D7FDE1 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; + F8CA8D2DAED8630C17698123CFE17C9F /* SJRouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJRouter.m; path = SJRouter/SJRouter.m; sourceTree = ""; }; + F96B07564307CD9292CE442341CCD518 /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; + F9CBC4F9C426CF60B3E24591B5F75757 /* SJReachabilityDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJReachabilityDefines.h; path = SJBaseVideoPlayer/Common/Interfaces/SJReachabilityDefines.h; sourceTree = ""; }; + FA9B67487D8A3DBC4C617B0833CE4291 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; + FAAD046A95BD8BF9A2D6C4689C02CE68 /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; + FB099C6F5208FE8FFEDF4A8CED16B394 /* SJAVMediaPlayerLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJAVMediaPlayerLoader.h; path = SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLoader.h; sourceTree = ""; }; + FB8DAB511A91133A1AC99A4CAE4FB78C /* NSAttributedString+SJMake.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+SJMake.h"; path = "SJUIKit/AttributesFactory/NSAttributedString+SJMake.h"; sourceTree = ""; }; + FBB413A96BF48AE0FDB89815AE4FA220 /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; + FC2F2F78C94E53AAA721CD726CC73565 /* SJPlaybackHistoryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJPlaybackHistoryController.h; path = SJBaseVideoPlayer/Common/Implements/SJPlaybackHistoryController.h; sourceTree = ""; }; FCDE97EDBFD7DF62B0B9622B2F3EA8A6 /* SJControlLayerSwitcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SJControlLayerSwitcher.m; sourceTree = ""; }; - FCE5C709A9190D84FB2129CF03725E0D /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; - FCEF5781D7C10CA34315070B0AF3353C /* SJSQLiteCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJSQLiteCore.h; path = SJUIKit/SQLite3/Core/SJSQLiteCore.h; sourceTree = ""; }; - FD10D68F25403431C12A445F999622E0 /* SJTimerControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJTimerControl.h; path = SJBaseVideoPlayer/Common/Utils/SJTimerControl.h; sourceTree = ""; }; - FD1CD037CC380F11B824691BC3BBC535 /* SJResidentThread.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJResidentThread.m; path = SJUIKit/Thread/SJResidentThread.m; sourceTree = ""; }; - FD2506BB972C894578D839A03E0EB54C /* WebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = WebSocket.m; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/WebSocket.m; sourceTree = ""; }; - FD28C72505B73AE895B439180E4212F3 /* MultipartMessageHeaderField.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MultipartMessageHeaderField.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartMessageHeaderField.h; sourceTree = ""; }; - FDD4698841FE8C1C1B21A5BB07A00D11 /* MCSInterfaces.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MCSInterfaces.h; path = SJMediaCacheServer/Core/Common/MCSInterfaces.h; sourceTree = ""; }; - FDD517F17594814C8658FC02CCB7004C /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; - FDF0BA7FCF9F8B8800DCAB18CC118E9E /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; - FF0C0FA761AE48A563964FD6B64DB011 /* SJBaseVideoPlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJBaseVideoPlayer.m; path = SJBaseVideoPlayer/SJBaseVideoPlayer.m; sourceTree = ""; }; - FFF7255A2E6A648D0ADD4F2BBD0B02EB /* MultipartFormDataParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MultipartFormDataParser.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Mime/MultipartFormDataParser.h; sourceTree = ""; }; + FCED2EAB1512AAF358439168BF6D8B4F /* YYModel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYModel.release.xcconfig; sourceTree = ""; }; + FD2823F2FEC1A058F68330C0C4E048C6 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; + FDAF7D92F11A7CEB30DE69CB6515270A /* SJQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SJQueue.m; path = SJUIKit/Queues/SJQueue.m; sourceTree = ""; }; + FDC0461852A3F78C58A085B64A72A009 /* SJRouteObject+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SJRouteObject+Private.h"; path = "SJRouter/Core/SJRouteObject+Private.h"; sourceTree = ""; }; + FF220E736C62F24802DBAA8269B7EFF0 /* DDNumber.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DDNumber.h; path = SJMediaCacheServer/KTVCocoaHTTPServer/Classes/Categories/DDNumber.h; sourceTree = ""; }; + FF733A4AEC09838B7D41C66FA5B7C84C /* SJBaseTableViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SJBaseTableViewCell.h; path = SJUIKit/Base/SJBaseTableViewCell.h; sourceTree = ""; }; + FF8A6A821F0385303AC7929F22E45DBD /* UIScrollView+SJRefreshAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+SJRefreshAdd.h"; path = "SJUIKit/Refresh/UIScrollView+SJRefreshAdd.h"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 01095FBE532CF5AA0855A20BDA54BF0B /* Frameworks */ = { + 22FCDA79E3009D6F8A6FB13B45E91F1A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 619F33D8CCF0297D87B448201086AEA3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 673381158C671B137FC040900C0A32A1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 18F0271DA345E515743FE35104BEE51F /* Frameworks */ = { + 6D20830A6E0EFB626F742C8AC03AD5FB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 20BA100C85EA53F9E47A90738553B93B /* Frameworks */ = { + 71D45F4860422CCD9B75034E377514CA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 466FED6AF471C7276453E97E43B0A5C6 /* Frameworks */ = { + 7C0B9638AB10CB894102E128744ECE43 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 56E7B9E4E4F38DBBF44B252348D19D46 /* Frameworks */ = { + 907AD26A9F98C723CE396A46535B55F5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 9A8E5412CB0D1C65610568029C8C6240 /* Frameworks */ = { + 98A204F06CCA0E2F4F4B1EF9B967DB74 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A49283F52929A1601817100F489E96BB /* Frameworks */ = { + 98FE6D0256E7C7D9549BE17F6BEA1806 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - BEBC8BACFD413D85A7F921B46E375573 /* Frameworks */ = { + BB257CFA996C53A8AECB3416C1ECA7A4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C62A020D66CBE2B9D0241FED32FDFC96 /* Frameworks */ = { + BC340F4F2A10F7DEEAD23F6916979D15 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - E4496309602E9E22F01F6BA22947923F /* Frameworks */ = { + C2427ED8FB59921C3F0F4FF5B4BFDAA4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - EC236EA8D08DC313BB67E90EB9CEBC3F /* Frameworks */ = { + C55A141440B57F9D0644AAEFF58FC7CE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - FB8BD63157B68EC0704279D5D8C5CDC7 /* Frameworks */ = { + C7EC84B380D003AAE975F1457B9E2F4C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1742,42 +1883,128 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0ABE5F276477D6044E367A14DA82D18C /* Development Pods */ = { + 009C7E465458B01DCE348519C31986CB /* Support Files */ = { isa = PBXGroup; children = ( - 7C4CB65210101EF9725E68A2497F948B /* SJVideoPlayer */, + BE7C176E52D2707EBB49F45F3C786B38 /* YYModel-dummy.m */, + A3B931976F43771E70FFA2216B171FB9 /* YYModel-prefix.pch */, + 4AF8CA819E92155BD87EA9FCEC08BE12 /* YYModel.debug.xcconfig */, + FCED2EAB1512AAF358439168BF6D8B4F /* YYModel.release.xcconfig */, ); - name = "Development Pods"; + name = "Support Files"; + path = "../Target Support Files/YYModel"; sourceTree = ""; }; - 0B25E9B314914E58DB8B107BEF263A1B /* SJBaseVideoPlayer */ = { + 00AADD7C980798F3A856B519825DA0F0 /* Masonry */ = { isa = PBXGroup; children = ( - CACA716977F4870EFB905286F25D42BD /* SJBaseVideoPlayer.h */, - FF0C0FA761AE48A563964FD6B64DB011 /* SJBaseVideoPlayer.m */, - 4885EF421AD6AE00BF0E6CF9260BC937 /* SJBaseVideoPlayer+TestLog.h */, - D658DEDDFE0E7D6CE06FDAF159A53987 /* SJBaseVideoPlayer+TestLog.m */, - BCEC95E7E4DA772B43DED3A9C8C9D2B7 /* SJPlaybackRecordSaveHandler.h */, - BDEA67717E76B4E870E5D63F2618293A /* SJPlaybackRecordSaveHandler.m */, - 12CA954C09180751F50E4902ADAA5627 /* UIScrollView+ListViewAutoplaySJAdd.h */, - 19AB9122BE353834805FC95E8F570CE0 /* UIScrollView+ListViewAutoplaySJAdd.m */, - 49D7F9648A76EE8E51E553D2ECAE72BB /* UIViewController+SJRotationPrivate_FixSafeArea.h */, - FB023066FFD290320425BB56E5448521 /* UIViewController+SJRotationPrivate_FixSafeArea.m */, - 9B5F738E4A694A31D0A829A5E4EBC410 /* AVPlayer */, - E27BAC25FEF1994B005D7276C72D86D0 /* Common */, - 8BB42CD4C7AE55205CC7F6FE5D8FB200 /* ResourceLoader */, - 3A63BFA7F9EFE5213D588A6E49F75C38 /* Support Files */, + A6E2308FD8E0CFDC694F317C6B4A60D2 /* MASCompositeConstraint.h */, + F1143E533762041724F662EB780D2F8C /* MASCompositeConstraint.m */, + 9E40D4387AC4D28BC69099B0F4B51DF9 /* MASConstraint.h */, + B3113787B1E551FFCFE1405FBAC200A6 /* MASConstraint.m */, + 5D15B4CFB0AB94FEE46F1BDA8F8398CE /* MASConstraint+Private.h */, + BC608420CB1A79126EF0764BFD558E2F /* MASConstraintMaker.h */, + 6A01F6FCFBB3426A8A8156E9C65CF441 /* MASConstraintMaker.m */, + CBECACBF5E53DE58E06DB22750C29FDF /* MASLayoutConstraint.h */, + 3A953BB5BCF6FF74C1210A20D89F9CF4 /* MASLayoutConstraint.m */, + F78DA132F52B2F151D2FFE54EC2982AE /* Masonry.h */, + 35E4E2ECF6DB946FF46E85767E4F9C68 /* MASUtilities.h */, + 68E27B048D3324473984D3C5EB20E2E0 /* MASViewAttribute.h */, + 54AEC2BD8581B4B1726BCBC2797E5219 /* MASViewAttribute.m */, + C9ECF9FE81C7D47848CDC8FE75FF47C9 /* MASViewConstraint.h */, + 224620EF4ADDAF3C827F0710960B1AF5 /* MASViewConstraint.m */, + 402BA9A1F307AC921A111BBB879D12E8 /* NSArray+MASAdditions.h */, + 56A60C66492F80542846683251BE37E9 /* NSArray+MASAdditions.m */, + 9BD3C3C5463B31C6C5A19D4840C61437 /* NSArray+MASShorthandAdditions.h */, + 26C5D793E073EE82482E7E18670537D3 /* NSLayoutConstraint+MASDebugAdditions.h */, + 313EE882A1E43B9BDEBA93E2F09979CA /* NSLayoutConstraint+MASDebugAdditions.m */, + C71F114DC93ECF0A0C8D7BDFBDDE346C /* View+MASAdditions.h */, + 34F03DC35A1C35B7F58FE24EFB40774C /* View+MASAdditions.m */, + 167A062757724741853B54809C7759E5 /* View+MASShorthandAdditions.h */, + C93F520990FC9742CB6E4B26A7FD3CF8 /* ViewController+MASAdditions.h */, + E0228FE59233070109F2403886FA2923 /* ViewController+MASAdditions.m */, + 149D23B44A90EA41D4DFEC5F493FBF59 /* Support Files */, ); - name = SJBaseVideoPlayer; - path = SJBaseVideoPlayer; + name = Masonry; + path = Masonry; sourceTree = ""; }; - 0DA73EE2315FA99C724158FF1CCE139F /* Resources */ = { + 0438CD219C81052853F09592273C8B13 /* Support Files */ = { isa = PBXGroup; children = ( - 5131059FAAE8EB82E40456DFE2409E3A /* MJRefresh.bundle */, + B1FE99CD2EC4BF2D2217FC9A6A5A03D0 /* SJFullscreenPopGesture-dummy.m */, + B60F8FB3816E1B0EB1F333B2FFA54A60 /* SJFullscreenPopGesture-prefix.pch */, + 6FFA8263DFA5190B140E95C24E8EE6D2 /* SJFullscreenPopGesture.debug.xcconfig */, + EE1B4AC61AF0B0353D4D0EF8E93ED596 /* SJFullscreenPopGesture.release.xcconfig */, ); - name = Resources; + name = "Support Files"; + path = "../Target Support Files/SJFullscreenPopGesture"; + sourceTree = ""; + }; + 05A28FA0026B7EBEA80B48F9D3CC94A7 /* CornerMask */ = { + isa = PBXGroup; + children = ( + C832A3E0D797D1954A47F05FF379ADB8 /* SJCornerMask.h */, + D9FACF7BC4F3DA200F1F388E0CC43D4E /* SJCornerMask.m */, + ); + name = CornerMask; + sourceTree = ""; + }; + 06B396DF19125A54E40FDB5835110937 /* Support Files */ = { + isa = PBXGroup; + children = ( + 341B859CCB0F7D935F2C84F180C79BF5 /* SDWebImage-dummy.m */, + C9FA8B0EADE926499067630A39F8DD60 /* SDWebImage-prefix.pch */, + BB8308C6B88D4323C3EB4DDCEA2156EB /* SDWebImage.debug.xcconfig */, + 30BBE9C6A34AA927FEC8A0CAE08F28A8 /* SDWebImage.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; + sourceTree = ""; + }; + 07FE9300D2D2A501B3E7124FC3D3AD6A /* Support Files */ = { + isa = PBXGroup; + children = ( + 909775BF0D710EBD0FA91F1EFA0A8B64 /* CocoaAsyncSocket-dummy.m */, + 86C8F11C8F2483821B3B127D1E761C85 /* CocoaAsyncSocket-prefix.pch */, + F47B7EFCF9AFA47EA2B01C675A3054CA /* CocoaAsyncSocket.debug.xcconfig */, + D3DEC4F18D607D9000086A2149510CC4 /* CocoaAsyncSocket.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/CocoaAsyncSocket"; + sourceTree = ""; + }; + 081026EB8C8F2AE9943236A99D131610 /* Core */ = { + isa = PBXGroup; + children = ( + 609B4EB84AF43A71C2AF71EB14375F46 /* SJRouteHandler.h */, + D8ECD054B30A3197AB846A5D3AD9CD30 /* SJRouteInterceptor.h */, + 9BF4D0AC95D1FB14F2AB6FCDD4CC6D3C /* SJRouteInterceptor.m */, + 3685F52A1B2C41038B513EA64C9187A3 /* SJRouteObject.h */, + 7A84894D7B272BE724822DEABC6232D7 /* SJRouteObject.m */, + FDC0461852A3F78C58A085B64A72A009 /* SJRouteObject+Private.h */, + 74A41507846770BCDB3055018DED74F5 /* SJRouteRequest.h */, + 7A54B32604CE14BED6F3115C686A8499 /* SJRouteRequest.m */, + ); + name = Core; + sourceTree = ""; + }; + 0ABE5F276477D6044E367A14DA82D18C /* Development Pods */ = { + isa = PBXGroup; + children = ( + 7C4CB65210101EF9725E68A2497F948B /* SJVideoPlayer */, + ); + name = "Development Pods"; + sourceTree = ""; + }; + 0D7B3E144EBAAB2565621F34EE88D7A9 /* ResourceLoader */ = { + isa = PBXGroup; + children = ( + D3EC0A73AD1368608343B165C1510E72 /* SJBaseVideoPlayerResourceLoader.h */, + 51B8525840B132EB1861D6065EA21D2F /* SJBaseVideoPlayerResourceLoader.m */, + FBA190A64A25C7BB8C5AFE1243EDA68F /* Resources */, + ); + name = ResourceLoader; sourceTree = ""; }; 0F98067E90F2D6C4B222AB9B62A28BB9 /* Utils */ = { @@ -1793,6 +2020,267 @@ path = SJVideoPlayer/Common/Utils; sourceTree = ""; }; + 11725F8301DAD0FD49B02B3E2B866940 /* Core */ = { + isa = PBXGroup; + children = ( + 13EC1960408F989E909A495BE61BF7B9 /* SJSQLite3ColumnOrder.h */, + EA8274A86E4EEFDE65A676AD15E49948 /* SJSQLite3ColumnOrder.m */, + ED22F17412C71E70093E8723D973CB41 /* SJSQLite3Condition.h */, + C64F603B6421CEA1A629B31E54F7B5B9 /* SJSQLite3Condition.m */, + F78235D3963BD9487F66AE5D3BD57B62 /* SJSQLite3Logger.h */, + 1780BDCC7FD8815D6B93DD6DC07A2FE8 /* SJSQLite3Logger.m */, + E23D957C728AC6A6439217247DCA8177 /* SJSQLite3TableClassCache.h */, + F2F02F17F7E1331E64603A285A8ABB5E /* SJSQLite3TableClassCache.m */, + EF7CEF02513F092B59BB3B9B4D15B830 /* SJSQLite3TableInfoCache.h */, + AC01936A82CA431ED572E08FD91AAB46 /* SJSQLite3TableInfoCache.m */, + 03AE8E594CCF2D1AEE07DD21EC35A5FE /* SJSQLiteColumnInfo.h */, + 164A4CDF6C931C116125B775ABEA39A6 /* SJSQLiteColumnInfo.m */, + CB98C5A7150D8171F4DF6F27A8D1063F /* SJSQLiteCore.h */, + 9E7BA46554207B264CEF12C510BD800E /* SJSQLiteCore.m */, + F7A4253460EF143E6B5DCC6C7B1BE600 /* SJSQLiteErrors.h */, + 4C1FC0CA3B0EB1756B541166C9D50BF8 /* SJSQLiteErrors.m */, + 7607076960C74ABF61FCC7D159EAD83A /* SJSQLiteObjectInfo.h */, + 67A63F93FA3FC1C6CEEA94B7989AB551 /* SJSQLiteObjectInfo.m */, + 01834C4470DCBCB4F100E3A8EC49ED7F /* SJSQLiteTableInfo.h */, + 1F0CD8F6FEC6679EE02A839E4C5BAD67 /* SJSQLiteTableInfo.m */, + C29310E7B9989F798A056BF13F707CE1 /* SJSQLiteTableModelConstraints.h */, + 009A89B05B7E510F8011308F8969161F /* SJSQLiteTableModelConstraints.m */, + ); + name = Core; + sourceTree = ""; + }; + 140AF410209BBCEF404FD4A2BB868DD6 /* Common */ = { + isa = PBXGroup; + children = ( + C5171D1C6F88AB024988EC8EAFD42E94 /* CALayer+SJBaseVideoPlayerExtended.h */, + 90A02B95A6676D3781D29C1E9BD692C6 /* CALayer+SJBaseVideoPlayerExtended.m */, + A10BBB456F8AD57EBC8D19DDF0E518E8 /* NSString+SJBaseVideoPlayerExtended.h */, + 1B3901427489E2D50848766DBAF7C9B1 /* NSString+SJBaseVideoPlayerExtended.m */, + A7E16ECB33BA542FFC82DE0885B81702 /* NSTimer+SJAssetAdd.h */, + 695C9C8409DF76DFA89F015E524F6301 /* NSTimer+SJAssetAdd.m */, + 4F0F72503D5D7295EF07DD04F0E1623C /* SJBaseVideoPlayerConst.h */, + 5646A8653C2CF2B835A0EF78E51CCBB0 /* SJBaseVideoPlayerConst.m */, + B04DAB6384B8322FB389C4B00605527E /* SJControlLayerAppearManagerDefines.h */, + F799EBB34FA8F11CB70BADF6F2A5EC9A /* SJControlLayerAppearStateManager.h */, + CFEB801AD61A48F35001D499112E4DE3 /* SJControlLayerAppearStateManager.m */, + 849CC26AF3531478DB43C4F030EC3956 /* SJDanmakuItem.h */, + B323DC0F75EB89858EEBC8504FBFC846 /* SJDanmakuItem.m */, + 50346FD6E843B9C0DCD0D8DE6438C4DA /* SJDanmakuPopupController.h */, + 08BA1E63C9A99335017167654118341A /* SJDanmakuPopupController.m */, + 81EAF62D5C770CB5E7AC1D425E08E689 /* SJDanmakuPopupControllerDefines.h */, + 886CCF0E74D1BD4C2997A053F8510C28 /* SJDeviceVolumeAndBrightnessManager.h */, + 5EEFC2C6F41E4196D03B8BE3949AA4DE /* SJDeviceVolumeAndBrightnessManager.m */, + 9EEB9DDAE62AD828C4B3A567E9E9D221 /* SJDeviceVolumeAndBrightnessManagerDefines.h */, + 2910A43B51CC86047BC9294FF20272D2 /* SJFitOnScreenManager.h */, + D4B168FD06B7B160BAF6224BDF3B02F4 /* SJFitOnScreenManager.m */, + 583BA5CA5FEB8ACB149A238FD82704ED /* SJFitOnScreenManagerDefines.h */, + 7A6FA7855E0E0747DAAF0B83DB13F696 /* SJFlipTransitionManager.h */, + E7377B8F82FD586B4E53AF38C7AD5658 /* SJFlipTransitionManager.m */, + A4EDA8D0B29FE13E7F1C027D271790FE /* SJFlipTransitionManagerDefines.h */, + DF186A960A18E6AEAA960DEE183217DB /* SJFloatSmallViewController.h */, + A494F52685118B466DB6B1A29EE484BC /* SJFloatSmallViewController.m */, + 9E7E34B080335DAED1B090A268202CD7 /* SJFloatSmallViewControllerDefines.h */, + AD9C9A92EC66927937A23BB5B2AB1D20 /* SJGestureControllerDefines.h */, + 55DA5AD14DC8B1342DEF824CBB3F3A4E /* SJMediaPlaybackController.h */, + 28C18F749BE2BBC3ACD38A50E3C2ADCB /* SJMediaPlaybackController.m */, + 54B636245206B9C63808DA52DDB60094 /* SJPictureInPictureControllerDefines.h */, + FC2F2F78C94E53AAA721CD726CC73565 /* SJPlaybackHistoryController.h */, + 7A13F4848EB10FC8A178DAC51B036711 /* SJPlaybackHistoryController.m */, + 296856407CE92708C88C7889484D05D7 /* SJPlaybackHistoryControllerDefines.h */, + C1DB38ED6838C430B6B5CAA401601880 /* SJPlaybackObservation.h */, + 5D8EDEFACA433E15171B76538DD3D715 /* SJPlaybackObservation.m */, + EAC58BB4255E1B72DA0ABA186F6FD991 /* SJPlaybackRecord.h */, + 4E02B34FD5927F4E4F3B80AB1DA28619 /* SJPlaybackRecord.m */, + 22A3ED4C4D4F30644F3A17A59C59CC2F /* SJPlayerAutoplayConfig.h */, + 32B32D2AF64F83FCBB50619E1498D599 /* SJPlayerAutoplayConfig.m */, + C340FDA18F8A115F68699CB5CF6AD66E /* SJPlayerView.h */, + 2AE78A76B99BA45A8DC4CDE08B13C844 /* SJPlayerView.m */, + BBEDD54E84A6ECE46A703E888C9271E6 /* SJPlayerViewInternal.h */, + E7BCEE6E0D3139967AACB9F929641428 /* SJPlayModel.h */, + DEC1C1260AFE7C4C1D79AFCDCF4BE44D /* SJPlayModel.m */, + 39F3F4AD37B6D581B9481BDBD52D2F1D /* SJPlayModel+SJPrivate.h */, + E8500125D22029106258F1A750EC6AA4 /* SJPlayModelPropertiesObserver.h */, + 987BA6ACEED1A1F90AC153776EE8263F /* SJPlayModelPropertiesObserver.m */, + 5DAB68A0DBEF33E6E21ABD29BB8517A7 /* SJPromptingPopupController.h */, + A7E71F4B4770C82C3BC3C290FC76070D /* SJPromptingPopupController.m */, + 2D82ED673446533ADC9EF8875C2AA32A /* SJPromptingPopupControllerDefines.h */, + A15D78B0FA43EBD40FACE5A2E7DCD8FC /* SJReachability.h */, + 012B1D66BFF3C374A422A1182DDB2C43 /* SJReachability.m */, + F9CBC4F9C426CF60B3E24591B5F75757 /* SJReachabilityDefines.h */, + 736F1CF68C2AB212149B5A2B1FD0CB91 /* SJRotationManager_4.h */, + DA14265683AEBD8AB86A22DA0CFFD33B /* SJRotationManager_4.m */, + B87A582F31D401651EC7316A9D06679E /* SJRotationManagerDefines.h */, + 0DFC7DEAA1E00DE172B667DACFE4FDBA /* SJRotationManagerInternal_4.h */, + 24927765EFD9A8457333CEE1BE623275 /* SJSubtitleItem.h */, + 553EFDB0696A9AC91301292B39A7D0F3 /* SJSubtitleItem.m */, + B105DC39548D51422A70F2EE49DF712A /* SJSubtitlePopupController.h */, + 99BCB97F37A186731AF4DA3FE6356E34 /* SJSubtitlePopupController.m */, + 7E91B665E49F5BA2E6E0C6BA2C00F072 /* SJSubtitlePopupControllerDefines.h */, + E30E45269F6FAF0C1697F43369942140 /* SJTextPopupController.h */, + 080C7CD9B10920E0BAFB0AAB57F49187 /* SJTextPopupController.m */, + CF2996A21969460E527712603B99F3D8 /* SJTextPopupControllerDefines.h */, + 391AA8E15BF23F82709F524F3FBE66ED /* SJTimerControl.h */, + CBE828BDCA1DAABC0E0EAD2A09093FEB /* SJTimerControl.m */, + 62146703542E4171F562EAD8E011A00E /* SJVideoDefinitionSwitchingInfo.h */, + D7C55E7EB583D28B995C9306D61B3EAE /* SJVideoDefinitionSwitchingInfo.m */, + 48C0C915B94C0EDF26EE664009B2393E /* SJVideoDefinitionSwitchingInfo+Private.h */, + 5FB320C8A5FB0D611B34517F47318B6A /* SJVideoPlayerControlLayerProtocol.h */, + 69AD63F175783C07BA9AECA9CB8C8028 /* SJVideoPlayerPlaybackControllerDefines.h */, + 290D94F2FBA839C64BA358D54F83BE83 /* SJVideoPlayerPlayStatusDefines.h */, + D617643EF140F995BB8416E19E00E895 /* SJVideoPlayerPresentView.h */, + C8CD95FEB080E848DA806F19EA5D45D6 /* SJVideoPlayerPresentView.m */, + 73855928D6CB45F29C3F5EFF8F48FC3F /* SJVideoPlayerPresentViewDefines.h */, + 3DA83B0F4B2B1443BBA2EC097A678CF5 /* SJVideoPlayerRegistrar.h */, + 19EC805ECD47181B62827C1C7BDA8254 /* SJVideoPlayerRegistrar.m */, + 3D527855525B48B3578DA8D2967620E9 /* SJVideoPlayerURLAsset.h */, + 066D181281DBFE3C16F6E2A2E761FB20 /* SJVideoPlayerURLAsset.m */, + 6BFF48074355D8B68E2B9C45D0521A49 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h */, + E0425B85618A97714B77D62C9E95ED8C /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m */, + 1269E5ECA2420221EC3021F7DE878B7F /* SJViewControllerManager.h */, + 6E273A5851DFECC5D37955005BDB0941 /* SJViewControllerManager.m */, + E63DCC4AF0C765E8FCBD7E05E403A1D3 /* SJViewControllerManagerDefines.h */, + E7FE0F33809D2267D2972E4ADE35CFA8 /* SJWatermarkView.h */, + 64ECF9C28B8DE9D6C303FC0FFD49EE33 /* SJWatermarkView.m */, + 500F01094FC2E0BAF1344ABBDF5F55A9 /* SJWatermarkViewDefines.h */, + 020E1E98FB86F32664FD4DF60847EAFE /* UIScrollView+SJBaseVideoPlayerExtended.h */, + 4E637714353961898B3BAD4FD0A89DCD /* UIScrollView+SJBaseVideoPlayerExtended.m */, + B8B6F78746C176F1ACFEDC1047695E7B /* UIView+SJBaseVideoPlayerExtended.h */, + 1AAB11E367E7CC111285F6514CABC351 /* UIView+SJBaseVideoPlayerExtended.m */, + 7BEB4A44C4EBE4BE297ACBAF4A3FB1D3 /* UIViewController+SJBaseVideoPlayerExtended.h */, + 85ABCDF43D596CD4024DFE81DB3B5012 /* UIViewController+SJBaseVideoPlayerExtended.m */, + ); + name = Common; + sourceTree = ""; + }; + 149D23B44A90EA41D4DFEC5F493FBF59 /* Support Files */ = { + isa = PBXGroup; + children = ( + 6FFF08E38744028E0DD079ABA65415DD /* Masonry-dummy.m */, + 3F15576331C614C17D74760D1E2D9241 /* Masonry-prefix.pch */, + 33DA61999313283B127B41CCCAA46FE6 /* Masonry.debug.xcconfig */, + D147B945EEA5271B3E1E2A441DDCB21D /* Masonry.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Masonry"; + sourceTree = ""; + }; + 17E244CDEE08E61721DC6EB6505FECB5 /* Core */ = { + isa = PBXGroup; + children = ( + 18BBCC2C8272952657E3EC3040151D16 /* FILEAsset.h */, + 95602DC89D079908EA066CDD624E405F /* FILEAsset.m */, + CAEBB84CF6AC4F1B7E6952F15006A827 /* FILEAssetContentProvider.h */, + 83F7F931C5A9B35E770AE8038F8E7681 /* FILEAssetContentProvider.m */, + 48E513E7F2BE692C01EB51E97B4BE445 /* FILEAssetReader.h */, + 6B647EF8D999D2E8186BB3A521226B98 /* FILEAssetReader.m */, + 19C83F3E15E142FEF510A1EF385B7F3B /* FILEPrefetcher.h */, + 8FD204D8EA21C5B64548FD39DBC4E0EA /* FILEPrefetcher.m */, + 4AE75211A37FC02A9F37F4C983D26DA8 /* HLSAsset.h */, + 1F57C4AC78A42F25654A8D1E3BB0835C /* HLSAsset.m */, + 4B67E645578690F575DA9BC92EC0E8CA /* HLSAssetContentProvider.h */, + 61952F6979FE919435BF2FA6F5CACE79 /* HLSAssetContentProvider.m */, + AD55EEB13F947F2307EA51528F44A640 /* HLSAssetContentReader.h */, + 56A553A42EB112AB5D8F8BCAAB415AE8 /* HLSAssetContentReader.m */, + 379DC841CE13FE6ACDDE103B1D8CE63B /* HLSAssetDefines.h */, + F4148B1025FDA6FA348183E28440A0AA /* HLSAssetParser.h */, + B253A0F84B00A030DEE1A0E8029620DC /* HLSAssetParser.m */, + 2C8C9E593BD3BB4CA920EBD0BCB25ED2 /* HLSAssetReader.h */, + E81C544E399F6ECDD7A9E716E998C6EC /* HLSAssetReader.m */, + 0CD703BA5D0C48FD15CE2D64B722A6F3 /* HLSAssetTsContent.h */, + 49340CE8860FD9B78D544420A5D1DE66 /* HLSAssetTsContent.m */, + B3BC1D6C605AF2686C4450D99D12220E /* HLSPrefetcher.h */, + 83F21FCD5E3182568338E0937C071772 /* HLSPrefetcher.m */, + EA10B22C5985D7573A21704EC8472E40 /* MCSAssetCacheManager.h */, + 44A87E204D2D151FB3DEB6D0B822E09A /* MCSAssetCacheManager.m */, + 415A9E8FD8AC83E2FF048A1C24A69228 /* MCSAssetContent.h */, + 3785966BE51938C7714CEBE7559068D7 /* MCSAssetContent.m */, + 3E8090AEB6809FB636A7C87126A90225 /* MCSAssetContentReader.h */, + 81A5F54429D94B7C2DE99635F9C3136B /* MCSAssetContentReader.m */, + 5EB6FBA9CF225682334991586973DB9C /* MCSAssetDefines.h */, + E5FCCC28D898A423599704E1EA0F1CC3 /* MCSAssetExporterDefines.h */, + 2507FFE78B01267D4F049D9C81E95BAB /* MCSAssetExporterManager.h */, + 8A5D34E131BBC71377DA28F2B86E3D16 /* MCSAssetExporterManager.m */, + 8612516790E154DF42DA9623B1DFEB46 /* MCSAssetManager.h */, + EA5FEE718CD5CC695233E27BB0EA7621 /* MCSAssetManager.m */, + C2165E986742B6627764AAAF2C9ABDA4 /* MCSAssetUsageLog.h */, + 4266F54BACFB5E01B2F92CD5464B3E55 /* MCSAssetUsageLog.m */, + C45253F394120D4F418467035EAC4660 /* MCSConfiguration.h */, + E50F887059AABC45445CD293A77BCD62 /* MCSConfiguration.m */, + 3DC54BD695F27C644AA35EB61EABEA98 /* MCSConsts.h */, + 67431929FDE185BE76CE7D7486D4629F /* MCSConsts.m */, + 83E919D66D2265424EA2C01FEA02093C /* MCSContents.h */, + 9EBB7329011D77BAE2C5F974B99D953B /* MCSContents.m */, + E07A8A9A87DD31233CBFAA6400D21A52 /* MCSDatabase.h */, + 90CD6B01259ADB10D20AD0E74BD8389E /* MCSDatabase.m */, + A1E2E15E149DC6F085F11BBE627E0FD0 /* MCSDefines.h */, + D1D91D55B891A868229903447F9AE57E /* MCSDownload.h */, + DDA0D66CF6AE118C10B318FA71A0F921 /* MCSDownload.m */, + 86EF1F6BE490A086F1661F886EEA2657 /* MCSError.h */, + A8CC5D71C7A4E3567E62D4F6D912FB04 /* MCSError.m */, + D48C72794A8445AC8A953622B2C8E5E2 /* MCSInterfaces.h */, + 35C040AF3F545E1F665BDB155444C9C6 /* MCSLogger.h */, + AD5E6A0CE0354FC1D5EF6BE196B204C5 /* MCSLogger.m */, + 69FA503DC5817D6C005A6C4389D85AC1 /* MCSPrefetcherDefines.h */, + B46F894CD07A0BC82DF5C72BE6D27C97 /* MCSPrefetcherManager.h */, + 0BBEC4107C91CF119D8982CE7A6010D7 /* MCSPrefetcherManager.m */, + 8B2483EB00C2EBEB0B898C5AC86BC87A /* MCSProxyServer.h */, + A0CEDDBBE8572ABEC86C7AC36634451F /* MCSProxyServer.m */, + 38758E6210782BCDACC725D7F4B77776 /* MCSProxyTask.h */, + E541C966B4FD35945CE807830917B061 /* MCSProxyTask.m */, + A464A2B7644E6218CB9713C6FB94E843 /* MCSQueue.h */, + F1138FD1DCB7BA4EAFA474FB07F7F898 /* MCSQueue.m */, + AF1042C1A05FBAF9D8A9C272A0EEDF4A /* MCSReadwrite.h */, + 0EF95AEA493BEC4F0BECF39787AF02A3 /* MCSReadwrite.m */, + 121DBD3343262EF7B7A3BB91ED5A6CDE /* MCSResponse.h */, + 354B796824FBBC76505371660F62E817 /* MCSResponse.m */, + E070A6F19A527F683B6AB640E9C7C635 /* MCSRootDirectory.h */, + 89EDA3A2FB6EC72691ADD88AEB311432 /* MCSRootDirectory.m */, + E0A0848641F1F3FF0F0F9C148D60FDF5 /* MCSURL.h */, + A55A4ACD89C6716B1A0C2587DF437275 /* MCSURL.m */, + 1B9EAC370190981B4A7E38B0DC473894 /* MCSUtils.h */, + 91B5F2EBBEA00A9D4E1C5556FF4AE57C /* MCSUtils.m */, + F104155367B91523B2C252EA8BE5310B /* NSFileHandle+MCS.h */, + F2C775408969D3A0D0515AE6D0A0A6A2 /* NSFileHandle+MCS.m */, + 7794B41E55743FD8DF88DD393983472B /* NSFileManager+MCS.h */, + BE728778C6EB09C7BC761921BF4D4614 /* NSFileManager+MCS.m */, + 6230B241517C90A6E328AF141A567AE3 /* NSURLRequest+MCS.h */, + B1016335EF8123CE074F486A4E66222D /* NSURLRequest+MCS.m */, + ); + name = Core; + sourceTree = ""; + }; + 1830E96F478B4CD593CA2B4703199CA9 /* Base */ = { + isa = PBXGroup; + children = ( + 865D238261BA397D9C045C0979845F43 /* SJBase.h */, + 8A02484D4CF83694D7EA45411A3ABABD /* SJBaseCollectionReusableView.h */, + 0DE711F0E535B1E9252AFBEF671F9507 /* SJBaseCollectionReusableView.m */, + 54CFCC649351D97C30019E93FD754AC3 /* SJBaseCollectionViewCell.h */, + 3E563A9E576EE97BDC7563CE78136B41 /* SJBaseCollectionViewCell.m */, + FF733A4AEC09838B7D41C66FA5B7C84C /* SJBaseTableViewCell.h */, + C63ADFDBDE9984EA3113FEAE28ABBDB4 /* SJBaseTableViewCell.m */, + 80D8109360F109B5AEA7108A88881E54 /* SJBaseTableViewHeaderFooterView.h */, + 1981922428A12965A3579BA1E522EAA6 /* SJBaseTableViewHeaderFooterView.m */, + 9BF8E50B75BCB142C3E0728DD0E1429F /* SJBaseViewController.h */, + 60DDCFD9213812CA9F3EC73B3577F27E /* SJBaseViewController.m */, + DF156C3602A071E8C07CB2650B49FF18 /* Core */, + ); + name = Base; + sourceTree = ""; + }; + 1CCFF3671F95E940A62AEEB16E6AE2D2 /* CocoaAsyncSocket */ = { + isa = PBXGroup; + children = ( + B7AD1B5A698AF56C118B1122FF936206 /* GCDAsyncSocket.h */, + 0DB2763CD039B0FEB334FD32846611CB /* GCDAsyncSocket.m */, + 13C2047EA56E993C466F35C07F4F92BF /* GCDAsyncUdpSocket.h */, + F5ABDB4B58EEBB5308BC6C971C75B9C8 /* GCDAsyncUdpSocket.m */, + 07FE9300D2D2A501B3E7124FC3D3AD6A /* Support Files */, + ); + name = CocoaAsyncSocket; + path = CocoaAsyncSocket; + sourceTree = ""; + }; 201F13D290C33A2C1C85A3EE7478E58E /* Switcher */ = { isa = PBXGroup; children = ( @@ -1803,6 +2291,47 @@ path = Switcher; sourceTree = ""; }; + 20F69D252857523EE71CB46EB5D6EDBC /* Core */ = { + isa = PBXGroup; + children = ( + 1176BBA27A6C78CDB1F75DB510933BDD /* SJMakeView.h */, + 3856D75AF7E3EFAD0D54DF40E770C77B /* SJMakeView.m */, + ); + name = Core; + sourceTree = ""; + }; + 27B5E0219581A1ACD62EC17C92FE2433 /* SJBaseVideoPlayer */ = { + isa = PBXGroup; + children = ( + CFD62E7DACDE23B29F11F6A5B35C9DC1 /* SJBaseVideoPlayer.h */, + E965566DBA7C1D2BB05EF96D9560C523 /* SJBaseVideoPlayer.m */, + 9FBE4E1577A861DC006673BC6E041BDB /* SJBaseVideoPlayer+TestLog.h */, + 05885CA8A88AEDFA2F58C3E0F70FA83A /* SJBaseVideoPlayer+TestLog.m */, + 3D1349F43E096A75765D9E1683F5E4E9 /* SJPlaybackRecordSaveHandler.h */, + AE1BB9EF97E3582F740C953EB6FF1B2E /* SJPlaybackRecordSaveHandler.m */, + 79504201DC2BA88A3DAB0FEECAD28CA8 /* UIScrollView+ListViewAutoplaySJAdd.h */, + 1390188F41AD2E413E12F9211AFA483D /* UIScrollView+ListViewAutoplaySJAdd.m */, + 3FBE400F7DB886DBAB1E70E88E6D8DBF /* AVPlayer */, + 140AF410209BBCEF404FD4A2BB868DD6 /* Common */, + 0D7B3E144EBAAB2565621F34EE88D7A9 /* ResourceLoader */, + B94FA291D0F8E8424D50E43A6046F25E /* Support Files */, + ); + name = SJBaseVideoPlayer; + path = SJBaseVideoPlayer; + sourceTree = ""; + }; + 2A49EF81E21108FD12598C1AB1AC3BD8 /* Support Files */ = { + isa = PBXGroup; + children = ( + 7988C2F93D7BD164E0AB80CA4F805B5A /* SJMediaCacheServer-dummy.m */, + 97972692067CBBC77C1570F5057D1388 /* SJMediaCacheServer-prefix.pch */, + 7874E0FFF61012E569C77850FC1E5718 /* SJMediaCacheServer.debug.xcconfig */, + EF6F3CF2205E966D8B6E8F8585173363 /* SJMediaCacheServer.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SJMediaCacheServer"; + sourceTree = ""; + }; 2BCD809E4D60FB898ACE1118E6E99046 /* Adapters */ = { isa = PBXGroup; children = ( @@ -1814,58 +2343,44 @@ path = Adapters; sourceTree = ""; }; - 2EABE8B878FE4C5A190C3DDCAAC7F911 /* UIMaker */ = { - isa = PBXGroup; - children = ( - 04F9CE0F748B0C5C430B59A68F800E48 /* SJUIMaker.h */, - 19FEE760FB04EB57125FC4138579A486 /* SJUIMaker.m */, - E4488A52B8E35ABC9CD9E10217D8267B /* Core */, - ); - name = UIMaker; - sourceTree = ""; - }; - 2FB28CC30BA7AB775CD99B0D541D01BF /* SDWebImage */ = { + 2FA6A8959F54B247CFAB1142DA04215E /* Pods */ = { isa = PBXGroup; children = ( - B32F178535B377861B0DF3F20DA9BAB6 /* Core */, - 8F7B091363B1FCD1EC64D52158373A41 /* Support Files */, + 1CCFF3671F95E940A62AEEB16E6AE2D2 /* CocoaAsyncSocket */, + 00AADD7C980798F3A856B519825DA0F0 /* Masonry */, + C332CE5193804AC9A52B77C1F6428F56 /* MJRefresh */, + E8F4336212ECD1B1AB7767BC59F65072 /* SDWebImage */, + 27B5E0219581A1ACD62EC17C92FE2433 /* SJBaseVideoPlayer */, + ADFD5607A4825DFE3F248059F8AE9693 /* SJFullscreenPopGesture */, + F7F8C3A901471EE92F655158A91ADB40 /* SJMediaCacheServer */, + CA7E705535FC7140100D7549D9186B7B /* SJRouter */, + 419194AC2C2173A47E6F63181EB5436B /* SJUIKit */, + 7F0A56713264FB3EE02723E4A825C937 /* YYModel */, ); - name = SDWebImage; - path = SDWebImage; + name = Pods; sourceTree = ""; }; - 3615240F4FAB839EB84E70F27DBF4088 /* AsyncLoad */ = { + 3A7133EA949B8412C94A5C6EA6373F32 /* Date */ = { isa = PBXGroup; children = ( - F1E1731527E490F0DF4380DC3A4269AA /* NSObject+SJAsyncLoad.h */, - E8715BA9BB9E3615E849E55416EC0279 /* NSObject+SJAsyncLoad.m */, - E6403DFC0F53A5077D7572BB323B296D /* SJAsyncLoad.h */, - 0720AF1CCC4F0B76089383A8C0A0C6F8 /* SJAsyncLoader.h */, - 361A5B72D7F97E5631E4315E95787BF8 /* SJAsyncLoader.m */, - 7B160F4179DD4BAED1AC8ABD3826354A /* UIButton+AsyncLoadImage.h */, - 974F658B3C3B1A8D0F191360D8B15859 /* UIButton+AsyncLoadImage.m */, - C6CEDCFE73E6F6B35149526A5F2C1181 /* UIImageView+AsyncLoadImage.h */, - D0D6F816AE6B30D489F9825771CAA629 /* UIImageView+AsyncLoadImage.m */, - 197513FBB17F0449581E0FE5B5A9D2A3 /* UILabel+AsyncLoad.h */, - DC9C3859D2739FC120237FF8C01DABB5 /* UILabel+AsyncLoad.m */, - 275A28647FDA8BC7AF0B790517E1B9C2 /* UISearchBar+AsyncLoad.h */, - 9646597F4DF9F850F0F0273DFF2DD73E /* UISearchBar+AsyncLoad.m */, - 503B0CD0C670D93F70E62237DC1A0019 /* UITextField+AsyncLoadImage.h */, - 686B82FA7D1911EBE18A78CCAE5F0136 /* UITextField+AsyncLoadImage.m */, + CD90946CD81C4BD2C3C3854D4A4E1547 /* NSDate+SJAdded.h */, + 1CD2CF45FAC66A032E9AC730F5D82EF7 /* NSDate+SJAdded.m */, ); - name = AsyncLoad; + name = Date; sourceTree = ""; }; - 3A63BFA7F9EFE5213D588A6E49F75C38 /* Support Files */ = { + 3CAD0F8E5DD1E73354E8D31CDD7912FB /* Pods-SJVideoPlayer_Example */ = { isa = PBXGroup; children = ( - 8F169F9CAA943E3F5B57576928CBD890 /* SJBaseVideoPlayer-dummy.m */, - 51847EF8EFE0177B262EE41E1508864D /* SJBaseVideoPlayer-prefix.pch */, - 476EEDA6A28322B59914AB9F5B678003 /* SJBaseVideoPlayer.debug.xcconfig */, - 18507B27A3402374E0CF315144B2C1E7 /* SJBaseVideoPlayer.release.xcconfig */, + 24904781138D7343D9FDA30B31B9480C /* Pods-SJVideoPlayer_Example-acknowledgements.markdown */, + 1381FB90C8E2453615937EE8638E098C /* Pods-SJVideoPlayer_Example-acknowledgements.plist */, + ED1E5F2B1C9F3F24472873F259BF832D /* Pods-SJVideoPlayer_Example-dummy.m */, + C07C580CD43A147229B21D0D1BD93130 /* Pods-SJVideoPlayer_Example-resources.sh */, + B2B44B4BDF38E3CE9D822B92ACD5AE80 /* Pods-SJVideoPlayer_Example.debug.xcconfig */, + 56AC2771F7D56E9C3BB8227B3F3503E5 /* Pods-SJVideoPlayer_Example.release.xcconfig */, ); - name = "Support Files"; - path = "../Target Support Files/SJBaseVideoPlayer"; + name = "Pods-SJVideoPlayer_Example"; + path = "Target Support Files/Pods-SJVideoPlayer_Example"; sourceTree = ""; }; 3D2965189AD7F8748188C68E44689D41 /* SJFloatSmallViewControlLayer */ = { @@ -1894,129 +2409,141 @@ path = Core; sourceTree = ""; }; - 4320B0E7AE6EAB05B3995E85A1D188F2 /* SQLite3 */ = { + 3FBE400F7DB886DBAB1E70E88E6D8DBF /* AVPlayer */ = { isa = PBXGroup; children = ( - DA3DEF04B15CB1CAFD4E00FED9C0FA34 /* SJSQLite3.h */, - A050446BD9F8EA24906B963FE3319925 /* SJSQLite3.m */, - AD1BAC557A4598D0856FD9B642C60651 /* SJSQLite3+FoundationExtended.h */, - 8348B0C55ED6C914685D26F0723A8207 /* SJSQLite3+FoundationExtended.m */, - E09FFACD11D512B1EACB621B8EF6D395 /* SJSQLite3+Private.h */, - 375CE25BBD97BE0E0C61426F50C57CEE /* SJSQLite3+QueryExtended.h */, - 2E5EE376B231CB1583254A9EE0B298B5 /* SJSQLite3+QueryExtended.m */, - 5F3CD15871B8E41796C038153FA4CC78 /* SJSQLite3+RemoveExtended.h */, - B62903F9E7AD70F3338CB8A5FF12993A /* SJSQLite3+RemoveExtended.m */, - E79CC6C95EDB8D2D558EB4B31142BFB1 /* SJSQLite3+TableExtended.h */, - 033A5E86DB8DE11284C535DD5E4EF0D9 /* SJSQLite3+TableExtended.m */, - F8604DE203FA11935600EE9CA1634800 /* Core */, - CE2997A85CC39F775E7E7035B702236A /* Protocol */, + D19DD8F57A0F9CA56A3D28D9D2F590C0 /* AVAsset+SJAVMediaExport.h */, + 49F7B799B47978C788EF418FE35349DE /* AVAsset+SJAVMediaExport.m */, + EE266BF020C471C927D7E464E6C1C8CF /* SJAVMediaPlaybackController.h */, + 6FCCE83AA5DD20B56D00E2E6CC8FD444 /* SJAVMediaPlaybackController.m */, + E1D2874CC45800F2F322E4D97BFF7CE4 /* SJAVMediaPlayer.h */, + 511AB39E46E0D51D48930E6880FBD260 /* SJAVMediaPlayer.m */, + 0FF85D3E495A18149720F39B0463EAEF /* SJAVMediaPlayerLayerView.h */, + F51D0BE56D210EC7A45DF9A96EEAC198 /* SJAVMediaPlayerLayerView.m */, + FB099C6F5208FE8FFEDF4A8CED16B394 /* SJAVMediaPlayerLoader.h */, + A9C55BE5D7F9CDE909477792C02D62C2 /* SJAVMediaPlayerLoader.m */, + B0D96E3303675B775621BCE46792165D /* SJAVPictureInPictureController.h */, + C09CC286171F951CB069ADE737041D25 /* SJAVPictureInPictureController.m */, + C7777DA98834F0A5D11CC0933CF18A8D /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h */, + 28E4B77DEE6ECFE4714A139E0F66F273 /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m */, + A24B42380767C85C9BD029D20A20FE33 /* SJVideoPlayerURLAssetPrefetcher.h */, + 202D52E6CD763B7ABA66289A563B6A87 /* SJVideoPlayerURLAssetPrefetcher.m */, ); - name = SQLite3; + name = AVPlayer; sourceTree = ""; }; - 4E052E6C3BF86CCF0E851388F9A34032 /* Date */ = { + 419194AC2C2173A47E6F63181EB5436B /* SJUIKit */ = { isa = PBXGroup; children = ( - 3CA6BCAA5FE4BCC1F6CE9C6AB4E01C3B /* NSDate+SJAdded.h */, - 5997D26B1A0CC2B051FD4AF1AF100BAD /* NSDate+SJAdded.m */, + DEF1D566576D65204662FA2FFFC7B2D4 /* SJUIKit.h */, + FD08FC17B1A5CE3FE5E2E3898915CD78 /* AsyncLoad */, + 4CA4C3E731FEF3D00373E2C74506B44D /* AttributesFactory */, + 1830E96F478B4CD593CA2B4703199CA9 /* Base */, + 05A28FA0026B7EBEA80B48F9D3CC94A7 /* CornerMask */, + 3A7133EA949B8412C94A5C6EA6373F32 /* Date */, + D56603C5D0166D1B028F986FD32308E7 /* ObserverHelper */, + 851135732706FD2218543CB980DB39C6 /* Other */, + E0AD559CC485A8C4E61C44BC0EA4DE3F /* PageViewController */, + 78E88B604BC59CE677CA04A347A3096D /* Photo */, + 8AD17F476CAEB666A7A812B5E3D55519 /* PlaybackListController */, + DE42CCAF3B7D953FC5865F55A96772D1 /* Queues */, + AF0EDA0B305C912FE957F41F406B513F /* Refresh */, + 5382D6D69808C56A86D641823A359F5B /* SQLite3 */, + 4A99C9A0740025FF3593E0B050324B22 /* Support Files */, + 66F41A88F1A2E844A4127A2E2A9D7FFA /* Thread */, + 543C66A25B9F6429DBE0776897283989 /* UIMaker */, ); - name = Date; + name = SJUIKit; + path = SJUIKit; sourceTree = ""; }; - 4E48B97E866B02A603EEDA1CC5D46444 /* Products */ = { + 48826E4613A55CF45A23CAF76EBAE979 /* ObjC */ = { isa = PBXGroup; children = ( - 6CBEFE4F9E22AFDC6347A739BB35FF8C /* libCocoaAsyncSocket.a */, - 1FFED36A657123030ABB700256D73F15 /* libMasonry.a */, - E49D6D248DD1CEE584E6776B9164A1B2 /* libMJRefresh.a */, - 652C00F28A20500864AE33EB8E1FBCA8 /* libPods-SJVideoPlayer_Example.a */, - B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */, - 51AF23CB92C8BB88C0B20DB5A47901DE /* libSJBaseVideoPlayer.a */, - 5842ACB28A7891860A033AC3B8EDAA83 /* libSJFullscreenPopGesture.a */, - F7785B72FFA7AD5738D7E285153CEECD /* libSJMediaCacheServer.a */, - D444CDB611C89A31497695905D2BA023 /* libSJRouter.a */, - 21B36C58B63F486BEB91CAFE492C84F8 /* libSJUIKit.a */, - 8D1EE56EBEDDF86D4EBA1BCB57070AA9 /* libSJVideoPlayer.a */, - E460D5B0416D36F66EE8EC89E5D2FA0A /* libYYModel.a */, + 6F5DC7BCB6EEBA1987480A4DC8B677C4 /* SJFullscreenPopGesture.h */, + 9072523E50A872D45927AB47C03EF6E1 /* SJFullscreenPopGesture.m */, ); - name = Products; + name = ObjC; sourceTree = ""; }; - 575B5ACD403D2B0C2A6A2643E2641701 /* Support Files */ = { + 4A99C9A0740025FF3593E0B050324B22 /* Support Files */ = { isa = PBXGroup; children = ( - D026338B8715B34F9A1A464CCB0FCD7A /* YYModel-dummy.m */, - 16566FD805F18DA44C2B3514FD1AA5BA /* YYModel-prefix.pch */, - 3A1530A79C3796D1C6F9262DB3BC64C5 /* YYModel.debug.xcconfig */, - 1EA78FE444BC23A0A689142FB3CFE1CE /* YYModel.release.xcconfig */, + 986A50BE440262C08D4211B4E8C46294 /* SJUIKit-68d28646-dummy.m */, + 9176794C559C07226EA8C954208D77F4 /* SJUIKit-68d28646-prefix.pch */, + 73E5FBDE07C568B19B47E7FFD4B79B0B /* SJUIKit-68d28646.debug.xcconfig */, + CA3CE244DB7B414821DB7453782583ED /* SJUIKit-68d28646.release.xcconfig */, + E6514FFAA5A1184432B3B4DDD2EA9527 /* SJUIKit-98d45660-dummy.m */, + 94BBA5DDF624E3B9A3079B3FE81C38AA /* SJUIKit-98d45660-prefix.pch */, + 5863B4913058748C41512FF2E19108B5 /* SJUIKit-98d45660.debug.xcconfig */, + 3C586C773E6AFE5B333737FA964AFF9B /* SJUIKit-98d45660.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/YYModel"; + path = "../Target Support Files/SJUIKit-68d28646"; sourceTree = ""; }; - 5919D12C19FF5CA711E287DF3FF6B417 /* SJRouter */ = { + 4CA4C3E731FEF3D00373E2C74506B44D /* AttributesFactory */ = { isa = PBXGroup; children = ( - F5C9048A59B80E267431210693DAAC86 /* SJRouter.h */, - 8D612B8B2F19918B37A9EB832A291CB9 /* SJRouter.m */, - A44518AC783324BA771BE790AE91F60D /* Core */, - A32366D51E1C7C9D6381FC9B9EE88C3B /* Support Files */, + FB8DAB511A91133A1AC99A4CAE4FB78C /* NSAttributedString+SJMake.h */, + 59EDAE654785A5F94F62AA5E64A31488 /* NSAttributedString+SJMake.m */, + D4A8624B6929399B4C3D8104912C77F0 /* SJAttributesFactory.h */, + 86D9F74B9764B50F2CE02FE769BBE681 /* Deprecated */, + C2D6534E303A41C8CCBDAE9668EDB647 /* UIKitText */, ); - name = SJRouter; - path = SJRouter; + name = AttributesFactory; sourceTree = ""; }; - 5E0DA5F8FF1683C54B21344602D89334 /* KTVCocoaHTTPServer */ = { + 52ED4BA08AE1586388EA131BA68C83BA /* Core */ = { isa = PBXGroup; children = ( - E22DE067B4419C2815B2857F8E539DFE /* DDData.h */, - 5FA568F50DD461EE70052F114C48C2C8 /* DDData.m */, - C9ABD9B8718153A189B30850D3BC1E18 /* DDNumber.h */, - E3A0F89B3617EC017786DED5F77F572E /* DDNumber.m */, - 98DC184F062F51F845BD9614E607898A /* DDRange.h */, - EAAC26D5E47AFC671437F5A0F4E969DD /* DDRange.m */, - 709D2A170D98EA72FBFC2D5BA0173A70 /* HTTPAsyncFileResponse.h */, - C71FDA590C90713AD940014C7CFC208D /* HTTPAsyncFileResponse.m */, - D1934FF36DD8AE86F62842E7C0F037CC /* HTTPAuthenticationRequest.h */, - 733C8AE0E4870F0410E71BE6E0A2DE69 /* HTTPAuthenticationRequest.m */, - 556C50F8F7E41D374219C4BB72C7ED1B /* HTTPConnection.h */, - 21940795A3E8F2B93ED8CA5D6FFE812F /* HTTPConnection.m */, - 0684D36A6E3AA23CB54EB1E5EC8FCAF2 /* HTTPDataResponse.h */, - 9AC76170A9E577FA21B7AA90CE786E66 /* HTTPDataResponse.m */, - 4E9D6D0CF10962604C27777756BF59B9 /* HTTPDynamicFileResponse.h */, - 744AA1C011D6BB324E92E2269CC1FB28 /* HTTPDynamicFileResponse.m */, - 3EEEFACF4DBE0026A9F06FC4F8C3FAA0 /* HTTPErrorResponse.h */, - 4E819170D2AAF17FD2EA484E41AC969F /* HTTPErrorResponse.m */, - AF1453B7BE55F5B18EFA4F3ED41BB139 /* HTTPFileResponse.h */, - 47610E332009B7B179162A9184BA8DA5 /* HTTPFileResponse.m */, - CCF3B211701FA0C5E40980C3219709F8 /* HTTPLogging.h */, - 4C575EDB0772D3D444A0A0383572E911 /* HTTPLogging.m */, - 124779B8192089BA31CA8E1E41361249 /* HTTPMessage.h */, - 29219778F980B4BF94048D0AA1352AFC /* HTTPMessage.m */, - F835836E07A0C7594F495FDD49D7C296 /* HTTPRedirectResponse.h */, - A13976C66C7A9209EFA873AE522A11F6 /* HTTPRedirectResponse.m */, - 56D6D448DDC127062BD711254710B4E4 /* HTTPResponse.h */, - 4622F5B096DAC6516A5285DBD2089482 /* HTTPServer.h */, - 17DE82202D4726202916843449CB4976 /* HTTPServer.m */, - C1CDEED96788B91F5975845B4A257DF7 /* KTVCocoaHTTPServer.h */, - FFF7255A2E6A648D0ADD4F2BBD0B02EB /* MultipartFormDataParser.h */, - 3CBE449F5B0773D2B6B88962793BD651 /* MultipartFormDataParser.m */, - 9A6733D51BC7579BB89C9779A3294A35 /* MultipartMessageHeader.h */, - 0262B471253B5BB680F4E1BF702B043E /* MultipartMessageHeader.m */, - FD28C72505B73AE895B439180E4212F3 /* MultipartMessageHeaderField.h */, - 72A005107E7499A45629FA070CF38162 /* MultipartMessageHeaderField.m */, - 6CB37230A576BA87DA33CAEDB259D340 /* WebSocket.h */, - FD2506BB972C894578D839A03E0EB54C /* WebSocket.m */, + 1E5B9A53F69AD306644BACB934DE5B9A /* SJPageCollectionView.h */, + B8BC6D964C8A96E699E6F11A8E6A672E /* SJPageCollectionView.m */, + A1781BB8254C369C58A731B81E875929 /* SJPageMenuBarScrollIndicator.h */, + 49CF46C8BE0AA026868A0F7CE111B532 /* SJPageMenuBarScrollIndicator.m */, + D8FEBFF92B98E6D32E8E26D9623C1C2C /* SJPageMenuItemView.h */, + E192C42904EA1C4D9AB277FE7DA04393 /* SJPageMenuItemView.m */, + AD6FE5BBD05C9E84C03BFA04BD7A10A7 /* SJPageMenuItemViewDefines.h */, + 120857FFEE1974341C26B723EF722234 /* SJPageViewControllerItemCell.h */, + 1A32C8280690E162805FFD5B3456363E /* SJPageViewControllerItemCell.m */, + 263FE047C63E733FAF464B4D4C2E8824 /* UIColor+SJPageMenuBarExtended.h */, + 29FCEB5ADA7D9ED95703798455492C6D /* UIColor+SJPageMenuBarExtended.m */, + F06220E951076C76D33FD6ED2DB0B25C /* UIScrollView+SJPageViewControllerExtended.h */, + 03C72E202294EC2CD3543D193351E0D2 /* UIScrollView+SJPageViewControllerExtended.m */, + D5DAB1AF60F4D1217620A63ADAB12895 /* UIViewController+SJPageViewControllerExtended.h */, + 3859BDA6262AEAAA60E3A3B0F19B9DD5 /* UIViewController+SJPageViewControllerExtended.m */, ); - name = KTVCocoaHTTPServer; + name = Core; sourceTree = ""; }; - 5E399CB6F200C9B5E717AE93F4A26B64 /* Resources */ = { + 5382D6D69808C56A86D641823A359F5B /* SQLite3 */ = { isa = PBXGroup; children = ( - EA65AA42230D624F4B181C423FDFB63E /* SJBaseVideoPlayerResources.bundle */, + 92056436F96D182FF7DC887D1CFF8D0F /* SJSQLite3.h */, + CB89A91AC4069F04F4138EBA2A4B4819 /* SJSQLite3.m */, + 6B36F0A11386C9BFAF81C6DC28C1F7E7 /* SJSQLite3+FoundationExtended.h */, + 444FCB3EA5A297335E3DA8FB4111301B /* SJSQLite3+FoundationExtended.m */, + 1F6AA2E52A9F795D7EBC65E674F52C1F /* SJSQLite3+Private.h */, + 886570E14AD8E3D5960D7F977DEFBF02 /* SJSQLite3+QueryExtended.h */, + C086016FB7A385F8E657E5AF2789B4C8 /* SJSQLite3+QueryExtended.m */, + C086410D7A42C69D53890ACC96B270C4 /* SJSQLite3+RemoveExtended.h */, + 2DA84214B85B36B936A74F8287873DB7 /* SJSQLite3+RemoveExtended.m */, + 604D826398E8D22E3B61AD1FFA0F6A77 /* SJSQLite3+TableExtended.h */, + 3538059A8200384BB83FC0FDD67048B8 /* SJSQLite3+TableExtended.m */, + 11725F8301DAD0FD49B02B3E2B866940 /* Core */, + C48CF053F1D9903B6571183C6AF6A23F /* Protocol */, ); - name = Resources; + name = SQLite3; + sourceTree = ""; + }; + 543C66A25B9F6429DBE0776897283989 /* UIMaker */ = { + isa = PBXGroup; + children = ( + 0AC4E676CCA2B49BFDC8429735707001 /* SJUIMaker.h */, + B68517FE741CE3C0D6E9CFF37E5354C7 /* SJUIMaker.m */, + 20F69D252857523EE71CB46EB5D6EDBC /* Core */, + ); + name = UIMaker; sourceTree = ""; }; 5E404D2C62F697E5E50AD135C118D885 /* ControlLayers */ = { @@ -2033,89 +2560,61 @@ name = ControlLayers; sourceTree = ""; }; - 699B46E69B678E38D8A1E73EF10F96D8 /* Base */ = { + 621140FC14E4FFC0DCC3337783D5CB65 /* Products */ = { isa = PBXGroup; children = ( - F2BF6FEE9114722E2780279D8F8C5DC0 /* SJBase.h */, - F7D4A1AAC1253E71CA3D6F5EA98EB7BD /* SJBaseCollectionReusableView.h */, - B42CC36848DBFDE075B95EFECCBDF0B3 /* SJBaseCollectionReusableView.m */, - 9DF57889CF7522F73517AE58A2C8AF40 /* SJBaseCollectionViewCell.h */, - 9C54B6407F10EABFDB20A94DBAF52B2B /* SJBaseCollectionViewCell.m */, - BD04EA8132DAAEC3F7DF34B43CD112EE /* SJBaseTableViewCell.h */, - F59B1A300C9BECD3D6D22E3CD64511BB /* SJBaseTableViewCell.m */, - E6E451878DCA37FDBABA8A55E43BBD3E /* SJBaseTableViewHeaderFooterView.h */, - 91314A7227B1E54CAC73B762A98E5CF4 /* SJBaseTableViewHeaderFooterView.m */, - CB29202A124A25AF6A537E5AC2074CFC /* SJBaseViewController.h */, - 1538272FD9D0D545417F5A5C6E843F0C /* SJBaseViewController.m */, - 8672935ADE35A11E6410B1A1F90B08AA /* Core */, + 6CBEFE4F9E22AFDC6347A739BB35FF8C /* CocoaAsyncSocket */, + 1FFED36A657123030ABB700256D73F15 /* Masonry */, + E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */, + 3BA75F6111352F2EF77F4DB1521E8B67 /* Pods-iPadDemo */, + 652C00F28A20500864AE33EB8E1FBCA8 /* Pods-SJVideoPlayer_Example */, + B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, + 51AF23CB92C8BB88C0B20DB5A47901DE /* SJBaseVideoPlayer */, + 5842ACB28A7891860A033AC3B8EDAA83 /* SJFullscreenPopGesture */, + F7785B72FFA7AD5738D7E285153CEECD /* SJMediaCacheServer */, + D444CDB611C89A31497695905D2BA023 /* SJRouter */, + F14EC65F8CB3145E2587F51546C6DFF5 /* SJUIKit-68d28646 */, + CB18C8ACCF5E92C528AE5CF228B6BE98 /* SJUIKit-98d45660 */, + 8D1EE56EBEDDF86D4EBA1BCB57070AA9 /* SJVideoPlayer */, + E460D5B0416D36F66EE8EC89E5D2FA0A /* YYModel */, ); - name = Base; + name = Products; sourceTree = ""; }; - 6C397DC1C5F81E42942344243E6CA58C /* SJMediaCacheServer */ = { + 642D8ADD40B78B015AC454F8B1ACF499 /* Resources */ = { isa = PBXGroup; children = ( - F4A28DF515B343546414853C796B28F2 /* SJMediaCacheServer.h */, - DA109D9BC90DF16C1874B4370EB71641 /* SJMediaCacheServer.m */, - FFFFFFCD5C5D5D76CD775AA1D1CCA138 /* Core */, - 5E0DA5F8FF1683C54B21344602D89334 /* KTVCocoaHTTPServer */, - F654865F2BB6A2731C752449C8FAB422 /* Support Files */, + 2392D1712FB4E48BFA3421F87A3F7E63 /* MJRefresh.bundle */, ); - name = SJMediaCacheServer; - path = SJMediaCacheServer; + name = Resources; sourceTree = ""; }; - 701F64DDA8FDFA702634BB7FAEAECD70 /* Support Files */ = { + 66F41A88F1A2E844A4127A2E2A9D7FFA /* Thread */ = { isa = PBXGroup; children = ( - B0CBAC88DCB985B4C100C5370F9B643B /* MJRefresh-dummy.m */, - 6E58413F224471DC4F4C6BC46D2B5BBF /* MJRefresh-prefix.pch */, - 2B99E7040780085E8D21931D0394D1FC /* MJRefresh.debug.xcconfig */, - 8C3D3464F1DC3BE3CCFA6759C4648228 /* MJRefresh.release.xcconfig */, + 4E960FE57F50B36C8BE6AD07476CCB96 /* SJResidentThread.h */, + 02C885C3FFBA8DF40FDF8F7007B402ED /* SJResidentThread.m */, ); - name = "Support Files"; - path = "../Target Support Files/MJRefresh"; + name = Thread; sourceTree = ""; }; - 709ED50281E7B2A76700C12DA6765663 /* SJFullscreenPopGesture */ = { + 728BD2EBAFBA1F6D6D422E8997C684D0 /* SJLoadFailedControlLayer */ = { isa = PBXGroup; children = ( - D670252DC6126039DBF641C2526C77B2 /* ObjC */, - B6645BF2108B35C4DCB192D225627FEE /* Support Files */, - ); - name = SJFullscreenPopGesture; - path = SJFullscreenPopGesture; - sourceTree = ""; - }; - 7107A80933595BE0872EA98A051C4163 /* Support Files */ = { - isa = PBXGroup; - children = ( - B888F0C2AEE3BC8D9BAEF322D83988AF /* CocoaAsyncSocket-dummy.m */, - D44A5841123BE08D33F9E792F5D1494C /* CocoaAsyncSocket-prefix.pch */, - 4874D2F3F2914BB13AD2E72DC8257457 /* CocoaAsyncSocket.debug.xcconfig */, - 87D25F3ABD8FA9FCAB3866065A59C243 /* CocoaAsyncSocket.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/CocoaAsyncSocket"; - sourceTree = ""; - }; - 728BD2EBAFBA1F6D6D422E8997C684D0 /* SJLoadFailedControlLayer */ = { - isa = PBXGroup; - children = ( - CF71BD8DBCA3A0D7BBB352B44D69F4B4 /* SJLoadFailedControlLayer.h */, - 0444116F11EF9930E9DB4CFB2814A987 /* SJLoadFailedControlLayer.m */, + CF71BD8DBCA3A0D7BBB352B44D69F4B4 /* SJLoadFailedControlLayer.h */, + 0444116F11EF9930E9DB4CFB2814A987 /* SJLoadFailedControlLayer.m */, ); name = SJLoadFailedControlLayer; path = SJVideoPlayer/ControlLayers/SJLoadFailedControlLayer; sourceTree = ""; }; - 7ABE34F9763941840D1EF6FE4EB5563C /* Photo */ = { + 78E88B604BC59CE677CA04A347A3096D /* Photo */ = { isa = PBXGroup; children = ( - 3E7084C3CF72AD5C0E7D9ACD3E672508 /* SJImagePickerController.h */, - 49C1C82972DC2857F7182E6B7A758B5E /* SJImagePickerController.m */, - 6B67CABF1A98F0BD7E77252C7F79E7CC /* UIImagePickerController+SJUIKitExtension.h */, - 4E22162319F459550401D0118E0C6867 /* UIImagePickerController+SJUIKitExtension.m */, + A70F74AD9D08942F41FC9C36107E24E2 /* SJImagePickerController.h */, + 50523936CC75A8879998453482EA9A1D /* SJImagePickerController.m */, + 575DE72F96583F8BB9C83888704F39DE /* UIImagePickerController+SJUIKitExtension.h */, + 27C7AFDE25DB16454F951BBBD8961204 /* UIImagePickerController+SJUIKitExtension.m */, ); name = Photo; sourceTree = ""; @@ -2135,13 +2634,18 @@ path = ../..; sourceTree = ""; }; - 7C51713D6A774EDCDB64BDD11885E136 /* CornerMask */ = { + 7F0A56713264FB3EE02723E4A825C937 /* YYModel */ = { isa = PBXGroup; children = ( - FBF0CBD94FB6E66F097385542B25DD6F /* SJCornerMask.h */, - E575F65CCD8DCEFCF4C12204CE08F741 /* SJCornerMask.m */, + A2C7D499C51A39879954015BC1CD7C25 /* NSObject+YYModel.h */, + 715F0F8E9E7668D097DEA3903C71E61E /* NSObject+YYModel.m */, + 4AE714B65BC6D2DE9D3F9B2639A35636 /* YYClassInfo.h */, + AB1DC0BAE3CE904F7184C45EC89324B6 /* YYClassInfo.m */, + B34AF20E103BA2D6EFEBAB5AA7EA95C1 /* YYModel.h */, + 009C7E465458B01DCE348519C31986CB /* Support Files */, ); - name = CornerMask; + name = YYModel; + path = YYModel; sourceTree = ""; }; 7F4374465E52B64B2B5404BF8BD730F4 /* ResourceLoader */ = { @@ -2154,32 +2658,6 @@ name = ResourceLoader; sourceTree = ""; }; - 804CA9F7674AE922C10D40C4BA729F04 /* PlaybackListController */ = { - isa = PBXGroup; - children = ( - 4CEDAEFE4D0039DF4E1DCACAB36F0829 /* SJPlaybackListController.h */, - AA21471CCAFAE35383EB8ED422FC96A0 /* SJPlaybackListController.m */, - 55DA3778AB82C39EAAF9FA60FC1D02B6 /* SJPlaybackListControllerDefines.h */, - D9C2C8DA0B3BA41485EC0E4481AC08CF /* SJPlaybackListControllerInterfaces.h */, - ); - name = PlaybackListController; - sourceTree = ""; - }; - 822C80F7F54DED773C5C3A7E9CDDF929 /* Queues */ = { - isa = PBXGroup; - children = ( - 5BF21AF03F80E16A7092400E739075E0 /* SJPresentationQueue.h */, - E4DA2B3045349477790AF7CEB8D643D5 /* SJPresentationQueue.m */, - 369DCD12354EB8D32B2861F19DA188FF /* SJQueue.h */, - A624A454BB92A5FA5D5B5C347BB1C2B9 /* SJQueue.m */, - AF918B00724632A3D24030DC66D147A3 /* SJRunLoopTaskQueue.h */, - 05CF5C16FC5EA0177A4BF58C7758852E /* SJRunLoopTaskQueue.m */, - CCAB306467B0C32EFFB6F0C73B830573 /* SJTaskQueue.h */, - 41D7B71FF250EC03901FFED103732ABE /* SJTaskQueue.m */, - ); - name = Queues; - sourceTree = ""; - }; 825C1A82E249B5E0042D0AF2E10AC859 /* View */ = { isa = PBXGroup; children = ( @@ -2200,57 +2678,47 @@ path = View; sourceTree = ""; }; - 8672935ADE35A11E6410B1A1F90B08AA /* Core */ = { - isa = PBXGroup; - children = ( - 168BC5A7FA90E984F1F2A86F1505A9F8 /* SJAppearStateObserver.h */, - 014B0A9FD5E5B604F44D6BD75802AC5D /* SJAppearStateObserver.m */, - E55058F9A47D7D11231197776451D4EE /* SJBaseProtocols.h */, - D631794F6FA1377BD1201E1523AD7286 /* SJStatusBarManager.h */, - 79689F37A5CF6A89FC2DB99C594AE867 /* SJStatusBarManager.m */, - ); - name = Core; - sourceTree = ""; - }; - 86EB3857670C31509CB27DA0DCF1693C /* Pod */ = { + 851135732706FD2218543CB980DB39C6 /* Other */ = { isa = PBXGroup; children = ( - 7383BB11DA23178EC273C513C98EB9B3 /* LICENSE.md */, - C90861117464D3763C168EA4023C6A0F /* README.md */, - 80A242144415A05CFCF6F2AC5FF00240 /* SJVideoPlayer.podspec */, + CC879AF08AEC9192A7C2B154F006BE2A /* SJApplicationInfo.h */, + 9F3C2A98E1B04FC192E6BE7299A5CCC7 /* SJApplicationInfo.m */, + C6E5309BA8377273556B14C367A7AADF /* SJObjectContainer.h */, + 1DC392352CB9E4CEE547B885EC96F498 /* SJObjectContainer.m */, ); - name = Pod; + name = Other; sourceTree = ""; }; - 88ABCDA23674F85FC38E7DBFEFECA8C3 /* Refresh */ = { + 86D9F74B9764B50F2CE02FE769BBE681 /* Deprecated */ = { isa = PBXGroup; children = ( - 1936E463DB375C1D52A383049C3A0FB7 /* UIScrollView+SJRefreshAdd.h */, - 7A0D846CD2874AE3A834F956C1DFA5BE /* UIScrollView+SJRefreshAdd.m */, + 6E48AD212B00E0E868EDEC3691A1B956 /* SJAttributesRecorder.h */, + 50993BB750429201BEF5DBA775183F82 /* SJAttributesRecorder.m */, + 94ED638DF88E299153887EAD85631601 /* SJAttributeWorker.h */, + 0F3D951B76FC5D759CD1A98CCEFF52BD /* SJAttributeWorker.m */, ); - name = Refresh; + name = Deprecated; sourceTree = ""; }; - 8BB42CD4C7AE55205CC7F6FE5D8FB200 /* ResourceLoader */ = { + 86EB3857670C31509CB27DA0DCF1693C /* Pod */ = { isa = PBXGroup; children = ( - 849483F7C2F853C00D14697696B90310 /* SJBaseVideoPlayerResourceLoader.h */, - B8008B8E257C51676DF6BA11AC779D21 /* SJBaseVideoPlayerResourceLoader.m */, - 5E399CB6F200C9B5E717AE93F4A26B64 /* Resources */, + 7383BB11DA23178EC273C513C98EB9B3 /* LICENSE.md */, + C90861117464D3763C168EA4023C6A0F /* README.md */, + 80A242144415A05CFCF6F2AC5FF00240 /* SJVideoPlayer.podspec */, ); - name = ResourceLoader; + name = Pod; sourceTree = ""; }; - 8F7B091363B1FCD1EC64D52158373A41 /* Support Files */ = { + 8AD17F476CAEB666A7A812B5E3D55519 /* PlaybackListController */ = { isa = PBXGroup; children = ( - 7D385B183460A47CC5B3378C8CFCCE8B /* SDWebImage-dummy.m */, - DC41B74943A4C66222331DD415698B1E /* SDWebImage-prefix.pch */, - 17FBDFCEE51A2D0BB66309AB748C8F0D /* SDWebImage.debug.xcconfig */, - 0AE4DE26E0A0AE87F0E9C63E73AB22F0 /* SDWebImage.release.xcconfig */, + A66CF26FA22E065BF381677F271099E8 /* SJPlaybackListController.h */, + 1772E67C06E7481150409015C1A71FED /* SJPlaybackListController.m */, + F327EB19B5BB1C379666B49B0B2E574A /* SJPlaybackListControllerDefines.h */, + 46302D079C103B22321A9B74F9C6B476 /* SJPlaybackListControllerInterfaces.h */, ); - name = "Support Files"; - path = "../Target Support Files/SDWebImage"; + name = PlaybackListController; sourceTree = ""; }; 8F85259FDEDBBE2D3A825C608745F8C2 /* Core */ = { @@ -2274,63 +2742,6 @@ path = SJVideoPlayer/ControlLayers/SJNotReachableControlLayer; sourceTree = ""; }; - 9B5F738E4A694A31D0A829A5E4EBC410 /* AVPlayer */ = { - isa = PBXGroup; - children = ( - 5206C6A43FF7BA85292C903B820D8B02 /* AVAsset+SJAVMediaExport.h */, - 423A23C008456522CE96850DC6D9147C /* AVAsset+SJAVMediaExport.m */, - 003CFACA1FC996C625966F930B4D2F89 /* SJAVMediaPlaybackController.h */, - DC487B87FE6176797CCB88066897F735 /* SJAVMediaPlaybackController.m */, - 8BC16F52C9EAF78A8E60C38AFDDB8669 /* SJAVMediaPlayer.h */, - 4C27FD0CE8B6E418D931480BD4496B24 /* SJAVMediaPlayer.m */, - 2FA3FD0732C214457D70D760E0EEEF96 /* SJAVMediaPlayerLayerView.h */, - 3D60D4A6B54F473D3D1920A0024B3F14 /* SJAVMediaPlayerLayerView.m */, - D873506980AB2892EA851537007F570F /* SJAVMediaPlayerLoader.h */, - 58B7D63C51D6A80D9A196F0523329B84 /* SJAVMediaPlayerLoader.m */, - 649CAB588C92ED4A60753F5A8622BD0C /* SJAVPictureInPictureController.h */, - C15C0D734C9FE703D28D38688B5894D2 /* SJAVPictureInPictureController.m */, - 26D5B0EEA6D883D4649CD796EF75FC22 /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h */, - 9F2E1583D74C05601B0F4415461E553A /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m */, - C6722082297D35CE17D0F096DC4C3737 /* SJVideoPlayerURLAssetPrefetcher.h */, - 682BC904C2F73456D44B3588987A843B /* SJVideoPlayerURLAssetPrefetcher.m */, - ); - name = AVPlayer; - sourceTree = ""; - }; - A19179D14098FD5849B169A2792263A7 /* Masonry */ = { - isa = PBXGroup; - children = ( - 12840B35E73A76B99955960B035AEFC4 /* MASCompositeConstraint.h */, - AB67F2E4A3AD486FB2ED48724C4C7C0A /* MASCompositeConstraint.m */, - E3E049CCBC9F70981B1B1D7211E24378 /* MASConstraint.h */, - 5AEE607F27CB5D343FDAF9ECCC290E16 /* MASConstraint.m */, - AE013FC8992535CD4EDD1FE30ACA8D3C /* MASConstraint+Private.h */, - B1FD07D2AA5B91C9591B71770AEF06BB /* MASConstraintMaker.h */, - C5D8271283CC6535C8FD1A63FAB3947A /* MASConstraintMaker.m */, - 0096A1C86657361F8C73A7CDA6610D93 /* MASLayoutConstraint.h */, - 32427D9180628EE0ABA520ADD2EEF27E /* MASLayoutConstraint.m */, - 493E7E2162EC86B88A694B51FA7F6F6F /* Masonry.h */, - 3BC96F8795104F9AABB6893EBCE26CCC /* MASUtilities.h */, - B1BE88798111F0CBE4D6CAD163724B1B /* MASViewAttribute.h */, - FDF0BA7FCF9F8B8800DCAB18CC118E9E /* MASViewAttribute.m */, - 2C8B9623F55D4F3E4ECDA78DCE63625C /* MASViewConstraint.h */, - AF1B69B374E5801367E813BF1E50384B /* MASViewConstraint.m */, - 2ED87ACDD95338C5536463E5B428F782 /* NSArray+MASAdditions.h */, - E5705694A76194E48078BD26BE9639C9 /* NSArray+MASAdditions.m */, - B46B408EE59F98E109FFBC2F5BDE355B /* NSArray+MASShorthandAdditions.h */, - 470956E98CEF45711C4689E7FDA72D1E /* NSLayoutConstraint+MASDebugAdditions.h */, - B2E6A5F8443EF285015920B4C0DAA0B9 /* NSLayoutConstraint+MASDebugAdditions.m */, - 47788FFD89498C90A203AA80D9942DCA /* View+MASAdditions.h */, - B4ACD57CC82541FFCF0F14992D34D7CE /* View+MASAdditions.m */, - 9FCD36264BA2B5F4BF86E9D1785CFF45 /* View+MASShorthandAdditions.h */, - 88D5806613DE9FA5FC14057BF494B9AC /* ViewController+MASAdditions.h */, - AA0B7FAFB7D167BBBD4C8CA8089E68E7 /* ViewController+MASAdditions.m */, - CEDD2F0F718A95AB3F40F93C72CD35D0 /* Support Files */, - ); - name = Masonry; - path = Masonry; - sourceTree = ""; - }; A2CEB9F579463ABBA0099533D4CAC055 /* Implements */ = { isa = PBXGroup; children = ( @@ -2353,46 +2764,6 @@ path = SJVideoPlayer/Common/Implements; sourceTree = ""; }; - A32366D51E1C7C9D6381FC9B9EE88C3B /* Support Files */ = { - isa = PBXGroup; - children = ( - B1EBD4B2F92FD222D82BC06FA0A2226C /* SJRouter-dummy.m */, - 1444D7D8C01715403BC3944CAA490042 /* SJRouter-prefix.pch */, - 6A2EB43B0E07804ABD97933EA389D38D /* SJRouter.debug.xcconfig */, - 8EB21CCF5A14806E7856DBF7CC67026B /* SJRouter.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SJRouter"; - sourceTree = ""; - }; - A44518AC783324BA771BE790AE91F60D /* Core */ = { - isa = PBXGroup; - children = ( - D76E29F1761EAA5FCFF285BA160F4650 /* SJRouteHandler.h */, - 0A22A24EF7C88E55E445B392F5D0F5A4 /* SJRouteInterceptor.h */, - B6E2FF310C032ED137B935B7FC8B4330 /* SJRouteInterceptor.m */, - 9853387CE17A0788117A43C8F700034D /* SJRouteObject.h */, - 57C40C150B4054C45603084455C1F2ED /* SJRouteObject.m */, - FB5C0563B12FE2442A28E00897CA1881 /* SJRouteObject+Private.h */, - 85544B75D3FCBAD6B8B955A75C99005D /* SJRouteRequest.h */, - 9446811F8A2CA42929BAFFBAC2583ED2 /* SJRouteRequest.m */, - ); - name = Core; - sourceTree = ""; - }; - A47C441F7626A7B91A7D1628B4627912 /* PageViewController */ = { - isa = PBXGroup; - children = ( - B843C4955CAF68E70AC497F5C4C7D3BE /* SJPageMenuBar.h */, - 0E916C64B0563C0CAD6E4FF346567647 /* SJPageMenuBar.m */, - A920C1E9883A141A401E23FB148CDBF0 /* SJPageMenuBarSubclass.h */, - 581DACCEDA40C80BE18A869CABE3E011 /* SJPageViewController.h */, - 8FC1801985D20234A703D2F9B2CEFF51 /* SJPageViewController.m */, - BE55173B3F6656D7AE380CE6B1A14A2E /* Core */, - ); - name = PageViewController; - sourceTree = ""; - }; A59ABA5EE53F631D8A423A4FA54551D7 /* Common */ = { isa = PBXGroup; children = ( @@ -2420,22 +2791,37 @@ path = ControlLayer; sourceTree = ""; }; - AC32DA7D64598A21E14A61C63407D437 /* ObserverHelper */ = { + ADFD5607A4825DFE3F248059F8AE9693 /* SJFullscreenPopGesture */ = { isa = PBXGroup; children = ( - D600FC885579116BDB13CB8416626502 /* NSObject+SJObserverHelper.h */, - AABAAB5D1C26A90E47F65439BBF18DBF /* NSObject+SJObserverHelper.m */, + 48826E4613A55CF45A23CAF76EBAE979 /* ObjC */, + 0438CD219C81052853F09592273C8B13 /* Support Files */, ); - name = ObserverHelper; + name = SJFullscreenPopGesture; + path = SJFullscreenPopGesture; sourceTree = ""; }; - AEEA778D819C739C01E631FD8BF67345 /* Thread */ = { + AF0EDA0B305C912FE957F41F406B513F /* Refresh */ = { isa = PBXGroup; children = ( - DE91C0CC3B6C322C365E8506ACCA0656 /* SJResidentThread.h */, - FD1CD037CC380F11B824691BC3BBC535 /* SJResidentThread.m */, + FF8A6A821F0385303AC7929F22E45DBD /* UIScrollView+SJRefreshAdd.h */, + C2DD493F1CE7D8D7F2335DE28EAACCAA /* UIScrollView+SJRefreshAdd.m */, ); - name = Thread; + name = Refresh; + sourceTree = ""; + }; + AF2EF5B937D676531847BA5AFCA2DAD7 /* Pods-iPadDemo */ = { + isa = PBXGroup; + children = ( + 0ED99FB4B9CCDA506993C9A82E69656A /* Pods-iPadDemo-acknowledgements.markdown */, + 9FF622CE4D37727C4098EAE839C32A2B /* Pods-iPadDemo-acknowledgements.plist */, + 2FB158D8A0DD065B6ECA106AF66D5013 /* Pods-iPadDemo-dummy.m */, + BDEA0A834299060B79A9CDBE5CBD1532 /* Pods-iPadDemo-resources.sh */, + 9DD8B36A3841A80B8018118E71DD5C43 /* Pods-iPadDemo.debug.xcconfig */, + B5C697DA1B9409BF6A3D63699A4C2687 /* Pods-iPadDemo.release.xcconfig */, + ); + name = "Pods-iPadDemo"; + path = "Target Support Files/Pods-iPadDemo"; sourceTree = ""; }; AF91A33ED060748FE8CB34278D03554B /* Support Files */ = { @@ -2470,291 +2856,301 @@ path = SJVideoPlayer/Common/Configs; sourceTree = ""; }; - B32F178535B377861B0DF3F20DA9BAB6 /* Core */ = { - isa = PBXGroup; - children = ( - 8FA2A8379528E2E07E1DF1999C46596E /* NSBezierPath+SDRoundedCorners.h */, - 09CC4BAAC35CF23B251B49E6A13739F3 /* NSBezierPath+SDRoundedCorners.m */, - A734C9C7A88FCB2051879B145246A17A /* NSButton+WebCache.h */, - A7DA6ADD5A168C4F1BF94A71CC99B181 /* NSButton+WebCache.m */, - 8C111A1AE32D51FAC358EDF4CE2C383F /* NSData+ImageContentType.h */, - A9C3BE7173C734AADF6B9BA8A1E830A9 /* NSData+ImageContentType.m */, - 7A5C39A9808E3DBA0E030961BF6EA188 /* NSImage+Compatibility.h */, - 9E5E1FCA7EFA2C2F57B7C500F7027BB6 /* NSImage+Compatibility.m */, - 54B959DBEBA1368FC9A0CB77DE37E8EF /* SDAnimatedImage.h */, - 270E391169EBC2E040B3BCFA01007370 /* SDAnimatedImage.m */, - 60F8C08E919561DBBDDE91381293AD2D /* SDAnimatedImagePlayer.h */, - F735397CB1454DE8586CB97E63AF6366 /* SDAnimatedImagePlayer.m */, - 8B3FC2C300DFD25419CACAF269427731 /* SDAnimatedImageRep.h */, - 2693DB83F28B5058E515B705600C1A4E /* SDAnimatedImageRep.m */, - B4497100A41EAC9FDDD470D15800E2CC /* SDAnimatedImageView.h */, - BEDCF9BDDED29D83F3B9ADEFAD25A020 /* SDAnimatedImageView.m */, - 7259BA5D7008F925077F5C1A0D45D681 /* SDAnimatedImageView+WebCache.h */, - EB8D410FCA0272B802042B0C97F2CBCA /* SDAnimatedImageView+WebCache.m */, - E634C9226C2C52DEE1DC414A0DFB4220 /* SDAssociatedObject.h */, - 640D94371A4C03828D27C093B3E4B027 /* SDAssociatedObject.m */, - EBC53ECC031973A232E37A8F4A2A5939 /* SDAsyncBlockOperation.h */, - 7959DA22A968AC1B8B20902BD3E109F6 /* SDAsyncBlockOperation.m */, - 34FBF2995D86EDCF5AD0A4B2823D249E /* SDDeviceHelper.h */, - AA245BD8755BF42C2DF0045BB29D90FB /* SDDeviceHelper.m */, - 5FD2EB9A1D919E68C0C1B0FCBDCD3009 /* SDDiskCache.h */, - 246CDF7769E5A1A220713B2A15CFF9FF /* SDDiskCache.m */, - 77B2408BF5673486400CA557D5D61BE7 /* SDDisplayLink.h */, - C6DEA52011B5A5BE5BF8BC292D60E4B4 /* SDDisplayLink.m */, - 1AA6B38E7EA69BD70B6880BAF703BFFC /* SDFileAttributeHelper.h */, - 45F6A58D6A2A84E02F799E908AEB6457 /* SDFileAttributeHelper.m */, - 5C7ADB7B7D47617E21D17C4F9B722315 /* SDGraphicsImageRenderer.h */, - 4947858B07C21E6711BF11360156ED38 /* SDGraphicsImageRenderer.m */, - 0EAE49A9BF14B726D5931A0D6E93F009 /* SDImageAPNGCoder.h */, - 474BC59CA485D7DFC8B9D56CD7683C60 /* SDImageAPNGCoder.m */, - B1C5CBA4D92F33A3A6F73B234A87BDF3 /* SDImageAssetManager.h */, - D6FD9959DAD88E2F3AAA16AE0BFA62BC /* SDImageAssetManager.m */, - 90D1EF0384C2FBC87D01646A5267157E /* SDImageAWebPCoder.h */, - 070166A4276093BB4D882D923D8EF4EB /* SDImageAWebPCoder.m */, - 16CFED6E36C78399540850E30625CFA6 /* SDImageCache.h */, - BDFC910E3706B02800F43A441A61766A /* SDImageCache.m */, - 4561D0BCC7AF543BE2D7932646F1760B /* SDImageCacheConfig.h */, - 9B04FD1392A1F87CBA220A6FC3FC7C91 /* SDImageCacheConfig.m */, - 3B442CF56552CA00A0406BB58C7895DF /* SDImageCacheDefine.h */, - 8BC077638DE430F42EE2415012991437 /* SDImageCacheDefine.m */, - 748397912AF7C193420306B48CDBFDC9 /* SDImageCachesManager.h */, - 17BC8EBC209F51DF511D50F41D1517D8 /* SDImageCachesManager.m */, - 595607877C699E01610AD8F9260C072A /* SDImageCachesManagerOperation.h */, - A160D4E4AE8B066E876890A4FE7E512D /* SDImageCachesManagerOperation.m */, - 06CEA4CB5F33BCE21D25B130007D7D77 /* SDImageCoder.h */, - 62BF1B78791EFCD5D7663DB067D5A849 /* SDImageCoder.m */, - FB2D58C307FFDFCF3D49A8DC295A3CBB /* SDImageCoderHelper.h */, - 356175F598EA47D1804B4F9E897AD93E /* SDImageCoderHelper.m */, - B7220462914E7A000A0B352185527A06 /* SDImageCodersManager.h */, - 0037E39EB4D7F6DA3701F457D3EC20C4 /* SDImageCodersManager.m */, - 8AC6AEC688698D55BA95C07E122E7F8D /* SDImageFrame.h */, - 2D4B3116B97A0CA72775221FF48D017A /* SDImageFrame.m */, - C8CC50B40F3AE8BF712478DEE455A533 /* SDImageGIFCoder.h */, - A4E45EC0F047B3EEE969774F02E6D66E /* SDImageGIFCoder.m */, - F56C12D80976E0C8118D867F7392F670 /* SDImageGraphics.h */, - 2AC03F3A359105D0C74A628102A1C9E8 /* SDImageGraphics.m */, - A85AF5C4D19F0A17BE9821B57E46A220 /* SDImageHEICCoder.h */, - C1267E7FB7A8053544568415B40A58B0 /* SDImageHEICCoder.m */, - 982627BBD869F9657560BC2A540B8FCD /* SDImageIOAnimatedCoder.h */, - 14643B73F61B8B7B40E7FB5A321DE307 /* SDImageIOAnimatedCoder.m */, - D7EF4909A3DD134C7D0BC7A4C48DA45C /* SDImageIOAnimatedCoderInternal.h */, - AAF782D2946C9056CA07FFCDA64DACEB /* SDImageIOCoder.h */, - 11AF08AEB2B51075485C049711A0CA56 /* SDImageIOCoder.m */, - 2662D60C5B5E2FE77BED0F86537820B0 /* SDImageLoader.h */, - 2E41F39113856F732378D5FEFC180143 /* SDImageLoader.m */, - 73E75A6A471DE609CA91AD80189C5DBC /* SDImageLoadersManager.h */, - 696BAF6D2B90F94F13F036F40F771478 /* SDImageLoadersManager.m */, - DA5E0550E828BB81117BDC1606627DC2 /* SDImageTransformer.h */, - 3CCD09A2C32E295659A3875670E65EBD /* SDImageTransformer.m */, - FADB652D304EAC67F9003F69E21F2A34 /* SDInternalMacros.h */, - 7B3905681F4F517B8731C2E8C1443930 /* SDInternalMacros.m */, - 4B892520AAEF44618600BBE5EFE690CE /* SDMemoryCache.h */, - 0F6ED404D65110CB02F5A6F663940CA1 /* SDMemoryCache.m */, - F0E10F0F7F28E16DBCCDDE76651B5E86 /* SDmetamacros.h */, - C8F370FD117F2B84206D33710DD33CFD /* SDWeakProxy.h */, - 255E1E694C5A89C3F97CB6CC514F692A /* SDWeakProxy.m */, - 719274D088B9D9B939B7935F6332B340 /* SDWebImage.h */, - 24801FA3A136072FAF5BB6A397E42C62 /* SDWebImageCacheKeyFilter.h */, - 40F143EDDDA79A6948C71D4A51EB0FBD /* SDWebImageCacheKeyFilter.m */, - 3C6DF3A60ACBAD897174E8E18D9807FC /* SDWebImageCacheSerializer.h */, - F1EEC65D05265977815D036C885D2162 /* SDWebImageCacheSerializer.m */, - A40A5DF70ABCE78C1B1035F6D37895C4 /* SDWebImageCompat.h */, - 2B97FBAC1A99BB00369CA4CD71CD075C /* SDWebImageCompat.m */, - FCE5C709A9190D84FB2129CF03725E0D /* SDWebImageDefine.h */, - 7F92F2CEBB6A711D2536296D346B92D4 /* SDWebImageDefine.m */, - DB90184640F959245C0E031EA239C96B /* SDWebImageDownloader.h */, - DDA680496F782C0504B07CED4BC71F02 /* SDWebImageDownloader.m */, - 3452691E390DC84D8B0BA661CBF5A8A9 /* SDWebImageDownloaderConfig.h */, - 652813F4263753D6D6E54EE3BCAD7055 /* SDWebImageDownloaderConfig.m */, - B8403895F07811267DA3E105378CF6AD /* SDWebImageDownloaderDecryptor.h */, - 4CB17780062FA736988A65845A007BC5 /* SDWebImageDownloaderDecryptor.m */, - D8D6D1752FA32001E1CE597ADC95739C /* SDWebImageDownloaderOperation.h */, - 49BC510ABA659B2C0556CEA638342088 /* SDWebImageDownloaderOperation.m */, - C5D14AADE1A44E61B43638CC91B29759 /* SDWebImageDownloaderRequestModifier.h */, - 184347B2F86538F8D5B17715AF3CD3B7 /* SDWebImageDownloaderRequestModifier.m */, - 2E993A0B11A18E6202B2FE45BD6AF329 /* SDWebImageDownloaderResponseModifier.h */, - FDD517F17594814C8658FC02CCB7004C /* SDWebImageDownloaderResponseModifier.m */, - D258A3BB9BC3F9D6BABEC75187E30AF3 /* SDWebImageError.h */, - 794BA1FDD834178E1B14119549563082 /* SDWebImageError.m */, - AD62F12F96599A62BE003992E7393491 /* SDWebImageIndicator.h */, - A7A5E1B4349EF495176EB125E4EF09F3 /* SDWebImageIndicator.m */, - BA23D0D59E61B9D05F724343621C6D0E /* SDWebImageManager.h */, - 335DD33F58FD5C7A543B21CC56D6035B /* SDWebImageManager.m */, - D84D697A647E1257202C422EC5BF23C2 /* SDWebImageOperation.h */, - 8D1C25BFC7B60D8E2A0ADC8308363D36 /* SDWebImageOperation.m */, - F105924E75BB4F7C7BBBEBD47ECE7535 /* SDWebImageOptionsProcessor.h */, - 512928C8EAC7D1F7B0F7C0573664A679 /* SDWebImageOptionsProcessor.m */, - 6AB2FC1D65492DDC9AD3A07670DFB84A /* SDWebImagePrefetcher.h */, - D6C014522BC8DCBFE85BE88E0F4CFDDE /* SDWebImagePrefetcher.m */, - 87DD09E9671254490757F33906D49399 /* SDWebImageTransition.h */, - 6A106E740798E62D3A288F5C71263A5B /* SDWebImageTransition.m */, - 2A3E5496C4E1C5DD3FEF845C4EA00BCC /* SDWebImageTransitionInternal.h */, - 9554E26AF2A9EC4FBF74C7D4DC2F7599 /* UIButton+WebCache.h */, - 0354BE69712F9FD299E25A0DE35F8F9A /* UIButton+WebCache.m */, - EC6F651B98D708C03DF9CF92DBF049EC /* UIColor+SDHexString.h */, - C46DCD53C4E62C5952BF9060F6BF3EB9 /* UIColor+SDHexString.m */, - 3DE3236CA4EDB6B82FF8B3252B27C133 /* UIImage+ExtendedCacheData.h */, - 691FD37660C87759AB14901DCC4ACAAA /* UIImage+ExtendedCacheData.m */, - 3BA1B86C3F08F4E0CDB4C4B4F1A1F89F /* UIImage+ForceDecode.h */, - 8879A8C7414278F6BF994CFD696803D5 /* UIImage+ForceDecode.m */, - 75900AD5FB7E5FEFA499BB969F21F59C /* UIImage+GIF.h */, - 35377A6E2DB38AFF58EBB8402C41E15E /* UIImage+GIF.m */, - 5819094964959B3103EF6857C62CB645 /* UIImage+MemoryCacheCost.h */, - 36FF553E46882A25530C24DB23C09A63 /* UIImage+MemoryCacheCost.m */, - 30543B3AC628D48A00E49E7164F7A78D /* UIImage+Metadata.h */, - 05FD6C1E9AF3BA06CC7BFDD59F92EC20 /* UIImage+Metadata.m */, - EC96153203E971D2C8017F1D5DA87766 /* UIImage+MultiFormat.h */, - 9123A3521B8504CDBF9AD51B0DB505CD /* UIImage+MultiFormat.m */, - 7AE13BC3C15975798B496E1041CC194E /* UIImage+Transform.h */, - 0C893E79895620E54E2D8EB898BCAF22 /* UIImage+Transform.m */, - E5799EEDE9580630B0422D4E3D14B6C1 /* UIImageView+HighlightedWebCache.h */, - 84E67573A19E50DF1241A6929AC4728C /* UIImageView+HighlightedWebCache.m */, - 4DF4680805E85AABD2A4EC9290BE686D /* UIImageView+WebCache.h */, - F3281CCC32D50DF58F8AC0D2F791BB4C /* UIImageView+WebCache.m */, - 80B06EA2E14B2E593786483F3113764C /* UIView+WebCache.h */, - 80BE8141DA0C17384DE720A6A14E37FD /* UIView+WebCache.m */, - 67F1FF78E9714D9BF165E43B22ED8788 /* UIView+WebCacheOperation.h */, - 4187CA309920190BCFE967BC4FEE7690 /* UIView+WebCacheOperation.m */, - ); - name = Core; - sourceTree = ""; - }; - B6645BF2108B35C4DCB192D225627FEE /* Support Files */ = { + B94FA291D0F8E8424D50E43A6046F25E /* Support Files */ = { isa = PBXGroup; children = ( - 1FD3C8D1B62B2F517D89BA8E592DDBCA /* SJFullscreenPopGesture-dummy.m */, - 7D32E53A538D653692FAAFA14F496DC1 /* SJFullscreenPopGesture-prefix.pch */, - B1F8BE8F62B77BEE0417B2E1B2DD056F /* SJFullscreenPopGesture.debug.xcconfig */, - 991D0EFFE2E42D9966BC76B6BCD4A721 /* SJFullscreenPopGesture.release.xcconfig */, + 6770FFDFD3D31529F7092CD60C41390C /* SJBaseVideoPlayer-dummy.m */, + 187AB600A55E85E922E7B7BF1FE83EAE /* SJBaseVideoPlayer-prefix.pch */, + 2E8582F6624C07B0A6CB1D5E2D9ED5E5 /* SJBaseVideoPlayer.debug.xcconfig */, + EC51E16D80527BCF308A41618087DF85 /* SJBaseVideoPlayer.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/SJFullscreenPopGesture"; + path = "../Target Support Files/SJBaseVideoPlayer"; sourceTree = ""; }; - BA7313B38B05C43236FE2430A66663C5 /* SJUIKit */ = { + C2D6534E303A41C8CCBDAE9668EDB647 /* UIKitText */ = { isa = PBXGroup; children = ( - CF4D537D00093CFE837E4287C7717F5E /* SJUIKit.h */, - 3615240F4FAB839EB84E70F27DBF4088 /* AsyncLoad */, - EB4D5BB3E0285FA8610FF84C2C03ABF6 /* AttributesFactory */, - 699B46E69B678E38D8A1E73EF10F96D8 /* Base */, - 7C51713D6A774EDCDB64BDD11885E136 /* CornerMask */, - 4E052E6C3BF86CCF0E851388F9A34032 /* Date */, - AC32DA7D64598A21E14A61C63407D437 /* ObserverHelper */, - D28EFF17D3824F977532C086234494E4 /* Other */, - A47C441F7626A7B91A7D1628B4627912 /* PageViewController */, - 7ABE34F9763941840D1EF6FE4EB5563C /* Photo */, - 804CA9F7674AE922C10D40C4BA729F04 /* PlaybackListController */, - 822C80F7F54DED773C5C3A7E9CDDF929 /* Queues */, - 88ABCDA23674F85FC38E7DBFEFECA8C3 /* Refresh */, - 4320B0E7AE6EAB05B3995E85A1D188F2 /* SQLite3 */, - FF23D65C31DACCBB359C01F5E31B8737 /* Support Files */, - AEEA778D819C739C01E631FD8BF67345 /* Thread */, - 2EABE8B878FE4C5A190C3DDCAAC7F911 /* UIMaker */, + D548AE066A6319627060FAD6F400B71D /* SJUIKitAttributesDefines.h */, + 67385BB1A2463FDC34EDF3ACF664CBE1 /* SJUIKitTextMaker.h */, + 4796885DB1E60E1D77D7A6A07D1E8ED5 /* SJUIKitTextMaker.m */, + 71B0E285DF3487D2A56F3C01B0D910FA /* SJUTAttributes.h */, + 810211772F42E78119C94A8A1CCDC33F /* SJUTAttributes.m */, + 47DAFC93E68FEC751F9154BBC1FA4EC4 /* SJUTRangeHandler.h */, + D6D989ABD04CED73C0494A2995727C20 /* SJUTRangeHandler.m */, + 13F1718CA73A99051651CAFD7BE18850 /* SJUTRecorder.h */, + 31BFBB8CE1105BAA4AB398A8EE0896B1 /* SJUTRecorder.m */, + 885C346296ECEA27FBFAB7D857B315E3 /* SJUTRegexHandler.h */, + AEAB7906EBC279A0421D4A1D79A15D78 /* SJUTRegexHandler.m */, + D014B242EACB0879827859EDCE96AF29 /* SJUTUtils.h */, + CE317C4F6961E1CB541CC7858AEDFD9E /* SJUTUtils.m */, ); - name = SJUIKit; - path = SJUIKit; + name = UIKitText; sourceTree = ""; }; - BC3E3D4D38450AE9EAB0BBB6C5D77210 /* Targets Support Files */ = { + C332CE5193804AC9A52B77C1F6428F56 /* MJRefresh */ = { isa = PBXGroup; children = ( - EB47725C01A7D1FEACF4F769378C9C9E /* Pods-SJVideoPlayer_Example */, + 9EEC043C6C541A48BB36804CB8F5C962 /* MJRefresh.h */, + D16FD2E64D8429B2FF550D6B264F8771 /* MJRefreshAutoFooter.h */, + 43B74B770C3C490BA38CD4D430B481EC /* MJRefreshAutoFooter.m */, + 2302FF303A7D61A9CAAE6AFE27066096 /* MJRefreshAutoGifFooter.h */, + FD2823F2FEC1A058F68330C0C4E048C6 /* MJRefreshAutoGifFooter.m */, + AE30BD349A6395DD546A92910372A590 /* MJRefreshAutoNormalFooter.h */, + 48023A24530BF8027883A6E3A4E093E7 /* MJRefreshAutoNormalFooter.m */, + 6F8E49B716E737024EEFB3D90D13DA79 /* MJRefreshAutoStateFooter.h */, + 12702AB873E34D912F798843E620B6C3 /* MJRefreshAutoStateFooter.m */, + 6C9127A063C23E447D94765AB736B93A /* MJRefreshBackFooter.h */, + BBF048FEB9546C91157F01506F53AF35 /* MJRefreshBackFooter.m */, + A13A92595300422DEA2DB2EE89355E7A /* MJRefreshBackGifFooter.h */, + 6023EA14E869300BCAA17D36D279F725 /* MJRefreshBackGifFooter.m */, + CB0A231B928E08BB94AB7F14DF7C7C18 /* MJRefreshBackNormalFooter.h */, + E222CDBE9F7EB33781D6BD36AEDA6E83 /* MJRefreshBackNormalFooter.m */, + 019AED80FEA640EF6E6B6D058FA1568C /* MJRefreshBackStateFooter.h */, + 17AEA77DDBF2940C0257BC4C9C44A7B8 /* MJRefreshBackStateFooter.m */, + AA51206D33B3915DCEE140E2C4C2DE30 /* MJRefreshComponent.h */, + 89A45F69313D9611C8E1CF7450058AFD /* MJRefreshComponent.m */, + B694757AFB5759988A7BB4DC1448BFE2 /* MJRefreshConfig.h */, + 443493FA654ACC465DAEFEF6781DDD76 /* MJRefreshConfig.m */, + B24758E8F3E0396D0319CF5BFD3F4301 /* MJRefreshConst.h */, + 7E839C820F7D5B753A787C979DACCA04 /* MJRefreshConst.m */, + 5C187C3565C491B576506C452A89C37F /* MJRefreshFooter.h */, + 8C34DBD321F8D66203E83A27F3D63662 /* MJRefreshFooter.m */, + E02E185E726FBC23B2B1CCF797DC6E70 /* MJRefreshGifHeader.h */, + 173902BE7B236E60ABADEE40F62F1E3A /* MJRefreshGifHeader.m */, + 88977EEA967DDE48DF8ADA1AE415C7EC /* MJRefreshHeader.h */, + 538B83846E4517F5455801BEABAF5144 /* MJRefreshHeader.m */, + 4F82EE2E829B175F325855834CC26716 /* MJRefreshNormalHeader.h */, + 0755884873AE380C47B411F931940C2E /* MJRefreshNormalHeader.m */, + 78B13DF72793869FB174879AF7B350F5 /* MJRefreshStateHeader.h */, + 0E35D960663447D3A8E5EA2FA94E28A9 /* MJRefreshStateHeader.m */, + D35085DEC9092E6318956FEA656ACCBF /* NSBundle+MJRefresh.h */, + 6BA2EC35412B129157BAC0D1A497C8D9 /* NSBundle+MJRefresh.m */, + FAAD046A95BD8BF9A2D6C4689C02CE68 /* UIScrollView+MJExtension.h */, + 7C4643B5E02C86DD4EDC79C59CCAA501 /* UIScrollView+MJExtension.m */, + 896C3B83FAAEDE7B6F2CA9C756BC4DD8 /* UIScrollView+MJRefresh.h */, + BED1592BDDDE5C7CA2ACF981283A6A7F /* UIScrollView+MJRefresh.m */, + 6F12ABCAB5CD208E6006C778B08B2856 /* UIView+MJExtension.h */, + F8C291AB0A45F81F8E260006E9D7FDE1 /* UIView+MJExtension.m */, + 642D8ADD40B78B015AC454F8B1ACF499 /* Resources */, + EF92AFE1E5CD41B3CEDCBA9547F05784 /* Support Files */, ); - name = "Targets Support Files"; + name = MJRefresh; + path = MJRefresh; sourceTree = ""; }; - BE55173B3F6656D7AE380CE6B1A14A2E /* Core */ = { + C48CF053F1D9903B6571183C6AF6A23F /* Protocol */ = { isa = PBXGroup; children = ( - D67E679C82D397C13ABFA9E517790895 /* SJPageCollectionView.h */, - 116204D8A2875F177C221F0E75307EFD /* SJPageCollectionView.m */, - 662A97FD69B199EA1EFD2BF57255A1D2 /* SJPageMenuBarScrollIndicator.h */, - DB46681174303E1A7F435AC549465297 /* SJPageMenuBarScrollIndicator.m */, - 73B21AF491F2929D827C4477DD89F622 /* SJPageMenuItemView.h */, - 4ACEEA16E132EA825423312DBAD12157 /* SJPageMenuItemView.m */, - 5549FC7B6502A30760FC103CDB5910EF /* SJPageMenuItemViewDefines.h */, - 24C761B08CD2612D577F00993D5F7477 /* SJPageViewControllerItemCell.h */, - D58A4E6649B25E04F65C4616A9A98452 /* SJPageViewControllerItemCell.m */, - DFEE41876F3F9F2A5F2DB9883159B904 /* UIColor+SJPageMenuBarExtended.h */, - 8E11BF300CC67EFC4DF3FB0062A98428 /* UIColor+SJPageMenuBarExtended.m */, - 5B7ADF6654441718146E3CEE442E73DA /* UIScrollView+SJPageViewControllerExtended.h */, - 49FD48FC263AA7E99A5A64D1A673383D /* UIScrollView+SJPageViewControllerExtended.m */, - BD401691DAE0CEDB5BC4A097E7A1B8CA /* UIViewController+SJPageViewControllerExtended.h */, - D866F5DD36C0551B2383B20B4B7A7BEC /* UIViewController+SJPageViewControllerExtended.m */, + 6B363A09A921A928D41905800F10AFFA /* SJSQLiteTableModelProtocol.h */, ); - name = Core; + name = Protocol; sourceTree = ""; }; - CE2997A85CC39F775E7E7035B702236A /* Protocol */ = { + C78342168B912588BBBAA6932DCEDA22 /* Core */ = { isa = PBXGroup; children = ( - 5E21D0B48F96771E7B8F8BA9BBC451E3 /* SJSQLiteTableModelProtocol.h */, + B622C7B0CD999FCA85738007ECBA3EE8 /* NSBezierPath+SDRoundedCorners.h */, + 2D7174109E1CBB5CA93F6C71234622ED /* NSBezierPath+SDRoundedCorners.m */, + 2A19DB112C32063877E5B3397058A78C /* NSButton+WebCache.h */, + ACF00F5FD86E252DDAFC06977B45A496 /* NSButton+WebCache.m */, + 450CBE0EA2ABADA7ABFB0EFCAF1E9AC3 /* NSData+ImageContentType.h */, + 9FA28C8E44ADD92530399AA177CB30CB /* NSData+ImageContentType.m */, + A7B1A8BBC3615B8D9B76657122D27CEC /* NSImage+Compatibility.h */, + 3843893BC6D1BEAB54272577EC9696E9 /* NSImage+Compatibility.m */, + 2B94D677625D5F5775D57AA3BD92C664 /* SDAnimatedImage.h */, + 7D3D7AE7A79837A093BA206615956FDB /* SDAnimatedImage.m */, + 69A27145F238330217648B0A85BA03B0 /* SDAnimatedImagePlayer.h */, + 6C81F66089F4F17695C34520909B798E /* SDAnimatedImagePlayer.m */, + 9DAD62B381A411776CB11534501D45A4 /* SDAnimatedImageRep.h */, + 6631982D1E6C1EC9E71F984C0948F079 /* SDAnimatedImageRep.m */, + AAA6E12AB16A3555DCC97CCD7BCAA94F /* SDAnimatedImageView.h */, + E4D7C024E903D1D9220D28006E766910 /* SDAnimatedImageView.m */, + F0523867D9E0FBB3B6F807A9C8000716 /* SDAnimatedImageView+WebCache.h */, + B48C7F907789B8D6421B206F92EC9ED1 /* SDAnimatedImageView+WebCache.m */, + 34CB1FC5BBA3A0AABA5839077E48CC79 /* SDAssociatedObject.h */, + 5B4111BDFA64E457569D7DCAB90A236B /* SDAssociatedObject.m */, + 26BD6463286717AECE7ED4FFF4B7FCE1 /* SDAsyncBlockOperation.h */, + 1FFCA953DA178EEA22EBE4C5C685A860 /* SDAsyncBlockOperation.m */, + F0C79CE6394F43E786FE7EAB73B84E31 /* SDDeviceHelper.h */, + 0A721DAC02D027449C6B7600BFF0F17F /* SDDeviceHelper.m */, + BE82CBF35CB3E1791F0ED9DC3681AF64 /* SDDiskCache.h */, + 3677CA14658AFA64E1415C7C38E328FA /* SDDiskCache.m */, + 17F454440778375A6C65AB8DC61BC6EC /* SDDisplayLink.h */, + BC880E9375741C54ED2B5BC668E17B91 /* SDDisplayLink.m */, + AE443D904D27CCDFC8A5A5744CD4393B /* SDFileAttributeHelper.h */, + C2C0337106C1162DBA4A5D6A611609F9 /* SDFileAttributeHelper.m */, + D4185252FDC8BB1CFF74E1F824D52503 /* SDGraphicsImageRenderer.h */, + 82A4340DD5C1F47459F9CC47223BC1B7 /* SDGraphicsImageRenderer.m */, + 41EB9DC955AEBF33E11DFAAF8C066853 /* SDImageAPNGCoder.h */, + 2644E275CC1F1A4B3875263B78A54E08 /* SDImageAPNGCoder.m */, + 7C7D39C6D9BAD7C7F14661D1A4179E2B /* SDImageAssetManager.h */, + BE293C1EF74747F4672B3B9E851C3DC3 /* SDImageAssetManager.m */, + 6C4FDACE7FF44BC62E8290797D884F3B /* SDImageAWebPCoder.h */, + 8D5E0D805D3243B658B328DE4B8EBD35 /* SDImageAWebPCoder.m */, + 6B9DAA6E3992E053C9A953B80F14027A /* SDImageCache.h */, + 507EEE2973E319418023A9CF7FF1EF1D /* SDImageCache.m */, + E5B314324AF6556A32CCFF41A79A65F4 /* SDImageCacheConfig.h */, + B8513F5943988A7CC6C50601DCD57911 /* SDImageCacheConfig.m */, + B04D62F9557E4458628188CB6C180B8F /* SDImageCacheDefine.h */, + F7994722EB5159511EA09F70175082E4 /* SDImageCacheDefine.m */, + 64B87C63E1FB125F9ABFE8BD643117C9 /* SDImageCachesManager.h */, + 23C80FF64D8C6E998A9B74332E2A7F7B /* SDImageCachesManager.m */, + 0B1B947F216F4BB68383C03E72F0B14A /* SDImageCachesManagerOperation.h */, + 22D3088FBA52DF8DF003A747FCE5D49A /* SDImageCachesManagerOperation.m */, + 5796B33E91A03E1152C4EB85D77B3C3C /* SDImageCoder.h */, + D5A1A8F0C455FAF2D4ACBFC6B0B6C51E /* SDImageCoder.m */, + 6F5DD4A11BDAFE0E2DCD94FAB41EE084 /* SDImageCoderHelper.h */, + 0E34FB61A572E416B416E798952A745A /* SDImageCoderHelper.m */, + BF5FD3D18077BB39F1C0867600CEA3A3 /* SDImageCodersManager.h */, + 98572816080B88ED07C88C4CF0EAB44A /* SDImageCodersManager.m */, + 2028E91F27CE08D209E3372568A9A6EF /* SDImageFrame.h */, + 35D0180BFCCCCE590CAAA62DAED9C4D3 /* SDImageFrame.m */, + 93A4F7951CFCC69FEB62002D32F10AD1 /* SDImageGIFCoder.h */, + 3C3C3E232AAD1CB1EE1E85D50614B54A /* SDImageGIFCoder.m */, + 4EDF1DD8A9F2FA8A4FD4BC6CC3B3F0FF /* SDImageGraphics.h */, + ACB333095E7506AE56D5C2A4C0356D20 /* SDImageGraphics.m */, + EC7C3182C798384275CA2F2F1F078436 /* SDImageHEICCoder.h */, + 4FE52265BA55D4E9D075D4283E5E47A2 /* SDImageHEICCoder.m */, + BE769C0E23563F1AF94278367A6044FD /* SDImageIOAnimatedCoder.h */, + 9FC80201321AA42F17AB3B81A9674564 /* SDImageIOAnimatedCoder.m */, + 41C2B7E9415E8ACE00CB90E1DBDD9D44 /* SDImageIOAnimatedCoderInternal.h */, + 95CEBD575D566218CAD9A300F5378FFD /* SDImageIOCoder.h */, + 878C82EE229DE11A18DDC8A3C6CFB13B /* SDImageIOCoder.m */, + 0531B770513FBEE636AF98EA18C5E044 /* SDImageLoader.h */, + 530AD6DC9DE0E33FCA28DFA7161565BF /* SDImageLoader.m */, + 0E6D773DD4369B78D648BEECEFB59283 /* SDImageLoadersManager.h */, + B8BE680DB38638447568CB8401550D3D /* SDImageLoadersManager.m */, + FBB413A96BF48AE0FDB89815AE4FA220 /* SDImageTransformer.h */, + 62E0E5769D55F8C5C1B4F185EC401907 /* SDImageTransformer.m */, + 01BD3800159B08192BA01572EB70DBC4 /* SDInternalMacros.h */, + FA9B67487D8A3DBC4C617B0833CE4291 /* SDInternalMacros.m */, + 986A62EA6AF2A4C851BF30C5E5BDFBC2 /* SDMemoryCache.h */, + E77D811014FA1354DAD6B0738E2F8D93 /* SDMemoryCache.m */, + 7A951CAAB21FE543DC58B8680C35B819 /* SDmetamacros.h */, + B9C3DA9F0611E3675BF0214F7C3F3C6D /* SDWeakProxy.h */, + 2F87289E69F097C295E27EB3AE25C9F2 /* SDWeakProxy.m */, + 46E2A075386116A79775340724640A98 /* SDWebImage.h */, + CB2388A9426B0E77CAB5C90E3A157B25 /* SDWebImageCacheKeyFilter.h */, + E53769C3419DB9DFD8526B52FE0DB92E /* SDWebImageCacheKeyFilter.m */, + 7C51B8A56C1A5F901E8EF26991BD0768 /* SDWebImageCacheSerializer.h */, + 4C691F4F13F40F7AE547823BD0C808A3 /* SDWebImageCacheSerializer.m */, + 1553F3B0152B660C6F8D19AD7B23C830 /* SDWebImageCompat.h */, + F821A641800545B29F6D2A416BF3E8BB /* SDWebImageCompat.m */, + F64679B7AB2D6B29A809279D0F6389CC /* SDWebImageDefine.h */, + 9F1EECE762E5B32AD2E1D04DFB9A099B /* SDWebImageDefine.m */, + BD36EBA34CDE7B95FAC1BC22A395A705 /* SDWebImageDownloader.h */, + 6BF8FA680FE82A8599949050BE9A2BA1 /* SDWebImageDownloader.m */, + 447597136D3DB286C03B8BD9AACB8DD5 /* SDWebImageDownloaderConfig.h */, + 249BE349A9B6FD01152FB23E5AD8BB58 /* SDWebImageDownloaderConfig.m */, + AA2EF95B02727250D337361ED0719EBB /* SDWebImageDownloaderDecryptor.h */, + F094744546895DF96099D2E1E00DF9AE /* SDWebImageDownloaderDecryptor.m */, + D68900AF66FEA1436B32625BB529A949 /* SDWebImageDownloaderOperation.h */, + 8DF964DAD9E0AE854DC7D436F8BB3E79 /* SDWebImageDownloaderOperation.m */, + 88A4990C5BD1FE267C5D022756AB21FF /* SDWebImageDownloaderRequestModifier.h */, + 192EA25AB06B5234FDBA9D0077BC3E83 /* SDWebImageDownloaderRequestModifier.m */, + A4D912D9B61DEF9951A4918C61615C0D /* SDWebImageDownloaderResponseModifier.h */, + 9EC39621B2BFF385D11E74F53A5C3326 /* SDWebImageDownloaderResponseModifier.m */, + EFEDF2D5ECC753AE8571D614B1963798 /* SDWebImageError.h */, + 09A6F60F054C786AA05EF0719696B62F /* SDWebImageError.m */, + 715A657E0CC74D8B40E45CA4D3522B3D /* SDWebImageIndicator.h */, + B89B48EEC902B56C99B054A4DCFADF2A /* SDWebImageIndicator.m */, + 403BD2D5226086BD074D17B0E029F4D7 /* SDWebImageManager.h */, + ED2C0D156B8A12A533C195AC8BBFDD5B /* SDWebImageManager.m */, + DF64F54BE9707D539DCA8EB0200D0AB1 /* SDWebImageOperation.h */, + 576C90F420ED9959ADCA100227637DA2 /* SDWebImageOperation.m */, + 4E02896548BB33036A2C56C996E1A38B /* SDWebImageOptionsProcessor.h */, + 967089F38BA440450FA3F3ED47629C84 /* SDWebImageOptionsProcessor.m */, + C6F8A6786416D17D5765D53869E38CE9 /* SDWebImagePrefetcher.h */, + 277C1614B8154708179AA8D20ABBC538 /* SDWebImagePrefetcher.m */, + 2EC48C6AB645AF18A39092BDAD20F683 /* SDWebImageTransition.h */, + 5F88D7C3CD7ACA089D922EBDC82191E7 /* SDWebImageTransition.m */, + B2E6BFD5A3AD9A62CA3F60188E08D696 /* SDWebImageTransitionInternal.h */, + 0DC68872E443BB6F78147F2DB89B58DD /* UIButton+WebCache.h */, + 0DDBE942F896A2A1978598E974191373 /* UIButton+WebCache.m */, + 640F9BB21EFCF9820909D99C53832B76 /* UIColor+SDHexString.h */, + 7C9E549A3FAFF91EEAF036808B603253 /* UIColor+SDHexString.m */, + 449FA6E85959AEB0E64362202C0D0A97 /* UIImage+ExtendedCacheData.h */, + 03579E576BD55CC052A74C8A8070B196 /* UIImage+ExtendedCacheData.m */, + CA2BCA4320480C03C5B508F285953B52 /* UIImage+ForceDecode.h */, + 23DD6C7239D10FA464DB0828145931C4 /* UIImage+ForceDecode.m */, + 89E8FD96E12B95D84295A27E95EB5477 /* UIImage+GIF.h */, + 4B816F130915F94AE33C8619C8ECBAF4 /* UIImage+GIF.m */, + F96B07564307CD9292CE442341CCD518 /* UIImage+MemoryCacheCost.h */, + 359320249B549DFE6467EF972480C385 /* UIImage+MemoryCacheCost.m */, + AA4207DB15377251DDF233B9204C7022 /* UIImage+Metadata.h */, + 0009D34B181A4884E1CF0C006A69166D /* UIImage+Metadata.m */, + D87D7D90010ADA8A499D9DC29C613929 /* UIImage+MultiFormat.h */, + 0E449F5B61ADDC653B9E79AB2315847F /* UIImage+MultiFormat.m */, + 6575EE9937AFEE339C50E7EAF20E0E70 /* UIImage+Transform.h */, + 98231343A68650106AE1E5B46461DAD1 /* UIImage+Transform.m */, + CD040FC6F5801B9A701C050A4D8B0755 /* UIImageView+HighlightedWebCache.h */, + A6B177DCC541646B642B51293271662C /* UIImageView+HighlightedWebCache.m */, + CA5AA58BD98EA3A524DCEFC10FB8DAC1 /* UIImageView+WebCache.h */, + AF85BB8468BB41F3B121C35AFAF81515 /* UIImageView+WebCache.m */, + 92CF7F8B9C5538EFF27E6F8FB583DF1B /* UIView+WebCache.h */, + 6F4D7824FC6EA0F6D1332DE5474441D2 /* UIView+WebCache.m */, + 9A15D7DE324B31E64CAE16FF03EC3793 /* UIView+WebCacheOperation.h */, + C83FEE136491E56225B8DE5E57B660A6 /* UIView+WebCacheOperation.m */, ); - name = Protocol; + name = Core; sourceTree = ""; }; - CE8A9DE9B18FEBF37FB99B3E93FD015D /* MJRefresh */ = { + CA7E705535FC7140100D7549D9186B7B /* SJRouter */ = { isa = PBXGroup; children = ( - 0EF28C5B701AE7BD90B69026BF18C0B7 /* MJRefresh.h */, - F24BA80B774C1780AEFD6CF896D177F8 /* MJRefreshAutoFooter.h */, - 61F3081C514FFF1C018C0F0CE9250506 /* MJRefreshAutoFooter.m */, - 6485158CFC0ACB8DDAE04B139CCFCCBB /* MJRefreshAutoGifFooter.h */, - B654A0746A7806B9B8983FE7D1D7CC8B /* MJRefreshAutoGifFooter.m */, - 385E844801B8350C0862C8E2A69BFE25 /* MJRefreshAutoNormalFooter.h */, - F9E7261D8793680F386FA65B7BBDA97F /* MJRefreshAutoNormalFooter.m */, - 9C1BD6D92E12294E546ACC3C7D3665AB /* MJRefreshAutoStateFooter.h */, - E4394D759F954D2780A05C8B803A62BD /* MJRefreshAutoStateFooter.m */, - E628037044AE6530E5BE7298EE76D5F4 /* MJRefreshBackFooter.h */, - C38A805FB2AA57E1DD1AF1E5644E7E6E /* MJRefreshBackFooter.m */, - 611C324442ABE3D0A8A1510E6F0B1A4A /* MJRefreshBackGifFooter.h */, - EADE370EC709344632A59499BCC2E9D5 /* MJRefreshBackGifFooter.m */, - 3ACA912397A3894221BD9F4832E6E5E3 /* MJRefreshBackNormalFooter.h */, - E59BCAC42A771576A49D1A091D4B70BB /* MJRefreshBackNormalFooter.m */, - DD309E05395EA9C6523F0B618D7E6C7F /* MJRefreshBackStateFooter.h */, - AB5E9A76F4EC72DFE58A75807D0CC83F /* MJRefreshBackStateFooter.m */, - F0C41815A28D9D182C18B92C97C26C3A /* MJRefreshComponent.h */, - CEBCA422E38F38F664A5F5BB55ECDC02 /* MJRefreshComponent.m */, - 9DA2BA92F5AF8BAFD2655F3E3899E875 /* MJRefreshConfig.h */, - C3F20CE8E68E4A6746D284A3AA320086 /* MJRefreshConfig.m */, - 52A98E5128993AA3DF10963CD124C979 /* MJRefreshConst.h */, - 915BE4B6E9A0BCCB742B4A4EB5F82F2D /* MJRefreshConst.m */, - F6EAFF42EBC4075E40DDA99088CE9383 /* MJRefreshFooter.h */, - 2CC890EEBEEC7EBABCB7D424B6AFA176 /* MJRefreshFooter.m */, - C7FC6C2563CA16A5F15DB1B070F322E1 /* MJRefreshGifHeader.h */, - 274614174FF74BCDAA35C36358AAAA28 /* MJRefreshGifHeader.m */, - D850D5C1B8B698E724D199AD8467FD73 /* MJRefreshHeader.h */, - E73231902F9415D919F84ECE75B42D51 /* MJRefreshHeader.m */, - C88E0918856389B8BF071F10147E8727 /* MJRefreshNormalHeader.h */, - 1325DBC8D4CCAD854E72BF24D1EB0530 /* MJRefreshNormalHeader.m */, - 7C3CAE22738B7067A16E205C3E833231 /* MJRefreshStateHeader.h */, - F494805241F221238B557778563DD740 /* MJRefreshStateHeader.m */, - 5C6E2C9B0C938C8AFD934FED12E8926A /* NSBundle+MJRefresh.h */, - FBE1790C3CA485D47AE8CEA8AC69C2C0 /* NSBundle+MJRefresh.m */, - 669EA9AAD729B17BE354561A8E6A6F8C /* UIScrollView+MJExtension.h */, - 518B4D911AA28E209C96CAA19D3B62B8 /* UIScrollView+MJExtension.m */, - 036AD705508BBDF5E0A821036BC33E52 /* UIScrollView+MJRefresh.h */, - 459CD217F76029EEFE9337CE1AF68274 /* UIScrollView+MJRefresh.m */, - 34D401B538A33E8C6CDD3CC87F01E5A6 /* UIView+MJExtension.h */, - AF2344BB1C2E2338A85466E58BA107F1 /* UIView+MJExtension.m */, - 0DA73EE2315FA99C724158FF1CCE139F /* Resources */, - 701F64DDA8FDFA702634BB7FAEAECD70 /* Support Files */, + 648E0FF1AC6C5ED31096409BF73BC764 /* SJRouter.h */, + F8CA8D2DAED8630C17698123CFE17C9F /* SJRouter.m */, + 081026EB8C8F2AE9943236A99D131610 /* Core */, + FC383A118631F766409001157BD91CE4 /* Support Files */, ); - name = MJRefresh; - path = MJRefresh; + name = SJRouter; + path = SJRouter; sourceTree = ""; }; - CEDD2F0F718A95AB3F40F93C72CD35D0 /* Support Files */ = { + CDC4B7E600581BE5D9E7977BDA482ABB /* KTVCocoaHTTPServer */ = { isa = PBXGroup; children = ( - 053F8D2303B2B9B46AA98AC4DD7FFD3A /* Masonry-dummy.m */, - AEC56783EAB97E9680566615D2A12113 /* Masonry-prefix.pch */, - 9DB10D827BEF1A951B5803C4D2BA3F3D /* Masonry.debug.xcconfig */, - C3C353770B2032844233173540079D9F /* Masonry.release.xcconfig */, + A425596A14BE94A416152052726023E3 /* DDData.h */, + 1B5AAFF44F99112E7D7A608B90492974 /* DDData.m */, + FF220E736C62F24802DBAA8269B7EFF0 /* DDNumber.h */, + C2D97547C0E93B7F947F73E764586ADD /* DDNumber.m */, + 9D1FC6E6636DE619E8F16A9FBC87AFB6 /* DDRange.h */, + B9C2E472862E97BC9B1558C851B944F0 /* DDRange.m */, + 4A8E8B57C107273BB2F5EEDA076DBBBA /* HTTPAsyncFileResponse.h */, + 775A07BD148D84CDD2B74442A040606A /* HTTPAsyncFileResponse.m */, + BF6D10EBF3B96C6F2D115DBEBF4E9F45 /* HTTPAuthenticationRequest.h */, + C269C70C80619B2CD6E406066A13E9F2 /* HTTPAuthenticationRequest.m */, + AA0B983050AE49D47B49663ABD310E21 /* HTTPConnection.h */, + 262682099D3D540485EE94F59B647EFF /* HTTPConnection.m */, + 860399BF84DE03E77A6D5F77DF1B4138 /* HTTPDataResponse.h */, + 471E985621AA5AED3EDB4335D8401789 /* HTTPDataResponse.m */, + 2375C3ECCB3D6B1B7865813877E83AFE /* HTTPDynamicFileResponse.h */, + 7F45A1B16BC3C68CBD9282E849F43A82 /* HTTPDynamicFileResponse.m */, + B2B25EEB41F406864A4E8DB55F4F4156 /* HTTPErrorResponse.h */, + 40E452CBE760761F2153C50DC4B5A830 /* HTTPErrorResponse.m */, + E1D93EA05B30E8571E132A25B6E7AE5E /* HTTPFileResponse.h */, + 664902A9BC612F4DD0127445FD877632 /* HTTPFileResponse.m */, + 18E6AB286955742A4F272FDC090D42E2 /* HTTPLogging.h */, + ACEF25214BFF221D8F384D9EFD16AF5F /* HTTPLogging.m */, + B8BD0A8BB3AD61C5B7FE5B759A71E7C6 /* HTTPMessage.h */, + 8388812910C1F7547864E602B83D0586 /* HTTPMessage.m */, + 8037F9D520A66240FD7240E27C368F4B /* HTTPRedirectResponse.h */, + 125DFB9742FADEA9EE7FFDE90EE5616A /* HTTPRedirectResponse.m */, + 130D63586D527C1630C4E31886E2EE95 /* HTTPResponse.h */, + 30FAD863C0D41599EAB5B2EE01B4E54A /* HTTPServer.h */, + 888B3360EA2B6287C5326D1A3708F2F4 /* HTTPServer.m */, + A341BA05158D57DD0E66B9F57A743FBD /* KTVCocoaHTTPServer.h */, + D0F927166E75A1D3D765B9E5C8941271 /* MultipartFormDataParser.h */, + 7A6DFB96B40F9343669FBF7D62127779 /* MultipartFormDataParser.m */, + F321E287F7CB3803C50810E14666CD7A /* MultipartMessageHeader.h */, + 90E8465F106C550AD902B8058B90A8AF /* MultipartMessageHeader.m */, + C9F930437D8B7167E9E19298B006102B /* MultipartMessageHeaderField.h */, + 6EDA3887632BBBC9C363EB3450EE00B9 /* MultipartMessageHeaderField.m */, + 8C281B145F8EAB623716A0AB2B10D46F /* WebSocket.h */, + 94C5A2FC18FCCA7AA31E05691BD92AE7 /* WebSocket.m */, ); - name = "Support Files"; - path = "../Target Support Files/Masonry"; + name = KTVCocoaHTTPServer; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -2763,9 +3159,9 @@ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 0ABE5F276477D6044E367A14DA82D18C /* Development Pods */, D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, - CFB4093EC57406108157FCD79D52934B /* Pods */, - 4E48B97E866B02A603EEDA1CC5D46444 /* Products */, - BC3E3D4D38450AE9EAB0BBB6C5D77210 /* Targets Support Files */, + 2FA6A8959F54B247CFAB1142DA04215E /* Pods */, + 621140FC14E4FFC0DCC3337783D5CB65 /* Products */, + D95520A9CBA37617A39ECF781B0EEA87 /* Targets Support Files */, ); sourceTree = ""; }; @@ -2781,34 +3177,6 @@ path = SJVideoPlayer/ControlLayers/SJSwitchVideoDefinitionControlLayer; sourceTree = ""; }; - CFB4093EC57406108157FCD79D52934B /* Pods */ = { - isa = PBXGroup; - children = ( - EB7464F94CA1885A473463555FD8726A /* CocoaAsyncSocket */, - A19179D14098FD5849B169A2792263A7 /* Masonry */, - CE8A9DE9B18FEBF37FB99B3E93FD015D /* MJRefresh */, - 2FB28CC30BA7AB775CD99B0D541D01BF /* SDWebImage */, - 0B25E9B314914E58DB8B107BEF263A1B /* SJBaseVideoPlayer */, - 709ED50281E7B2A76700C12DA6765663 /* SJFullscreenPopGesture */, - 6C397DC1C5F81E42942344243E6CA58C /* SJMediaCacheServer */, - 5919D12C19FF5CA711E287DF3FF6B417 /* SJRouter */, - BA7313B38B05C43236FE2430A66663C5 /* SJUIKit */, - DB60931ECD7B5F25BA9590629126A202 /* YYModel */, - ); - name = Pods; - sourceTree = ""; - }; - D28EFF17D3824F977532C086234494E4 /* Other */ = { - isa = PBXGroup; - children = ( - 00E115F4BD8D7320CDD559CFCED2EE5B /* SJApplicationInfo.h */, - 7342B3363CF74AD152F235742475B98B /* SJApplicationInfo.m */, - 0907DC601C15D896E168D720258A128E /* SJObjectContainer.h */, - A33D9972066737C1476906F48882629E /* SJObjectContainer.m */, - ); - name = Other; - sourceTree = ""; - }; D46B1C8DC41D3725B3F9793E365C0DF9 /* SJMoreSettingControlLayer */ = { isa = PBXGroup; children = ( @@ -2819,13 +3187,13 @@ path = SJVideoPlayer/ControlLayers/SJMoreSettingControlLayer; sourceTree = ""; }; - D670252DC6126039DBF641C2526C77B2 /* ObjC */ = { + D56603C5D0166D1B028F986FD32308E7 /* ObserverHelper */ = { isa = PBXGroup; children = ( - E33199CE1C85492B545A39D30086171B /* SJFullscreenPopGesture.h */, - E4026E5D8BC3C71638E3BBB1A4995389 /* SJFullscreenPopGesture.m */, + AA64DC5170CFE7EBD06BFD2291455BC5 /* NSObject+SJObserverHelper.h */, + 20BE12DC21A9AA42080D6D29760AC1E3 /* NSObject+SJObserverHelper.m */, ); - name = ObjC; + name = ObserverHelper; sourceTree = ""; }; D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { @@ -2835,29 +3203,13 @@ name = Frameworks; sourceTree = ""; }; - DB4E2E1FC75D19A1196D0C8F333A5E47 /* Deprecated */ = { - isa = PBXGroup; - children = ( - 6410928180119AE960509F1C346ADFF3 /* SJAttributesRecorder.h */, - 03888391B5161257680388A1D70E6B36 /* SJAttributesRecorder.m */, - 52A0A5C0220AFFABAC2E738A86F11F40 /* SJAttributeWorker.h */, - 7BA4C8CA905F7A3FCDCA49049392CDA1 /* SJAttributeWorker.m */, - ); - name = Deprecated; - sourceTree = ""; - }; - DB60931ECD7B5F25BA9590629126A202 /* YYModel */ = { + D95520A9CBA37617A39ECF781B0EEA87 /* Targets Support Files */ = { isa = PBXGroup; children = ( - D513DA4F5D2248AB231EE0D9A9BDCC34 /* NSObject+YYModel.h */, - E69B7C7835764A92E5B7E40EA8EA1262 /* NSObject+YYModel.m */, - 3F92D809EB47FA6E52DD57A1C67497D4 /* YYClassInfo.h */, - 5FD20B07A302E845938F958948493019 /* YYClassInfo.m */, - E4FF71E5CA80528882C87C59F23F19A9 /* YYModel.h */, - 575B5ACD403D2B0C2A6A2643E2641701 /* Support Files */, + AF2EF5B937D676531847BA5AFCA2DAD7 /* Pods-iPadDemo */, + 3CAD0F8E5DD1E73354E8D31CDD7912FB /* Pods-SJVideoPlayer_Example */, ); - name = YYModel; - path = YYModel; + name = "Targets Support Files"; sourceTree = ""; }; DE4229645A691347B63F8F1E86B02060 /* Model */ = { @@ -2878,163 +3230,64 @@ path = Model; sourceTree = ""; }; - E05710E28BC7415230BB7CAB86901CD5 /* SJEdgeControlLayer */ = { - isa = PBXGroup; - children = ( - D2A019A0AD97FD48BD74D7F7A8760884 /* SJEdgeControlLayer.h */, - 3C1B227E76AC083FB6F8CAADE5462003 /* SJEdgeControlLayer.m */, - ); - name = SJEdgeControlLayer; - path = SJVideoPlayer/ControlLayers/SJEdgeControlLayer; - sourceTree = ""; - }; - E27BAC25FEF1994B005D7276C72D86D0 /* Common */ = { + DE42CCAF3B7D953FC5865F55A96772D1 /* Queues */ = { isa = PBXGroup; children = ( - 918F2ADA4548FBA7B859AAC4FCE61D54 /* CALayer+SJBaseVideoPlayerExtended.h */, - 12FC7263674BF8906223315EA6EA2618 /* CALayer+SJBaseVideoPlayerExtended.m */, - BAF4DB20F53D2C3A7E33A82E2B2B4490 /* NSString+SJBaseVideoPlayerExtended.h */, - 3411F81777FF74984A109E5EEF10C857 /* NSString+SJBaseVideoPlayerExtended.m */, - 5DB7BECCC2E1CE23D187A071D3589D56 /* NSTimer+SJAssetAdd.h */, - 9D3B530C4EDB6B601D72D6EE5CAEEEF2 /* NSTimer+SJAssetAdd.m */, - 9067DD3A390FBACCCCCE1160B88CDE31 /* SJBarrageItem.h */, - 800EC3EAFFA4712A08D9C292A98E2FCA /* SJBarrageItem.m */, - A90D07F9C4C45070DE6EC8EDD779FAFA /* SJBarrageQueueController.h */, - A83B0AFF3CD9F7C156207C6BB518C6CE /* SJBarrageQueueController.m */, - 6452C15CFE7FAC999C262C6B2D4A5694 /* SJBarrageQueueControllerDefines.h */, - 4D3CB7690E496179FD04036479419436 /* SJBaseVideoPlayerConst.h */, - 7F048C2959833A03AFCEE28F9955024F /* SJBaseVideoPlayerConst.m */, - AD7DF0A2721A8C7E652671511C276672 /* SJControlLayerAppearManagerDefines.h */, - 92CC0C7355A5708E819F98605653C46E /* SJControlLayerAppearStateManager.h */, - 1FCC7D946DC63960299D1DB57E738488 /* SJControlLayerAppearStateManager.m */, - 9FAD1D167CCE9EF065317A85C9D578A2 /* SJDeviceVolumeAndBrightnessManager.h */, - D87E4C611585ED036A3D17669214DA2C /* SJDeviceVolumeAndBrightnessManager.m */, - 774EE19CE764EBE2DDE6D0AC5703F493 /* SJDeviceVolumeAndBrightnessManagerDefines.h */, - EDE3D0911B4390B1712FF728BA12C647 /* SJFitOnScreenManager.h */, - 12B90A694A0547E1744E10F64B7E9F32 /* SJFitOnScreenManager.m */, - 5415FF86CEBD575DD571E29C23B94D62 /* SJFitOnScreenManagerDefines.h */, - BFC72DD279E29F75761B74EE4AD91535 /* SJFlipTransitionManager.h */, - 266DE3DF25B3C7FEBE8FE679F9DFCA0E /* SJFlipTransitionManager.m */, - F7A616DEE45EC73F4D8AABFA71F21A7D /* SJFlipTransitionManagerDefines.h */, - 2EA1782BC13299207C54F063F2DEE102 /* SJFloatSmallViewController.h */, - 0051CE79B33E6BB729E838479155ED3F /* SJFloatSmallViewController.m */, - 2AFDD564F0094A0BAF05DFB55F22A864 /* SJFloatSmallViewControllerDefines.h */, - 254D09E17D9229A90BAACE8231240B24 /* SJMediaPlaybackController.h */, - E548BE78DD83090F02AAB4FB8B900692 /* SJMediaPlaybackController.m */, - 1BD0D4E3498989281E2B345E338236B7 /* SJPictureInPictureControllerDefines.h */, - 8C51F9C53DAA09F339ADBBAF64EDFB49 /* SJPlaybackHistoryController.h */, - EC28F404C4C8C666794FEDE499FC2FFC /* SJPlaybackHistoryController.m */, - A0CD1BBBAA2372033E80B8842F11437A /* SJPlaybackHistoryControllerDefines.h */, - B08F4D41D62B8A3C8A674DAF4980B486 /* SJPlaybackObservation.h */, - DD35D5B4D1B5350A9A4894B8B0185A35 /* SJPlaybackObservation.m */, - 8F108A06125024AD23CBECDE0E11790F /* SJPlaybackRecord.h */, - 85978CD214BFAD661D800CA5B32A0A15 /* SJPlaybackRecord.m */, - 99E9AF69A4670D8AD651E5BCDEFA1BE2 /* SJPlayerAutoplayConfig.h */, - AE0C1A12FD30F5734368969C9D334F83 /* SJPlayerAutoplayConfig.m */, - 06896347C383BCAA151C113068E31848 /* SJPlayerGestureControlDefines.h */, - E7552C34658825C1FE0E7CDC4D0D72F4 /* SJPlayerView.h */, - 3379B70F642E3A1BB128EAA6553FDFD6 /* SJPlayerView.m */, - 6707E7ABA6C90AEFB9CE5E394B1C0177 /* SJPlayModel.h */, - E65CBD93BBCF1B30961612388455C464 /* SJPlayModel.m */, - 635A6B234C1AEA4EAA0280AC6675FF5D /* SJPlayModel+SJPrivate.h */, - C29F3A1666B4FF15FAC165CAD8DE1CA8 /* SJPlayModelPropertiesObserver.h */, - C1763BD877967CEE14201939E0AE2D1B /* SJPlayModelPropertiesObserver.m */, - F1FFFBC9BE4BBE52952C5975DBDB201C /* SJPrompt.h */, - 42EAE425238193AE6EC5215836C41F35 /* SJPrompt.m */, - 4005EE343940833790D50A2EFE5A32C6 /* SJPromptDefines.h */, - 1C1A64733F20770F31EC31F6D89C34CC /* SJPromptPopupController.h */, - 87A8FF6A5C7CA85FB814C0FCB3F3ECF4 /* SJPromptPopupController.m */, - 4FB040FE130EA6CDF546D9CA3C96062E /* SJPromptPopupControllerDefines.h */, - 2925CD50B5FE585633338A48D1CD9C21 /* SJReachability.h */, - 31B536733AE5C23D1CCE6A214A391079 /* SJReachability.m */, - 8899B5E5723BBE5CB2101CB3FD0F8ED6 /* SJReachabilityDefines.h */, - 420C4B37A147BBEDC399E5D8A39B6946 /* SJRotationManager.h */, - 71503EB67F2400159C69A9ED726E59A0 /* SJRotationManager.m */, - AB54C4DF61CCAB892943990AFC3ED5C6 /* SJRotationManagerDefines.h */, - A78E043AF4AB2849F946B81C70738063 /* SJSubtitleItem.h */, - 7009E1A9D42BC0CF10CA09AA87874FDA /* SJSubtitleItem.m */, - A2A20B9946FA613A7D8F609B799F1412 /* SJSubtitlesPromptController.h */, - 9AA092AD010D80E2DA92FC13BFABA8FA /* SJSubtitlesPromptController.m */, - 32F8925415F5CA27384EB12021384B32 /* SJSubtitlesPromptControllerDefines.h */, - FD10D68F25403431C12A445F999622E0 /* SJTimerControl.h */, - B2002E1E221F8F47A1355596E2F58E7A /* SJTimerControl.m */, - 0E32CA41D536F40425F0069CAC1D2C35 /* SJVideoDefinitionSwitchingInfo.h */, - 3B6104EC9A6F4C98EA3BAEEC28EAB151 /* SJVideoDefinitionSwitchingInfo.m */, - 61E93D53929723D56F0B391AB315F8E9 /* SJVideoDefinitionSwitchingInfo+Private.h */, - 367CCF62D97AE14378B92126C56326F4 /* SJVideoPlayerControlLayerProtocol.h */, - 30AC790BC9CCC7F08D364202B380BFD9 /* SJVideoPlayerPlaybackControllerDefines.h */, - CA67125CDE8DA05C96780604169151CF /* SJVideoPlayerPlayStatusDefines.h */, - 014A11017EECFB590E6EE19F8799C0C1 /* SJVideoPlayerPresentView.h */, - 727F06A72DB64D29459AC2CB23D556B2 /* SJVideoPlayerPresentView.m */, - DD2C0DD991A93EFB15FCCC3831E190D6 /* SJVideoPlayerPresentViewDefines.h */, - 05165E3B61A6AC4ACB8E359ADDFAF3A9 /* SJVideoPlayerRegistrar.h */, - 25928B0F9D432F2FCB96986DC2A298B6 /* SJVideoPlayerRegistrar.m */, - 824532C2D9FF2C7F2F036CEC1481E1A1 /* SJVideoPlayerURLAsset.h */, - AD0D35EEB9E25AE303FBCD6EAD2EE82D /* SJVideoPlayerURLAsset.m */, - E54512C7DF7AB5BC5741553F177A8D47 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h */, - 29047C599E4AA11666D41888CF47C96B /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m */, - D2E7D1E3701CBD75BF3C47850F6ECE70 /* SJViewControllerManager.h */, - 00B0A538FDC7CAE79FC847F0E378A213 /* SJViewControllerManager.m */, - 77B9CDB0C564A3B2E3A5D455DC8B932D /* SJViewControllerManagerDefines.h */, - 65CB492F77775D641DB99E9E764FB92B /* SJWatermarkView.h */, - C15D832134358CC8D7CDD7FDB011EB5C /* SJWatermarkView.m */, - 632AFE289709A58345A6C401D3BE4039 /* SJWatermarkViewDefines.h */, - A9097D398AABEAB3E0D1AA8612D4A2CC /* UIScrollView+SJBaseVideoPlayerExtended.h */, - CCADD81376F095067E6122F10F6889E1 /* UIScrollView+SJBaseVideoPlayerExtended.m */, - B7327C043EC6A08B424124BB68FDD4F1 /* UIView+SJBaseVideoPlayerExtended.h */, - 55064031BE0299A3D86B98F38E325BB0 /* UIView+SJBaseVideoPlayerExtended.m */, - 65A02E76ACA587EE3AFA833C54E3B090 /* UIViewController+SJBaseVideoPlayerExtended.h */, - C709A6F22DB4CCD150E48276A147D8AB /* UIViewController+SJBaseVideoPlayerExtended.m */, + 3F9DF7C80596BCC67B303442CEC24862 /* SJPresentationQueue.h */, + 127B306A8EEBFF68A999E0032B1F4645 /* SJPresentationQueue.m */, + 6E5E96C769A13E0105E12B793698BB28 /* SJQueue.h */, + FDAF7D92F11A7CEB30DE69CB6515270A /* SJQueue.m */, + A40557A96561E21A7370CFE58EFB61B2 /* SJRunLoopTaskQueue.h */, + E8F216DDF4BA3948ADB668604E719DF9 /* SJRunLoopTaskQueue.m */, + 5C5B5C9ECCC7EEC5EDA3F73BAE659029 /* SJTaskQueue.h */, + CA9A809B44D5FA678D1449340EADDDF3 /* SJTaskQueue.m */, ); - name = Common; + name = Queues; sourceTree = ""; }; - E4488A52B8E35ABC9CD9E10217D8267B /* Core */ = { + DF156C3602A071E8C07CB2650B49FF18 /* Core */ = { isa = PBXGroup; children = ( - 59E8A59D96FCEDD5B9BE6E1E38408F2C /* SJMakeView.h */, - 7B4EBBF3E47C54F5B7D49DC877624907 /* SJMakeView.m */, + 10DE3F15AD556E9411F70D5954CAFD92 /* SJAppearStateObserver.h */, + C00EF724D95AB145FDF6C925649488F5 /* SJAppearStateObserver.m */, + 7C4DAFA503034AE5933119679FCBF4AF /* SJBaseProtocols.h */, + 13A2FFF8AFB2C5868910E889B9285FEB /* SJStatusBarManager.h */, + 2234052EC5245FFC09686458614B084A /* SJStatusBarManager.m */, ); name = Core; sourceTree = ""; }; - EB47725C01A7D1FEACF4F769378C9C9E /* Pods-SJVideoPlayer_Example */ = { + E05710E28BC7415230BB7CAB86901CD5 /* SJEdgeControlLayer */ = { isa = PBXGroup; children = ( - 85946BC317749323316815E749BA9B3D /* Pods-SJVideoPlayer_Example-acknowledgements.markdown */, - CC724F0BCB5903A32DC068916092CF89 /* Pods-SJVideoPlayer_Example-acknowledgements.plist */, - 7A961442A951AD4743D626428CC377BF /* Pods-SJVideoPlayer_Example-dummy.m */, - 4C78C12B413A5A0F66A00F8371029E3C /* Pods-SJVideoPlayer_Example-resources.sh */, - 780634E729C4D79FBA038A7CA9ED0127 /* Pods-SJVideoPlayer_Example.debug.xcconfig */, - 09FAD31258382D3E1171F30A6A61D033 /* Pods-SJVideoPlayer_Example.release.xcconfig */, + D2A019A0AD97FD48BD74D7F7A8760884 /* SJEdgeControlLayer.h */, + 3C1B227E76AC083FB6F8CAADE5462003 /* SJEdgeControlLayer.m */, ); - name = "Pods-SJVideoPlayer_Example"; - path = "Target Support Files/Pods-SJVideoPlayer_Example"; + name = SJEdgeControlLayer; + path = SJVideoPlayer/ControlLayers/SJEdgeControlLayer; sourceTree = ""; }; - EB4D5BB3E0285FA8610FF84C2C03ABF6 /* AttributesFactory */ = { + E0AD559CC485A8C4E61C44BC0EA4DE3F /* PageViewController */ = { isa = PBXGroup; children = ( - 972C7303D00A6BECD2E953A4001D3114 /* NSAttributedString+SJMake.h */, - AC2DC9268758D54B33BDF3713D83FD5C /* NSAttributedString+SJMake.m */, - 89E198D84C6514C2387F4EAF407B8E86 /* SJAttributesFactory.h */, - DB4E2E1FC75D19A1196D0C8F333A5E47 /* Deprecated */, - FEB6532627E344FBCBED73073F124C6F /* UIKitText */, + 1D35E6DC370566A772F84A2BA1C43063 /* SJPageMenuBar.h */, + 7C0180F0B23805DFB448CC303CF488C9 /* SJPageMenuBar.m */, + D4CA17A1DB3AAE17905F0B7E1AECDAB7 /* SJPageMenuBarSubclass.h */, + 1B9E452C7341DA3F0243668E1E52250B /* SJPageViewController.h */, + F33F130F0109BC1FD1480ED3410BDDEB /* SJPageViewController.m */, + 52ED4BA08AE1586388EA131BA68C83BA /* Core */, ); - name = AttributesFactory; + name = PageViewController; sourceTree = ""; }; - EB7464F94CA1885A473463555FD8726A /* CocoaAsyncSocket */ = { + E8F4336212ECD1B1AB7767BC59F65072 /* SDWebImage */ = { isa = PBXGroup; children = ( - 0EDB1E5B3E80E12BD16FD682E1691547 /* GCDAsyncSocket.h */, - E951DDE18886DEEF046EBC796567EAAF /* GCDAsyncSocket.m */, - 6E395F3FDF754505AE4A25EAD4462634 /* GCDAsyncUdpSocket.h */, - 66CED631CA87B4C2F76A9CA73D436E34 /* GCDAsyncUdpSocket.m */, - 7107A80933595BE0872EA98A051C4163 /* Support Files */, + C78342168B912588BBBAA6932DCEDA22 /* Core */, + 06B396DF19125A54E40FDB5835110937 /* Support Files */, ); - name = CocoaAsyncSocket; - path = CocoaAsyncSocket; + name = SDWebImage; + path = SDWebImage; sourceTree = ""; }; EE60C2B640829D3D01BA91EF68A631CA /* SJProgressSlider */ = { @@ -3051,6 +3304,18 @@ path = SJProgressSlider; sourceTree = ""; }; + EF92AFE1E5CD41B3CEDCBA9547F05784 /* Support Files */ = { + isa = PBXGroup; + children = ( + E4CCE76C54CD479F0A58E12561481D1E /* MJRefresh-dummy.m */, + 60D106FCD9C7CEDC8B89BC3E75C13800 /* MJRefresh-prefix.pch */, + 0253AB53B6D7184C77FA8D594626A84B /* MJRefresh.debug.xcconfig */, + 40660CEB9E983CC24BD8D018F5F68718 /* MJRefresh.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/MJRefresh"; + sourceTree = ""; + }; EFB1326560B6D3C0A5B7D37B94C3E030 /* Interfaces */ = { isa = PBXGroup; children = ( @@ -3078,45 +3343,17 @@ path = SJVideoPlayer/ControlLayers/SJClipsControlLayer; sourceTree = ""; }; - F654865F2BB6A2731C752449C8FAB422 /* Support Files */ = { - isa = PBXGroup; - children = ( - 704BDA24D5FB797AF694EBA9AC10528C /* SJMediaCacheServer-dummy.m */, - 5A976A641573157DE1578A20873686EF /* SJMediaCacheServer-prefix.pch */, - 1C05E718863B171F795E53DDE2BAECE4 /* SJMediaCacheServer.debug.xcconfig */, - 794C350CE87DE87A02B571FEB8D37898 /* SJMediaCacheServer.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SJMediaCacheServer"; - sourceTree = ""; - }; - F8604DE203FA11935600EE9CA1634800 /* Core */ = { + F7F8C3A901471EE92F655158A91ADB40 /* SJMediaCacheServer */ = { isa = PBXGroup; children = ( - 4AABD1076218AB091BBD62C7D05383F9 /* SJSQLite3ColumnOrder.h */, - 080DAD015F2F240DE2AEE9593D2F2FC4 /* SJSQLite3ColumnOrder.m */, - 4C8B4E10F602762593A417B7A4B00C70 /* SJSQLite3Condition.h */, - 81EAA01DE713584867348545B2F47321 /* SJSQLite3Condition.m */, - 55BA50143EB3AD43978067F96B0DE5F9 /* SJSQLite3Logger.h */, - AB76BBD96F1A08F1882FCD504D522386 /* SJSQLite3Logger.m */, - 6344F0AC2BE8319242CEFA60533A15E9 /* SJSQLite3TableClassCache.h */, - 36B60032FE481D958AEC32B9FD388D83 /* SJSQLite3TableClassCache.m */, - 5C466BD98DF99C6115D7708EB1E1D340 /* SJSQLite3TableInfoCache.h */, - A4054EA7AB619E7D79D30D8EA4E451C2 /* SJSQLite3TableInfoCache.m */, - 2B350113431B328301E06AB8622AFA0B /* SJSQLiteColumnInfo.h */, - 7AF7DCA779DFF2547BB76ACB69FCCDFC /* SJSQLiteColumnInfo.m */, - FCEF5781D7C10CA34315070B0AF3353C /* SJSQLiteCore.h */, - F937602F49AE8206D8DE1FD8FBBDFA86 /* SJSQLiteCore.m */, - 6739079FE29D319EE64B9D92CB4CF4B0 /* SJSQLiteErrors.h */, - F96B78C14D2B5624F6C7C785C4641FB0 /* SJSQLiteErrors.m */, - 65EBACFA989176D05AFC74118C37DD4F /* SJSQLiteObjectInfo.h */, - 99229577C2DF4DD77CDF6C978AB586A8 /* SJSQLiteObjectInfo.m */, - E5AD19299EF9DE6F3485B90E2BAF1855 /* SJSQLiteTableInfo.h */, - 8B53E9CC14C18E51B35E0DAE2E6C4856 /* SJSQLiteTableInfo.m */, - 2CA0D17A981E18F105B4F44721EAE8D0 /* SJSQLiteTableModelConstraints.h */, - 863EDFE78BE1328E59A8ABF8A6971626 /* SJSQLiteTableModelConstraints.m */, + B4B8EF9E3BD2107B30516EF614913F5F /* SJMediaCacheServer.h */, + AFFB3BA820AFA27385483AB38D71F0E3 /* SJMediaCacheServer.m */, + 17E244CDEE08E61721DC6EB6505FECB5 /* Core */, + CDC4B7E600581BE5D9E7977BDA482ABB /* KTVCocoaHTTPServer */, + 2A49EF81E21108FD12598C1AB1AC3BD8 /* Support Files */, ); - name = Core; + name = SJMediaCacheServer; + path = SJMediaCacheServer; sourceTree = ""; }; F92AE5F228BBF9706AC3E8137141E5F6 /* Consts */ = { @@ -3133,593 +3370,567 @@ path = SJVideoPlayer/Common/Consts; sourceTree = ""; }; - FEB6532627E344FBCBED73073F124C6F /* UIKitText */ = { + FBA190A64A25C7BB8C5AFE1243EDA68F /* Resources */ = { isa = PBXGroup; children = ( - DF21D93DAE55278A7F01716A00EBA719 /* SJUIKitAttributesDefines.h */, - 9B3B7D05DD79196EFC0C580C86C436DA /* SJUIKitTextMaker.h */, - D9B895DFCCB644F385AB56C195DD04F8 /* SJUIKitTextMaker.m */, - 446EEA38EACED61AE17EA0A98522BA31 /* SJUTAttributes.h */, - 1E56A1F424C8D6E8849E3A12BC3D1CDA /* SJUTAttributes.m */, - F610DC0FCA992C34A1372657CF69816C /* SJUTRangeHandler.h */, - 69A61C8C8A82A510D2860323E8C883BB /* SJUTRangeHandler.m */, - 82EC894487A2A2F9A5507ED8FDF81AB0 /* SJUTRecorder.h */, - 5B0B62E47996AAC595072E38311007EA /* SJUTRecorder.m */, - 9D959AA1C085D01EC7E15EA15DEA6AB4 /* SJUTRegexHandler.h */, - A869E4A993F661D3D2915795CE9DA7BE /* SJUTRegexHandler.m */, - 15E1591DA337D219AFA0E3DAD4DA5344 /* SJUTUtils.h */, - 6443014553B16DA9CB936744B82B9B3B /* SJUTUtils.m */, + 7E3BF6D4E9A269FDD7F390EC0EAED390 /* SJBaseVideoPlayerResources.bundle */, ); - name = UIKitText; + name = Resources; sourceTree = ""; }; - FF23D65C31DACCBB359C01F5E31B8737 /* Support Files */ = { + FC383A118631F766409001157BD91CE4 /* Support Files */ = { isa = PBXGroup; children = ( - 88A99CB7A31D1B61929503B9300D703B /* SJUIKit-dummy.m */, - AE6C6681855B19F8F02C858F8F49BABA /* SJUIKit-prefix.pch */, - 01C82C208B0A4A92A9E70847FA57A410 /* SJUIKit.debug.xcconfig */, - 9963E705B0F81FE6D5DA1220EE7E9640 /* SJUIKit.release.xcconfig */, + 521C4478730C8E456ECD8C8532D62E2E /* SJRouter-dummy.m */, + 49C110A917127C0F02A789C6FD9CBAB8 /* SJRouter-prefix.pch */, + 8BEF6641726D93A0A6D26DBCE82709B1 /* SJRouter.debug.xcconfig */, + 5C7B5B2F9FBB694DA59C873C45DC5917 /* SJRouter.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/SJUIKit"; + path = "../Target Support Files/SJRouter"; sourceTree = ""; }; - FFFFFFCD5C5D5D76CD775AA1D1CCA138 /* Core */ = { + FD08FC17B1A5CE3FE5E2E3898915CD78 /* AsyncLoad */ = { isa = PBXGroup; children = ( - A0CA1B6EF742025C3A52915BCFC98BDD /* FILEAsset.h */, - 9CE42A4FA342D6F2ED20362267F2A070 /* FILEAsset.m */, - A56698AC9E049EED42E6D240BA616D7B /* FILEAssetContentProvider.h */, - 11430920277C0AB970C25D9FDCEC4D54 /* FILEAssetContentProvider.m */, - 53028853810282EED89D452B24CC3BB7 /* FILEAssetReader.h */, - A0E7C42B7752D5E273314585CFF1B9EF /* FILEAssetReader.m */, - 3C6E8E794AAC215DD09FEA70ACB88F19 /* FILEPrefetcher.h */, - BF6DE3A270BE4CC5B1B9C92CC4938950 /* FILEPrefetcher.m */, - A4DC4D0C6F94FB1DC319784A5DFD692E /* HLSAsset.h */, - BD5D9CA89EC8B7000A0E6A4015253E9C /* HLSAsset.m */, - EA02E1AFA77B567CD9786B65B7630888 /* HLSAssetContentProvider.h */, - B60C96F403104D06142B611D6963D851 /* HLSAssetContentProvider.m */, - E28AE61AF1C867E3372A91A8977D0E7F /* HLSAssetContentReader.h */, - 6D9E79BB430A332E8B949F1F233DFF1B /* HLSAssetContentReader.m */, - 2338CE541EF0E31053F74D487B439369 /* HLSAssetDefines.h */, - 403F827743567CFD3F1A6D8FECEC9118 /* HLSAssetParser.h */, - AADBDBA9F85ED617021FB0C140A8B065 /* HLSAssetParser.m */, - C40D24208B6143F821EAA152E001259E /* HLSAssetReader.h */, - D759FC719C17D96C649DA84ED5860481 /* HLSAssetReader.m */, - 43B2754699DE7E14F2D2E781DC17197C /* HLSAssetTsContent.h */, - E92E7FCF3175DF867868563AF978025D /* HLSAssetTsContent.m */, - 3BE6245A7CEF0A0621AE4E12648D9B74 /* HLSPrefetcher.h */, - 040661A83621B0F8775E45CBE8CE4818 /* HLSPrefetcher.m */, - 9E1420619555CDC4D62691FE8EB5DDD8 /* MCSAssetCacheManager.h */, - 971A3662A95B2F6A4EC4DF4FD6236478 /* MCSAssetCacheManager.m */, - 059862E687856F86474FFBC16DE7A911 /* MCSAssetContent.h */, - C36854FC37D08E860DABC7FC72498F79 /* MCSAssetContent.m */, - 714048E7758AA67BFC8F2AA0B02E09C9 /* MCSAssetContentReader.h */, - 59702A9FC3DCE324C13A7690A2067472 /* MCSAssetContentReader.m */, - B78CC481B2010D487903DBD4C27B4450 /* MCSAssetDefines.h */, - EEEA9C67CC77428D3D1359743742025C /* MCSAssetExporterDefines.h */, - 5BB4BBF24468A1C878D7312C83E593BB /* MCSAssetExporterManager.h */, - 1879A0EB8878046A8AFF1CCC22EFAFEB /* MCSAssetExporterManager.m */, - 46116736D8C9A45F0FC9B7AC4F4CA2CA /* MCSAssetManager.h */, - AAA30465B69981C2EF2DC8DBB22A187D /* MCSAssetManager.m */, - 79183B7E64CAD06350A22AAA3CD54A04 /* MCSAssetUsageLog.h */, - C6EB44D4E64707DFDCF66BFB471D0B61 /* MCSAssetUsageLog.m */, - A3DE979A5047694D6076DABF605E4B78 /* MCSConfiguration.h */, - 286B00B8F38F983BE61523CDF9B30B9A /* MCSConfiguration.m */, - 2622C915C5313EADAD56750D52E52FED /* MCSConsts.h */, - BE6D5C330D250E12CC9DEAC0B4D22846 /* MCSConsts.m */, - E84AB23B1E40E8B79EA02BB89B24B902 /* MCSContents.h */, - E78F872AE11C12AF729FA9E877F45094 /* MCSContents.m */, - 57735687B8A6FBAFD141692D2E4268C0 /* MCSDatabase.h */, - 88685A005FD6DDBF2211983DC3D92A82 /* MCSDatabase.m */, - 3641097E8A78FCE467574CE6A017FDF3 /* MCSDefines.h */, - 62DB00B0CAE84DF3F350EC3035541DDD /* MCSDownload.h */, - DCA9BCFC6492FD71B840A871ED332581 /* MCSDownload.m */, - D6B31DBF7441C3F380AB8352038D06BD /* MCSError.h */, - 4942CD1FD5E67D8CB9B4DA79686F5871 /* MCSError.m */, - FDD4698841FE8C1C1B21A5BB07A00D11 /* MCSInterfaces.h */, - B8C0A063B2E23BFEFF5C539D82E7BB9F /* MCSLogger.h */, - 50FED1D354E634327716E8954642DF13 /* MCSLogger.m */, - 942E0A4A04454EC8C14AF4611A02D1CD /* MCSPrefetcherDefines.h */, - 8C2CD6B6D8876491C00916AB9F7CABB9 /* MCSPrefetcherManager.h */, - 7C62A439ED3FC0FFB57693DA8829D685 /* MCSPrefetcherManager.m */, - 3697B28CE578065D0DB2C1E0DEFCEBE5 /* MCSProxyServer.h */, - 14B6B58110C685495047366A05397BDF /* MCSProxyServer.m */, - 667247C1C106855597108467A198E382 /* MCSProxyTask.h */, - 261CD5468B6982A3716E4B77F3ADD224 /* MCSProxyTask.m */, - 1DD80D2B81E957EC08C271B2008A6709 /* MCSQueue.h */, - ED75555ECE3DBF739232D47E4EDA98B3 /* MCSQueue.m */, - F79C2C557E3D961D185C78E0080EB591 /* MCSReadwrite.h */, - 618A5798F2C9A9E9A2975C55B0B141A6 /* MCSReadwrite.m */, - DB633C9DCA3BA68A2696BEDB1CD6D286 /* MCSResponse.h */, - A7B1D19D59A980ED85586D753954DB0F /* MCSResponse.m */, - 2C14EA7A89E899FBA93DFD352CCD7BD5 /* MCSRootDirectory.h */, - 465162822C09DF37A53EC3FCF96AD13E /* MCSRootDirectory.m */, - 94679E79D829B7FD6DD0960E95D6196E /* MCSURL.h */, - 2A47D8C15668541E49C219CE3BB89270 /* MCSURL.m */, - A4D0791B81E870AEF6897506646C0402 /* MCSUtils.h */, - 10AC34D16AD56DF01B15E4015991BB88 /* MCSUtils.m */, - CA3B5AA51D8652925F88F7DEEA6BD494 /* NSFileHandle+MCS.h */, - BF929E78550F3DA7BC3A21210AE62F23 /* NSFileHandle+MCS.m */, - 0715D640583BBA7271BAFA9B21207EA2 /* NSFileManager+MCS.h */, - 88E26DF3D50094EA3683F187FABD8DAA /* NSFileManager+MCS.m */, - 8FCD068A9459D9BA241862FD1B03E535 /* NSURLRequest+MCS.h */, - 155BA38F7BEE983C0C89B4F405355CFD /* NSURLRequest+MCS.m */, + 77B6012BDD2B5544640DCC165A436B72 /* NSObject+SJAsyncLoad.h */, + A874CD95A69F2D44AAA5A0CFA9FDCDE4 /* NSObject+SJAsyncLoad.m */, + 809547284B0BC63048E8188D808EF96B /* SJAsyncLoad.h */, + 8366B88B5D76BE68DA0F531D930716D7 /* SJAsyncLoader.h */, + ACA13AA1F6C290BC8388EA4D2E7106C5 /* SJAsyncLoader.m */, + 4FE845842EA054B1DBF9BC6EDE7C5DA1 /* UIButton+AsyncLoadImage.h */, + 42CF1AB1E9A3660981662A104EDB284B /* UIButton+AsyncLoadImage.m */, + E67DD63064C2FE5066D2F78AE06724F4 /* UIImageView+AsyncLoadImage.h */, + 5CCAF49B9D3A9671545221F31F8150FA /* UIImageView+AsyncLoadImage.m */, + A12998581DFF80163765A62CF4FA9DC6 /* UILabel+AsyncLoad.h */, + E680F82D160CB64A2DC4EAAD059C18B1 /* UILabel+AsyncLoad.m */, + 5C9F232B6BBE209A9B893A3D3BD46C5F /* UISearchBar+AsyncLoad.h */, + A6338C94112B5C5393405A10DA52FF93 /* UISearchBar+AsyncLoad.m */, + 79F917C5B5C1104B61A04001B111A3A7 /* UITextField+AsyncLoadImage.h */, + B1DBC6F072831DD044636D140F71FA0F /* UITextField+AsyncLoadImage.m */, ); - name = Core; + name = AsyncLoad; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 09992AEAF0DA1A107439E5104473B1A6 /* Headers */ = { + 276B94151CAFC7EC150A7DDBF9F9E2FE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A59770298373C69FF1D441F09A7ABDC4 /* NSBezierPath+SDRoundedCorners.h in Headers */, + BA492D17AEC4C52C479E16FC0CD4CAB4 /* NSButton+WebCache.h in Headers */, + 9CCBBF929B5B91BEBCEB5CF82A22E2E5 /* NSData+ImageContentType.h in Headers */, + 4D02C045EBDBA5B696D981F669C177CC /* NSImage+Compatibility.h in Headers */, + 038624C9D9CAC879C0B263616C798B10 /* SDAnimatedImage.h in Headers */, + 073DE4CC827EFD78E9AD5267D7A3812B /* SDAnimatedImagePlayer.h in Headers */, + 3F3F4492BA39F5FB791C6FFF8D80F6C9 /* SDAnimatedImageRep.h in Headers */, + C2BECD3D679321F93E4362BCA847D740 /* SDAnimatedImageView.h in Headers */, + 347926BC5E799D3580D2DB2ED7047251 /* SDAnimatedImageView+WebCache.h in Headers */, + B1D4D6955A10330DF544E5E31366AC9B /* SDAssociatedObject.h in Headers */, + DE03824ADA847692600223F5CF734FEF /* SDAsyncBlockOperation.h in Headers */, + B6182F0BCDABCF641E50161BC56843C3 /* SDDeviceHelper.h in Headers */, + 31EC07FDACD2D9329EC31399F98B10A2 /* SDDiskCache.h in Headers */, + 966ECED706BAAB8D1479C4F1369CE10C /* SDDisplayLink.h in Headers */, + F60916751D5E49F38B15D0AE60090AFC /* SDFileAttributeHelper.h in Headers */, + C862E38F70E85476E6649BEC74B6CADE /* SDGraphicsImageRenderer.h in Headers */, + C9B0C996FE206A714B8278A8FDF36012 /* SDImageAPNGCoder.h in Headers */, + 9FB6141CDC4740245A4A1F80E36550EB /* SDImageAssetManager.h in Headers */, + 49DD4438BF2BB5A625B0A45E393E7985 /* SDImageAWebPCoder.h in Headers */, + 89614CA046BF1CD91E89691E6D12A774 /* SDImageCache.h in Headers */, + F008D61BBFA1245A3C00C85A905083A7 /* SDImageCacheConfig.h in Headers */, + AE7B459DED690D28CA0E01232A9E8902 /* SDImageCacheDefine.h in Headers */, + B8A144E8939EDE91E681901AFF42E9E4 /* SDImageCachesManager.h in Headers */, + 759C6D77C7355324CFAF0B3308772A2D /* SDImageCachesManagerOperation.h in Headers */, + 3CD2F63E95B9CC6B6061AF1CBD0576E5 /* SDImageCoder.h in Headers */, + 36F4CC3F3ED62D34C5505A869B6259EB /* SDImageCoderHelper.h in Headers */, + 73977E044AACF14ABA21629C1568CFFB /* SDImageCodersManager.h in Headers */, + AC29C0BBC68FAA2C3F6A6BED42C335AC /* SDImageFrame.h in Headers */, + 040190A5485A4653E84BF38EFA20957C /* SDImageGIFCoder.h in Headers */, + 06C3DB956415A699D1B6C6DADC7C8DD7 /* SDImageGraphics.h in Headers */, + A9E3EBC5A1978CB9337FF7284A8F4304 /* SDImageHEICCoder.h in Headers */, + 0DFFB384C8942B4EA4C4F9F4A0BA7405 /* SDImageIOAnimatedCoder.h in Headers */, + 2623EF4317F9C025CCECDF569755CD30 /* SDImageIOAnimatedCoderInternal.h in Headers */, + 9A2D9374AC287F50CFFB2BCA3B5F4C4A /* SDImageIOCoder.h in Headers */, + 44B8D4E26F498801F87969A545672056 /* SDImageLoader.h in Headers */, + 64FFAA703BE829F23807DD1965B57238 /* SDImageLoadersManager.h in Headers */, + C90338FBF2F1288FF3064E7ECE3DC65B /* SDImageTransformer.h in Headers */, + 57FF7C6419B6CAE8888DD240249E5D2C /* SDInternalMacros.h in Headers */, + 499B45A5AA7DAE596BEB0D7B9FA56CA9 /* SDMemoryCache.h in Headers */, + 0603071ACFEB40276C1C551A4B0793E6 /* SDmetamacros.h in Headers */, + 29BAE4FDDF823714A6F668E86D20D5EA /* SDWeakProxy.h in Headers */, + CA1C49C3D0EBDEE968AB63754C724194 /* SDWebImage.h in Headers */, + DFBB945670BE9D15DC6090C4F95B9B35 /* SDWebImageCacheKeyFilter.h in Headers */, + 46AE79D58CF186811426DD307556E3F5 /* SDWebImageCacheSerializer.h in Headers */, + CB1117310DB4DA22016E2EFFF6456E53 /* SDWebImageCompat.h in Headers */, + EB2F87F5C410C009C278B853B80D5A19 /* SDWebImageDefine.h in Headers */, + C9717523058C7976860DFAEA22DBC611 /* SDWebImageDownloader.h in Headers */, + 11011889E4A6BDC237DDB2EFCEFA3C05 /* SDWebImageDownloaderConfig.h in Headers */, + 64E55DA504F8E56535C881FD9091A3B8 /* SDWebImageDownloaderDecryptor.h in Headers */, + 4FAAE39F5CDAA7D062DE9EFBF10A5428 /* SDWebImageDownloaderOperation.h in Headers */, + 5A1D6709BA166D0F8E2E7D4B218D890C /* SDWebImageDownloaderRequestModifier.h in Headers */, + 45CB8565A20CFBB5BCCA3966BBD729CE /* SDWebImageDownloaderResponseModifier.h in Headers */, + E311E4ED1B19E0064D4519A4187AC008 /* SDWebImageError.h in Headers */, + 15484DFA601A92284E1BB722B7277C90 /* SDWebImageIndicator.h in Headers */, + 9AC661E960C89CB3DAF97AFB6AA0908C /* SDWebImageManager.h in Headers */, + 712D46616A5FB18F763FB0C8A78938A9 /* SDWebImageOperation.h in Headers */, + EB70321ADF5F76C4805A3A8D73AEF5AA /* SDWebImageOptionsProcessor.h in Headers */, + BA0388EA5B8CDD265F65ADC45B0AAED1 /* SDWebImagePrefetcher.h in Headers */, + 26AC00C3C1D0B72CBE53BE1C7228A243 /* SDWebImageTransition.h in Headers */, + 777AF5ECF38A5C134C70562AE96B7E09 /* SDWebImageTransitionInternal.h in Headers */, + D677EC6B63F2DFDFD91373F441B0C284 /* UIButton+WebCache.h in Headers */, + ECD0832A0A810C2BC6B3132E00F87913 /* UIColor+SDHexString.h in Headers */, + D58B8DA89ED5239507C7166CC7AB12BA /* UIImage+ExtendedCacheData.h in Headers */, + AE87A53FA438306374C6450DEBDE8262 /* UIImage+ForceDecode.h in Headers */, + 1C036BD236131BA95E24B4802A95C95C /* UIImage+GIF.h in Headers */, + D91C6D7BAB3CB5CFB22EC59BC3C60E13 /* UIImage+MemoryCacheCost.h in Headers */, + 630E4F32F3B8D1835AE0A9CB40F5C1F3 /* UIImage+Metadata.h in Headers */, + 488B42265FF34451712F7FF5769FEB2E /* UIImage+MultiFormat.h in Headers */, + F6317EBA867ABA454D15EEBC1BCF3137 /* UIImage+Transform.h in Headers */, + D4451BCF95B86638C63406520DA42736 /* UIImageView+HighlightedWebCache.h in Headers */, + DB5E2BF80CB7CCA4E1D8874505E44687 /* UIImageView+WebCache.h in Headers */, + 495FE9EA6A622DE2C936D9F1DFB77067 /* UIView+WebCache.h in Headers */, + 5D6E22788272B5D46CAEE02767829638 /* UIView+WebCacheOperation.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2A3EBFC0646B1C38B42A258D68224E28 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D282CD515ECB4D344D99048D72F2186D /* MASCompositeConstraint.h in Headers */, + 827971675DDE1BD225031B3F3C89450B /* MASConstraint.h in Headers */, + 42E543C6C23AF4792D82D23CAC723C12 /* MASConstraint+Private.h in Headers */, + 9B9D5BF5A9583E295E2DC177F33044E5 /* MASConstraintMaker.h in Headers */, + 01D5FBC350E24AD4BF493C0AF742E47E /* MASLayoutConstraint.h in Headers */, + CD12B6AC301CC6D3E89D64742EADC39F /* Masonry.h in Headers */, + CB191345BCC56C623BB5B802261183A7 /* MASUtilities.h in Headers */, + 704E6E494A06EA86348E495BBF3C0590 /* MASViewAttribute.h in Headers */, + F12EB7DF51A64F59A4D4DF3D69E4A5AF /* MASViewConstraint.h in Headers */, + D43380309815EEA67C52B47B4DE0A025 /* NSArray+MASAdditions.h in Headers */, + ACE84EB117EDD90B79AF71B105CCCBD9 /* NSArray+MASShorthandAdditions.h in Headers */, + 3B749B0DA006A8EC75B9F9D0765EBE6F /* NSLayoutConstraint+MASDebugAdditions.h in Headers */, + 379902484CC10B58ACBD21D949702DC1 /* View+MASAdditions.h in Headers */, + D94606FD6932B455C44EDAE275073C9F /* View+MASShorthandAdditions.h in Headers */, + 3AF45D1B033D1A4B64453248E928BC36 /* ViewController+MASAdditions.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 347B7E0C7F50F9F879BA7D32615B0A62 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D79023DC60D5DA0502B3068D3C253647 /* NSObject+YYModel.h in Headers */, - 9D5BA5AC8764DA4ED09ABB3D272EEB22 /* YYClassInfo.h in Headers */, - 54EC772A8A739E61B1723C43623C967D /* YYModel.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1D563588AF4A4F9FDCBAE4DE7FD83396 /* Headers */ = { + 59FDE05D8BC888552757B66A4A162114 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 68E789802094AC0064F5A3B41CF54ED9 /* SJButtonProgressSlider.h in Headers */, - 7E508BEEAF7B20822B0292A72352A554 /* SJClipsBackButton.h in Headers */, - 2DF042AD1D08D5FD6FF9BF6895811E2F /* SJClipsButtonContainerView.h in Headers */, - 8D90F3A0C027A34BE56D82B97858360D /* SJClipsCommonViewLayer.h in Headers */, - D0F1C4CB9CC7FA000D6F0EFEC7F8B9A1 /* SJClipsControlLayer.h in Headers */, - AA60DBCA6A577DFC28120104A123E1B9 /* SJClipsGIFCountDownView.h in Headers */, - F92BB0328A9C33863DADFD14B0DBBD90 /* SJClipsGIFRecordsControlLayer.h in Headers */, - EB0099221088FE86F5BF856D980B4285 /* SJClipsResultsControlLayer.h in Headers */, - 9AE577F4D80841EB713F7E2DC0F61686 /* SJClipsResultShareItem.h in Headers */, - 05751F398FC8210FFDDED3D4EB0AADEF /* SJClipsResultShareItemsContainerView.h in Headers */, - 853E91715C5A9AC7CABB0F6E8CDF9A3C /* SJClipsSaveResultToAlbumHandler.h in Headers */, - CBCF5788280656138A0C00CDE607DE5A /* SJClipsVideoCountDownView.h in Headers */, - 76D0BE6C9B27AB329875EE1CDA4A13B6 /* SJClipsVideoRecordsControlLayer.h in Headers */, - B8327F2FBA5C7815C4EC083BC3358E1B /* SJCommonProgressSlider.h in Headers */, - 8F8E582D91720BB121991E168D116D15 /* SJControlLayerDefines.h in Headers */, - E21EA35FFAB901BB15FCC8276EA28C1A /* SJControlLayerIdentifiers.h in Headers */, - B8DEED5E10AFDD2181F389C39AFBA321 /* SJControlLayerSwitcher.h in Headers */, - B351AF2F58E40882E9089840D8828B85 /* SJDraggingObservation.h in Headers */, - 054C76235F662ABDBDB8A36387A4B63D /* SJDraggingObservationDefines.h in Headers */, - E6CEF9CA740FDADD8B31F861B8B60B8F /* SJDraggingProgressPopupView.h in Headers */, - 219A06956BA50B4ED4DE1305E1CF31F6 /* SJDraggingProgressPopupViewDefines.h in Headers */, - C908812CE420D8673B6B1B8791CF58CD /* SJEdgeControlButtonItem.h in Headers */, - 6B81B723397F04FDBE60E2710404E152 /* SJEdgeControlButtonItemAdapter.h in Headers */, - 6AE18A8F822F485A48BF53126164296C /* SJEdgeControlButtonItemAdapterLayout.h in Headers */, - 3BF7F2A6F6943D4C17D203652CDA334D /* SJEdgeControlButtonItemView.h in Headers */, - 15B0B2B8331E0C1A283101F8B556AF82 /* SJEdgeControlLayer.h in Headers */, - 48E5BC51518D658CFD845D6A70940CB5 /* SJEdgeControlLayerAdapters.h in Headers */, - 0727F07AAFF0AF397420F6051DA07BDC /* SJFloatSmallViewControlLayer.h in Headers */, - 3781D5D2AEBD2D582BDA578CD5BC39A8 /* SJFullscreenModeStatusBar.h in Headers */, - C9770BB99EC8859E87BFA25C6EA5BB77 /* SJFullscreenModeStatusBarDefines.h in Headers */, - D41B7A6A474877F5BB8975CC1FADDA4D /* SJItemTags.h in Headers */, - 108EE8D01059252622BE5B77F4A1B4DE /* SJLoadFailedControlLayer.h in Headers */, - 1A453B5A9A65BBA9F74C0C144358C0A2 /* SJLoadingView.h in Headers */, - 5E158E376FDF57A748D2A3514A84BFD8 /* SJLoadingViewDefines.h in Headers */, - 42B7AAA61537A6CD0BF0CCB76541E5BF /* SJMoreSettingControlLayer.h in Headers */, - B1BE10B72E7A49B62C2D07197059015E /* SJNotReachableControlLayer.h in Headers */, - 5B925C01C24E119AB6B392CF5E7B42EA /* SJProgressSlider.h in Headers */, - 234A51E5E45A143CA325D05C7DF6146D /* SJScrollingTextMarqueeView.h in Headers */, - A165B608B8ACBE644BEFC13275E436C0 /* SJScrollingTextMarqueeViewDefines.h in Headers */, - A2FFD247787C33CB1AD425A63D7A921B /* SJSpeedupPlaybackPopupView.h in Headers */, - ABD879FD07A1B1D52EA3B150796918AC /* SJSpeedupPlaybackPopupViewDefines.h in Headers */, - A08F048D30D789C9F631A95D675A13D4 /* SJSwitchVideoDefinitionControlLayer.h in Headers */, - 1E1A615EB6B7183F994EA16CDD1DE493 /* SJVideoPlayer.h in Headers */, - 4335D8F0960FEDF851FAC75B0CC04B1D /* SJVideoPlayerClipsConfig.h in Headers */, - E5FACE689C41C9E53BA42690B5463269 /* SJVideoPlayerClipsDefines.h in Headers */, - A678960B8930C7BCCEA12BD103166DC5 /* SJVideoPlayerClipsGeneratedResult.h in Headers */, - 3A8C2F88BC19E0501773F158EB4ABF88 /* SJVideoPlayerClipsParameters.h in Headers */, - 9C53BCA337AD9005DDB5EED0F28C3303 /* SJVideoPlayerConfigurations.h in Headers */, - 68057DA0BFBFB102DFA4B30A76A1C8BA /* SJVideoPlayerControlMaskView.h in Headers */, - 925CA4624FBA70F8DDFAD2C110DA1138 /* SJVideoPlayerLocalizedStringKeys.h in Headers */, - E271AA1FB5B38D23584C1DC2580E7D6D /* SJVideoPlayerResourceLoader.h in Headers */, - 4FEADC12360A46C758E9078C511EC7AB /* SJVideoPlayerURLAsset+SJControlAdd.h in Headers */, - FCF253E2655BA662E2E7165507EBE991 /* SJVideoPlayerURLAsset+SJExtendedDefinition.h in Headers */, - 3999613F3A4F703ADF0EC8F539968166 /* UIView+SJAnimationAdded.h in Headers */, + 45A1618374168EB6C1E19FECDE9E344B /* DDData.h in Headers */, + DEA144FEC3D3D9B062FD8641F28BAB98 /* DDNumber.h in Headers */, + B75B1A534AC91F10723259563F92C1AF /* DDRange.h in Headers */, + 4CF5B4F58BA84BDD0A581FB9EACBF169 /* FILEAsset.h in Headers */, + 7513C21A1807307AE30D3B59DC49FF2F /* FILEAssetContentProvider.h in Headers */, + CBF475C10A83D36224F50171F0538880 /* FILEAssetReader.h in Headers */, + 3A7AD29B8D2F32B2FEB0F8207B1F03FD /* FILEPrefetcher.h in Headers */, + CAF1A513F6F218BA82D26158C9CEC57E /* HLSAsset.h in Headers */, + AD00D13D7C516B24657782472D71E2E4 /* HLSAssetContentProvider.h in Headers */, + 7EEBA96900D13D60D15CB6551B984E93 /* HLSAssetContentReader.h in Headers */, + 71569697E2DEDB7EC96CE2DBAF1B4BF4 /* HLSAssetDefines.h in Headers */, + FE47BBF43CA4AB95AC91E8AA45810F60 /* HLSAssetParser.h in Headers */, + F500CDA3C7783B2AC92B0FE982326005 /* HLSAssetReader.h in Headers */, + 372335926297E6C0EA5E92C6079C51E5 /* HLSAssetTsContent.h in Headers */, + 3DE1E5F4B4EAF03B2B3E7DCB40C0A410 /* HLSPrefetcher.h in Headers */, + B9CFA88AF0F6A7ED8FFBECD7C2A1ED58 /* HTTPAsyncFileResponse.h in Headers */, + B8A8AE3BC598BB6A0605162B2560063D /* HTTPAuthenticationRequest.h in Headers */, + 0AD45C24A762645050CB5A2D59FF7C56 /* HTTPConnection.h in Headers */, + 44219909C17B743120FFA9C7EF2D561C /* HTTPDataResponse.h in Headers */, + 6CE218C0914367A0CBB486EE3A7D0748 /* HTTPDynamicFileResponse.h in Headers */, + F57BC657370BF54188EB7156394D13BD /* HTTPErrorResponse.h in Headers */, + 397C72E5510F61792704B4144CB2F4CA /* HTTPFileResponse.h in Headers */, + 4901C985937E822E7EECB587E4327DA4 /* HTTPLogging.h in Headers */, + 61474AD030287F2254AA7B753B3E44B7 /* HTTPMessage.h in Headers */, + 2359D60C5DAA038581685A9A9739A8C7 /* HTTPRedirectResponse.h in Headers */, + 18C4BDA6A51462CC014E65B09BFC7271 /* HTTPResponse.h in Headers */, + E2CEBECF4F2C639A2434FD63D4336D67 /* HTTPServer.h in Headers */, + BA12A8D51AD1278830881F02169D2607 /* KTVCocoaHTTPServer.h in Headers */, + 4CC56D246C1BABEBBF7A37B6FCD45FF2 /* MCSAssetCacheManager.h in Headers */, + 5D8498D48C3D00E1046817318FDE5E15 /* MCSAssetContent.h in Headers */, + F7FEE1E97E065F55DFDA4D130CDABA1D /* MCSAssetContentReader.h in Headers */, + C0357E7A14538D3440FF6D1053CDADAC /* MCSAssetDefines.h in Headers */, + 15B7812A37AC7DBD462ECA1415867246 /* MCSAssetExporterDefines.h in Headers */, + FF770492174AAF9D972CC900F71A44ED /* MCSAssetExporterManager.h in Headers */, + BFFF00C93AE4CE5460A242D266BCA2DE /* MCSAssetManager.h in Headers */, + FB16C045A069D74F4C3937AD20435F1F /* MCSAssetUsageLog.h in Headers */, + 93ABBF8927B7A905AAAC4355F3F78E42 /* MCSConfiguration.h in Headers */, + CD7ABA0273809D566319998BE623856B /* MCSConsts.h in Headers */, + CBA22314FBE2F599C4EC983CF5FF3BD4 /* MCSContents.h in Headers */, + 55ABEC35AC9B2BE78F893D3DAAE4C146 /* MCSDatabase.h in Headers */, + BAEB3A88EAA9B3D8BD12DEEE82BD5776 /* MCSDefines.h in Headers */, + D13216393C172D6222CC631F57690B59 /* MCSDownload.h in Headers */, + F094D2FE99BFA7D03819BF78BE59DE49 /* MCSError.h in Headers */, + 942D9AF7144970783B45552EFCDBE39F /* MCSInterfaces.h in Headers */, + 365450816508C6563EE5B1254D7D0E56 /* MCSLogger.h in Headers */, + 16E1C3569093F6581717B9DEAF0ADA76 /* MCSPrefetcherDefines.h in Headers */, + CC2809CAACB1F83357200EF9B96AFA58 /* MCSPrefetcherManager.h in Headers */, + C7F9CFE75C4C1FA055C09BA7538DFB8D /* MCSProxyServer.h in Headers */, + 3587C66BF7D3796E8925A260AFA6F4E5 /* MCSProxyTask.h in Headers */, + C9029837F49A86CD662F4B587D7CC977 /* MCSQueue.h in Headers */, + 815242B210D743C1E8D3E2A82FF0BCCC /* MCSReadwrite.h in Headers */, + E95554B859F7380F9B6BB23425BCABDC /* MCSResponse.h in Headers */, + 10A35D37402A80CA921858BD015A41D5 /* MCSRootDirectory.h in Headers */, + B8F0E2FFBB93B0FA21F553C9AE94B4B7 /* MCSURL.h in Headers */, + F4A1D1A5A6E0553A20EBA15F98F81A3E /* MCSUtils.h in Headers */, + 19401EDC4068F320775ED2F1D6A6F0FF /* MultipartFormDataParser.h in Headers */, + 50E319E46EB1A8B93D193EB70CC45BAB /* MultipartMessageHeader.h in Headers */, + 91234D01A154DA3756AB9A1C2665E924 /* MultipartMessageHeaderField.h in Headers */, + 8604E6D11445AC190731486857A9E0A9 /* NSFileHandle+MCS.h in Headers */, + 097CF23D169FA0DECA796B00AA1D05BA /* NSFileManager+MCS.h in Headers */, + 0023DC306272F589256067F2ACDA69A2 /* NSURLRequest+MCS.h in Headers */, + 1159294D5409B5F6865A58FE4482E24E /* SJMediaCacheServer.h in Headers */, + 3D7B4B08328B2B2E19BB7409111F9E8F /* WebSocket.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 20D7B668175268C9999634A7DD507F47 /* Headers */ = { + 5A36D67269149DB0690D154235139AF0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 663A158F64B9BF3E0B8929EA88AB9786 /* DDData.h in Headers */, - 4F0E56955B26B91630EC5459ED9AF3E6 /* DDNumber.h in Headers */, - EF5D83D90B2301182AFFEACCFAC0BAE4 /* DDRange.h in Headers */, - 89E1E3B47684CF4A5C8DE85B412BB07A /* FILEAsset.h in Headers */, - 9CE09872330AB15CF31B56B00624CE7C /* FILEAssetContentProvider.h in Headers */, - 16E897712D89D519DADC2AE2A77C58A9 /* FILEAssetReader.h in Headers */, - BE5619E8A7020ECBB5B03B627EB09FC9 /* FILEPrefetcher.h in Headers */, - A8F9643F44126CCFABD62399C9768A18 /* HLSAsset.h in Headers */, - BB98D7A358A4B1DB6A4BE087B7CF3852 /* HLSAssetContentProvider.h in Headers */, - 697B0C328BC76B30F9B6B00981217D08 /* HLSAssetContentReader.h in Headers */, - 8C83B2D0F147E9528B99F430D873385B /* HLSAssetDefines.h in Headers */, - 6DABF07646DD8D0DB53557A7815F6AAD /* HLSAssetParser.h in Headers */, - 320238ADDBBF1C21C85D3DA81FA4F68E /* HLSAssetReader.h in Headers */, - A9128D73193BE967EAD88FADDB388EF2 /* HLSAssetTsContent.h in Headers */, - 410269919AFAEDD68A3EA4479C626E2C /* HLSPrefetcher.h in Headers */, - 2EB4190C9CB2893C3EF59798ACBDA68B /* HTTPAsyncFileResponse.h in Headers */, - 2F5475EF54A0F431EA919FFE3C607048 /* HTTPAuthenticationRequest.h in Headers */, - ADF7E605E812DB6FBF06CC3AD06B2E1E /* HTTPConnection.h in Headers */, - 98ADD25404DD9CE429BA584C45B12B11 /* HTTPDataResponse.h in Headers */, - DEEFDB6D4CF44705E1B962065C8A4340 /* HTTPDynamicFileResponse.h in Headers */, - CC5A7015005013A8764FCEF25EDDFACE /* HTTPErrorResponse.h in Headers */, - A9C57A74795A9AF65B16361ED7FF7EC5 /* HTTPFileResponse.h in Headers */, - 94A07AE8B46953F214F9350BD26144AC /* HTTPLogging.h in Headers */, - 3F07986735E56F307773EE2A0E748905 /* HTTPMessage.h in Headers */, - 41C11CDE100E8B0D99A8F623B423E619 /* HTTPRedirectResponse.h in Headers */, - DE47AE8B2BEB6BB6BAE17B9AC8F6A484 /* HTTPResponse.h in Headers */, - FED75165AEF5DEB41BF2FC1705F07E31 /* HTTPServer.h in Headers */, - D805D36B142020BF7EFC49ECF37B40B4 /* KTVCocoaHTTPServer.h in Headers */, - 0751DE658878BEC1DEB12BF132219A55 /* MCSAssetCacheManager.h in Headers */, - 7E9C671FD3F5AC3803F0182FB47D7844 /* MCSAssetContent.h in Headers */, - 70DE8FEC7934D94B033BF61E38DC7632 /* MCSAssetContentReader.h in Headers */, - B4EB7066F77B2102220CA2BBDBA13780 /* MCSAssetDefines.h in Headers */, - D0CC33785DBCDD3C94D4AB89B326F49F /* MCSAssetExporterDefines.h in Headers */, - 43D66F4E2DF75F408FFEA335436C8B4C /* MCSAssetExporterManager.h in Headers */, - 1062E740F5B93DE65AD34BED39703ACB /* MCSAssetManager.h in Headers */, - B3A02F44C189C5EEE31490DB011C6465 /* MCSAssetUsageLog.h in Headers */, - 35A82C6E7CCB4F3EE4D0B65A47A5E742 /* MCSConfiguration.h in Headers */, - BF266E1104DD9462CF056E5576F6B044 /* MCSConsts.h in Headers */, - 4C41A83EA4D972DD11CF266A7C24C8C7 /* MCSContents.h in Headers */, - 213B99551FB310A350245E5F93EE3552 /* MCSDatabase.h in Headers */, - 4078FBBBDF7360C6D5CE6BA017897B16 /* MCSDefines.h in Headers */, - 3F89AA5B009BC5D12DFD4A2C6F2C2FEF /* MCSDownload.h in Headers */, - E2F49537237733A65F3855EAE3EB8F95 /* MCSError.h in Headers */, - 2CD4804154C16E3B7E3A070B17CCD807 /* MCSInterfaces.h in Headers */, - B9C7DDC53E3D24605907D755CD0B309D /* MCSLogger.h in Headers */, - F83CB2A490B55A6C638E4A9BA659CB7B /* MCSPrefetcherDefines.h in Headers */, - ED761654935481B7FB882A6E70BBFCA7 /* MCSPrefetcherManager.h in Headers */, - D7DFCEB37E18835618A0FD3FB72FBCA8 /* MCSProxyServer.h in Headers */, - 27F6DFF64009282C12A61999B9F550B0 /* MCSProxyTask.h in Headers */, - 45AC3673C22BEB91A1E01CAA17B2D37A /* MCSQueue.h in Headers */, - 61828779FFCCA85D74D918DCF55172E6 /* MCSReadwrite.h in Headers */, - CC63ED123DAB61BEC3C46D3C48162A1B /* MCSResponse.h in Headers */, - BD54CDA3B2D581599E24C3E23CE672E2 /* MCSRootDirectory.h in Headers */, - 92AEA5349D5D643F79A09D41F54587BF /* MCSURL.h in Headers */, - F2D642F5A13E72A65AC3FF716E748B99 /* MCSUtils.h in Headers */, - B516E8AEFB89F615E12D9995C73B73F8 /* MultipartFormDataParser.h in Headers */, - 71E0EF9C35E7F5756C05559691BC1B26 /* MultipartMessageHeader.h in Headers */, - 59F8079C583C5885A0EE149BC6218E09 /* MultipartMessageHeaderField.h in Headers */, - 51D602B300D3E93CE734FF4B0FDF0994 /* NSFileHandle+MCS.h in Headers */, - 41200422B6A7BD54487A395FC4A98452 /* NSFileManager+MCS.h in Headers */, - 16CD8824631C35D287A172CD74901516 /* NSURLRequest+MCS.h in Headers */, - 8EEBBC586CE088BDEAA11357111221AD /* SJMediaCacheServer.h in Headers */, - B18FFD1DEE1A6F09CAF63F4D9545088B /* WebSocket.h in Headers */, + 593EFE3FBB6E3203B69D91B111D929EA /* GCDAsyncSocket.h in Headers */, + 20EA9C10DD34B76F7F4D8F2674762448 /* GCDAsyncUdpSocket.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2697A8D6B2989B073B236F7B4BF67F30 /* Headers */ = { + 5F1505CCB3E5D1E945B8C0109CE6C76D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 92BF70E9D3285561EB404A7C4A4A6DEE /* MASCompositeConstraint.h in Headers */, - 4CE091F886EC6324673EFE0AEBBEA0FE /* MASConstraint+Private.h in Headers */, - EB663E3E1EB4BB670DC29B77DB330135 /* MASConstraint.h in Headers */, - 9194B58ACE900ED6BAE6AD92E24A2CFF /* MASConstraintMaker.h in Headers */, - 7CF2AC7A3B3ED03B30C1E4ED662B0551 /* MASLayoutConstraint.h in Headers */, - B20A0E5D8F9BCED1A82793C4BE9E7258 /* Masonry.h in Headers */, - 65E88072A2BDC576BFC85E67EF9FBBC6 /* MASUtilities.h in Headers */, - 42947699890A199B08A896144A878D80 /* MASViewAttribute.h in Headers */, - 115ACCE253A886181B55773DDC70D6ED /* MASViewConstraint.h in Headers */, - F1B75048874B8773E5568E6D3ACA12E4 /* NSArray+MASAdditions.h in Headers */, - 81F811A56B6724F7E8E2D25364E595E3 /* NSArray+MASShorthandAdditions.h in Headers */, - C74D2E856ADC8139CD00DBD184061B23 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */, - 46692A2E77157B00827182C8DC686F72 /* View+MASAdditions.h in Headers */, - A3307B8FB6EE0A049DBAE3AA4D2C6DA0 /* View+MASShorthandAdditions.h in Headers */, - E76935CFF4AF327F8D9A7C1935F7D900 /* ViewController+MASAdditions.h in Headers */, + AE4BAF64D44E7FC6BD4C1BA5D60BC43F /* MJRefresh.h in Headers */, + 0B237F4DFD5D25D8AC3B406E2881B107 /* MJRefreshAutoFooter.h in Headers */, + 599CC29C4A7B3A253FDF66D622682842 /* MJRefreshAutoGifFooter.h in Headers */, + 18E1E212E38C7431D0389A9E80F807E3 /* MJRefreshAutoNormalFooter.h in Headers */, + 5B8E003D6DC7D27F5A251FDE19EEBDFA /* MJRefreshAutoStateFooter.h in Headers */, + 9660DBC68520B30E235359CD61C7C3F8 /* MJRefreshBackFooter.h in Headers */, + C244A0CD1A1D63360CB03B6ACBFB0C91 /* MJRefreshBackGifFooter.h in Headers */, + 66147260AE7B00AC710D78E4817F238A /* MJRefreshBackNormalFooter.h in Headers */, + F2902F263D705D2C20BB749AF5B21109 /* MJRefreshBackStateFooter.h in Headers */, + 32C4C91D571F9E2BB89426A1562A7303 /* MJRefreshComponent.h in Headers */, + E519D3EDD90D0CCAAD6BE92DB38B2737 /* MJRefreshConfig.h in Headers */, + DEF5281EB32331FB4600B0923368A78B /* MJRefreshConst.h in Headers */, + D628DA1C810CDAE0B46792278483A612 /* MJRefreshFooter.h in Headers */, + 7560B1CA4E33BC0B6A8C46A2B5CE6531 /* MJRefreshGifHeader.h in Headers */, + 9E951DFEFAB985D70CD0985826EC4083 /* MJRefreshHeader.h in Headers */, + 59CF33F6CB65586F62CDD6FE916610FA /* MJRefreshNormalHeader.h in Headers */, + F8C6D75843DCB176CE2BDBE05B595B75 /* MJRefreshStateHeader.h in Headers */, + 85C2C32D54707272E1D8A1AE61B5BAD1 /* NSBundle+MJRefresh.h in Headers */, + 1C6A64D960A63E47FA9FF8EC4536E85A /* UIScrollView+MJExtension.h in Headers */, + C023600705E1EBBB522B20F8A2DD2051 /* UIScrollView+MJRefresh.h in Headers */, + C36F84FBFB76C9C75D9BAF6359A11DBF /* UIView+MJExtension.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 73B6C8507A3DA642A03AD09179CE331A /* Headers */ = { + 6803C2E09D7AA18C23EDDCEB6B0DAA4A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DF263A7F1E3682B4704996D857D6E0AA /* AVAsset+SJAVMediaExport.h in Headers */, - 50591EE07176278C669DCEFB2A46C37C /* CALayer+SJBaseVideoPlayerExtended.h in Headers */, - AD2DEE2222A8C38F6428B9FF5A36B506 /* NSString+SJBaseVideoPlayerExtended.h in Headers */, - 040DD7A50C846F2D707268BF655C8D37 /* NSTimer+SJAssetAdd.h in Headers */, - 867CCA0AA1329AAA571E4041265F13CD /* SJAVMediaPlaybackController.h in Headers */, - 8ED195FD73C43CFA427EE17C7ABDF31A /* SJAVMediaPlayer.h in Headers */, - D7F68AE7CBBF100C5D76FC685AAC0FB0 /* SJAVMediaPlayerLayerView.h in Headers */, - DADA569607F532A184DAF48486BCF33D /* SJAVMediaPlayerLoader.h in Headers */, - 84AEDD63C840C8013B3F597CD75D77CA /* SJAVPictureInPictureController.h in Headers */, - 37C68E6707391B7007E5991A914CB2B7 /* SJBarrageItem.h in Headers */, - 604757858CD0570DA88BBFC6CBD3F97E /* SJBarrageQueueController.h in Headers */, - 7182F988A4A92A3B2CDA65753DFE098A /* SJBarrageQueueControllerDefines.h in Headers */, - 903F6965B9FE8ABFC74C23A6A8F03C10 /* SJBaseVideoPlayer+TestLog.h in Headers */, - EF837D4C7316C4673141380DC13352B0 /* SJBaseVideoPlayer.h in Headers */, - 75606E583AE329EA7FC0E29FCDD8E45B /* SJBaseVideoPlayerConst.h in Headers */, - F6648F78B8266D92956FAA93674EA402 /* SJBaseVideoPlayerResourceLoader.h in Headers */, - 3D3A3C987D8C52F46EF9D8AF40F0068E /* SJControlLayerAppearManagerDefines.h in Headers */, - CF2EDB42665F2B645929E3C40C45E792 /* SJControlLayerAppearStateManager.h in Headers */, - 56A6F13FF368226A1B5AA8B821AC4B6E /* SJDeviceVolumeAndBrightnessManager.h in Headers */, - 890323D7351A5635E8B2DFF8FCE479F5 /* SJDeviceVolumeAndBrightnessManagerDefines.h in Headers */, - 4C512C9252B6EC8D2A9EFFDBAD8BA0B7 /* SJFitOnScreenManager.h in Headers */, - 73FE26D71246244AC6895D29F2C94655 /* SJFitOnScreenManagerDefines.h in Headers */, - 55E87B749F8B4611BBB0EDD16174DF2E /* SJFlipTransitionManager.h in Headers */, - 2F0C010896955643EF27993D7C6C66AF /* SJFlipTransitionManagerDefines.h in Headers */, - AD6255756703244047573E44E2586480 /* SJFloatSmallViewController.h in Headers */, - 5D99006D6C33BDEC46599F810EF7F630 /* SJFloatSmallViewControllerDefines.h in Headers */, - 3F5298DA39C4E097C4922513DF439E95 /* SJMediaPlaybackController.h in Headers */, - 8C8C4B776FB3E101D6922277B283171E /* SJPictureInPictureControllerDefines.h in Headers */, - F787C7CE9415326BB769046A6370AFC7 /* SJPlaybackHistoryController.h in Headers */, - FC20711B235BDA0FFA8061FDD98FCA23 /* SJPlaybackHistoryControllerDefines.h in Headers */, - A7DD4611BCB9FDC7CAF070697D592985 /* SJPlaybackObservation.h in Headers */, - 8E0B84E5E836C76A29201716700D0499 /* SJPlaybackRecord.h in Headers */, - 505087BB5B447723AF879D4F597A64B2 /* SJPlaybackRecordSaveHandler.h in Headers */, - B89E9AD5408728BC333C04251B4BEC2B /* SJPlayerAutoplayConfig.h in Headers */, - 9B6BF79A0FAFC2F411BC2D26B5FAE4B6 /* SJPlayerGestureControlDefines.h in Headers */, - 810AABE4B02DBCE5EB2B0D35CE782E8C /* SJPlayerView.h in Headers */, - BA5C8F3C1C82304E12298CF458C2AE40 /* SJPlayModel+SJPrivate.h in Headers */, - 9DBBCF4AD4407CAF5452C573CBCE1EEC /* SJPlayModel.h in Headers */, - 876E62F3B520CE6A27CE8647E68CEA43 /* SJPlayModelPropertiesObserver.h in Headers */, - 9E3D347A11FFDDD63CE43296A1465A3F /* SJPrompt.h in Headers */, - 79D177AE72405639EE556108B0F87069 /* SJPromptDefines.h in Headers */, - 524EC230FADED61858596FD2F4EAC57A /* SJPromptPopupController.h in Headers */, - E6BC06A0D781801399209C6236874B01 /* SJPromptPopupControllerDefines.h in Headers */, - C1BE1B9B8F123A2DDB9B0DD45B833DBD /* SJReachability.h in Headers */, - E4CDCC5BE0BAFE754390671C732D11BD /* SJReachabilityDefines.h in Headers */, - 9EBFFDCA92EECEDB3A1C41F1717C7062 /* SJRotationManager.h in Headers */, - 369B073ABA1A305A16429932AD2D4F16 /* SJRotationManagerDefines.h in Headers */, - 27E2CF225C12F9EE09404A55A9974C4A /* SJSubtitleItem.h in Headers */, - 2307907FA690285B5958B3A39C6816D8 /* SJSubtitlesPromptController.h in Headers */, - 84401147C86C9D1AF7F7BF7F9A33B13E /* SJSubtitlesPromptControllerDefines.h in Headers */, - 68A12B488DEA99DC1C5807A26E73CBBF /* SJTimerControl.h in Headers */, - 44CBF3C604C09D5CF82A9688C83B35FD /* SJVideoDefinitionSwitchingInfo+Private.h in Headers */, - 4BEF019A810DD9AA1409ED08C9DDB234 /* SJVideoDefinitionSwitchingInfo.h in Headers */, - 9DFA2CC1D5727AE6DF276A1AB6464E1D /* SJVideoPlayerControlLayerProtocol.h in Headers */, - BED89133551A339F15B32E21124D1B3D /* SJVideoPlayerPlaybackControllerDefines.h in Headers */, - 246C8E02C80BAEA49014AD0DB5E40B4B /* SJVideoPlayerPlayStatusDefines.h in Headers */, - BBD377CC54BBD47D18B9468943FBC2FD /* SJVideoPlayerPresentView.h in Headers */, - F3070AF05843BA153507103098BE1C5D /* SJVideoPlayerPresentViewDefines.h in Headers */, - 8B33DADE30399502DD6FA9D92DBBCB86 /* SJVideoPlayerRegistrar.h in Headers */, - 4C398195C01DFFBCC2DF959872387ADF /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h in Headers */, - CA7AC13D182EE4D61C5713BCDC421F37 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h in Headers */, - 63146D665F80EC558B62D8D44C02804D /* SJVideoPlayerURLAsset.h in Headers */, - AC7B5CAC88A3E4AE47142401741ECED2 /* SJVideoPlayerURLAssetPrefetcher.h in Headers */, - 49ABC48273FA0DAD67A1499AD65AAC1D /* SJViewControllerManager.h in Headers */, - FFCC88EC5685A96EF031417DC2C4CE89 /* SJViewControllerManagerDefines.h in Headers */, - EB3C6B367B0767780397D6363CD298B8 /* SJWatermarkView.h in Headers */, - 560C538E75AC30D848A2AA154ACE9092 /* SJWatermarkViewDefines.h in Headers */, - 52184A8F4F60EFB6A6128AA795F3C4B5 /* UIScrollView+ListViewAutoplaySJAdd.h in Headers */, - 4BA5BB5F687E579346F7C44661D98830 /* UIScrollView+SJBaseVideoPlayerExtended.h in Headers */, - EDF55FBB774F1ABA1020D2949C29E931 /* UIView+SJBaseVideoPlayerExtended.h in Headers */, - 6AE7D45C097EDB5DED2988D4CDEFA4B4 /* UIViewController+SJBaseVideoPlayerExtended.h in Headers */, - 89E796A479F9BFBAAD8FBFDE5D92200C /* UIViewController+SJRotationPrivate_FixSafeArea.h in Headers */, + 20BE4534EC54A14AE67E132D094F6F20 /* SJRouteHandler.h in Headers */, + EB3A1D3E2575FBC938F1F15022188217 /* SJRouteInterceptor.h in Headers */, + 823335BA2C3EA5318CE04216786EC353 /* SJRouteObject.h in Headers */, + 12F0159CFE3E38EA97283060B47C0EAA /* SJRouteObject+Private.h in Headers */, + D3438950066B33BF6B097EFBA64441D0 /* SJRouter.h in Headers */, + DB95DEB693E988038CDE96DF47C13274 /* SJRouteRequest.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 83268A4608982FCFF93FA48DCC883251 /* Headers */ = { + 6B8C4B3690B6F70ABE9D5F1E036DCD10 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 06514FD84CC576BCCE44F89EE61A7F68 /* GCDAsyncSocket.h in Headers */, - B0ED107F3AAF83FDD3035D0B3D864953 /* GCDAsyncUdpSocket.h in Headers */, + 858D9CF752D2F971A9548824DD3A8D72 /* NSAttributedString+SJMake.h in Headers */, + 91EEBC2BAD44BEA13A0FFEB208131DC7 /* NSObject+SJObserverHelper.h in Headers */, + 1F47C4D52C3AFE954AF60515C5D68176 /* SJAttributesFactory.h in Headers */, + 26904E0704245545FA38574475B7E09F /* SJAttributesRecorder.h in Headers */, + 3D9012165E5C342D806C364E6530F612 /* SJAttributeWorker.h in Headers */, + A74AB61F28808CF9F248E7A3F615B0BB /* SJPresentationQueue.h in Headers */, + 0A7DB695DCE0379D18EE4AC53023ED47 /* SJQueue.h in Headers */, + B17663EE6A681DEC628F1F576F3EFCAB /* SJRunLoopTaskQueue.h in Headers */, + 17283A0C47AD66B0956AA431747DBE17 /* SJSQLite3.h in Headers */, + D837CB3C60C3E6FD060B8394271CE4B3 /* SJSQLite3+FoundationExtended.h in Headers */, + 68088E7AE179D8C930E1EC4C8F216650 /* SJSQLite3+Private.h in Headers */, + 176B49AE30173A87598FBC5B226E2891 /* SJSQLite3+QueryExtended.h in Headers */, + 82A9641E72205F131DFAAF15FBB9AD4B /* SJSQLite3+RemoveExtended.h in Headers */, + 84E439408986B311F3CCA57974A61082 /* SJSQLite3+TableExtended.h in Headers */, + 8A67EDF6ECF23D0821A72107B694CE30 /* SJSQLite3ColumnOrder.h in Headers */, + C2980CFCDA3888CA59DC2DC6BB6B2E4E /* SJSQLite3Condition.h in Headers */, + 0F783F8739AF55648B630C034FF070BA /* SJSQLite3Logger.h in Headers */, + 9CE2991627D42178BF760D89B8987E7C /* SJSQLite3TableClassCache.h in Headers */, + 74C46EC783EC56A2D2A0358F1C84DC46 /* SJSQLite3TableInfoCache.h in Headers */, + 4D373B26D4471E76C63209689D7B8290 /* SJSQLiteColumnInfo.h in Headers */, + DDCE9E17FFA867D59F897E8AFF52220C /* SJSQLiteCore.h in Headers */, + 87C08B58A6DFAA1CA578D06CC1B28F8F /* SJSQLiteErrors.h in Headers */, + 06F2E56134B8581A0B8B36D6576F55CC /* SJSQLiteObjectInfo.h in Headers */, + A05B88A3C5611D987485543AF7EC4A83 /* SJSQLiteTableInfo.h in Headers */, + C984436637D89D4B0821495DE2E3E2CE /* SJSQLiteTableModelConstraints.h in Headers */, + B5A517463BDB209A6519BD451CC62DA8 /* SJSQLiteTableModelProtocol.h in Headers */, + 04AD324EE70A9F6AE12E30CE3EBC98DE /* SJTaskQueue.h in Headers */, + 0F28E6B8929F441D8DE214286E7C4C4C /* SJUIKitAttributesDefines.h in Headers */, + B47228C3C86E83967E3E03C277E62475 /* SJUIKitTextMaker.h in Headers */, + BFA2840F95D69E544FB8B7B003877E79 /* SJUTAttributes.h in Headers */, + 340473A203C86508F13D281157FCC4CE /* SJUTRangeHandler.h in Headers */, + E9A4195AF9250D6BACC717FB0DEDD7AD /* SJUTRecorder.h in Headers */, + 03CB9B688CEB23A95689C1D2B6725E32 /* SJUTRegexHandler.h in Headers */, + E3CC6920B6C574C77F83A358D83F4DAE /* SJUTUtils.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 85C4DF0D575E6B7C80004E61A6F032A5 /* Headers */ = { + B512B9EE180ED01757DF8CC84EDA24A6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - ECC8FBDED94024250C00FBB3B40C9353 /* SJRouteHandler.h in Headers */, - F65C37D0DCE09B42EB816A24B9F73055 /* SJRouteInterceptor.h in Headers */, - 0FCE7CED88969056C378078FBA871C52 /* SJRouteObject+Private.h in Headers */, - 7E391A64600B54DEF1974DE44095D490 /* SJRouteObject.h in Headers */, - 68D5CDFC70219CFD84B21E25B974AE4C /* SJRouter.h in Headers */, - 671823D453F2ECDC69913756C4E36D2D /* SJRouteRequest.h in Headers */, + 624FB0CF8D4E57595BBA3A2CC169DF91 /* SJFullscreenPopGesture.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9D5CD09EB11EBEA16426B1EEC4E0D1F9 /* Headers */ = { + B7A6E564BB2EE937B3C4891D6B0B0B4F /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - FF358CA7E36624D6C86B3E99EEA9716C /* SJFullscreenPopGesture.h in Headers */, + 261D49C4ACA15ADDA27E69373377954B /* NSAttributedString+SJMake.h in Headers */, + 98AB593046125983E49C63EC5C2C4070 /* NSDate+SJAdded.h in Headers */, + C19D130AFB48991224E67DEDC2B78438 /* NSObject+SJAsyncLoad.h in Headers */, + EA4DEDF85F748699EF67B7DC20DA6EC5 /* NSObject+SJObserverHelper.h in Headers */, + 3350637DE65E96F3A672DE6C98EB454F /* SJAppearStateObserver.h in Headers */, + 0BAC4253602A605D2AF2EAC392C5EE47 /* SJApplicationInfo.h in Headers */, + 5932AF0DB03C8CC12811396DC38CA48B /* SJAsyncLoad.h in Headers */, + 20111CE695E9F3D2459922F84BCDB749 /* SJAsyncLoader.h in Headers */, + 51EAEC957CB6E5081F9CC80636AB4FBF /* SJAttributesFactory.h in Headers */, + F8C132DF61B93549E63E5BE8ED84B242 /* SJAttributesRecorder.h in Headers */, + 605A400A2393521DA1776104786E623C /* SJAttributeWorker.h in Headers */, + 93A8908E315916E409DC750523ABDEAF /* SJBase.h in Headers */, + DE8D973AC246C4DE2E6C91AFD79C010A /* SJBaseCollectionReusableView.h in Headers */, + 1CF14E40016083FD256548F31BFC18C6 /* SJBaseCollectionViewCell.h in Headers */, + 49D0CB23341719A4C29D9B784A478554 /* SJBaseProtocols.h in Headers */, + BAEACBAFE3B28AF2B1C9A9445576502D /* SJBaseTableViewCell.h in Headers */, + D4E4F9DE728B699B62DAB502DFA855E1 /* SJBaseTableViewHeaderFooterView.h in Headers */, + FF1B95AE282371B2C7E924A5FDCB750A /* SJBaseViewController.h in Headers */, + AA8BD5A065320296F671F3858E592207 /* SJCornerMask.h in Headers */, + B07A8273DB6F5785CF89DAE43347EFE5 /* SJImagePickerController.h in Headers */, + 1C94530BEC4D84C976078A8D245FBDD4 /* SJMakeView.h in Headers */, + BE0554B61B60C600D4EF1353E962FD1E /* SJObjectContainer.h in Headers */, + A9FF1ED66B3F53181925814A40BF74BB /* SJPageCollectionView.h in Headers */, + 2B16EDCC541D3A78E948D47CD2A177ED /* SJPageMenuBar.h in Headers */, + 6D17438979D08199CCE5CA62509FAD13 /* SJPageMenuBarScrollIndicator.h in Headers */, + 17DC32428973118802CD2FEAA0493141 /* SJPageMenuBarSubclass.h in Headers */, + B9EA9E456C72B3BAF9EC9BE7275BBA85 /* SJPageMenuItemView.h in Headers */, + 4C38CCD4B21E3161E3000B375F42FB56 /* SJPageMenuItemViewDefines.h in Headers */, + 1E61EC4026FE1CC8BD2BF1EA9D4FC70B /* SJPageViewController.h in Headers */, + F395C081C9A048EA3646A18077BCA360 /* SJPageViewControllerItemCell.h in Headers */, + 6D8F9D49A39CF3ADEF877A16ABCFD2EA /* SJPlaybackListController.h in Headers */, + 2F741787E47D7446431AC6D936ECB1D4 /* SJPlaybackListControllerDefines.h in Headers */, + 1351741661572689AB572353EED047B2 /* SJPlaybackListControllerInterfaces.h in Headers */, + C29DD88D600B71F5F75A5E8097E9DC04 /* SJPresentationQueue.h in Headers */, + CE23D6DAD687CED9BBE35F0E27AA436D /* SJQueue.h in Headers */, + 37656DD4A00DB7543B45369CDE768FCB /* SJResidentThread.h in Headers */, + F86E1B0E0F9BE00F2279078F73EF5C30 /* SJRunLoopTaskQueue.h in Headers */, + B81D3654371F13425D06DB2A17FF1321 /* SJSQLite3.h in Headers */, + 1622BB622165DB2E4FEDE856B7997C05 /* SJSQLite3+FoundationExtended.h in Headers */, + 1C602D76BE75484028226530049AEAF0 /* SJSQLite3+Private.h in Headers */, + 87DF30760AD55D7A8141888C805CDF7B /* SJSQLite3+QueryExtended.h in Headers */, + 79390DBB1C80972081F34D4AC793D638 /* SJSQLite3+RemoveExtended.h in Headers */, + 5DFC0BA3F9965A9E43A14241666E71C1 /* SJSQLite3+TableExtended.h in Headers */, + 08075B6BFC15806BFB338756183430CF /* SJSQLite3ColumnOrder.h in Headers */, + 74FBA450B9F8F0931336DC2C6A45E99C /* SJSQLite3Condition.h in Headers */, + 9A071EC47BAA41511AC5F90213B47134 /* SJSQLite3Logger.h in Headers */, + C7A0316E568D6D8A701B003D5B1F25E1 /* SJSQLite3TableClassCache.h in Headers */, + A84B038FBBCA1A7126F0F2B30820B635 /* SJSQLite3TableInfoCache.h in Headers */, + 7E58DF1127094F6AAC1A4AB948FDAFC6 /* SJSQLiteColumnInfo.h in Headers */, + 0FD92290500E8B12466CC28B45617C13 /* SJSQLiteCore.h in Headers */, + 1D8912CC7A815672911E1B1EE44E904A /* SJSQLiteErrors.h in Headers */, + 3147BFF7E652D61FC6BECC7323D6B63D /* SJSQLiteObjectInfo.h in Headers */, + 1EC381CA9EAC012B5F3D22A1C5FBA429 /* SJSQLiteTableInfo.h in Headers */, + F8D1D64B61BC648D98554301EFE9971C /* SJSQLiteTableModelConstraints.h in Headers */, + 3C99E5504C47B6A9D604A3E27295D858 /* SJSQLiteTableModelProtocol.h in Headers */, + FD3A538BB2D9A642D9A3353A794D84EF /* SJStatusBarManager.h in Headers */, + B75538251C4D72044582C6EC4FF41377 /* SJTaskQueue.h in Headers */, + 64DFD8938A93B51CE5B6B4490AFB7657 /* SJUIKit.h in Headers */, + 544AAF159DB3FBF39F478057726EEEEE /* SJUIKitAttributesDefines.h in Headers */, + CA7695949B82DCC953C611D26801347F /* SJUIKitTextMaker.h in Headers */, + 044D3A0AF8A45B4AFDEEEEC85B4F42A3 /* SJUIMaker.h in Headers */, + 1C0C0BD647CE847CB961C71FA2C04936 /* SJUTAttributes.h in Headers */, + E2F5C95E165ACE619C38AA54C04CF60B /* SJUTRangeHandler.h in Headers */, + 0D77EB05D26FD41AC60AD01D1D551820 /* SJUTRecorder.h in Headers */, + 1DD28E56F018B491C846CCDDD978B9B2 /* SJUTRegexHandler.h in Headers */, + 69FFB4001096FCA91C597C7118E515A9 /* SJUTUtils.h in Headers */, + 91C5E5DD9C19C2373E2AFFED4AA98731 /* UIButton+AsyncLoadImage.h in Headers */, + DA8B49C337EC93F8802E78489F9F8392 /* UIColor+SJPageMenuBarExtended.h in Headers */, + F403F9ABF36C19FD18BA9D68E6A5933D /* UIImagePickerController+SJUIKitExtension.h in Headers */, + 6E4862D1C5F973B1DF802B32224303CA /* UIImageView+AsyncLoadImage.h in Headers */, + 6447A71B22EA879E9AF45EE688E08494 /* UILabel+AsyncLoad.h in Headers */, + 46390CD5F7A607AA250A6B7AA8859EB5 /* UIScrollView+SJPageViewControllerExtended.h in Headers */, + 75937F5FB1404895F1CF7F1B38266180 /* UIScrollView+SJRefreshAdd.h in Headers */, + 7D407F9D8389FC7E26ED497723F844D5 /* UISearchBar+AsyncLoad.h in Headers */, + AA5E37C941B4C1E8D27AB0D68A696D67 /* UITextField+AsyncLoadImage.h in Headers */, + 8CF9609C1373722047FFF47D26DFAFDD /* UIViewController+SJPageViewControllerExtended.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B0D5008CDA9911D64DD1576392C0DFB8 /* Headers */ = { + B86AEAF486F8A6DF1ED0F873376BA425 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D5286DBC485ED5BA7FA2D3D42500AAB9 /* NSAttributedString+SJMake.h in Headers */, - C0E132AAB1018EA68CA8B50746895BEB /* NSDate+SJAdded.h in Headers */, - 81569E5DD0825CC4843F681671100572 /* NSObject+SJAsyncLoad.h in Headers */, - 63ADA468BE2CE15145B3739B1633C2DD /* NSObject+SJObserverHelper.h in Headers */, - 7FBE1A2B4A0A64C911A62FBBC7E2B638 /* SJAppearStateObserver.h in Headers */, - 49DACA1321C25806C42AA0FCCE75DEEA /* SJApplicationInfo.h in Headers */, - 8BF3690590614826A27CB5D1DAF42621 /* SJAsyncLoad.h in Headers */, - A7A354EDC09FB4AE6058E2DFFF52056B /* SJAsyncLoader.h in Headers */, - F7489B3B63E80042C5EB66934B5D4448 /* SJAttributesFactory.h in Headers */, - ECC1E31775624FB1057CE1CDD86B57C0 /* SJAttributesRecorder.h in Headers */, - 6EF9709872AF6E15989067B74D7CC52B /* SJAttributeWorker.h in Headers */, - AFD025D08C64874573D6D17EB0D4F4B1 /* SJBase.h in Headers */, - C35746B22B95679EA432E1E4829E1E33 /* SJBaseCollectionReusableView.h in Headers */, - 5955665734C07476B22F9B19372C879D /* SJBaseCollectionViewCell.h in Headers */, - 531CED553EC8E1F9CD4C6A33C20AAF06 /* SJBaseProtocols.h in Headers */, - C3AE099B25C826243F7FA1F796B009EC /* SJBaseTableViewCell.h in Headers */, - 4FF84162478A9B9A909EF86F211AD2A2 /* SJBaseTableViewHeaderFooterView.h in Headers */, - 13D1957F7DB13BCBAF31E6ACD6DEC8AE /* SJBaseViewController.h in Headers */, - 70C24DADDB5ECA03222C7B79AB90BB3F /* SJCornerMask.h in Headers */, - 22C31197B0463DA77ED4267CF29B8A92 /* SJImagePickerController.h in Headers */, - 3D7524BFCC98ECEE8CBAC07A6F2F6831 /* SJMakeView.h in Headers */, - FFF1823AFC5BE6906662FFBB4FE84404 /* SJObjectContainer.h in Headers */, - 145234F9A5E52333DEECA82A332DBE8A /* SJPageCollectionView.h in Headers */, - 2F202F12865EC85C75EBEE3AE70016E3 /* SJPageMenuBar.h in Headers */, - 6368D0F5ED3DD6A055C7E08FA1D36C76 /* SJPageMenuBarScrollIndicator.h in Headers */, - FDD7E7AB0B3051FB314187043002EB6F /* SJPageMenuBarSubclass.h in Headers */, - 97B5884A8809D90F4AE9BE560D0D3A24 /* SJPageMenuItemView.h in Headers */, - AEECA122A07A8FB56277B3AA92FA54B0 /* SJPageMenuItemViewDefines.h in Headers */, - 62FCC9A5285B56AF52BB446582B87AE7 /* SJPageViewController.h in Headers */, - 2B5740ECEF8C03D584C18A282DB04D43 /* SJPageViewControllerItemCell.h in Headers */, - BB1D8EA60FA2F60382291F12F2E00909 /* SJPlaybackListController.h in Headers */, - 9E8A47E20D25A408DD4C1E9EB9FB017A /* SJPlaybackListControllerDefines.h in Headers */, - 25BF1D81D3A570DBFF239BA92AF8C669 /* SJPlaybackListControllerInterfaces.h in Headers */, - 7DF0E0E7590BAE6DC76BDDE70E44CAA6 /* SJPresentationQueue.h in Headers */, - 84B5B0999716CEB7E1AC8159EF819B88 /* SJQueue.h in Headers */, - 161B4E90F21AC5E29EAA4E4FA706BF5C /* SJResidentThread.h in Headers */, - 6EA0AFAE6C9BA460FBA46A1262E5446D /* SJRunLoopTaskQueue.h in Headers */, - 511FE0D1E593231D408038E0282705D8 /* SJSQLite3+FoundationExtended.h in Headers */, - CDB5F270776B6243808B833F7D8CA1B3 /* SJSQLite3+Private.h in Headers */, - 9FB6CF522A966250D7ABC8AF599A2359 /* SJSQLite3+QueryExtended.h in Headers */, - 6E39F2CEDC3C74CFE520AF3951CB1AF1 /* SJSQLite3+RemoveExtended.h in Headers */, - 55FB4F55951E079FD38687CECDACD6BB /* SJSQLite3+TableExtended.h in Headers */, - 7F55C70733054C2B594685848A8DED11 /* SJSQLite3.h in Headers */, - FCC9B0687350F6E85BE8452B780E8A83 /* SJSQLite3ColumnOrder.h in Headers */, - 6070055B27A1E580E768564E001390C3 /* SJSQLite3Condition.h in Headers */, - E97329E7941CF3C979F35953B80B592B /* SJSQLite3Logger.h in Headers */, - 05FB0AE0AABC0400CF3C0A6E0C512C74 /* SJSQLite3TableClassCache.h in Headers */, - 4DE2029DE3C94D112B435DEC365560C3 /* SJSQLite3TableInfoCache.h in Headers */, - 5D036314D5D5FA4A68CBBB406580879B /* SJSQLiteColumnInfo.h in Headers */, - 06283A245925DFDE457B0C3EDEF96A34 /* SJSQLiteCore.h in Headers */, - ADFF7498655431D3BD286B2F690EE15D /* SJSQLiteErrors.h in Headers */, - 1E667B5E7AED378FE50AB78E1D762986 /* SJSQLiteObjectInfo.h in Headers */, - F8714BA2795A9A3707001F1C357BCA4E /* SJSQLiteTableInfo.h in Headers */, - 474A40751BE4F08C1A61430E45BFD16A /* SJSQLiteTableModelConstraints.h in Headers */, - E3676DB27EEB814A79B26AE1F339D24A /* SJSQLiteTableModelProtocol.h in Headers */, - FE3ECCE6EE327F18EFCB475B8E7DFBC6 /* SJStatusBarManager.h in Headers */, - 5455473EC3F5B511B2A7F43ECBB242AD /* SJTaskQueue.h in Headers */, - 59B7211AC45E79616B74BB50A1992CC9 /* SJUIKit.h in Headers */, - 99CCAB3C416A0912B4E1AFF19BB0592C /* SJUIKitAttributesDefines.h in Headers */, - 1E31E541D1528F390D65528A7CD1C921 /* SJUIKitTextMaker.h in Headers */, - 05285D8CCEAA6F2A37E45CC735FE19B7 /* SJUIMaker.h in Headers */, - 3C568679FD5989CE21DA53AD7A7A6656 /* SJUTAttributes.h in Headers */, - 637FB9C8978EF7E6C66505C7CEBA1EFD /* SJUTRangeHandler.h in Headers */, - 8336DC143B2876D0AC6BCE0434B68A61 /* SJUTRecorder.h in Headers */, - C52A4C449F7B5421083765750D994A8B /* SJUTRegexHandler.h in Headers */, - 4048B1AE8170FB5DE827B68999C817FB /* SJUTUtils.h in Headers */, - 32E70ACFC46563DDCAF23CC6AA125695 /* UIButton+AsyncLoadImage.h in Headers */, - 545C10255BC234459E35DA3B50FA29D2 /* UIColor+SJPageMenuBarExtended.h in Headers */, - B448CF1506C4DF90C71CF0F318D4868C /* UIImagePickerController+SJUIKitExtension.h in Headers */, - E3DC6A5C1913A1927E18B23B0C973888 /* UIImageView+AsyncLoadImage.h in Headers */, - D2C67CE757307FB00C7DB4465937E294 /* UILabel+AsyncLoad.h in Headers */, - F57A2EC89E0E71F005951BDC1955A2AE /* UIScrollView+SJPageViewControllerExtended.h in Headers */, - 710F4C96BB455FEC57554BA6EA92D6C7 /* UIScrollView+SJRefreshAdd.h in Headers */, - B836255A44833E1070911FF654CEEB3D /* UISearchBar+AsyncLoad.h in Headers */, - 17ED11939F4F808BEB457C76721F2A85 /* UITextField+AsyncLoadImage.h in Headers */, - A46F1BA8A49255C2C1DCFB5BB5BE6FE5 /* UIViewController+SJPageViewControllerExtended.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B9F7BD7F57D33DA728EED00211641CFA /* Headers */ = { + C2798F6AAC77FA04BCC5ECD98891CA2F /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 64B74BF57C2B09334DF1E98A6D80BC44 /* MJRefresh.h in Headers */, - 84CD575C4194CE074DC9DAF2032AE7BE /* MJRefreshAutoFooter.h in Headers */, - 016E3DD1A05996B95988A0F92C603610 /* MJRefreshAutoGifFooter.h in Headers */, - 08FA8C552C284E620F6D60CBD7EF5F96 /* MJRefreshAutoNormalFooter.h in Headers */, - 57C4D41F54D6327C63C4508AF1CF989D /* MJRefreshAutoStateFooter.h in Headers */, - 17500F12CDDF3903A2896BC0B063A8DE /* MJRefreshBackFooter.h in Headers */, - 7476E72D69D6048345A68802E89DB8D0 /* MJRefreshBackGifFooter.h in Headers */, - 032B00C748FE79147F65DB862EE69E37 /* MJRefreshBackNormalFooter.h in Headers */, - AFAF04B22BE1008C70EF3C05EFDD2523 /* MJRefreshBackStateFooter.h in Headers */, - 5C7CE066A8C3006E646ED51FA8ABFBB0 /* MJRefreshComponent.h in Headers */, - 16B9DC8CB012DAA7A6ECFDD446FA8BBE /* MJRefreshConfig.h in Headers */, - 4022B4C05B459EE36BD5A330A58B7A3E /* MJRefreshConst.h in Headers */, - CD985823037E946277617E2EB8E47F77 /* MJRefreshFooter.h in Headers */, - 9B82B170C663C44EB3595CD7B0551472 /* MJRefreshGifHeader.h in Headers */, - A41A57610520FF8E6A38B255D068A6C0 /* MJRefreshHeader.h in Headers */, - 432DA7C9293573B3C5B6F8B5A28D15F0 /* MJRefreshNormalHeader.h in Headers */, - 84AAFB010BDB1A8961CABD87F1BCD930 /* MJRefreshStateHeader.h in Headers */, - 031B5492C69D9F8CD12757A3FAFD3A36 /* NSBundle+MJRefresh.h in Headers */, - 82D8207DEF104392D2661BA6EBCF42FF /* UIScrollView+MJExtension.h in Headers */, - 5E09F160BDC1180231FFFD4E9CEF070A /* UIScrollView+MJRefresh.h in Headers */, - B472437E134F4DE3D384078738CE6A8D /* UIView+MJExtension.h in Headers */, + F9AC2056AEDC6C5F2B197D23FCD13CF2 /* SJButtonProgressSlider.h in Headers */, + 26734E1FC5EB3006CC5BBC36F6EA17BB /* SJClipsBackButton.h in Headers */, + 68D889D5200FB0E6A16B09CA8F80931F /* SJClipsButtonContainerView.h in Headers */, + 2BCB2519ED5B8C9C04E321D0DED36C6B /* SJClipsCommonViewLayer.h in Headers */, + 9974AA036F2C2B21FEADF853D13058DE /* SJClipsControlLayer.h in Headers */, + B6C0AEF01937EC3CC592E306BD7DD526 /* SJClipsGIFCountDownView.h in Headers */, + A4F9685F05F02476D5E84BF375BB0E8D /* SJClipsGIFRecordsControlLayer.h in Headers */, + 1A0D6D03D32D4F1A38C761B89A1BCAD8 /* SJClipsResultsControlLayer.h in Headers */, + 30BE0B393FC49E37DA647D7B9C1DE0B4 /* SJClipsResultShareItem.h in Headers */, + 9227EC4510B728FDED554435D36B76E0 /* SJClipsResultShareItemsContainerView.h in Headers */, + 5EB9D56C0108E9D4346094F68BCA82FE /* SJClipsSaveResultToAlbumHandler.h in Headers */, + 5C9744F8AE2D7B6EB5F733D746FA2ABF /* SJClipsVideoCountDownView.h in Headers */, + 5BB1C9B1CDB87D21CA99854B428DE4D9 /* SJClipsVideoRecordsControlLayer.h in Headers */, + B8A5D800E37F6FEFEEE0D4FBA1BA5FEE /* SJCommonProgressSlider.h in Headers */, + EFF891F96AB4A03690A511A4B87F21C5 /* SJControlLayerDefines.h in Headers */, + BAD6516901D95C5CD0552838ECAF0B9B /* SJControlLayerIdentifiers.h in Headers */, + 15F8DB00D33FF2969D485AC91DF8331A /* SJControlLayerSwitcher.h in Headers */, + 78ADFF51DC12C2A6D30BAA6B34B5D777 /* SJDraggingObservation.h in Headers */, + D8C2F5B9DAE36E3BC11AB6C55EF34B3F /* SJDraggingObservationDefines.h in Headers */, + 94EB305DB2B68222A9987C3CFBAFE4B1 /* SJDraggingProgressPopupView.h in Headers */, + F5FEAAE4F6449687CFC1972C2BAFB305 /* SJDraggingProgressPopupViewDefines.h in Headers */, + 877314D20C411633E5D724F9E964A4A3 /* SJEdgeControlButtonItem.h in Headers */, + EDA54FA53E737D361DB51167E893101F /* SJEdgeControlButtonItemAdapter.h in Headers */, + A8A1FAC00286FF8918EC4EE1B868EEEC /* SJEdgeControlButtonItemAdapterLayout.h in Headers */, + 5211182AE701A20C41B7F85E2E211437 /* SJEdgeControlButtonItemView.h in Headers */, + 53040D366C4A83EEF45E12B65B22ACEE /* SJEdgeControlLayer.h in Headers */, + 8E78686CE13A5A607ECE51D2BFE56313 /* SJEdgeControlLayerAdapters.h in Headers */, + 062DAD18D7A281477EE18AE3A9A0504D /* SJFloatSmallViewControlLayer.h in Headers */, + CB89548F8BAB9EAF9A9DA5CC887F841D /* SJFullscreenModeStatusBar.h in Headers */, + FE2D3FBD895EC15C6E9DC7828ADE507D /* SJFullscreenModeStatusBarDefines.h in Headers */, + 304329B9F20A017B2AD581A8EB2D46FF /* SJItemTags.h in Headers */, + E31DC18AECC945BEB1B35F2D7FF09639 /* SJLoadFailedControlLayer.h in Headers */, + F3DCCCD549FD5B56D4CABDE523546D4E /* SJLoadingView.h in Headers */, + EC17D6E4D616A8AE930FCB7B590553B8 /* SJLoadingViewDefines.h in Headers */, + 07B677BDFFB0CCF8F6C4E1CD6DB33081 /* SJMoreSettingControlLayer.h in Headers */, + 61BC757C493B80E6397BF2410F25E453 /* SJNotReachableControlLayer.h in Headers */, + 7217D38155C3F032D763F5E985EEF7F9 /* SJProgressSlider.h in Headers */, + 9889C305D6960209BBBDDD89414CE55A /* SJScrollingTextMarqueeView.h in Headers */, + BFE5416C934C85B80C0BD14ED730A07F /* SJScrollingTextMarqueeViewDefines.h in Headers */, + 9F82CB2189315A0C1AC221A6B0856223 /* SJSpeedupPlaybackPopupView.h in Headers */, + E1C40422C7E1C8DBCAAE43940EA14778 /* SJSpeedupPlaybackPopupViewDefines.h in Headers */, + 636CA2BF3939585E7F3B6190B9773219 /* SJSwitchVideoDefinitionControlLayer.h in Headers */, + 8B34B25C9574DC31B806D03A9E553BD6 /* SJVideoPlayer.h in Headers */, + EF4D248C4B0B57BAEF039BFF832A4FEA /* SJVideoPlayerClipsConfig.h in Headers */, + 4E1995E95863D466E15EAA72FA729136 /* SJVideoPlayerClipsDefines.h in Headers */, + 540010065DE0F7EE6FE3BC525148A720 /* SJVideoPlayerClipsGeneratedResult.h in Headers */, + 5A5CBE5DF9B75C4A124D6A3CC21AF9E1 /* SJVideoPlayerClipsParameters.h in Headers */, + 6764FA4EEF2A3644A93FD89FFA518448 /* SJVideoPlayerConfigurations.h in Headers */, + 8883DEAFCE1A003F1A0F624167D4A9EB /* SJVideoPlayerControlMaskView.h in Headers */, + DF51F95E4422E2B2A99698F67F7EE1E9 /* SJVideoPlayerLocalizedStringKeys.h in Headers */, + 9AB93EB9BD812DB4291CBECD27B868F4 /* SJVideoPlayerResourceLoader.h in Headers */, + D5955319F4F943F24E11C9074C2F2428 /* SJVideoPlayerURLAsset+SJControlAdd.h in Headers */, + CF849EF3B451496941D38162AC448785 /* SJVideoPlayerURLAsset+SJExtendedDefinition.h in Headers */, + 156383718B8C6F0D20559F292489C6BA /* UIView+SJAnimationAdded.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - BEA8651F99403447F29990C1A94F37D3 /* Headers */ = { + F7131D63C1ABDB0A1074FF2757F366CC /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A3C94056341DFA2A8A77147BF8CCD625 /* NSBezierPath+SDRoundedCorners.h in Headers */, - 2DB99E87328AB7C1FD3162AA94B0D3E7 /* NSButton+WebCache.h in Headers */, - 170F97CD69BD6031D937C92D34FD4706 /* NSData+ImageContentType.h in Headers */, - 4C3912D9D711FFA2E8310EC6AD47EE62 /* NSImage+Compatibility.h in Headers */, - E42A7D1C9E99A24203A295E85B978938 /* SDAnimatedImage.h in Headers */, - 599AEB5E944F8E4CD7AD7766DBC5B9AD /* SDAnimatedImagePlayer.h in Headers */, - 472BDF20693240A7BBC7279CA137A73E /* SDAnimatedImageRep.h in Headers */, - 4810AEBF932187A3F1A94DFB6E028CB9 /* SDAnimatedImageView+WebCache.h in Headers */, - 9B36EF7583EDEEFC684944DC2A86EE9D /* SDAnimatedImageView.h in Headers */, - 5AC5B35F7A1F8D81E38D71BA2C5BFBC4 /* SDAssociatedObject.h in Headers */, - 759335CEF832A5F72222213C7AC7FFEA /* SDAsyncBlockOperation.h in Headers */, - 00019CCAA3EBAB3F8539E6183612530B /* SDDeviceHelper.h in Headers */, - D7E39007ADC52A887967F78C6E5C61D9 /* SDDiskCache.h in Headers */, - D2C0E6530E3AFBD6C079E42472F33800 /* SDDisplayLink.h in Headers */, - D522C8B6C7C223E80D6BAB4BDDB5F69A /* SDFileAttributeHelper.h in Headers */, - 44C8DEEE4C2383275CB675F29D45C761 /* SDGraphicsImageRenderer.h in Headers */, - CFB4EFA7B2ADC28AD13CFFCA011596D7 /* SDImageAPNGCoder.h in Headers */, - F1452646310B7DF8D987010249536E76 /* SDImageAssetManager.h in Headers */, - 8E27EC136C6FBA3867CE73898926070E /* SDImageAWebPCoder.h in Headers */, - 9B12F156E1BEB77000D4E23081EC1F29 /* SDImageCache.h in Headers */, - 58F4C5FFF7F1ADBD86EF4D72D10060F9 /* SDImageCacheConfig.h in Headers */, - FBCBC855C2BC31EE3B180627DF0E51E2 /* SDImageCacheDefine.h in Headers */, - E8C96FF99FC6A03A737CD3202588C7D5 /* SDImageCachesManager.h in Headers */, - 428323F5F727A7745DB9A0B99AF770B9 /* SDImageCachesManagerOperation.h in Headers */, - 327DF3A45AD02490D6D3DFCC3A3A676C /* SDImageCoder.h in Headers */, - 14E576329E0DD1AA7F16E7E5C629C447 /* SDImageCoderHelper.h in Headers */, - 446F9E8C1FF9D0E5B5679FF2CA418898 /* SDImageCodersManager.h in Headers */, - 9F517EF334E49A9C29254BDB13F00FB2 /* SDImageFrame.h in Headers */, - 9D5B7A2D161D6078DA4EB07849DDD72E /* SDImageGIFCoder.h in Headers */, - DA765D01151CB2601493C20FAB272A99 /* SDImageGraphics.h in Headers */, - 8385EA1E9A6EBC7120147A8E8128264B /* SDImageHEICCoder.h in Headers */, - F1DD207E3FDE8FD41F4E8FAD4A840C13 /* SDImageIOAnimatedCoder.h in Headers */, - 38E225F83FB50A828F51F93E59069CF9 /* SDImageIOAnimatedCoderInternal.h in Headers */, - 88EC2492778A65D49A56165E5DE416FF /* SDImageIOCoder.h in Headers */, - 1C492DD17AE0B343F869E7947AB90AC2 /* SDImageLoader.h in Headers */, - FA7DFB408F4A73B37749C8A3D730F903 /* SDImageLoadersManager.h in Headers */, - CF015D6109D2B386D6A1F1F18CB0C9C3 /* SDImageTransformer.h in Headers */, - BDCEC74D09CA629346B8CDB4180B1BCF /* SDInternalMacros.h in Headers */, - D29A03BBC9B95E677C2F51345F344088 /* SDMemoryCache.h in Headers */, - 50BA43C8B4C7278FA449490F5ACEA40C /* SDmetamacros.h in Headers */, - 5376CD57545524F6266E36C055A7C0BD /* SDWeakProxy.h in Headers */, - A6747B6E6D35FB0709A0E58F686A88A5 /* SDWebImage.h in Headers */, - 265D49A837950E796D67DF1A7BA105FE /* SDWebImageCacheKeyFilter.h in Headers */, - E89678023EB928D8162BFC0B1DCF31D3 /* SDWebImageCacheSerializer.h in Headers */, - A19AA07C7DB4989CB3E0A6423F39F82B /* SDWebImageCompat.h in Headers */, - 47948B0FA1D66D170049BDFF4F42F543 /* SDWebImageDefine.h in Headers */, - 4670045ED9E12409423D29E8C8BB46C2 /* SDWebImageDownloader.h in Headers */, - 68F51B1C47032D4C1E214D42B31D4336 /* SDWebImageDownloaderConfig.h in Headers */, - 74EAE5276D0EF19E1CF97B70E9965FB4 /* SDWebImageDownloaderDecryptor.h in Headers */, - E8BC0E3B26159ED4D6462E921A5A69D9 /* SDWebImageDownloaderOperation.h in Headers */, - 7031CFA5FD7EC7C8E5EFAF8325D2C8ED /* SDWebImageDownloaderRequestModifier.h in Headers */, - E34D536EB38161183AC71F5403278288 /* SDWebImageDownloaderResponseModifier.h in Headers */, - EC357E611B3D5756D5863C4408BE6CE2 /* SDWebImageError.h in Headers */, - EF5491A4CB593F4B14C3A4CD72649405 /* SDWebImageIndicator.h in Headers */, - 4A902A0B2167B7EFF593834F41B2EC0C /* SDWebImageManager.h in Headers */, - 757EBD77D300E8FAF251BF89058A0063 /* SDWebImageOperation.h in Headers */, - C4A781EEFE89058B7265C6F721CA91AB /* SDWebImageOptionsProcessor.h in Headers */, - 93147163DFC9AD7D994B83BB638828B9 /* SDWebImagePrefetcher.h in Headers */, - CD40EC89E9242EF2196E318E81133DCA /* SDWebImageTransition.h in Headers */, - E6AD01F3482B5DC39109FDDC4FA258F5 /* SDWebImageTransitionInternal.h in Headers */, - 8487E616E339280CA226EFA20E1095A4 /* UIButton+WebCache.h in Headers */, - E3E2BD738E7E9A105525F691CE53FDBF /* UIColor+SDHexString.h in Headers */, - 01EEAAAE410356BC64AF4CED471DA9D6 /* UIImage+ExtendedCacheData.h in Headers */, - F82CF4572FCCA28ECEE676EABA1BAAF3 /* UIImage+ForceDecode.h in Headers */, - 5938E9D9A7E09FC96186D2651278B68C /* UIImage+GIF.h in Headers */, - 45B725D59EEA0992270B943C42E3FA17 /* UIImage+MemoryCacheCost.h in Headers */, - 58A8084F0B525B5F00655FCD63877483 /* UIImage+Metadata.h in Headers */, - 098E8CC8DF32416A428381F52273D2A6 /* UIImage+MultiFormat.h in Headers */, - 0650AA299D9E18C22F3D7978B8D13F0E /* UIImage+Transform.h in Headers */, - 06943F195425D70618781500ECA5D13A /* UIImageView+HighlightedWebCache.h in Headers */, - 9190EFE6D38E12D26CB9BC5C3A7AE8EA /* UIImageView+WebCache.h in Headers */, - BD581F43E1B1B9B45DD3DC6C4B709539 /* UIView+WebCache.h in Headers */, - 9B8365733D88EDAC8AAB34412130B375 /* UIView+WebCacheOperation.h in Headers */, + F1A5133612FCB0C0C9BC54BD286EA845 /* NSObject+YYModel.h in Headers */, + 6180765724F0D4844685434240F3BD47 /* YYClassInfo.h in Headers */, + 34CBB7777CB1611F44843DF9A4CF8B24 /* YYModel.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - ED37A4DFBF68A9EB4E47936214EC75A0 /* Headers */ = { + FC8CBC05995B7EF6746330395DC69D7F /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + D84979AA73BD0BDDD997A52A346D001E /* AVAsset+SJAVMediaExport.h in Headers */, + F2D0D9886A5D0E30CDB9F773EA5008CD /* CALayer+SJBaseVideoPlayerExtended.h in Headers */, + 298120854633D5B18012CFEB693E74DA /* NSString+SJBaseVideoPlayerExtended.h in Headers */, + 191E149D12EF6B1D03C4682FC600AEB0 /* NSTimer+SJAssetAdd.h in Headers */, + C4A05378C85C0A95E8F0F72B339360A0 /* SJAVMediaPlaybackController.h in Headers */, + 42434DDCFE985C11B07AE57264F33BDF /* SJAVMediaPlayer.h in Headers */, + 392BB8D5E74CE3BE18CB48C27E4651B0 /* SJAVMediaPlayerLayerView.h in Headers */, + 91DA669AD86A42C926A12AD4E00C9985 /* SJAVMediaPlayerLoader.h in Headers */, + 366200CDFF983247A2D246BBCECD2D27 /* SJAVPictureInPictureController.h in Headers */, + E125E2961755952D9747F14774A9402D /* SJBaseVideoPlayer.h in Headers */, + 4A3927EC15F00308B70AAAFE8668CC57 /* SJBaseVideoPlayer+TestLog.h in Headers */, + 49947222A8C7FD51AD55675858BA1190 /* SJBaseVideoPlayerConst.h in Headers */, + CD3C3F01AE8047588A394CA5CFBAAA8D /* SJBaseVideoPlayerResourceLoader.h in Headers */, + 534CE953B5F7DBF9D7960D998ACFC815 /* SJControlLayerAppearManagerDefines.h in Headers */, + 9C0264AD5C65197A312C869A3F265279 /* SJControlLayerAppearStateManager.h in Headers */, + 87D4510BB9E48E9D2A3B310AD69235A0 /* SJDanmakuItem.h in Headers */, + 135B70A64E10764677E7199DE521F546 /* SJDanmakuPopupController.h in Headers */, + 4D53C4A9F657E6F8611760183E4F67B2 /* SJDanmakuPopupControllerDefines.h in Headers */, + A9F2E319ED1E4845FC4999980CC14863 /* SJDeviceVolumeAndBrightnessManager.h in Headers */, + A7AA57B0AADC1FCDF0F6375AE5EEC117 /* SJDeviceVolumeAndBrightnessManagerDefines.h in Headers */, + 4DFCAC135D8C0C063F08AACDA1B3545C /* SJFitOnScreenManager.h in Headers */, + FA5C78B0A438DDA789AEC22AB9BF15FD /* SJFitOnScreenManagerDefines.h in Headers */, + 36E25CD877F011C66D2D06258F2D0FDE /* SJFlipTransitionManager.h in Headers */, + 52695E4CCD9694A03EDC912D7CACB343 /* SJFlipTransitionManagerDefines.h in Headers */, + E7908E8B1DD2988B3F1A058BF5B654D7 /* SJFloatSmallViewController.h in Headers */, + 0B745215C3CCF7741612E08E2C092292 /* SJFloatSmallViewControllerDefines.h in Headers */, + 22985DB6B54D53699513B7845E84E058 /* SJGestureControllerDefines.h in Headers */, + 63C24C3C1B6DB1958E6355FC15C6DBEA /* SJMediaPlaybackController.h in Headers */, + 94C3A77C7856917DDB52C05C54E1ECCE /* SJPictureInPictureControllerDefines.h in Headers */, + 52BE4B30A584DFEB823436DFF3CD5C4E /* SJPlaybackHistoryController.h in Headers */, + A619E6CC7EEE8A6B6CEB2CFC48D1E338 /* SJPlaybackHistoryControllerDefines.h in Headers */, + 456FC9E43EC312A2C9FD461800271B4F /* SJPlaybackObservation.h in Headers */, + 1378DB380B4113B1F17C16F17F8DCCD2 /* SJPlaybackRecord.h in Headers */, + 72BBA305179297278CAAFC8DC4FFFC73 /* SJPlaybackRecordSaveHandler.h in Headers */, + DDC4328205ECDBF7AB7161E5299DD174 /* SJPlayerAutoplayConfig.h in Headers */, + D46ECA1600D1249FC986C154868650CB /* SJPlayerView.h in Headers */, + 467BA5DFDA7AC2BCEB0A7D0A15F2DB14 /* SJPlayerViewInternal.h in Headers */, + E1BBFB018923F57C914B5BFEA3E96B3F /* SJPlayModel.h in Headers */, + 716A73BF582B0970586D6F320E31A549 /* SJPlayModel+SJPrivate.h in Headers */, + B55ACF180E148940BE1A2F0A50E47ADF /* SJPlayModelPropertiesObserver.h in Headers */, + 9C448750402F9B05F5DF50D87466A838 /* SJPromptingPopupController.h in Headers */, + 716191563C193C478FF53B27F89F0DD4 /* SJPromptingPopupControllerDefines.h in Headers */, + 26EB6FBAAA53394045C0EB2A567CF9A1 /* SJReachability.h in Headers */, + 49D277F3A240760ECE77659D93723C82 /* SJReachabilityDefines.h in Headers */, + 63FAAB0D781FB4F5D23F620ADF4BAA67 /* SJRotationManager_4.h in Headers */, + 826E3E1E3F5A1D8DAC7229FF326D1010 /* SJRotationManagerDefines.h in Headers */, + 6771ED62E458661E207318E2285D7531 /* SJRotationManagerInternal_4.h in Headers */, + 8D20B22A8FC66004FED792FC022B0B77 /* SJSubtitleItem.h in Headers */, + B5AC12EE126E6705A47FDF5732F56AD1 /* SJSubtitlePopupController.h in Headers */, + 6923DEC35C9885460DCE5A4710712F33 /* SJSubtitlePopupControllerDefines.h in Headers */, + 2D7B5D28ED1967F3560DCA4AEDEEE852 /* SJTextPopupController.h in Headers */, + 3DBB668CC94B38F4046E8FF2F9BF0503 /* SJTextPopupControllerDefines.h in Headers */, + DF3DD8F24A709ADAA7DB567D50DFDBBF /* SJTimerControl.h in Headers */, + FDEFC0913376D6924FE8ADBB45644834 /* SJVideoDefinitionSwitchingInfo.h in Headers */, + 1CBC44945B8145940BDAD9C88650C7D7 /* SJVideoDefinitionSwitchingInfo+Private.h in Headers */, + F7FA870F3887DD00BDDCBDF9E517E5D5 /* SJVideoPlayerControlLayerProtocol.h in Headers */, + AA5C715DE6380E78D5F5B76F4E3CD7B0 /* SJVideoPlayerPlaybackControllerDefines.h in Headers */, + 41234058B8C00D8A61EE5AE062B3698B /* SJVideoPlayerPlayStatusDefines.h in Headers */, + 0192B48A6F26DB7B19707E4C3CEF729B /* SJVideoPlayerPresentView.h in Headers */, + 4C08112DD360F3AFC8D6B37331874A7D /* SJVideoPlayerPresentViewDefines.h in Headers */, + 28C0F10A3661D9F82E0FDB3111BB81B3 /* SJVideoPlayerRegistrar.h in Headers */, + 28B04E97913511374FB2A829FD52AF33 /* SJVideoPlayerURLAsset.h in Headers */, + CFA1F4C8C5D680D356FD122C66E36B8C /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h in Headers */, + DFF760EEBB7A4719499CEB6F4AE072DC /* SJVideoPlayerURLAsset+SJSubtitlesAdd.h in Headers */, + CB90B40D8A0829D4F9FEA8E0E58E100C /* SJVideoPlayerURLAssetPrefetcher.h in Headers */, + 74DC341A6E04138E815A46A48E2BB832 /* SJViewControllerManager.h in Headers */, + DAB598ADA057F6B259EFB929B38A19A3 /* SJViewControllerManagerDefines.h in Headers */, + CB2E0A32C2FE32C7EDE9DD8D850ED2D1 /* SJWatermarkView.h in Headers */, + 642240998AFBB89DF3F3C767A162217A /* SJWatermarkViewDefines.h in Headers */, + FF11BCD57D7EE41EEBFF0AA09A937E8F /* UIScrollView+ListViewAutoplaySJAdd.h in Headers */, + A0B4DB0A9FBEC84BE84A8205FF34344B /* UIScrollView+SJBaseVideoPlayerExtended.h in Headers */, + 585F2320036D957B01F93D38DE02E032 /* UIView+SJBaseVideoPlayerExtended.h in Headers */, + D751BA3F74B9EA708AE4CAC5D15D5670 /* UIViewController+SJBaseVideoPlayerExtended.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3728,11 +3939,11 @@ /* Begin PBXNativeTarget section */ 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */ = { isa = PBXNativeTarget; - buildConfigurationList = B1FA491365904802AD9D5BF4683066A6 /* Build configuration list for PBXNativeTarget "SDWebImage" */; + buildConfigurationList = B8B0D23FFB968359602921868E13E2B0 /* Build configuration list for PBXNativeTarget "SDWebImage" */; buildPhases = ( - BEA8651F99403447F29990C1A94F37D3 /* Headers */, - 811E255F9DA765E3FED6313B480D487A /* Sources */, - 9A8E5412CB0D1C65610568029C8C6240 /* Frameworks */, + 276B94151CAFC7EC150A7DDBF9F9E2FE /* Headers */, + 93767622ED566EBF3E8357E4435CB074 /* Sources */, + 22FCDA79E3009D6F8A6FB13B45E91F1A /* Frameworks */, ); buildRules = ( ); @@ -3740,35 +3951,35 @@ ); name = SDWebImage; productName = SDWebImage; - productReference = B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */; + productReference = B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */; productType = "com.apple.product-type.library.static"; }; 53EA424E9D34B39228682599B5DABD60 /* SJMediaCacheServer */ = { isa = PBXNativeTarget; - buildConfigurationList = 60EA7763D7F05E6CECCD71A4788DD082 /* Build configuration list for PBXNativeTarget "SJMediaCacheServer" */; + buildConfigurationList = 07EB740ACD4A75E3149E9C870AA9BF0D /* Build configuration list for PBXNativeTarget "SJMediaCacheServer" */; buildPhases = ( - 20D7B668175268C9999634A7DD507F47 /* Headers */, - 96DE7817D95AF3428D655CCD33243B77 /* Sources */, - BEBC8BACFD413D85A7F921B46E375573 /* Frameworks */, + 59FDE05D8BC888552757B66A4A162114 /* Headers */, + 86404D4F33DCEEEA0B433F07BFEB7F89 /* Sources */, + C7EC84B380D003AAE975F1457B9E2F4C /* Frameworks */, ); buildRules = ( ); dependencies = ( - C607C9B14DAE6B43C4C85ADE3AD1A7B9 /* PBXTargetDependency */, - D67276256FC7D07C9A7DED1B0AE76969 /* PBXTargetDependency */, + 4AD008F5810FCA8410AAF541F0F248D5 /* PBXTargetDependency */, + 0FB80610C948DD1BA3783FCD8E81C0F1 /* PBXTargetDependency */, ); name = SJMediaCacheServer; productName = SJMediaCacheServer; - productReference = F7785B72FFA7AD5738D7E285153CEECD /* libSJMediaCacheServer.a */; + productReference = F7785B72FFA7AD5738D7E285153CEECD /* SJMediaCacheServer */; productType = "com.apple.product-type.library.static"; }; 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */ = { isa = PBXNativeTarget; - buildConfigurationList = 0B9F7EAACDDA564EC328F53A4AB8CF85 /* Build configuration list for PBXNativeTarget "Masonry" */; + buildConfigurationList = 6525CCFB5FEEBC36FDDE16A88CD85B83 /* Build configuration list for PBXNativeTarget "Masonry" */; buildPhases = ( - 2697A8D6B2989B073B236F7B4BF67F30 /* Headers */, - 03D7E07BDB85EF20B683BD1CD95C9197 /* Sources */, - 01095FBE532CF5AA0855A20BDA54BF0B /* Frameworks */, + 2A3EBFC0646B1C38B42A258D68224E28 /* Headers */, + E707C1A87E08D1505E9E592237845A37 /* Sources */, + 907AD26A9F98C723CE396A46535B55F5 /* Frameworks */, ); buildRules = ( ); @@ -3776,16 +3987,16 @@ ); name = Masonry; productName = Masonry; - productReference = 1FFED36A657123030ABB700256D73F15 /* libMasonry.a */; + productReference = 1FFED36A657123030ABB700256D73F15 /* Masonry */; productType = "com.apple.product-type.library.static"; }; 6083682834ABE0AE7BD1CBF06CADD036 /* CocoaAsyncSocket */ = { isa = PBXNativeTarget; - buildConfigurationList = BF535641E00BECC6FFAF53CFB25A8755 /* Build configuration list for PBXNativeTarget "CocoaAsyncSocket" */; + buildConfigurationList = 0F2BAEF2E3ADDA5146DDCC8F2393B86F /* Build configuration list for PBXNativeTarget "CocoaAsyncSocket" */; buildPhases = ( - 83268A4608982FCFF93FA48DCC883251 /* Headers */, - EE677DEB0818C5AF1142B26C6F07EB02 /* Sources */, - 20BA100C85EA53F9E47A90738553B93B /* Frameworks */, + 5A36D67269149DB0690D154235139AF0 /* Headers */, + 174D5444C7BAC21F0B00E203C7945149 /* Sources */, + 673381158C671B137FC040900C0A32A1 /* Frameworks */, ); buildRules = ( ); @@ -3793,35 +4004,16 @@ ); name = CocoaAsyncSocket; productName = CocoaAsyncSocket; - productReference = 6CBEFE4F9E22AFDC6347A739BB35FF8C /* libCocoaAsyncSocket.a */; - productType = "com.apple.product-type.library.static"; - }; - 66EF777DAC384165A40F94DC7D0BD98F /* SJUIKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6E035B39544C371B655EC3DEAF992DD0 /* Build configuration list for PBXNativeTarget "SJUIKit" */; - buildPhases = ( - B0D5008CDA9911D64DD1576392C0DFB8 /* Headers */, - D4BDC6F62C6E4D9418DB8C635C5F1E81 /* Sources */, - E4496309602E9E22F01F6BA22947923F /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 4CD02B4EB3845DDC48B9461E030C1F4C /* PBXTargetDependency */, - 3C1E6348A234B950F99E1153D77A4AF5 /* PBXTargetDependency */, - ); - name = SJUIKit; - productName = SJUIKit; - productReference = 21B36C58B63F486BEB91CAFE492C84F8 /* libSJUIKit.a */; + productReference = 6CBEFE4F9E22AFDC6347A739BB35FF8C /* CocoaAsyncSocket */; productType = "com.apple.product-type.library.static"; }; 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */ = { isa = PBXNativeTarget; - buildConfigurationList = 15915D6B8D199A332EDA4D30549F0314 /* Build configuration list for PBXNativeTarget "MJRefresh" */; + buildConfigurationList = CA74A47F51589DA3D82B13A6A47D7EAD /* Build configuration list for PBXNativeTarget "MJRefresh" */; buildPhases = ( - B9F7BD7F57D33DA728EED00211641CFA /* Headers */, - 7989C46CD52F116C0C022C855B301E59 /* Sources */, - 18F0271DA345E515743FE35104BEE51F /* Frameworks */, + 5F1505CCB3E5D1E945B8C0109CE6C76D /* Headers */, + 58E2CD21A2A8594267BE54276B385FF5 /* Sources */, + 6D20830A6E0EFB626F742C8AC03AD5FB /* Frameworks */, ); buildRules = ( ); @@ -3829,35 +4021,35 @@ ); name = MJRefresh; productName = MJRefresh; - productReference = E49D6D248DD1CEE584E6776B9164A1B2 /* libMJRefresh.a */; + productReference = E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */; productType = "com.apple.product-type.library.static"; }; 76A445C38D13436849B0EAD21F555034 /* SJBaseVideoPlayer */ = { isa = PBXNativeTarget; - buildConfigurationList = 03BD6C09CDDF8C0268B88A029D6DB71A /* Build configuration list for PBXNativeTarget "SJBaseVideoPlayer" */; + buildConfigurationList = 1F9702CCE47385B076E06920BCE61A73 /* Build configuration list for PBXNativeTarget "SJBaseVideoPlayer" */; buildPhases = ( - 73B6C8507A3DA642A03AD09179CE331A /* Headers */, - D7C01E79FFF5FEA77268E2AD95C5627B /* Sources */, - C62A020D66CBE2B9D0241FED32FDFC96 /* Frameworks */, + FC8CBC05995B7EF6746330395DC69D7F /* Headers */, + CC644876F02D5088A140BDCEF45B3CEB /* Sources */, + 98A204F06CCA0E2F4F4B1EF9B967DB74 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 8E874C7E095B1E39088BEFDA171C3078 /* PBXTargetDependency */, - 8C136015253CD15799A9371E155A1A19 /* PBXTargetDependency */, + 2B58D7AE47C27C6C5DA4A7508590D263 /* PBXTargetDependency */, + CB2A39E8594396D0A6D21BB4D48EC043 /* PBXTargetDependency */, ); name = SJBaseVideoPlayer; productName = SJBaseVideoPlayer; - productReference = 51AF23CB92C8BB88C0B20DB5A47901DE /* libSJBaseVideoPlayer.a */; + productReference = 51AF23CB92C8BB88C0B20DB5A47901DE /* SJBaseVideoPlayer */; productType = "com.apple.product-type.library.static"; }; 84B44807A12996D487A4A591A481D6A0 /* YYModel */ = { isa = PBXNativeTarget; - buildConfigurationList = 22D40617EE75484D922E0060D8FB4D65 /* Build configuration list for PBXNativeTarget "YYModel" */; + buildConfigurationList = 470B0CD0B9AFCC1414069AEA5009D857 /* Build configuration list for PBXNativeTarget "YYModel" */; buildPhases = ( - 09992AEAF0DA1A107439E5104473B1A6 /* Headers */, - DBF1AB054265E6B4A99FFD62CE3139F0 /* Sources */, - EC236EA8D08DC313BB67E90EB9CEBC3F /* Frameworks */, + F7131D63C1ABDB0A1074FF2757F366CC /* Headers */, + 29E1B03DD8E8D090E98D9D2532D424A8 /* Sources */, + 619F33D8CCF0297D87B448201086AEA3 /* Frameworks */, ); buildRules = ( ); @@ -3865,64 +4057,64 @@ ); name = YYModel; productName = YYModel; - productReference = E460D5B0416D36F66EE8EC89E5D2FA0A /* libYYModel.a */; + productReference = E460D5B0416D36F66EE8EC89E5D2FA0A /* YYModel */; productType = "com.apple.product-type.library.static"; }; 9A9B347029007D05E4CC442439A61C51 /* Pods-SJVideoPlayer_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 7C7D10C02B57C20C1D6F0C28407E6FCF /* Build configuration list for PBXNativeTarget "Pods-SJVideoPlayer_Example" */; + buildConfigurationList = CC4F22F54D70F8C2C17C28CDBC0FA9F6 /* Build configuration list for PBXNativeTarget "Pods-SJVideoPlayer_Example" */; buildPhases = ( - ED37A4DFBF68A9EB4E47936214EC75A0 /* Headers */, - 04667D5041B3F21DB519C87072FC1577 /* Sources */, - FB8BD63157B68EC0704279D5D8C5CDC7 /* Frameworks */, + B86AEAF486F8A6DF1ED0F873376BA425 /* Headers */, + 7965508190B7DCB2F662A2A69D124711 /* Sources */, + C2427ED8FB59921C3F0F4FF5B4BFDAA4 /* Frameworks */, ); buildRules = ( ); dependencies = ( - E9AE91E98AB0E9392859CA44C509B870 /* PBXTargetDependency */, - E77B944437B0557B2F6C5524E7B5440E /* PBXTargetDependency */, - 29A6E48EC7BA37F5EB4B97B179090C2D /* PBXTargetDependency */, - 617A2FAE4985E732B973C7C4E250012D /* PBXTargetDependency */, - 893CEA883375175A20A22EBA6808D8E2 /* PBXTargetDependency */, - 39CDF33D628ECC3A28BFDAB1C3BFFC96 /* PBXTargetDependency */, - A63CC3ADBB0FD4DDBA3CF59A91AF9FA3 /* PBXTargetDependency */, - 580683A87330E4A7A8B7405BD5A24E09 /* PBXTargetDependency */, - 5EE770FE4E808656A5502D4C52E1EF77 /* PBXTargetDependency */, - EFBBF519C6685365D6148D8D1843CE71 /* PBXTargetDependency */, - E498AA0EFE70F2E43FC7630C517A565D /* PBXTargetDependency */, + 44D4CC7A22542E390CB475357CCCEE54 /* PBXTargetDependency */, + 3B8C3F6373099CCB1E832E714FDC18E2 /* PBXTargetDependency */, + 9E0A7D3E60BB8668FF66ABA17808E936 /* PBXTargetDependency */, + 05780190F6F2C6D53D1E52595F163F90 /* PBXTargetDependency */, + 65E833C0A0791FB6A17AC0AE60ED2B4E /* PBXTargetDependency */, + 579ED66FCB437D450C65BC720AEE5929 /* PBXTargetDependency */, + 046EC57B530F54D945FFD0A360F89518 /* PBXTargetDependency */, + 31A1AFC635106B7F930A417893AD6168 /* PBXTargetDependency */, + C9F1A45E390ECA2BDA52D7B69F1ABDF8 /* PBXTargetDependency */, + 32B782BC1E16454A97A6457519B0B532 /* PBXTargetDependency */, + 2F37C95F793947EAAAF9012E0C39B354 /* PBXTargetDependency */, ); name = "Pods-SJVideoPlayer_Example"; productName = "Pods-SJVideoPlayer_Example"; - productReference = 652C00F28A20500864AE33EB8E1FBCA8 /* libPods-SJVideoPlayer_Example.a */; + productReference = 652C00F28A20500864AE33EB8E1FBCA8 /* Pods-SJVideoPlayer_Example */; productType = "com.apple.product-type.library.static"; }; 9D30A64C17E5B9AF4D9239A2C2A7630F /* SJVideoPlayer */ = { isa = PBXNativeTarget; - buildConfigurationList = 73EBF9ACCAC16FA97A3BC5BA8A123D31 /* Build configuration list for PBXNativeTarget "SJVideoPlayer" */; + buildConfigurationList = 559E8FD749493F7FA264B4224CCEE2BC /* Build configuration list for PBXNativeTarget "SJVideoPlayer" */; buildPhases = ( - 1D563588AF4A4F9FDCBAE4DE7FD83396 /* Headers */, - CFC5B708500C4F263E3F64832F5ABAEA /* Sources */, - 56E7B9E4E4F38DBBF44B252348D19D46 /* Frameworks */, + C2798F6AAC77FA04BCC5ECD98891CA2F /* Headers */, + 76189DBA63BEEB029829641C1835A104 /* Sources */, + 98FE6D0256E7C7D9549BE17F6BEA1806 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 736EFE30E0D69F5E0474B59D562DE729 /* PBXTargetDependency */, - D78F3C59D22EFD451EC77FC5A0BB98BB /* PBXTargetDependency */, - C711F018D7DF433BD14EC691EB36B7C7 /* PBXTargetDependency */, + A470E971BB40C0E3802FC4DBD7FA7523 /* PBXTargetDependency */, + FF37278EC57D54726F2B94881EBDADB6 /* PBXTargetDependency */, + 9213D26CE4830AB57E176C208EC06777 /* PBXTargetDependency */, ); name = SJVideoPlayer; productName = SJVideoPlayer; - productReference = 8D1EE56EBEDDF86D4EBA1BCB57070AA9 /* libSJVideoPlayer.a */; + productReference = 8D1EE56EBEDDF86D4EBA1BCB57070AA9 /* SJVideoPlayer */; productType = "com.apple.product-type.library.static"; }; A19FC1B5D5F291312B4944B9B7DBF0A0 /* SJFullscreenPopGesture */ = { isa = PBXNativeTarget; - buildConfigurationList = 597B33B96FF70AA2E10BFE9A5E3A5D30 /* Build configuration list for PBXNativeTarget "SJFullscreenPopGesture" */; + buildConfigurationList = C412188669F87C272B43503B1711DC78 /* Build configuration list for PBXNativeTarget "SJFullscreenPopGesture" */; buildPhases = ( - 9D5CD09EB11EBEA16426B1EEC4E0D1F9 /* Headers */, - 9DDC70FC35DD8C48F41BC4A3086AF26A /* Sources */, - A49283F52929A1601817100F489E96BB /* Frameworks */, + B512B9EE180ED01757DF8CC84EDA24A6 /* Headers */, + C563D74BD84E3174F227EDEF766C282E /* Sources */, + 71D45F4860422CCD9B75034E377514CA /* Frameworks */, ); buildRules = ( ); @@ -3930,16 +4122,34 @@ ); name = SJFullscreenPopGesture; productName = SJFullscreenPopGesture; - productReference = 5842ACB28A7891860A033AC3B8EDAA83 /* libSJFullscreenPopGesture.a */; + productReference = 5842ACB28A7891860A033AC3B8EDAA83 /* SJFullscreenPopGesture */; + productType = "com.apple.product-type.library.static"; + }; + A2E0E2D60BE654B306C0ECB654A8212F /* SJUIKit-68d28646 */ = { + isa = PBXNativeTarget; + buildConfigurationList = F43F9E72496E45893FB1A043A556D231 /* Build configuration list for PBXNativeTarget "SJUIKit-68d28646" */; + buildPhases = ( + 6B8C4B3690B6F70ABE9D5F1E036DCD10 /* Headers */, + 34535AB1EE0294B2F58D8B818D03DCDC /* Sources */, + 7C0B9638AB10CB894102E128744ECE43 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + F0642287F0A64ADC83C72562EB7ED63F /* PBXTargetDependency */, + ); + name = "SJUIKit-68d28646"; + productName = "SJUIKit-68d28646"; + productReference = F14EC65F8CB3145E2587F51546C6DFF5 /* SJUIKit-68d28646 */; productType = "com.apple.product-type.library.static"; }; AC7ED7554C07C41E51C8BD5248179FED /* SJRouter */ = { isa = PBXNativeTarget; - buildConfigurationList = 8745B97255049322863DC2AF504413D7 /* Build configuration list for PBXNativeTarget "SJRouter" */; + buildConfigurationList = CE572A8F0378A4CC2B650CDFA8B9C988 /* Build configuration list for PBXNativeTarget "SJRouter" */; buildPhases = ( - 85C4DF0D575E6B7C80004E61A6F032A5 /* Headers */, - 22DF7037E13236EFBE7B16843F3E55C7 /* Sources */, - 466FED6AF471C7276453E97E43B0A5C6 /* Frameworks */, + 6803C2E09D7AA18C23EDDCEB6B0DAA4A /* Headers */, + D65F78C6172859B5CC2CF8AD667E4D83 /* Sources */, + BC340F4F2A10F7DEEAD23F6916979D15 /* Frameworks */, ); buildRules = ( ); @@ -3947,7 +4157,49 @@ ); name = SJRouter; productName = SJRouter; - productReference = D444CDB611C89A31497695905D2BA023 /* libSJRouter.a */; + productReference = D444CDB611C89A31497695905D2BA023 /* SJRouter */; + productType = "com.apple.product-type.library.static"; + }; + E95BFD3FC545F9A50EDF5DE6F8304C68 /* Pods-iPadDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2C47C81EE2772557D9F502FA51A56641 /* Build configuration list for PBXNativeTarget "Pods-iPadDemo" */; + buildPhases = ( + 347B7E0C7F50F9F879BA7D32615B0A62 /* Headers */, + 16ABF756E08AEB9E5E29A1F15DA0E84C /* Sources */, + BB257CFA996C53A8AECB3416C1ECA7A4 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + D5FD511841539ECD0ACDDAEFC1285EEF /* PBXTargetDependency */, + E35F8F9D446E2405778609F7F9B2DC2A /* PBXTargetDependency */, + 87A6B62B5C125836410314BBBFF896DD /* PBXTargetDependency */, + 252721CDBDC68D86F844AEF052AC2539 /* PBXTargetDependency */, + AE00140E7AFED69B7D940F9A47967894 /* PBXTargetDependency */, + BC89A9C65C474EF7251D168BE35B2957 /* PBXTargetDependency */, + ); + name = "Pods-iPadDemo"; + productName = "Pods-iPadDemo"; + productReference = 3BA75F6111352F2EF77F4DB1521E8B67 /* Pods-iPadDemo */; + productType = "com.apple.product-type.library.static"; + }; + EF627DF8F333CD0DEF8046D659DC9477 /* SJUIKit-98d45660 */ = { + isa = PBXNativeTarget; + buildConfigurationList = A13108A80EFF573D65246A96A37FDA24 /* Build configuration list for PBXNativeTarget "SJUIKit-98d45660" */; + buildPhases = ( + B7A6E564BB2EE937B3C4891D6B0B0B4F /* Headers */, + 75B40B7C32BDA548C8DE51EE4D457F2D /* Sources */, + C55A141440B57F9D0644AAEFF58FC7CE /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + DCF7EDAF9CF32F2BF9F9066A9E1F27AA /* PBXTargetDependency */, + 650C41DC20CE589B45C39D3B50A9C2A5 /* PBXTargetDependency */, + ); + name = "SJUIKit-98d45660"; + productName = "SJUIKit-98d45660"; + productReference = CB18C8ACCF5E92C528AE5CF228B6BE98 /* SJUIKit-98d45660 */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -3956,32 +4208,34 @@ BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1100; - LastUpgradeCheck = 1100; + LastSwiftUpdateCheck = 1240; + LastUpgradeCheck = 1240; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( - en, Base, + en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 4E48B97E866B02A603EEDA1CC5D46444 /* Products */; + productRefGroup = 621140FC14E4FFC0DCC3337783D5CB65 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 6083682834ABE0AE7BD1CBF06CADD036 /* CocoaAsyncSocket */, 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */, 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */, + E95BFD3FC545F9A50EDF5DE6F8304C68 /* Pods-iPadDemo */, 9A9B347029007D05E4CC442439A61C51 /* Pods-SJVideoPlayer_Example */, 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */, 76A445C38D13436849B0EAD21F555034 /* SJBaseVideoPlayer */, A19FC1B5D5F291312B4944B9B7DBF0A0 /* SJFullscreenPopGesture */, 53EA424E9D34B39228682599B5DABD60 /* SJMediaCacheServer */, AC7ED7554C07C41E51C8BD5248179FED /* SJRouter */, - 66EF777DAC384165A40F94DC7D0BD98F /* SJUIKit */, + A2E0E2D60BE654B306C0ECB654A8212F /* SJUIKit-68d28646 */, + EF627DF8F333CD0DEF8046D659DC9477 /* SJUIKit-98d45660 */, 9D30A64C17E5B9AF4D9239A2C2A7630F /* SJVideoPlayer */, 84B44807A12996D487A4A591A481D6A0 /* YYModel */, ); @@ -3989,627 +4243,718 @@ /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 03D7E07BDB85EF20B683BD1CD95C9197 /* Sources */ = { + 16ABF756E08AEB9E5E29A1F15DA0E84C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F8BB40D5799C255C713B618EADD61D52 /* Pods-iPadDemo-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 174D5444C7BAC21F0B00E203C7945149 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13E831D83D8FF9EB78DCB5AED2BDFC73 /* CocoaAsyncSocket-dummy.m in Sources */, + F4A6CE2EB5809C8EE32590DA9E6C8D0C /* GCDAsyncSocket.m in Sources */, + 0A391C877E77B7F4392C18CB35FB2CBA /* GCDAsyncUdpSocket.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 29E1B03DD8E8D090E98D9D2532D424A8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9B369AAD43832AEDBBDA8A0DF0856B4C /* MASCompositeConstraint.m in Sources */, - D783A8A5A426DBF85162B92142651218 /* MASConstraint.m in Sources */, - 181B2691FF506F26F7F71F711C724B81 /* MASConstraintMaker.m in Sources */, - 68734B2FD4E55F9A95D5B416C075074A /* MASLayoutConstraint.m in Sources */, - 3430321D06CBCF49F5A7DF6A70D9BB91 /* Masonry-dummy.m in Sources */, - 2E5F3B41BD51ACE4EE3B422BB67E51DF /* MASViewAttribute.m in Sources */, - 31064475EC704EC31BC3E2DE0DAFC72C /* MASViewConstraint.m in Sources */, - 20E2F8001CC8A41A0E1B50694BE7875D /* NSArray+MASAdditions.m in Sources */, - 44A3B1A5D2C513F8FD238E3B64E4C6CF /* NSLayoutConstraint+MASDebugAdditions.m in Sources */, - 390E8375B19FF12764C5AA730AF0F0F4 /* View+MASAdditions.m in Sources */, - 5C5C77BBF83B793B82713296519751DA /* ViewController+MASAdditions.m in Sources */, + 7DAF7077BA63B723598804488ED7F7D1 /* NSObject+YYModel.m in Sources */, + 42BBED73FD96CF9F4AABD035A73F914A /* YYClassInfo.m in Sources */, + B280488BC44DCB29807F0F575D17DCE4 /* YYModel-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 04667D5041B3F21DB519C87072FC1577 /* Sources */ = { + 34535AB1EE0294B2F58D8B818D03DCDC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 25C27B72081CB459F8EEADEC99BB1294 /* Pods-SJVideoPlayer_Example-dummy.m in Sources */, + 5C684FE98DA648E4BD4E3ADFBEBF6206 /* NSAttributedString+SJMake.m in Sources */, + CA7F97BAF79AB107467907A865A0B949 /* NSObject+SJObserverHelper.m in Sources */, + 258D48CFF7A1A5CE7471F48049BBC6BA /* SJAttributesRecorder.m in Sources */, + B6DEEA0B5F85A365AF31D26E99C924DD /* SJAttributeWorker.m in Sources */, + 5EF7F85C2248D4A2A0B0666D83C782B9 /* SJPresentationQueue.m in Sources */, + 4C83459AC78CCB3CD20D0D24D14A1746 /* SJQueue.m in Sources */, + 8AE42BB51CCB9F82D1C37EFAAC4F4146 /* SJRunLoopTaskQueue.m in Sources */, + CFA9CFDF5BA5BA47653DF577EF23A6E2 /* SJSQLite3.m in Sources */, + B6C9569F430EB10DB619EDCCAE19AB59 /* SJSQLite3+FoundationExtended.m in Sources */, + EBF64AB9977847F4A12C111E867A708A /* SJSQLite3+QueryExtended.m in Sources */, + 10901C40C984A885A20CFFAFAB6CAD70 /* SJSQLite3+RemoveExtended.m in Sources */, + AEBC200DBD0527C805EA6A9419F96D56 /* SJSQLite3+TableExtended.m in Sources */, + A7EA9E77F7CE178FDADA36794817133A /* SJSQLite3ColumnOrder.m in Sources */, + 1F2B7DE56D1E969238C6E47D2507009E /* SJSQLite3Condition.m in Sources */, + 7BFA37F060EC5393FD5B7670CCA47D65 /* SJSQLite3Logger.m in Sources */, + 80C902CE405FAF1C1501C275D3A48A28 /* SJSQLite3TableClassCache.m in Sources */, + 492AB9A1674E3690881AD7A2ACA77673 /* SJSQLite3TableInfoCache.m in Sources */, + 8CF522FDAAE50EC57132C507B7604871 /* SJSQLiteColumnInfo.m in Sources */, + 1F4051DE131300FE3E6625FEDB913615 /* SJSQLiteCore.m in Sources */, + D8AC165795D5EBA6AEBD19063FFFF5B9 /* SJSQLiteErrors.m in Sources */, + A412E33A873A7002E35B27C98CBAE417 /* SJSQLiteObjectInfo.m in Sources */, + 0EDBB54C826D46C5A180BA3B90642C0D /* SJSQLiteTableInfo.m in Sources */, + CAB3E3EEA92F8D3DDD1BAB6408195B3E /* SJSQLiteTableModelConstraints.m in Sources */, + 64073288F98D908AB4E74A4266B1AAD0 /* SJTaskQueue.m in Sources */, + BCE703BC4846A398F437D215391FC79B /* SJUIKit-68d28646-dummy.m in Sources */, + 3B5590AC6B758A4E5B30CA39D7DF7608 /* SJUIKitTextMaker.m in Sources */, + 488E6E97065CCBE69C251BD7271FB4DC /* SJUTAttributes.m in Sources */, + 44F2D49FA9DD66F0ED330825ACCF9E08 /* SJUTRangeHandler.m in Sources */, + 95C738C249FE11091AB70D5303AFE46F /* SJUTRecorder.m in Sources */, + EA7BB095B0C9E1D151BCD55BBFA3D4E3 /* SJUTRegexHandler.m in Sources */, + 778838462DE7977EA481E15D5BA501CC /* SJUTUtils.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 22DF7037E13236EFBE7B16843F3E55C7 /* Sources */ = { + 58E2CD21A2A8594267BE54276B385FF5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8862233C31F6E4E898D1D33D5CD903CB /* SJRouteInterceptor.m in Sources */, - 5F861CE0A0D6AE20ED64761FC369E6E5 /* SJRouteObject.m in Sources */, - E2CE1800420C7443786792BE9B1D5336 /* SJRouter-dummy.m in Sources */, - 7C5FA84671FC70A34C0C1434B8A3DF17 /* SJRouter.m in Sources */, - D0CB72094A35B11B27C87715A33B2532 /* SJRouteRequest.m in Sources */, + 897AC76B0E444A158B807B8354E67D5F /* MJRefresh-dummy.m in Sources */, + 7BCE3E8DC12B3FD92C093BF45CCC7093 /* MJRefreshAutoFooter.m in Sources */, + C73DAC4869F3D5A25EBBC7F939B3A424 /* MJRefreshAutoGifFooter.m in Sources */, + 61027B85E6E97E8C6764C51EF72790FF /* MJRefreshAutoNormalFooter.m in Sources */, + D78F74B23CC869022B66EB840BA7426E /* MJRefreshAutoStateFooter.m in Sources */, + 189DF72956AC5644E850264F84BA2D15 /* MJRefreshBackFooter.m in Sources */, + BA89EFDEE9B8A6B571003CA05E73BF69 /* MJRefreshBackGifFooter.m in Sources */, + 36A952A9712DF7AE0FE6C369089409AE /* MJRefreshBackNormalFooter.m in Sources */, + F5E158CAEBCA1677DD2C4EC27B57EF74 /* MJRefreshBackStateFooter.m in Sources */, + CDED785169CC8E01F31127CBC4CF2EDF /* MJRefreshComponent.m in Sources */, + 20C8C8CA7BC28CC1F94DF01391A10570 /* MJRefreshConfig.m in Sources */, + 9233F807F5A647B46D9E05F131BB478B /* MJRefreshConst.m in Sources */, + C3AE2A783139610D9BE4973D1FF20429 /* MJRefreshFooter.m in Sources */, + 511F20CBCB267F17C7E2F433339CA2B2 /* MJRefreshGifHeader.m in Sources */, + 9F9AF4CDD9745D4EE6A09591925167E2 /* MJRefreshHeader.m in Sources */, + 861B21F6B97DA1739372BA07CC824CD4 /* MJRefreshNormalHeader.m in Sources */, + 21124838EAFF7DCB4CC3942AA2A0AA46 /* MJRefreshStateHeader.m in Sources */, + 49E5002461815D50BAB87B11E73B574E /* NSBundle+MJRefresh.m in Sources */, + 2F97063CAA5BC32101A63E3D16F9BB5C /* UIScrollView+MJExtension.m in Sources */, + 02C4037C5816B4A25F33C46D80057FA2 /* UIScrollView+MJRefresh.m in Sources */, + 3C47DB4E1E8DE9AD17BDD2F087B2A2B5 /* UIView+MJExtension.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7989C46CD52F116C0C022C855B301E59 /* Sources */ = { + 75B40B7C32BDA548C8DE51EE4D457F2D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 92DE532935439B95296EA2902C1DD138 /* MJRefresh-dummy.m in Sources */, - 8192D9219478BF888D410C486F40C20C /* MJRefreshAutoFooter.m in Sources */, - A3ADF25DA8D9233EF146EC40D326351B /* MJRefreshAutoGifFooter.m in Sources */, - 6CA709D5E7EC9AA65892512265D83F10 /* MJRefreshAutoNormalFooter.m in Sources */, - 11132C66A4D174BD4D62BAD82D1C73F9 /* MJRefreshAutoStateFooter.m in Sources */, - DA42E42C3FE47B42401C73797A11827E /* MJRefreshBackFooter.m in Sources */, - 9ED5192E76CBC0A7362842C0768E5883 /* MJRefreshBackGifFooter.m in Sources */, - 7CF0CC397E6B3093CB4051B189E7A001 /* MJRefreshBackNormalFooter.m in Sources */, - 616C37AA929ECF35C4127245FCDA9ADF /* MJRefreshBackStateFooter.m in Sources */, - 3CC34DDC8DD23B65974D7BD8C4D87922 /* MJRefreshComponent.m in Sources */, - CA5158D662DA2A72BE64F7F1AA12E41C /* MJRefreshConfig.m in Sources */, - 03552D845550E0E914B08624DF33B3AC /* MJRefreshConst.m in Sources */, - 2EBF3535445644EAF525DB8990928271 /* MJRefreshFooter.m in Sources */, - 4C2D35EE6BA6CF4D76332D32E17DEA57 /* MJRefreshGifHeader.m in Sources */, - 30D0F2FAE04689071A28A91E04802A55 /* MJRefreshHeader.m in Sources */, - 520E3AE7CF626545A442A4FEE682DC0F /* MJRefreshNormalHeader.m in Sources */, - 94C4AAA8B2B7E787FB98CAED1423660F /* MJRefreshStateHeader.m in Sources */, - 22900476BA43DFAAE47C55A8C550DF2A /* NSBundle+MJRefresh.m in Sources */, - 379B97B036149D62ADA6ED0A1946AE17 /* UIScrollView+MJExtension.m in Sources */, - 26CFF9ED3D5203C44262E458AE687A0D /* UIScrollView+MJRefresh.m in Sources */, - 876A9AC0946D4D44504799427257AE1A /* UIView+MJExtension.m in Sources */, + 6FEAF8A58DA3E4F8C4C6EEB77DC8D712 /* NSAttributedString+SJMake.m in Sources */, + 435526864122F1BB8A684ED10220456B /* NSDate+SJAdded.m in Sources */, + CE1B4C13E27DF6855A9655CCB14C459B /* NSObject+SJAsyncLoad.m in Sources */, + 1A3ED44909DFC450A3BC6324D237D0CF /* NSObject+SJObserverHelper.m in Sources */, + 8003BE3C4F144E735558CDD2691463A4 /* SJAppearStateObserver.m in Sources */, + 49DC936A394CCABBF42CAF089B633679 /* SJApplicationInfo.m in Sources */, + 1CCF436F02DD6343ACD766879CE26FEB /* SJAsyncLoader.m in Sources */, + D150DB8BC8F090691D73903EC243945C /* SJAttributesRecorder.m in Sources */, + CB9113AAB48D3514FA3CECF557D956AB /* SJAttributeWorker.m in Sources */, + D357151C056CF9D8D578D00FE479E991 /* SJBaseCollectionReusableView.m in Sources */, + C1C54212C88997B1E359C128A3AFB5CF /* SJBaseCollectionViewCell.m in Sources */, + 1439BCEA94B67697D6E25679B7281FB9 /* SJBaseTableViewCell.m in Sources */, + A8DAD74A8D8BEE38A28D9BC533762203 /* SJBaseTableViewHeaderFooterView.m in Sources */, + 78C0B0DB43A7AAF1B486331429BCF6A4 /* SJBaseViewController.m in Sources */, + CFBD7413C90B8B962AE03E6B9EF46C4A /* SJCornerMask.m in Sources */, + BBA5DFECD18DE66D21F135EBFA07799E /* SJImagePickerController.m in Sources */, + 133370488D0C8D0118C766616E0C81AE /* SJMakeView.m in Sources */, + 0653FFEB27C2C7B6499B639178978F73 /* SJObjectContainer.m in Sources */, + 814FB7E01D2C82AF63220D0D509BFF97 /* SJPageCollectionView.m in Sources */, + F99186CC4948F3A22F5F0554A674F22B /* SJPageMenuBar.m in Sources */, + DD2070B577B662F62192639368718FB9 /* SJPageMenuBarScrollIndicator.m in Sources */, + DDAD92BEDB049587EF0EDFBC4FF41885 /* SJPageMenuItemView.m in Sources */, + D8ADEB482D015FDDFD47040D8BD6E9B1 /* SJPageViewController.m in Sources */, + 8424EF687BA103BDEDE01D19166F8AA4 /* SJPageViewControllerItemCell.m in Sources */, + D441EDBE0D6B607DA3189DE81F47FAD6 /* SJPlaybackListController.m in Sources */, + 621C806D0AD52F778EE4EAA2F6BF5778 /* SJPresentationQueue.m in Sources */, + E6C5FB550ADD18C6668DE28ACE2AED47 /* SJQueue.m in Sources */, + D71DB4FE03EC36A3A29701F680241749 /* SJResidentThread.m in Sources */, + 766147950D6C80DE8FD54BB81A6BA273 /* SJRunLoopTaskQueue.m in Sources */, + 2D37C5B69AC0A3848D4AE9F0B76DA544 /* SJSQLite3.m in Sources */, + 5471E4447E8CB1D852453A0282B31AA2 /* SJSQLite3+FoundationExtended.m in Sources */, + 39A07109EE09B0AC60EC8B4584B6AF73 /* SJSQLite3+QueryExtended.m in Sources */, + 4F4AAEA62602C95751488A4D2D73D25F /* SJSQLite3+RemoveExtended.m in Sources */, + EAEE9B8D66590573551907879907B8E6 /* SJSQLite3+TableExtended.m in Sources */, + 30C8CADFA8FD3234678BEFB1E34BEAEE /* SJSQLite3ColumnOrder.m in Sources */, + E8B08CB730E25D0A9AA373C92D7C6D2A /* SJSQLite3Condition.m in Sources */, + 1C9429365CB0A88F7D9A1C3245FAB422 /* SJSQLite3Logger.m in Sources */, + 5FC8F80BED07DE65B60D5E0E43B4778E /* SJSQLite3TableClassCache.m in Sources */, + DC391B3149148E80D13780F3EAEB03C8 /* SJSQLite3TableInfoCache.m in Sources */, + C09F2CF864594CABFC3FD316381C49D6 /* SJSQLiteColumnInfo.m in Sources */, + E7E9E166CC45F308EC81F38FA45F30EF /* SJSQLiteCore.m in Sources */, + 748423641F46A8AB80BE0BDF4D399672 /* SJSQLiteErrors.m in Sources */, + 2D18151082456D7AD3BDF8FC163413E0 /* SJSQLiteObjectInfo.m in Sources */, + 2D7C1B5C7150027F4EABF20A3BAB5AED /* SJSQLiteTableInfo.m in Sources */, + 1FAB7B4DB5DD8E0E9F163B2D15A07A21 /* SJSQLiteTableModelConstraints.m in Sources */, + 3CCF700D44C5B521BE141D5D645FAF7A /* SJStatusBarManager.m in Sources */, + CB49F0209454EF0CC5E76DE13DBBF85E /* SJTaskQueue.m in Sources */, + BED9DFF9B6CF729BDB8913FE50780C4C /* SJUIKit-98d45660-dummy.m in Sources */, + 0FE1DE2216F71D07BCD49AEC6BF1B458 /* SJUIKitTextMaker.m in Sources */, + E1744972C2CFEE6189494D25796D0FAC /* SJUIMaker.m in Sources */, + 3DCAD351ECFD7B0C6E0EC80A47001549 /* SJUTAttributes.m in Sources */, + E67C154CA9A9160185441E07CB111D65 /* SJUTRangeHandler.m in Sources */, + EA92989B416530D80B57FE4E1CCCC826 /* SJUTRecorder.m in Sources */, + D60A001C956846227C2A3A6845835D43 /* SJUTRegexHandler.m in Sources */, + 3279E7189FC4143DDA8326B1DC4A98A1 /* SJUTUtils.m in Sources */, + F4424AE287A4B6246579AE9C4D6A4210 /* UIButton+AsyncLoadImage.m in Sources */, + FEE376DAD73EC0A4B40E754325CB8F23 /* UIColor+SJPageMenuBarExtended.m in Sources */, + 592C0587FF1A919281C1117DB791EDD8 /* UIImagePickerController+SJUIKitExtension.m in Sources */, + A71B1EA83E0E11F7BADBBB57D1772318 /* UIImageView+AsyncLoadImage.m in Sources */, + D9F4BA55BAD18943BE90938DDC8968A7 /* UILabel+AsyncLoad.m in Sources */, + FFE28DD7D6ED9BBF3E2ADC5A909C5C52 /* UIScrollView+SJPageViewControllerExtended.m in Sources */, + F3807277B5C1F6C4C004A0A0C89A0536 /* UIScrollView+SJRefreshAdd.m in Sources */, + 8DF1D1728882D771CC68BDBF04845F7A /* UISearchBar+AsyncLoad.m in Sources */, + 5FFA099E4EF8771BFE2AF91485053BA9 /* UITextField+AsyncLoadImage.m in Sources */, + 956F2594FB3F9C2EE8779331B621BB25 /* UIViewController+SJPageViewControllerExtended.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 811E255F9DA765E3FED6313B480D487A /* Sources */ = { + 76189DBA63BEEB029829641C1835A104 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B284E952224927D138B8A67AABA0A312 /* NSBezierPath+SDRoundedCorners.m in Sources */, - 293B9392E2E0687D5CD3A77E69A5095A /* NSButton+WebCache.m in Sources */, - 084F36480B7CF5E32993077A0B5A31F4 /* NSData+ImageContentType.m in Sources */, - B57742214BEE9AEBEBAD8AEA7EFCDB0D /* NSImage+Compatibility.m in Sources */, - 128CB82581C01598C1E2F282C3EF6E6E /* SDAnimatedImage.m in Sources */, - 03A3C427BCEAEB0168C5B1DA5B9A0B86 /* SDAnimatedImagePlayer.m in Sources */, - FCC25A540DF0CA820C1CCC7FFBE456FD /* SDAnimatedImageRep.m in Sources */, - 8E647828E4C169D55AAC86DB40DFF31C /* SDAnimatedImageView+WebCache.m in Sources */, - DA1748D1A95CFB09630C1B1318088350 /* SDAnimatedImageView.m in Sources */, - 6B27BE8C3E5E28F3B309307E87B99329 /* SDAssociatedObject.m in Sources */, - 2184532A10E7502EA915D91369DFAC3C /* SDAsyncBlockOperation.m in Sources */, - 4EDBB4AAEEF26534BCF67340B60B9DC8 /* SDDeviceHelper.m in Sources */, - 2700A36B8534C45316DAB554E8498A28 /* SDDiskCache.m in Sources */, - 4E2E631DAE70D9ADC5E05F1747055785 /* SDDisplayLink.m in Sources */, - 608320766ED3066F8080E29D8BE0E1C6 /* SDFileAttributeHelper.m in Sources */, - 3DA9427AF38AE205761D1D5222EB91C0 /* SDGraphicsImageRenderer.m in Sources */, - 787AE202E71EF711783ABDEAA6D52204 /* SDImageAPNGCoder.m in Sources */, - F026D9C39DB59AD0F3F7F6F6371A22B7 /* SDImageAssetManager.m in Sources */, - 55371E0911F21A2F708C6A746DE8C708 /* SDImageAWebPCoder.m in Sources */, - 09BB6FF47D5A11F537E308ED12029DF8 /* SDImageCache.m in Sources */, - DAB56CA3BF77D40CED6C19224D5E1794 /* SDImageCacheConfig.m in Sources */, - EA53B89AAC16CE584E6F5DD11D500FC8 /* SDImageCacheDefine.m in Sources */, - C30CC261B75B92063A8E43BF9F019C47 /* SDImageCachesManager.m in Sources */, - B92DB014092D3F8C4C168D2408447080 /* SDImageCachesManagerOperation.m in Sources */, - 1E06190F195923FEB645A405D6DC1BCF /* SDImageCoder.m in Sources */, - 1A296D9023756DF9DF7E2977BE422FB2 /* SDImageCoderHelper.m in Sources */, - 335B7A12B7EC0BD569580A3DE383D24D /* SDImageCodersManager.m in Sources */, - 3A9FAA5BD20B70FCB5966FD24C6152F4 /* SDImageFrame.m in Sources */, - F3C1F7F0CB3B466A65876F39EBDBFC65 /* SDImageGIFCoder.m in Sources */, - 5CB41A59A4D3FA5BC111747983E0AE46 /* SDImageGraphics.m in Sources */, - F6541A2BAA913272621A7CB6C823B035 /* SDImageHEICCoder.m in Sources */, - EDCD926B479A4DD0BCFFFA5B36BE2460 /* SDImageIOAnimatedCoder.m in Sources */, - 8AE193AD518D868F8A380BFBA29EE940 /* SDImageIOCoder.m in Sources */, - 345E2C203E2D12E7E3546F2E8344A79B /* SDImageLoader.m in Sources */, - 8CB39B392ABF658314F209F7EC25352E /* SDImageLoadersManager.m in Sources */, - 92E4B15C6FF94A4FAA4A17621199703B /* SDImageTransformer.m in Sources */, - 2ECB81FC72C7BB5040F10C021225ADED /* SDInternalMacros.m in Sources */, - 80B7FBA8291E76D74A651249A0E211FC /* SDMemoryCache.m in Sources */, - 9881C8FF40D8F62F2B371FB262AA00FD /* SDWeakProxy.m in Sources */, - 53D5A906B201B5F4A53C894D88FF09FC /* SDWebImage-dummy.m in Sources */, - 3063231F3293E15061B3225DDE746FE6 /* SDWebImageCacheKeyFilter.m in Sources */, - D45D3AEB9410A3EFF7DC52DDE5435CA8 /* SDWebImageCacheSerializer.m in Sources */, - 6B990DFF59699A54E9F4ADACB4DF432D /* SDWebImageCompat.m in Sources */, - 511B2B2E911994B978C25D5FA3CD524B /* SDWebImageDefine.m in Sources */, - 0ADFB8408D908E0C8F0A263AF44E663B /* SDWebImageDownloader.m in Sources */, - 03ECE44E890B0E77E66141A886FF7384 /* SDWebImageDownloaderConfig.m in Sources */, - 3B202DB775F482F8C829FEBD7B83C154 /* SDWebImageDownloaderDecryptor.m in Sources */, - BD83DCDB2BACC262DC641340F62DBA95 /* SDWebImageDownloaderOperation.m in Sources */, - 1B7FDF02A13B654CBEDB846B2D82B85B /* SDWebImageDownloaderRequestModifier.m in Sources */, - DF091238315C2F3AE424E99745B03CB2 /* SDWebImageDownloaderResponseModifier.m in Sources */, - 6EC86A31DE9C7210CD8965CCE49A6342 /* SDWebImageError.m in Sources */, - CD2245532B231B39146928B82B664800 /* SDWebImageIndicator.m in Sources */, - DBB7C38541245840971728B2671146FF /* SDWebImageManager.m in Sources */, - 454308F281F806DEB35D19FAD2B02B9E /* SDWebImageOperation.m in Sources */, - E51D30B8AB319E61C437334D13FC859F /* SDWebImageOptionsProcessor.m in Sources */, - 6A22FA3944743E3967A46D599F7ACBA7 /* SDWebImagePrefetcher.m in Sources */, - F1AD535E49AC4E77FEA30208554EDB69 /* SDWebImageTransition.m in Sources */, - 3D2FEFBFF5B0E97FB3648C24FB791766 /* UIButton+WebCache.m in Sources */, - 29C5E1AF8AE16F1F32B96B212AC91C37 /* UIColor+SDHexString.m in Sources */, - B83B6A071701DB7EF8D4D65EFB9EEC1B /* UIImage+ExtendedCacheData.m in Sources */, - 2FEBC0F3A58CD98F759E592B3916FEF0 /* UIImage+ForceDecode.m in Sources */, - A00B584A73A9FF6D08B9CC8E6FD90AFB /* UIImage+GIF.m in Sources */, - B07B0193B545AD11E0A9971DCDB97EDB /* UIImage+MemoryCacheCost.m in Sources */, - 69C754CBBC23A9D99FF051A2C963CD59 /* UIImage+Metadata.m in Sources */, - E7165ACE4E69370B6C21B814BE564B38 /* UIImage+MultiFormat.m in Sources */, - 53F80EABDB1A385F25DFA6710C51B600 /* UIImage+Transform.m in Sources */, - A5C2E63BDEE0B253240BD476588A7841 /* UIImageView+HighlightedWebCache.m in Sources */, - 998389497E9FD2964EB1277B4831AFF8 /* UIImageView+WebCache.m in Sources */, - 14C549A762DA24F3F10E5722D8D40FFD /* UIView+WebCache.m in Sources */, - 24D5A665091087501AA9B1F6AD200331 /* UIView+WebCacheOperation.m in Sources */, + E4053586654152953D523730951835FE /* SJButtonProgressSlider.m in Sources */, + 49C4D2F08F6F387DB57D0CBFC65AFE8F /* SJClipsBackButton.m in Sources */, + 3A63A4B57EF20A48CE2B0761E30AE09F /* SJClipsButtonContainerView.m in Sources */, + 4807CFEAFDBF753681C9708D1C77D28A /* SJClipsCommonViewLayer.m in Sources */, + 2FC763EB8D4BA342FFABA348774866DC /* SJClipsControlLayer.m in Sources */, + EBBFA95924A8068E2F7F6167B7593523 /* SJClipsGIFCountDownView.m in Sources */, + 081A1D8194B95CDA73763B917BF3AB53 /* SJClipsGIFRecordsControlLayer.m in Sources */, + C96A5CF5E452EE7D0ABBB94A17F07445 /* SJClipsResultsControlLayer.m in Sources */, + A095B190E1EC78255A6F8CBB2CDCAF3B /* SJClipsResultShareItem.m in Sources */, + 3A1FE65E6D1D6A35588C2E624FDFF0CD /* SJClipsResultShareItemsContainerView.m in Sources */, + 030947B4956D9CA561838D39E556A706 /* SJClipsSaveResultToAlbumHandler.m in Sources */, + 17CDAACAC0481DB76090C960668333D2 /* SJClipsVideoCountDownView.m in Sources */, + 048C43E79D9C506D16BE9CCBEE0C436E /* SJClipsVideoRecordsControlLayer.m in Sources */, + 79E24BCD4A1BBA00EC0AEDE0AB34726A /* SJCommonProgressSlider.m in Sources */, + DBF7FE54C147D2448691E9C3AD23B035 /* SJControlLayerIdentifiers.m in Sources */, + D38E7294D4900FA3F0B986E21C7DF2C7 /* SJControlLayerSwitcher.m in Sources */, + E336A29135FEECA8B8A70E73EFC122B8 /* SJDraggingObservation.m in Sources */, + 3804449134522104A05DB6FC10FB65E5 /* SJDraggingProgressPopupView.m in Sources */, + 9CB28B6C71358B10743929E1F1C6E072 /* SJEdgeControlButtonItem.m in Sources */, + A51928AB65DBD8FF60E4FEB2B037E333 /* SJEdgeControlButtonItemAdapter.m in Sources */, + 3FBD31F48C9B5F05D7AC104F0DA430F4 /* SJEdgeControlButtonItemAdapterLayout.m in Sources */, + 3BE5A6979D239E6283A897310E8B08C2 /* SJEdgeControlButtonItemView.m in Sources */, + 7166B91FCF36E78A88484105D68017BE /* SJEdgeControlLayer.m in Sources */, + C64805664771D936166ED3D5E7E46F81 /* SJEdgeControlLayerAdapters.m in Sources */, + 926B19A866979180873167CE49041ED6 /* SJFloatSmallViewControlLayer.m in Sources */, + C41B0BCEF2A8D9F3BCB38F5C03AA9B17 /* SJFullscreenModeStatusBar.m in Sources */, + 2EA4E6D1679596466BDECF42C75A6524 /* SJItemTags.m in Sources */, + CA827DDCBFA3ED028ECBB5C825026779 /* SJLoadFailedControlLayer.m in Sources */, + 911F98D81855F38C6D88C669DD26FA43 /* SJLoadingView.m in Sources */, + C43937FA7A755A4A4BB581CA2319EB7F /* SJMoreSettingControlLayer.m in Sources */, + 23916A7DFFB177EAEF3B8AE526A85CD5 /* SJNotReachableControlLayer.m in Sources */, + 28D790D06066EA99A6E90612F6E36B3A /* SJProgressSlider.m in Sources */, + 81D2B58F45327142B530DCCA49DCDF09 /* SJScrollingTextMarqueeView.m in Sources */, + 3820295A6972931BC561F92649028C60 /* SJSpeedupPlaybackPopupView.m in Sources */, + 9A253B9744D384DEC04B9015CAC49591 /* SJSwitchVideoDefinitionControlLayer.m in Sources */, + BD02B10330B7E975A846077ED5679A1E /* SJVideoPlayer.m in Sources */, + 19D2008CC3FF69A84C38B1016013286D /* SJVideoPlayer-dummy.m in Sources */, + 058C2A72A36DFBC429508A29A9191D1D /* SJVideoPlayerClipsConfig.m in Sources */, + FBB26EE2842CD858D6C8AEA024523166 /* SJVideoPlayerClipsGeneratedResult.m in Sources */, + 00AA09185BD96F1D75E25407AA5F0088 /* SJVideoPlayerClipsParameters.m in Sources */, + 0405DBA5581C22FC780BEEDB54D5A4A1 /* SJVideoPlayerConfigurations.m in Sources */, + EF421A3598B8DD4ABD09E90CA27E326E /* SJVideoPlayerControlMaskView.m in Sources */, + EF9916C63A1783A49665D6B507330D72 /* SJVideoPlayerLocalizedStringKeys.m in Sources */, + 16224DE3C03394C62CC4E6B62BA28746 /* SJVideoPlayerResourceLoader.m in Sources */, + 90FE163D3306074ED3E3E3906DE97CC3 /* SJVideoPlayerURLAsset+SJControlAdd.m in Sources */, + 3FC5EB6084385D3B7EF104D21352DBD2 /* SJVideoPlayerURLAsset+SJExtendedDefinition.m in Sources */, + FEF48069488B15726282FBBF1D17334B /* UIView+SJAnimationAdded.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 96DE7817D95AF3428D655CCD33243B77 /* Sources */ = { + 7965508190B7DCB2F662A2A69D124711 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E6659B33B319145E9188EA26C65857FF /* DDData.m in Sources */, - 8873318816BA72F6741575101E22E55E /* DDNumber.m in Sources */, - 658D3801BC1342C6535AA3C6187E8160 /* DDRange.m in Sources */, - 62EEAC51E185BB64D0C1A2E94E281F06 /* FILEAsset.m in Sources */, - 05397DD7A9A180B049D580610B5C7693 /* FILEAssetContentProvider.m in Sources */, - 265DD4233B38D2C89CA5F9103922B1B9 /* FILEAssetReader.m in Sources */, - FC1A36D977D2480560D40B1B07948D03 /* FILEPrefetcher.m in Sources */, - 44D525F0D227346B2BE578C2BEEF8709 /* HLSAsset.m in Sources */, - 18FEFF349243CADA783D455C99E5CBEB /* HLSAssetContentProvider.m in Sources */, - 581861EB51E9D350E758698C11C2D52E /* HLSAssetContentReader.m in Sources */, - CCF9E5F812604379AC0E7B5ECB0BD074 /* HLSAssetParser.m in Sources */, - 87D646C0F9FA479D00CE3CF5AA5384B3 /* HLSAssetReader.m in Sources */, - FCC371F05D4976FC5D6EE74D060394D5 /* HLSAssetTsContent.m in Sources */, - BC79216D849466FE9283054E4F738905 /* HLSPrefetcher.m in Sources */, - 2C3F274445E40ED46C992479EFE835C0 /* HTTPAsyncFileResponse.m in Sources */, - 9D60507CF06646290DC6CBA270EF7598 /* HTTPAuthenticationRequest.m in Sources */, - 4726D6AC0432C8CCD3D0F4214F3E61B8 /* HTTPConnection.m in Sources */, - 59A93D98CFF71783838E5D3E7E13391B /* HTTPDataResponse.m in Sources */, - F8855361CF3800166E5E79C3FF0028D5 /* HTTPDynamicFileResponse.m in Sources */, - FD8DE4C408730B9D0E128762B2D71604 /* HTTPErrorResponse.m in Sources */, - FCA7B2D837121FD88A72634801DB2229 /* HTTPFileResponse.m in Sources */, - A567D4C7D2634677081216FA4FBF5A16 /* HTTPLogging.m in Sources */, - 5952CB617894CECACD8DD758F35DAD6B /* HTTPMessage.m in Sources */, - 0DE732D2F82A112849D9AB4D68A3BCBD /* HTTPRedirectResponse.m in Sources */, - 5B39472857719E62639FDA563195AAC9 /* HTTPServer.m in Sources */, - A968F77CCFAE0EC3A93F9299F9DDC6F3 /* MCSAssetCacheManager.m in Sources */, - 5C37A8E8778A0A2CFBB8710F79A85286 /* MCSAssetContent.m in Sources */, - E10B749E5FE7D0F954C25D4D5D56018A /* MCSAssetContentReader.m in Sources */, - F4ED99E5CF14B33CBCB0F6B6331835A6 /* MCSAssetExporterManager.m in Sources */, - 58D7D1FA4B8ED54DA4497F67808A1351 /* MCSAssetManager.m in Sources */, - 8077FEF10C33EC44FDD6F4C4556E93CC /* MCSAssetUsageLog.m in Sources */, - 643C123C69B4F119D8203D3298071D26 /* MCSConfiguration.m in Sources */, - CD2979DD0745F17BE1C20C24144492BF /* MCSConsts.m in Sources */, - 9CE7A55B676394F2DB1542325B9E50CE /* MCSContents.m in Sources */, - 3BAD4366F30D1AF1FF59F3DFEA60C13E /* MCSDatabase.m in Sources */, - 189FC0B56494FC7DDE10C1508378193E /* MCSDownload.m in Sources */, - 3018A1733FA71BABF400786940FE313F /* MCSError.m in Sources */, - 85917DC4ABE5374143AF063BB9118122 /* MCSLogger.m in Sources */, - E02A241EBD635CA721D353EAAE89C93D /* MCSPrefetcherManager.m in Sources */, - D622899990597B2009B5816FCFE59B72 /* MCSProxyServer.m in Sources */, - B5F0E1D7FEFC378F3D07EE5BE6BA0935 /* MCSProxyTask.m in Sources */, - 41003744249CBBD3210B4FB0374D0C1F /* MCSQueue.m in Sources */, - 1476A923C0D8DCBDD8FE19386ADF391C /* MCSReadwrite.m in Sources */, - 0A71419B043B2937F1AE0007EAA0DE97 /* MCSResponse.m in Sources */, - 187E7C528DA634E699E78A9A02578375 /* MCSRootDirectory.m in Sources */, - 25E7902DFB730C80D51FFE426A8DFC72 /* MCSURL.m in Sources */, - B3BFDCDCC28047D9B015A36150C5D628 /* MCSUtils.m in Sources */, - AE5394B4E63C884EE516CA46ED65F4C4 /* MultipartFormDataParser.m in Sources */, - 6D38B2B61EFEDB1B7E66B3646D80E570 /* MultipartMessageHeader.m in Sources */, - 15D7C95549672915C1899C3A678849EA /* MultipartMessageHeaderField.m in Sources */, - 048EC84EEA06B894183160095FDE5109 /* NSFileHandle+MCS.m in Sources */, - D1FD9377CD5E2FE72542C7F0F95F151F /* NSFileManager+MCS.m in Sources */, - 75FAB700FA4A25D608E7FD349EF812EB /* NSURLRequest+MCS.m in Sources */, - E4E471071381A247E2416383BE33D425 /* SJMediaCacheServer-dummy.m in Sources */, - B461DFEBF4A910501A24C7FD3C0003E0 /* SJMediaCacheServer.m in Sources */, - B4CC06F6A4188657E142C57064420D99 /* WebSocket.m in Sources */, + 09039EBA1D6AA655329EA5F40A43D078 /* Pods-SJVideoPlayer_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9DDC70FC35DD8C48F41BC4A3086AF26A /* Sources */ = { + 86404D4F33DCEEEA0B433F07BFEB7F89 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDE2D5A5538B2992253CE4BE98673976 /* SJFullscreenPopGesture-dummy.m in Sources */, - 12784159EDF62CA7CFE529452BA52061 /* SJFullscreenPopGesture.m in Sources */, + 9CBBFC93FB6A6188598B25F800FB14E9 /* DDData.m in Sources */, + 659D9BCE4AFC04E2B6B909CCB94DABD8 /* DDNumber.m in Sources */, + CF6251F4E983398AAD7F7AC22F87CC71 /* DDRange.m in Sources */, + 70F07F345936E588038107D3F7657AD5 /* FILEAsset.m in Sources */, + 16BBF15BF142E96B601A6F988B608D3D /* FILEAssetContentProvider.m in Sources */, + 131BB1EEAF30422751B9DABCBAE1CB19 /* FILEAssetReader.m in Sources */, + AA18F3FEB93F5D3794A57F9A0C88F2FE /* FILEPrefetcher.m in Sources */, + A2CC2F5F5EB3F98830482FA32260E6E7 /* HLSAsset.m in Sources */, + AA0DDE9E54B1042B7E74FE3CA3F395CC /* HLSAssetContentProvider.m in Sources */, + 1D9D3C37224BFFB0C241EC4384417DF5 /* HLSAssetContentReader.m in Sources */, + 7CED05012814D4B44B4DC7DB2BCED999 /* HLSAssetParser.m in Sources */, + 264D7AB9344E48E3423014322DA24844 /* HLSAssetReader.m in Sources */, + 358FA75BF14415A2A3F783F0FA07BBDF /* HLSAssetTsContent.m in Sources */, + 44CAB5740A04D84AC72379FE60A6F0F9 /* HLSPrefetcher.m in Sources */, + 02062C9F5DB3F00D0A7B2CC32D743908 /* HTTPAsyncFileResponse.m in Sources */, + 83F321258AFDB355593C188E33832F5C /* HTTPAuthenticationRequest.m in Sources */, + 2340B7CF4CC4D5CEAEDD873DCB055AE3 /* HTTPConnection.m in Sources */, + E4EBACBAAF120B0E295DF2FD01AD7194 /* HTTPDataResponse.m in Sources */, + 487CCF1EF4C84CE9DC608B4148ED0DBB /* HTTPDynamicFileResponse.m in Sources */, + BEF5FF204D42D6BC93025C1155C4D0BD /* HTTPErrorResponse.m in Sources */, + 6242D32137595AF2D24407C6EA909C77 /* HTTPFileResponse.m in Sources */, + BF7AF36D83760FB52BB031185C3BB0D0 /* HTTPLogging.m in Sources */, + 37CF2D7ABA3A6C27B3DDF43ABA28D417 /* HTTPMessage.m in Sources */, + D32BB2CA953F57B648D79EB9513E015D /* HTTPRedirectResponse.m in Sources */, + 19F739115ABDE2E216F335BD306448C2 /* HTTPServer.m in Sources */, + B1EF84AC0254F4880BA17092FDA47966 /* MCSAssetCacheManager.m in Sources */, + 1BE5481BFE0E92F418ACE3E4E01FEF93 /* MCSAssetContent.m in Sources */, + 2AD4F55B0221B054980F575F45CA450D /* MCSAssetContentReader.m in Sources */, + F335951C22E760B369D5DE1126F30FBB /* MCSAssetExporterManager.m in Sources */, + A996C45F8888CF679BC73A7D1E7CF3D1 /* MCSAssetManager.m in Sources */, + 63B22BCA7D724013C57CFB920ACC2CBF /* MCSAssetUsageLog.m in Sources */, + D1C67F80F656A05B621C4EBFB9BD0091 /* MCSConfiguration.m in Sources */, + 669531877F38BE78072B170D1F88E4AA /* MCSConsts.m in Sources */, + 6257BCE794AB73B68798102660DE703C /* MCSContents.m in Sources */, + A893327B94B19484DA26913ABE80E109 /* MCSDatabase.m in Sources */, + 6601BFFAEC51040EEB222A9561F02C94 /* MCSDownload.m in Sources */, + 77B97B159773A28147A8F846E85B3EB1 /* MCSError.m in Sources */, + 5B35D22F7C3E9EDC867738EA63239797 /* MCSLogger.m in Sources */, + 284FBBB0EEF3145B0916B84FB81D906A /* MCSPrefetcherManager.m in Sources */, + 45A807B12495392BC49EA04440D1C9D5 /* MCSProxyServer.m in Sources */, + 7B46E9BE3B31EE7837F514529B213D27 /* MCSProxyTask.m in Sources */, + E7DF2D8FAA40AD48410CE5BE1F6A68AF /* MCSQueue.m in Sources */, + 32B3D53A03DDA0E686AED861B2B73E82 /* MCSReadwrite.m in Sources */, + EF78CB5BF7C2C497315DC415C655C6A7 /* MCSResponse.m in Sources */, + A803DB854C994DDE2F8C0827F99D30B6 /* MCSRootDirectory.m in Sources */, + D07F721988E3C8E64FF769C5171A2714 /* MCSURL.m in Sources */, + DD71A2BECF361EC1D7E8BF7A5F98AE79 /* MCSUtils.m in Sources */, + 2EF0DCAAA486DD122AAB2DF65FA54FE6 /* MultipartFormDataParser.m in Sources */, + 45A3C37CD305E903213DC2A4D7EEFB84 /* MultipartMessageHeader.m in Sources */, + 6C0527E5F3C8ACCB8C1FDBBC9B7460A0 /* MultipartMessageHeaderField.m in Sources */, + E476CE5411BA3050B14B9392500F156C /* NSFileHandle+MCS.m in Sources */, + 76E3CE23E73CCE61AE17E84B0E56362C /* NSFileManager+MCS.m in Sources */, + 951173A90ABEAAFD2B1987F00C52B764 /* NSURLRequest+MCS.m in Sources */, + 4A8A7B6E07869DD598A25C3DC517306D /* SJMediaCacheServer.m in Sources */, + 67FD5B4579123135F2F7CBE01B52BF04 /* SJMediaCacheServer-dummy.m in Sources */, + 7CF97C6CE278BEB9F966FDA0FF940615 /* WebSocket.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - CFC5B708500C4F263E3F64832F5ABAEA /* Sources */ = { + 93767622ED566EBF3E8357E4435CB074 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4EA938016CFC7FB41C4E996CB870653E /* SJButtonProgressSlider.m in Sources */, - FF65A995815B27B85B6130DEA209B841 /* SJClipsBackButton.m in Sources */, - 65B8AF7B290815BAD3E5A0E300382BA1 /* SJClipsButtonContainerView.m in Sources */, - 7DF87BDC386372140CF6D2D0E9E55C38 /* SJClipsCommonViewLayer.m in Sources */, - B0F0BFA01114A38253F6D62EC0CFFAB5 /* SJClipsControlLayer.m in Sources */, - 0A9EA29A8B86EBADCED48E971B49E8E8 /* SJClipsGIFCountDownView.m in Sources */, - D9D46860FCA44158DC2633C99DCB6361 /* SJClipsGIFRecordsControlLayer.m in Sources */, - 4954558A9DC59E0EC7ED0446F288F492 /* SJClipsResultsControlLayer.m in Sources */, - 5672C566E61B5A2ED572F143D71B4399 /* SJClipsResultShareItem.m in Sources */, - 27481C08F70F2DB32935EE586754E43A /* SJClipsResultShareItemsContainerView.m in Sources */, - 498B9F0F7350DE7E1A2346F69939E416 /* SJClipsSaveResultToAlbumHandler.m in Sources */, - 71FA16426011D97ECAD37D60AE09899F /* SJClipsVideoCountDownView.m in Sources */, - 5D07357A2D03AED307AAA918099E2824 /* SJClipsVideoRecordsControlLayer.m in Sources */, - BEF1A6305297B7C7BA18254BF6C02DE0 /* SJCommonProgressSlider.m in Sources */, - BF86FA6ACC6BDFEC3B1DB01F39B26ABB /* SJControlLayerIdentifiers.m in Sources */, - 47EBA2DC63866F97931321F21F66B19F /* SJControlLayerSwitcher.m in Sources */, - 65D8EE6074D8DB61D68B0D342B5D46B9 /* SJDraggingObservation.m in Sources */, - 6B0ABF3AC523EE76C5C09379BB6DAAF8 /* SJDraggingProgressPopupView.m in Sources */, - A9B63AFB44FFD08122123F5A9A3E09A8 /* SJEdgeControlButtonItem.m in Sources */, - 67DCDA03A35A44165BA0FDF15E904DFA /* SJEdgeControlButtonItemAdapter.m in Sources */, - 4FC3021B4E753BC76A6250777B1C11D8 /* SJEdgeControlButtonItemAdapterLayout.m in Sources */, - 77D0B4900F9EBA8694450F8D47E8BCD6 /* SJEdgeControlButtonItemView.m in Sources */, - BBA857E46F0BA97BCB93FF4A9A19CE35 /* SJEdgeControlLayer.m in Sources */, - 0206AA9B8096F41E3066F2DE61992E30 /* SJEdgeControlLayerAdapters.m in Sources */, - FF9BB3332CFE9DF67CD71E40239ED598 /* SJFloatSmallViewControlLayer.m in Sources */, - 9B5EB326C9EB4A92B071789916255037 /* SJFullscreenModeStatusBar.m in Sources */, - CE2FA03FBF86FC1A16968772D91E43CF /* SJItemTags.m in Sources */, - 09B5CBEA8D0449BCC570F4470FB5C252 /* SJLoadFailedControlLayer.m in Sources */, - 1435130904E781B0C8BFB79A719FDE3B /* SJLoadingView.m in Sources */, - D4BE023EBEA183A0454CCD8DE70AA15B /* SJMoreSettingControlLayer.m in Sources */, - 62E4E2F77141D8838A37912E46329E1A /* SJNotReachableControlLayer.m in Sources */, - D57B99794CB5EE4AD35ADEBC6AE73422 /* SJProgressSlider.m in Sources */, - 02018AA4E1D4B37C5064828B6983661B /* SJScrollingTextMarqueeView.m in Sources */, - 9FC187AAAC8122D37FA47E2AB4A05A0B /* SJSpeedupPlaybackPopupView.m in Sources */, - A2322BFCE25295A0B25ED060C2C0863B /* SJSwitchVideoDefinitionControlLayer.m in Sources */, - FB3CA83767E075F24E193639316E7C97 /* SJVideoPlayer-dummy.m in Sources */, - 2D3F2E1463A243E0CF6B9CF58319AA09 /* SJVideoPlayer.m in Sources */, - 38FC6723C49AC10FF5CAF0243CE6A1CC /* SJVideoPlayerClipsConfig.m in Sources */, - DA191ED4B1C6F05972A83A4ABB4332A3 /* SJVideoPlayerClipsGeneratedResult.m in Sources */, - 68B6025BAF0F06DA5C6FBCFB102CFDC4 /* SJVideoPlayerClipsParameters.m in Sources */, - C387218C1A051131C34872AE04C7FD18 /* SJVideoPlayerConfigurations.m in Sources */, - 21F4321091720618E76FDA9511AD9BC9 /* SJVideoPlayerControlMaskView.m in Sources */, - D6C89FA0808DCE5AAFC6DB859957FCFA /* SJVideoPlayerLocalizedStringKeys.m in Sources */, - 8AA05F5215FDE6D93D464397D49A72A2 /* SJVideoPlayerResourceLoader.m in Sources */, - 54FDBB3ABC7A8FD2DBF4EF0643F77298 /* SJVideoPlayerURLAsset+SJControlAdd.m in Sources */, - 8141E0F9B5099E5471DD31918E7DA7A3 /* SJVideoPlayerURLAsset+SJExtendedDefinition.m in Sources */, - D085F6DE2E4C9ECBB23E1A3841AECFAA /* UIView+SJAnimationAdded.m in Sources */, + 8CC584A53711E93E80533A06715EF1CB /* NSBezierPath+SDRoundedCorners.m in Sources */, + E856E954571300067DE9110D88A46650 /* NSButton+WebCache.m in Sources */, + 08ED047F1B7EE644C1EF573679E72DED /* NSData+ImageContentType.m in Sources */, + D4A36983EB96898340A90B2D6AE6E532 /* NSImage+Compatibility.m in Sources */, + BFCA34833F4E1E5FD02BA028BCCF740A /* SDAnimatedImage.m in Sources */, + 500DF5082FDEC4D002C03D0BB51097E0 /* SDAnimatedImagePlayer.m in Sources */, + 6F9DD87AA63E04841562D190A883E122 /* SDAnimatedImageRep.m in Sources */, + 1B2299DF5B4D32922E62B86CAA5B8DAD /* SDAnimatedImageView.m in Sources */, + D02EF5D23A78095942A709C22BAB9787 /* SDAnimatedImageView+WebCache.m in Sources */, + 3A9717EE5A4D22F64E3AAF8E956E1682 /* SDAssociatedObject.m in Sources */, + 5D189D2E6AB579818BDDA987E0A78900 /* SDAsyncBlockOperation.m in Sources */, + FDCDC56E819B256F2BED52318F94D9E1 /* SDDeviceHelper.m in Sources */, + B5BBA13AB170E16E5856A0D789E7097A /* SDDiskCache.m in Sources */, + C2C8A737613AE1EFDE6E63CC4E90F08B /* SDDisplayLink.m in Sources */, + DD7BB2E5B279CF1565B4696997F7B537 /* SDFileAttributeHelper.m in Sources */, + B9FBDDD487C4C5CF9FCD5F93DA35026E /* SDGraphicsImageRenderer.m in Sources */, + 0AD5CC0AB66CB888D8BF334AA4994837 /* SDImageAPNGCoder.m in Sources */, + 4E5EBC1FC7B50C24ABD8682878AFF840 /* SDImageAssetManager.m in Sources */, + 52392098C02346CE084DF1F03E8AF057 /* SDImageAWebPCoder.m in Sources */, + 5E2D1553A26B900B120223AB39C94781 /* SDImageCache.m in Sources */, + DAADF082F67860C85F482A3F53008333 /* SDImageCacheConfig.m in Sources */, + D2A711AEB8D04FCBB79B83C86FE42EFB /* SDImageCacheDefine.m in Sources */, + 3D7E3EDBDBFCE5530E0D1B5FA8B9BE93 /* SDImageCachesManager.m in Sources */, + 6DF3FFED33E393C8C45224AE588EBC80 /* SDImageCachesManagerOperation.m in Sources */, + 67B4150984F775F064E0D00DD6463BA7 /* SDImageCoder.m in Sources */, + B7C1959C6CE44D11969D4FDA406EC8F3 /* SDImageCoderHelper.m in Sources */, + 83645D5EF2E2E2C3B8D6B5D47CE8C500 /* SDImageCodersManager.m in Sources */, + 245AB38BE75A718E2D721CB7F5A83ADA /* SDImageFrame.m in Sources */, + D3C7CC11BF2B4F75715CDC67066820EF /* SDImageGIFCoder.m in Sources */, + C53FB52DDC02945F1CC2C1C9F6724F8E /* SDImageGraphics.m in Sources */, + B24CBC816E8775914AFA97C67E882F35 /* SDImageHEICCoder.m in Sources */, + 10EAEDD432050AF80A34C131BF879526 /* SDImageIOAnimatedCoder.m in Sources */, + 789F569FAA1E69BA13C778502B1E1EB5 /* SDImageIOCoder.m in Sources */, + AD417C6E2F6E8E12B01497804683B740 /* SDImageLoader.m in Sources */, + 5F54AEC23FD321EFCB8831B08A5E7124 /* SDImageLoadersManager.m in Sources */, + E9A220BFA68826D0E46C28157488080C /* SDImageTransformer.m in Sources */, + 6FDA7F6AD76CF1E5619789E0F070FD90 /* SDInternalMacros.m in Sources */, + CE24812C6F00C5CDE54252162CDB2644 /* SDMemoryCache.m in Sources */, + E2B1DE2FC0F0449E2FA693E247075E3C /* SDWeakProxy.m in Sources */, + 805C4428FB1AFBD40DC71FB594A41514 /* SDWebImage-dummy.m in Sources */, + 860422525770A398B77B1D0EFF3ECCC4 /* SDWebImageCacheKeyFilter.m in Sources */, + 9D90930838FCF0C5FF2ED5E443F22AF9 /* SDWebImageCacheSerializer.m in Sources */, + C5686D27EB42A9771FD2B95F208B331B /* SDWebImageCompat.m in Sources */, + 022BAD804C5AC9E8B468250C711707BE /* SDWebImageDefine.m in Sources */, + 2C1625A602563990AA6F9CB6293032C1 /* SDWebImageDownloader.m in Sources */, + A8F3F3A7DC3D9F6811E5EC85E0A85FE4 /* SDWebImageDownloaderConfig.m in Sources */, + 0FB551DC68FAFCF00DC0FA2BB4829B06 /* SDWebImageDownloaderDecryptor.m in Sources */, + BF8C77C8CF6F0F811E84E8C3E8E40FA1 /* SDWebImageDownloaderOperation.m in Sources */, + FF8226B1EBE733DD7ED7304094E89CFB /* SDWebImageDownloaderRequestModifier.m in Sources */, + 7D6E5385E0D31CA1F6815C71970B6824 /* SDWebImageDownloaderResponseModifier.m in Sources */, + 994B1FB05C949307269C3D5B7AEECA8F /* SDWebImageError.m in Sources */, + EEA82BB3E8EDFD3269B827821FE15B5E /* SDWebImageIndicator.m in Sources */, + 5D32E4680CD69BCF890D84A0E5EBEDB4 /* SDWebImageManager.m in Sources */, + FD00DE99A0128C6C3627210DBEBF0A3A /* SDWebImageOperation.m in Sources */, + 2F4E6FF940175B40C974E14D1463610A /* SDWebImageOptionsProcessor.m in Sources */, + 77C67AA9FE2D7F576C84282F52B5AD6C /* SDWebImagePrefetcher.m in Sources */, + 86F880BDB62B5541FDC42616BB37A0E4 /* SDWebImageTransition.m in Sources */, + 7BD8EFCDB8FB92A678BFE15B5676268C /* UIButton+WebCache.m in Sources */, + 6522472B3BA32F3DF25BCF288A73C697 /* UIColor+SDHexString.m in Sources */, + C577FD35304F8AD605CFAF4ADAD34F38 /* UIImage+ExtendedCacheData.m in Sources */, + FF5378138FF731C8AE8BB739A6ECD9B9 /* UIImage+ForceDecode.m in Sources */, + 30DE07C7D381EB32DFB48275AA13657B /* UIImage+GIF.m in Sources */, + 466A6E28B6617320F1A134CE4270AF73 /* UIImage+MemoryCacheCost.m in Sources */, + E1EC3E39D7057D8BF9E606129F61B084 /* UIImage+Metadata.m in Sources */, + 443836726797A61BADD40572375B240C /* UIImage+MultiFormat.m in Sources */, + ABDD3343C444B22AA7FE321F1C7A31F7 /* UIImage+Transform.m in Sources */, + 437CED364F4531E0949B8F81C4120BF2 /* UIImageView+HighlightedWebCache.m in Sources */, + DAAA5826F4AB434C679F68525742694A /* UIImageView+WebCache.m in Sources */, + 38ABD33BC2FACA3021EF3E5F169F0B09 /* UIView+WebCache.m in Sources */, + 2D7CADA406963BD9442F3C600E9B9F39 /* UIView+WebCacheOperation.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D4BDC6F62C6E4D9418DB8C635C5F1E81 /* Sources */ = { + C563D74BD84E3174F227EDEF766C282E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D0D5B6AC9C2D65DECAE5DE9FDB07E749 /* NSAttributedString+SJMake.m in Sources */, - B68B51381B169F78FFE5B07DD2554860 /* NSDate+SJAdded.m in Sources */, - 1A70D671A553F83F038EF8BCAD45DEC7 /* NSObject+SJAsyncLoad.m in Sources */, - 2CEB698062BFB55429EB655A24B05571 /* NSObject+SJObserverHelper.m in Sources */, - 65E64BC13B814E2C3110F99334CCF327 /* SJAppearStateObserver.m in Sources */, - ED115AB7AFD9554322D09DF24CB5BB4F /* SJApplicationInfo.m in Sources */, - E8B3E321BA915C37D09C4B0B062BF4C1 /* SJAsyncLoader.m in Sources */, - 356B196124E84F8BC9518E499FE82CFA /* SJAttributesRecorder.m in Sources */, - 3DE661F9832541383EA21AF47C21D5A6 /* SJAttributeWorker.m in Sources */, - 5FCDA6B820622A776C81B217A33FBE94 /* SJBaseCollectionReusableView.m in Sources */, - 89C1F499F9E569E9F9CB7B9812F86EEB /* SJBaseCollectionViewCell.m in Sources */, - 0FA51B3F9738ECFFB4C08B728D282AA3 /* SJBaseTableViewCell.m in Sources */, - C5F029316278A837C479291F5B9F2C6E /* SJBaseTableViewHeaderFooterView.m in Sources */, - 2F3143E3C64514664CF165D7EBC6F47C /* SJBaseViewController.m in Sources */, - 19D0930CA1548329EE5D0BDE1F31D869 /* SJCornerMask.m in Sources */, - 2429687632A09F51BB89A386CBC6E826 /* SJImagePickerController.m in Sources */, - BF86CABA4E5E61A225D420684086DF77 /* SJMakeView.m in Sources */, - DF0BA8149037A12A149A15B372293452 /* SJObjectContainer.m in Sources */, - B1B145E944006E68505E611AF74AD199 /* SJPageCollectionView.m in Sources */, - 8029281E5494027DEFB4E6EA78DCB8D0 /* SJPageMenuBar.m in Sources */, - 7822C7D54F27F7E8CFF2249D8C6877F6 /* SJPageMenuBarScrollIndicator.m in Sources */, - 1BDD7F7FA4C63C7C4F33A57D6DB1D2E0 /* SJPageMenuItemView.m in Sources */, - D0EF4CEBECF524891907D5745DD29AB2 /* SJPageViewController.m in Sources */, - F96C6101AFAEF2F837E7A38D4AD1F04B /* SJPageViewControllerItemCell.m in Sources */, - F9962EA08114465CB1D50BF608E9F80A /* SJPlaybackListController.m in Sources */, - 85FE274A78DA448511CEA99B586939AD /* SJPresentationQueue.m in Sources */, - EB3E941924EA2CFC88DCEFDF8CF7BA8B /* SJQueue.m in Sources */, - 8E2078624D04C62E1883B5B706654111 /* SJResidentThread.m in Sources */, - 0362F51A89906B4136C6A3ED28989D40 /* SJRunLoopTaskQueue.m in Sources */, - 8C5F86FD10853214C02B84808A04C395 /* SJSQLite3+FoundationExtended.m in Sources */, - EBBE637CE19DF6DDDC07EF25E11EC23F /* SJSQLite3+QueryExtended.m in Sources */, - 0BD78B31FE319E530F9E0FB9A6E0F2D8 /* SJSQLite3+RemoveExtended.m in Sources */, - 2D081111F27A3270D3E3AA1E3E89B998 /* SJSQLite3+TableExtended.m in Sources */, - 4385E4A800CE5B7702552BB08455C816 /* SJSQLite3.m in Sources */, - A94A6A04ED4BB874576627A0A79A4938 /* SJSQLite3ColumnOrder.m in Sources */, - 6489D67B6BAAA348CA4616F788F5234D /* SJSQLite3Condition.m in Sources */, - 79F0CF5B91C0B2F536D3D3BDC12C8661 /* SJSQLite3Logger.m in Sources */, - CA1A15D1D738E4709BB411AA7A689DA7 /* SJSQLite3TableClassCache.m in Sources */, - 3C10470A7EB37A1175C3B34A92F2B06E /* SJSQLite3TableInfoCache.m in Sources */, - ABE807C6419C814AB59B822948CB23AF /* SJSQLiteColumnInfo.m in Sources */, - F05C150DEA95F8BA20EEE96BC35449F8 /* SJSQLiteCore.m in Sources */, - 887DF2720945D8414418316B396F6071 /* SJSQLiteErrors.m in Sources */, - 8441782F1695B0B6EC990356DD6A5457 /* SJSQLiteObjectInfo.m in Sources */, - 049B0E0C3ECF8C83BD82CD9F0C806700 /* SJSQLiteTableInfo.m in Sources */, - 0466486032711154312BC582720AC3D3 /* SJSQLiteTableModelConstraints.m in Sources */, - 4A5795A14A25228C15AB2826A01B3683 /* SJStatusBarManager.m in Sources */, - 45DD394F1201A9D63BD47B93BDD6989C /* SJTaskQueue.m in Sources */, - A028115C326DD9A94E31F26086D20BB5 /* SJUIKit-dummy.m in Sources */, - F3EB2685A2DBC83DFA26E54AF35EC68A /* SJUIKitTextMaker.m in Sources */, - 3F1E9F9BA7296182CF3FC5670F954A78 /* SJUIMaker.m in Sources */, - 7B1D14A6F706763737D6A44718389B9F /* SJUTAttributes.m in Sources */, - 8E541449D6C7A0B5D49719347726A284 /* SJUTRangeHandler.m in Sources */, - 0415B4A3538C43B804314435CED1E1F6 /* SJUTRecorder.m in Sources */, - AA0579D1E6EC68D98E828455C975961A /* SJUTRegexHandler.m in Sources */, - 502B204A49050B3CB8137193D29AE7A9 /* SJUTUtils.m in Sources */, - CE808B8A6EFC50C732E07B9C4E034420 /* UIButton+AsyncLoadImage.m in Sources */, - A5B108FFAD6F51808736684DDE6B9B95 /* UIColor+SJPageMenuBarExtended.m in Sources */, - 03B05726FFE206E88EFE6551731E1807 /* UIImagePickerController+SJUIKitExtension.m in Sources */, - 7C2DC172A0FE0CBA653009762B95C2B0 /* UIImageView+AsyncLoadImage.m in Sources */, - 49AAD6DB9D408D4185C6E1ADFD030A86 /* UILabel+AsyncLoad.m in Sources */, - 039FF6C1772D2022B265D3CE8CCF19EC /* UIScrollView+SJPageViewControllerExtended.m in Sources */, - 1EECDB844781886F8D806D68E57FBBB6 /* UIScrollView+SJRefreshAdd.m in Sources */, - 47EF92B3DCA4EE23737A9B33CAF778E7 /* UISearchBar+AsyncLoad.m in Sources */, - BF1CCCD745C8C9050AEA12D6202C2D94 /* UITextField+AsyncLoadImage.m in Sources */, - F996EEB25765703957CFA4A9BC307822 /* UIViewController+SJPageViewControllerExtended.m in Sources */, + 020E74845BFE4C9DD3F846E649E2CA1E /* SJFullscreenPopGesture.m in Sources */, + 9677DEE2BA723F08604A21F6C5F07A6D /* SJFullscreenPopGesture-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D7C01E79FFF5FEA77268E2AD95C5627B /* Sources */ = { + CC644876F02D5088A140BDCEF45B3CEB /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3FA77B2942212AF3C88FC3A297EDC4DA /* AVAsset+SJAVMediaExport.m in Sources */, - FF11E0C124CF8A5746A290FD943CCF50 /* CALayer+SJBaseVideoPlayerExtended.m in Sources */, - 86AAD98E9EDA89718E2EC8454FD88DB4 /* NSString+SJBaseVideoPlayerExtended.m in Sources */, - CAB14AAABFD8A75B6A73A2A5E9149F77 /* NSTimer+SJAssetAdd.m in Sources */, - 0A4F3D0625FFC1BFBE800B86278F93C8 /* SJAVMediaPlaybackController.m in Sources */, - E41D39AC5425517F0BF4C01879A3F6E9 /* SJAVMediaPlayer.m in Sources */, - E1352F869E79225A2F66659F1E2C9B13 /* SJAVMediaPlayerLayerView.m in Sources */, - 3B01BA3DBFB639ECC900A847CD54F34D /* SJAVMediaPlayerLoader.m in Sources */, - 27E5BFBBC08BC441E9B4E637ABEFFB77 /* SJAVPictureInPictureController.m in Sources */, - F6519E3D917A91B15963007AFE9016F3 /* SJBarrageItem.m in Sources */, - 533ED7D6775F2D9A028468BDFD5FFDE8 /* SJBarrageQueueController.m in Sources */, - 6D7548D17D9D54D9128FCC702086C05C /* SJBaseVideoPlayer+TestLog.m in Sources */, - 9C9CDC354C1E5B46B76E26BC4A652131 /* SJBaseVideoPlayer-dummy.m in Sources */, - 3D090A9287B5B8FB7DFD3C312C154852 /* SJBaseVideoPlayer.m in Sources */, - BCC4C5FF126E466F246C95B89C9661E0 /* SJBaseVideoPlayerConst.m in Sources */, - 3FEC4DFD0D84B148C547217B59D7781C /* SJBaseVideoPlayerResourceLoader.m in Sources */, - 11EACA97C79866F1918408EDEBCFF525 /* SJControlLayerAppearStateManager.m in Sources */, - 6A01711D05261C2AC2455586AD258040 /* SJDeviceVolumeAndBrightnessManager.m in Sources */, - 6BEAA6D9564CD57BB27B0B5A47029B65 /* SJFitOnScreenManager.m in Sources */, - 0B9322DBFDB7C240D7371108CA274C6C /* SJFlipTransitionManager.m in Sources */, - D9F3A1A6E314845DB3C09B693EB59570 /* SJFloatSmallViewController.m in Sources */, - 210505196FADE0A4F8AFCA60988741E8 /* SJMediaPlaybackController.m in Sources */, - 349147060901F3881A99EB10AF7B3BC7 /* SJPlaybackHistoryController.m in Sources */, - 90721AA6D93B1D8C7F96A7C8152A284D /* SJPlaybackObservation.m in Sources */, - 0E9F8C927AA07FBC28D26CF0DC2CB71A /* SJPlaybackRecord.m in Sources */, - 3DA7733E3D68808BAC2DC215FF617DA3 /* SJPlaybackRecordSaveHandler.m in Sources */, - 76F902A536DF07064DFAD782000934A0 /* SJPlayerAutoplayConfig.m in Sources */, - 23788E5C92F9B9F653AC71D149731F98 /* SJPlayerView.m in Sources */, - 564596CD8324F298A2CD25C99785177D /* SJPlayModel.m in Sources */, - 75DABB1BEA4DF9EBBD70E87A989B46DF /* SJPlayModelPropertiesObserver.m in Sources */, - E3DD3D071356582DFD6C5AF15746E015 /* SJPrompt.m in Sources */, - 258BBA439703CDE6B91347A733C19A10 /* SJPromptPopupController.m in Sources */, - 630C7FEB7BD00317AD7EE0321A6C1DB0 /* SJReachability.m in Sources */, - 8DFB1356515A02DE288202D3DBEF1209 /* SJRotationManager.m in Sources */, - D4F0859B625A8CDE06343368426D38B7 /* SJSubtitleItem.m in Sources */, - 2A0F1729EE17550AB4FE5F5EC7CCAC74 /* SJSubtitlesPromptController.m in Sources */, - 466A9538550DB913B747528B69C04A8E /* SJTimerControl.m in Sources */, - 566F3A316DC9434BFBAA25333E529E63 /* SJVideoDefinitionSwitchingInfo.m in Sources */, - 4FD00D158BCA3ADC1FB00203AB17D9E1 /* SJVideoPlayerPresentView.m in Sources */, - 43D5DF11231CC10A157F20217A4B4341 /* SJVideoPlayerRegistrar.m in Sources */, - 013C505091B7874AE7C0078FE0320A0E /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m in Sources */, - B2C192C1F33B5CB36C0850902722CE56 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m in Sources */, - 4920B06392E29A66FA93FFBC03131536 /* SJVideoPlayerURLAsset.m in Sources */, - C643F5C46BD3B60D71E2C738EC624D9D /* SJVideoPlayerURLAssetPrefetcher.m in Sources */, - A31CF75ED7C32E7E683978C3B7A7629C /* SJViewControllerManager.m in Sources */, - B034DCA6607ACB1BC879AA8AFA85576C /* SJWatermarkView.m in Sources */, - 8F9A973937EC315FD0B54962AC8CB5B9 /* UIScrollView+ListViewAutoplaySJAdd.m in Sources */, - DB85FB5C0ADE8137214DFEBB016413AB /* UIScrollView+SJBaseVideoPlayerExtended.m in Sources */, - 623BB17975574316E915861C47FD4283 /* UIView+SJBaseVideoPlayerExtended.m in Sources */, - 45ED7DCE41AAA302468872F4B5131328 /* UIViewController+SJBaseVideoPlayerExtended.m in Sources */, - 73BB65FD201B7AB5716CE818F49FC65E /* UIViewController+SJRotationPrivate_FixSafeArea.m in Sources */, + 3B08A5608A720D5A853F0A916CD46C49 /* AVAsset+SJAVMediaExport.m in Sources */, + B0A4389776760BF70BB619AC45F67986 /* CALayer+SJBaseVideoPlayerExtended.m in Sources */, + 0E902AC9E363FA7AAE7C041874421922 /* NSString+SJBaseVideoPlayerExtended.m in Sources */, + 48CD9876A42E43EB28EE19904C3DBB65 /* NSTimer+SJAssetAdd.m in Sources */, + 9AB992460E0813A3C62BF5EF9B7344AF /* SJAVMediaPlaybackController.m in Sources */, + 6F6921BECA66F7E8A20546F47C470581 /* SJAVMediaPlayer.m in Sources */, + 3BEA24BAC7C008EC40C80610B41B969B /* SJAVMediaPlayerLayerView.m in Sources */, + B39A8F05D9A5CD3298698FAF3A953515 /* SJAVMediaPlayerLoader.m in Sources */, + EA64C44052A20E32EE24DCEB6BB546E2 /* SJAVPictureInPictureController.m in Sources */, + E8D4B81750591DC5A41175B36EF4BCC4 /* SJBaseVideoPlayer.m in Sources */, + 926A5DFF0930563D90D8C75ED8FFC535 /* SJBaseVideoPlayer+TestLog.m in Sources */, + FE5892912E5909BB9EDEAA19BF8BD23B /* SJBaseVideoPlayer-dummy.m in Sources */, + BD9396569B14A925036350740A5CE607 /* SJBaseVideoPlayerConst.m in Sources */, + 83788761F4E5BD265AEDEB53949E7E13 /* SJBaseVideoPlayerResourceLoader.m in Sources */, + 580AAC393F70FB56C7980CAAD340AE63 /* SJControlLayerAppearStateManager.m in Sources */, + 0440CA41AE86615E5DEEE6BDDDDD90ED /* SJDanmakuItem.m in Sources */, + D978C4B4B4B2D7DE0F3B36D9083E3810 /* SJDanmakuPopupController.m in Sources */, + B48E20024AE55DDA45036D66BC0EC3A4 /* SJDeviceVolumeAndBrightnessManager.m in Sources */, + 107BA2E75DCE0D320712DE0718937202 /* SJFitOnScreenManager.m in Sources */, + 04DF1D079285A302B93F8616729FE30C /* SJFlipTransitionManager.m in Sources */, + 47665D5A44B191EFF02F2AAAD8303250 /* SJFloatSmallViewController.m in Sources */, + 7B3C4949801D9DC3F68309037A71C3EE /* SJMediaPlaybackController.m in Sources */, + 719EB6D913C38906B81D5451551F5992 /* SJPlaybackHistoryController.m in Sources */, + 3887803BAE3FB9282D13EBB8C4154E15 /* SJPlaybackObservation.m in Sources */, + EB900A0CA6132E4025F1B5C757E53FF6 /* SJPlaybackRecord.m in Sources */, + 8BED4EF67556CDF7838DEC366B181A10 /* SJPlaybackRecordSaveHandler.m in Sources */, + ACBEEC6EE5F9224B1B84A4D4DACF1476 /* SJPlayerAutoplayConfig.m in Sources */, + BBE280B755334C0E6A54A6B4A582A698 /* SJPlayerView.m in Sources */, + DC309AC4E019D8A288FD56F685BE4821 /* SJPlayModel.m in Sources */, + DD0D8111B2E20BDB4D80175A809680A6 /* SJPlayModelPropertiesObserver.m in Sources */, + 68450462DA2DB2A0279C95C297DD80BD /* SJPromptingPopupController.m in Sources */, + CCDB753F74B9A7CF439BD0B9A7ABC729 /* SJReachability.m in Sources */, + F3BA012B7E55634352ABA988E1F86DB5 /* SJRotationManager_4.m in Sources */, + 13BBC46A5F93EA99DE006C7017F550C9 /* SJSubtitleItem.m in Sources */, + 721CF076DD19EF0453503E769B2D4657 /* SJSubtitlePopupController.m in Sources */, + 38E1529BD5F56604382D3154693CC10B /* SJTextPopupController.m in Sources */, + 3B1C28B3E59498311947998468209C84 /* SJTimerControl.m in Sources */, + 13AAFB1A0AF3F9A6BB8D25EACD458700 /* SJVideoDefinitionSwitchingInfo.m in Sources */, + 676CB2C9FB311A4213B7CB625999942D /* SJVideoPlayerPresentView.m in Sources */, + A061ED0D96590386D603A8A7B96AE64F /* SJVideoPlayerRegistrar.m in Sources */, + 2E22E6448FF35F6E5D06BD101031328B /* SJVideoPlayerURLAsset.m in Sources */, + 8C43ED0FF8F951043ADAC17AC24D5C2B /* SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.m in Sources */, + 73D8125FB8BB2FD4EBEED7168B77BF96 /* SJVideoPlayerURLAsset+SJSubtitlesAdd.m in Sources */, + 75791336E57B946239D8BF7C7AA958DA /* SJVideoPlayerURLAssetPrefetcher.m in Sources */, + 20624C193FBC15EEF51923E2AA65C7A9 /* SJViewControllerManager.m in Sources */, + A322C98BAC427F6167B0BB41E23F34AE /* SJWatermarkView.m in Sources */, + 7146D119C90343428E796DF4BC9FED6B /* UIScrollView+ListViewAutoplaySJAdd.m in Sources */, + 43D040AA3603616B6D916E4662455C5C /* UIScrollView+SJBaseVideoPlayerExtended.m in Sources */, + 1B41B3D5A91ADF6556AFE3D858417695 /* UIView+SJBaseVideoPlayerExtended.m in Sources */, + 8386669236D7CE8DC3A2BF83485E531D /* UIViewController+SJBaseVideoPlayerExtended.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DBF1AB054265E6B4A99FFD62CE3139F0 /* Sources */ = { + D65F78C6172859B5CC2CF8AD667E4D83 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 18BD5AA4B8CF3A77AD82246B52D5B8ED /* NSObject+YYModel.m in Sources */, - 744F4F6C286C6D979EC6239D123CC35D /* YYClassInfo.m in Sources */, - 87717516C6E242D6111A83CBB4AD965B /* YYModel-dummy.m in Sources */, + DC3AE7C039B697A4F68BA467E9732304 /* SJRouteInterceptor.m in Sources */, + 9EF9614BE2AF94CA7073B6F074885D98 /* SJRouteObject.m in Sources */, + B1473D6DA0B97A7A94DABED6E85B9965 /* SJRouter.m in Sources */, + ECBE9E4901AF644308B111EE4A063A3D /* SJRouter-dummy.m in Sources */, + 15291D0FDD49B1048796296B8541504C /* SJRouteRequest.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - EE677DEB0818C5AF1142B26C6F07EB02 /* Sources */ = { + E707C1A87E08D1505E9E592237845A37 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2EF451A980660F39F52CFE588EEC8F68 /* CocoaAsyncSocket-dummy.m in Sources */, - 2CFCB4CF85B49C6B63BB759EA9D76575 /* GCDAsyncSocket.m in Sources */, - 5E2500118A397A383D4018C3DF7F0583 /* GCDAsyncUdpSocket.m in Sources */, + 69019B1312507D80BAC2673D752CC242 /* MASCompositeConstraint.m in Sources */, + 052DF25E12C02BC0F685CFF8D3319932 /* MASConstraint.m in Sources */, + 9413125214E3AF7700E77129C200D04C /* MASConstraintMaker.m in Sources */, + F472BD28B82BDD4EE44638ADA250F1A3 /* MASLayoutConstraint.m in Sources */, + 9FFB593F45C2C9350C28928F6ED3C091 /* Masonry-dummy.m in Sources */, + 669792AE808FD1BEE8CD2B2C4EFAB1C9 /* MASViewAttribute.m in Sources */, + 92A2BBC4A7A3514F491BD8B15E57E67E /* MASViewConstraint.m in Sources */, + F73C386B7C6D8902311FAA8045492E9B /* NSArray+MASAdditions.m in Sources */, + B8878CBE8444B7076214AC22CF5772C3 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */, + BBDE761F0564F92BD845D3088014C2EC /* View+MASAdditions.m in Sources */, + 4CDAC3854B539F96296F7A105FD36A3B /* ViewController+MASAdditions.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 29A6E48EC7BA37F5EB4B97B179090C2D /* PBXTargetDependency */ = { + 046EC57B530F54D945FFD0A360F89518 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = 0695FAB7F02A96DA702536F76C37C568 /* PBXContainerItemProxy */; + name = SJMediaCacheServer; + target = 53EA424E9D34B39228682599B5DABD60 /* SJMediaCacheServer */; + targetProxy = CBBF7191C0FD88EDA55A5B7FDACB3D93 /* PBXContainerItemProxy */; }; - 39CDF33D628ECC3A28BFDAB1C3BFFC96 /* PBXTargetDependency */ = { + 05780190F6F2C6D53D1E52595F163F90 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SJFullscreenPopGesture; - target = A19FC1B5D5F291312B4944B9B7DBF0A0 /* SJFullscreenPopGesture */; - targetProxy = 7C3D34F729728919DF0CB72EFF1E5FE6 /* PBXContainerItemProxy */; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = 30C505B82BCFDED0A9FA1B1FC30D49E5 /* PBXContainerItemProxy */; + }; + 0FB80610C948DD1BA3783FCD8E81C0F1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SJUIKit-68d28646"; + target = A2E0E2D60BE654B306C0ECB654A8212F /* SJUIKit-68d28646 */; + targetProxy = 4A953460765C681474A9F99730A675D6 /* PBXContainerItemProxy */; }; - 3C1E6348A234B950F99E1153D77A4AF5 /* PBXTargetDependency */ = { + 252721CDBDC68D86F844AEF052AC2539 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SJUIKit-68d28646"; + target = A2E0E2D60BE654B306C0ECB654A8212F /* SJUIKit-68d28646 */; + targetProxy = 2893177E1AD7427EA75F38519A85BDC0 /* PBXContainerItemProxy */; + }; + 2B58D7AE47C27C6C5DA4A7508590D263 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = 0E636900BE40CE2C9D5A5159FD9EB21A /* PBXContainerItemProxy */; + }; + 2F37C95F793947EAAAF9012E0C39B354 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = YYModel; target = 84B44807A12996D487A4A591A481D6A0 /* YYModel */; - targetProxy = 8BFF662189582A5EC6BCAEEB4E8DC948 /* PBXContainerItemProxy */; + targetProxy = 24B57FBF077B7FDB058904B741C7BC1C /* PBXContainerItemProxy */; }; - 4CD02B4EB3845DDC48B9461E030C1F4C /* PBXTargetDependency */ = { + 31A1AFC635106B7F930A417893AD6168 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SJRouter; + target = AC7ED7554C07C41E51C8BD5248179FED /* SJRouter */; + targetProxy = CD7928E4299E071EBF8CC91FD9FE636C /* PBXContainerItemProxy */; + }; + 32B782BC1E16454A97A6457519B0B532 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SJVideoPlayer; + target = 9D30A64C17E5B9AF4D9239A2C2A7630F /* SJVideoPlayer */; + targetProxy = 710C17942257F8442DA3B3FC6D5D1376 /* PBXContainerItemProxy */; + }; + 3B8C3F6373099CCB1E832E714FDC18E2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MJRefresh; target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; - targetProxy = F566493F220CBE1A612781CF4660A486 /* PBXContainerItemProxy */; + targetProxy = B12300F9260FE68EF253FBDB38C1A6DC /* PBXContainerItemProxy */; }; - 580683A87330E4A7A8B7405BD5A24E09 /* PBXTargetDependency */ = { + 44D4CC7A22542E390CB475357CCCEE54 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SJRouter; - target = AC7ED7554C07C41E51C8BD5248179FED /* SJRouter */; - targetProxy = 0E46B402C36A4398F372D6CE4A3B5325 /* PBXContainerItemProxy */; + name = CocoaAsyncSocket; + target = 6083682834ABE0AE7BD1CBF06CADD036 /* CocoaAsyncSocket */; + targetProxy = 0D18E36BAB0A83ABF5F936986A0C2DA9 /* PBXContainerItemProxy */; }; - 5EE770FE4E808656A5502D4C52E1EF77 /* PBXTargetDependency */ = { + 4AD008F5810FCA8410AAF541F0F248D5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SJUIKit; - target = 66EF777DAC384165A40F94DC7D0BD98F /* SJUIKit */; - targetProxy = E1E2A3BC22E9D5523ACB4B5661D1F81F /* PBXContainerItemProxy */; + name = CocoaAsyncSocket; + target = 6083682834ABE0AE7BD1CBF06CADD036 /* CocoaAsyncSocket */; + targetProxy = 5B3522C2D812899E073E1609E97DA779 /* PBXContainerItemProxy */; }; - 617A2FAE4985E732B973C7C4E250012D /* PBXTargetDependency */ = { + 579ED66FCB437D450C65BC720AEE5929 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = 8E509587138A722305276A3007248EBB /* PBXContainerItemProxy */; + name = SJFullscreenPopGesture; + target = A19FC1B5D5F291312B4944B9B7DBF0A0 /* SJFullscreenPopGesture */; + targetProxy = 86142F09F5625DAE852B4EFD6FE410A9 /* PBXContainerItemProxy */; }; - 736EFE30E0D69F5E0474B59D562DE729 /* PBXTargetDependency */ = { + 650C41DC20CE589B45C39D3B50A9C2A5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = 9BD5AE57825ACB916ED8FD1E0B253A4B /* PBXContainerItemProxy */; + name = YYModel; + target = 84B44807A12996D487A4A591A481D6A0 /* YYModel */; + targetProxy = 5DE81885EE3171806614FAF27BB1F7E7 /* PBXContainerItemProxy */; }; - 893CEA883375175A20A22EBA6808D8E2 /* PBXTargetDependency */ = { + 65E833C0A0791FB6A17AC0AE60ED2B4E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SJBaseVideoPlayer; target = 76A445C38D13436849B0EAD21F555034 /* SJBaseVideoPlayer */; - targetProxy = C5B774C564C0112D35983E87B885EC99 /* PBXContainerItemProxy */; + targetProxy = 0ECDDB4F483BAA83B6CCEA1E9DB30C5F /* PBXContainerItemProxy */; }; - 8C136015253CD15799A9371E155A1A19 /* PBXTargetDependency */ = { + 87A6B62B5C125836410314BBBFF896DD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SJUIKit; - target = 66EF777DAC384165A40F94DC7D0BD98F /* SJUIKit */; - targetProxy = 1752F1C03718B8E0706738E1EE8EDECD /* PBXContainerItemProxy */; + name = SJBaseVideoPlayer; + target = 76A445C38D13436849B0EAD21F555034 /* SJBaseVideoPlayer */; + targetProxy = ABDFBE8DCE62100575430CBDFB40D254 /* PBXContainerItemProxy */; }; - 8E874C7E095B1E39088BEFDA171C3078 /* PBXTargetDependency */ = { + 9213D26CE4830AB57E176C208EC06777 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SJUIKit-68d28646"; + target = A2E0E2D60BE654B306C0ECB654A8212F /* SJUIKit-68d28646 */; + targetProxy = 7BAC79CA1F28E38473D2D260A4C4669A /* PBXContainerItemProxy */; + }; + 9E0A7D3E60BB8668FF66ABA17808E936 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Masonry; target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = 6805B9D5739E05E46F3B37D026216B6C /* PBXContainerItemProxy */; + targetProxy = DB433CD1D80D3F41DCE21E2F42B33420 /* PBXContainerItemProxy */; }; - A63CC3ADBB0FD4DDBA3CF59A91AF9FA3 /* PBXTargetDependency */ = { + A470E971BB40C0E3802FC4DBD7FA7523 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SJMediaCacheServer; - target = 53EA424E9D34B39228682599B5DABD60 /* SJMediaCacheServer */; - targetProxy = D11E55CC83647E52C9B61476EAF989C6 /* PBXContainerItemProxy */; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = BA79B9D6E97B37E027732F4D0C424FAD /* PBXContainerItemProxy */; }; - C607C9B14DAE6B43C4C85ADE3AD1A7B9 /* PBXTargetDependency */ = { + AE00140E7AFED69B7D940F9A47967894 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CocoaAsyncSocket; - target = 6083682834ABE0AE7BD1CBF06CADD036 /* CocoaAsyncSocket */; - targetProxy = 7F80165A3063B4A43068E163E184154A /* PBXContainerItemProxy */; + name = SJVideoPlayer; + target = 9D30A64C17E5B9AF4D9239A2C2A7630F /* SJVideoPlayer */; + targetProxy = 8672D4A1B2AD57681C30B741F3471F0F /* PBXContainerItemProxy */; }; - C711F018D7DF433BD14EC691EB36B7C7 /* PBXTargetDependency */ = { + BC89A9C65C474EF7251D168BE35B2957 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SJUIKit; - target = 66EF777DAC384165A40F94DC7D0BD98F /* SJUIKit */; - targetProxy = BE4A91ECB76701B51DE7EC541E0F82B5 /* PBXContainerItemProxy */; + name = YYModel; + target = 84B44807A12996D487A4A591A481D6A0 /* YYModel */; + targetProxy = 16A70C3F03DD59324DE9D38F7261EFC8 /* PBXContainerItemProxy */; }; - D67276256FC7D07C9A7DED1B0AE76969 /* PBXTargetDependency */ = { + C9F1A45E390ECA2BDA52D7B69F1ABDF8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SJUIKit; - target = 66EF777DAC384165A40F94DC7D0BD98F /* SJUIKit */; - targetProxy = 8C0F2394A98F84B8D5D6464CCB071BF9 /* PBXContainerItemProxy */; + name = "SJUIKit-98d45660"; + target = EF627DF8F333CD0DEF8046D659DC9477 /* SJUIKit-98d45660 */; + targetProxy = E0A2F711F9BF71E7247C6BA7BC4102CF /* PBXContainerItemProxy */; }; - D78F3C59D22EFD451EC77FC5A0BB98BB /* PBXTargetDependency */ = { + CB2A39E8594396D0A6D21BB4D48EC043 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SJBaseVideoPlayer; - target = 76A445C38D13436849B0EAD21F555034 /* SJBaseVideoPlayer */; - targetProxy = 1B511546C7DAAE1B1587C4E4FE385129 /* PBXContainerItemProxy */; + name = "SJUIKit-68d28646"; + target = A2E0E2D60BE654B306C0ECB654A8212F /* SJUIKit-68d28646 */; + targetProxy = B81DF1ADDDD82311ECDDF59B3D91532C /* PBXContainerItemProxy */; }; - E498AA0EFE70F2E43FC7630C517A565D /* PBXTargetDependency */ = { + D5FD511841539ECD0ACDDAEFC1285EEF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = YYModel; - target = 84B44807A12996D487A4A591A481D6A0 /* YYModel */; - targetProxy = E1B251A913E92D01EE373E578F523678 /* PBXContainerItemProxy */; + name = MJRefresh; + target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; + targetProxy = 6319EA56A49DCBA651EA2105A440190A /* PBXContainerItemProxy */; }; - E77B944437B0557B2F6C5524E7B5440E /* PBXTargetDependency */ = { + DCF7EDAF9CF32F2BF9F9066A9E1F27AA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MJRefresh; target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; - targetProxy = 05E3C6783F740368659E6565A1EE25C3 /* PBXContainerItemProxy */; + targetProxy = 3215A6261674F23902A4111DCBFD34F6 /* PBXContainerItemProxy */; }; - E9AE91E98AB0E9392859CA44C509B870 /* PBXTargetDependency */ = { + E35F8F9D446E2405778609F7F9B2DC2A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CocoaAsyncSocket; - target = 6083682834ABE0AE7BD1CBF06CADD036 /* CocoaAsyncSocket */; - targetProxy = D337F93B5713867421651EFBDFE8382B /* PBXContainerItemProxy */; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = F5B2A6C61D07C2A0C3A8545FFF36E825 /* PBXContainerItemProxy */; }; - EFBBF519C6685365D6148D8D1843CE71 /* PBXTargetDependency */ = { + F0642287F0A64ADC83C72562EB7ED63F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SJVideoPlayer; - target = 9D30A64C17E5B9AF4D9239A2C2A7630F /* SJVideoPlayer */; - targetProxy = 3DB1CE2EBB9C931BA014F99BA0F9D93F /* PBXContainerItemProxy */; + name = YYModel; + target = 84B44807A12996D487A4A591A481D6A0 /* YYModel */; + targetProxy = 4A02189845E4E315C2D3869F187423F5 /* PBXContainerItemProxy */; + }; + FF37278EC57D54726F2B94881EBDADB6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SJBaseVideoPlayer; + target = 76A445C38D13436849B0EAD21F555034 /* SJBaseVideoPlayer */; + targetProxy = CA40D601580DD86B6D026B871AC2D01E /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 087B6B71D2EE1F28A1EFF0114793C649 /* Release */ = { + 0B3D706E071369495058A25341A3998A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C3D3464F1DC3BE3CCFA6759C4648228 /* MJRefresh.release.xcconfig */; + baseConfigurationReference = 56AC2771F7D56E9C3BB8227B3F3503E5 /* Pods-SJVideoPlayer_Example.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/MJRefresh/MJRefresh-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MACH_O_TYPE = staticlib; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = MJRefresh; - PRODUCT_NAME = MJRefresh; - PUBLIC_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 0B4528422F66D2E9BE7E4230B8A60616 /* Debug */ = { + 166D425F2AB402505C1EBDBA2A4C630D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1C05E718863B171F795E53DDE2BAECE4 /* SJMediaCacheServer.debug.xcconfig */; + baseConfigurationReference = B5C697DA1B9409BF6A3D63699A4C2687 /* Pods-iPadDemo.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJMediaCacheServer/SJMediaCacheServer-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MACH_O_TYPE = staticlib; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SJMediaCacheServer; - PRODUCT_NAME = SJMediaCacheServer; - PUBLIC_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 0FA9EC49FE4FC247DBFC45AE4A2FB988 /* Debug */ = { + 21C899A717C86273B0654C77A21FE48C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2B99E7040780085E8D21931D0394D1FC /* MJRefresh.debug.xcconfig */; + baseConfigurationReference = CA3CE244DB7B414821DB7453782583ED /* SJUIKit-68d28646.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/MJRefresh/MJRefresh-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = MJRefresh; - PRODUCT_NAME = MJRefresh; + PRODUCT_MODULE_NAME = SJUIKit; + PRODUCT_NAME = "SJUIKit-68d28646"; 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; }; - 1346F5D06EC59584D04DB4BD470C154E /* Release */ = { + 359D76972FE1C50CF0F50C6B15AE8034 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8EB21CCF5A14806E7856DBF7CC67026B /* SJRouter.release.xcconfig */; + baseConfigurationReference = 5C7B5B2F9FBB694DA59C873C45DC5917 /* SJRouter.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/SJRouter/SJRouter-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; @@ -4624,156 +4969,90 @@ }; name = Release; }; - 25AD9454612BF454A1E3DC4CD4FA8C6D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - 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; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 2911C19FBA05F06BE52E8826776F3F4A /* Debug */ = { + 37ACB2D6C0CECB1DBA2AF9AD060A0634 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1F8BE8F62B77BEE0417B2E1B2DD056F /* SJFullscreenPopGesture.debug.xcconfig */; + baseConfigurationReference = 5863B4913058748C41512FF2E19108B5 /* SJUIKit-98d45660.debug.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJFullscreenPopGesture/SJFullscreenPopGesture-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SJFullscreenPopGesture; - PRODUCT_NAME = SJFullscreenPopGesture; + PRODUCT_MODULE_NAME = SJUIKit; + PRODUCT_NAME = "SJUIKit-98d45660"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 2BD286A7FCBB2976A7814C602DC04753 /* Release */ = { + 4376CCC400F0D7DEA8A5BFA9206F1186 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B49C9C421A2389B673870CBC0281AFDB /* SJVideoPlayer.release.xcconfig */; + baseConfigurationReference = 9DD8B36A3841A80B8018118E71DD5C43 /* Pods-iPadDemo.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJVideoPlayer/SJVideoPlayer-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MACH_O_TYPE = staticlib; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SJVideoPlayer; - PRODUCT_NAME = SJVideoPlayer; - PUBLIC_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 2C6C38C7BBB514A9F76D082C31C513B4 /* Release */ = { + 4AD7E9B3A33A1482ABB29B09DA9F6578 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 991D0EFFE2E42D9966BC76B6BCD4A721 /* SJFullscreenPopGesture.release.xcconfig */; + baseConfigurationReference = EC51E16D80527BCF308A41618087DF85 /* SJBaseVideoPlayer.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJFullscreenPopGesture/SJFullscreenPopGesture-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SJBaseVideoPlayer/SJBaseVideoPlayer-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SJFullscreenPopGesture; - PRODUCT_NAME = SJFullscreenPopGesture; + PRODUCT_MODULE_NAME = SJBaseVideoPlayer; + PRODUCT_NAME = SJBaseVideoPlayer; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 38157752B0C08F9285B88B5D1BD95926 /* Debug */ = { + 4B504CF45B9BD004248D306783D63A00 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9DB10D827BEF1A951B5803C4D2BA3F3D /* Masonry.debug.xcconfig */; + baseConfigurationReference = 4AF8CA819E92155BD87EA9FCEC08BE12 /* YYModel.debug.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/YYModel/YYModel-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Masonry; - PRODUCT_NAME = Masonry; + PRODUCT_MODULE_NAME = YYModel; + PRODUCT_NAME = YYModel; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -4782,20 +5061,21 @@ }; name = Debug; }; - 450F10ECF3C6C4834FF5E7DF283D8805 /* Debug */ = { + 5DB8E023F6B887AE30C7EFD7DB009E83 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6A2EB43B0E07804ABD97933EA389D38D /* SJRouter.debug.xcconfig */; + baseConfigurationReference = 7874E0FFF61012E569C77850FC1E5718 /* SJMediaCacheServer.debug.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJRouter/SJRouter-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SJMediaCacheServer/SJMediaCacheServer-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SJRouter; - PRODUCT_NAME = SJRouter; + PRODUCT_MODULE_NAME = SJMediaCacheServer; + PRODUCT_NAME = SJMediaCacheServer; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -4804,33 +5084,36 @@ }; name = Debug; }; - 48008434201DBC77F199FEE9462B12ED /* Release */ = { + 5E51E05AFC3DF44002EBFD6AA0D7DB68 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 87D25F3ABD8FA9FCAB3866065A59C243 /* CocoaAsyncSocket.release.xcconfig */; + baseConfigurationReference = EE1B4AC61AF0B0353D4D0EF8E93ED596 /* SJFullscreenPopGesture.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SJFullscreenPopGesture/SJFullscreenPopGesture-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CocoaAsyncSocket; - PRODUCT_NAME = CocoaAsyncSocket; + PRODUCT_MODULE_NAME = SJFullscreenPopGesture; + PRODUCT_NAME = SJFullscreenPopGesture; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 489826CB57F823D795569C4C26BB2209 /* Debug */ = { + 63B93F68E09F29619FDF5ED9C4A5865F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 476EEDA6A28322B59914AB9F5B678003 /* SJBaseVideoPlayer.debug.xcconfig */; + baseConfigurationReference = 2E8582F6624C07B0A6CB1D5E2D9ED5E5 /* SJBaseVideoPlayer.debug.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -4839,7 +5122,7 @@ "$(inherited)", SJDEBUG, ); - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; @@ -4853,20 +5136,21 @@ }; name = Debug; }; - 5143DB530E4F598359569FA3DA3C39B5 /* Debug */ = { + 6ACA8C28DB9B97AEF5F548274679E6C2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4874D2F3F2914BB13AD2E72DC8257457 /* CocoaAsyncSocket.debug.xcconfig */; + baseConfigurationReference = 8BEF6641726D93A0A6D26DBCE82709B1 /* SJRouter.debug.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SJRouter/SJRouter-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CocoaAsyncSocket; - PRODUCT_NAME = CocoaAsyncSocket; + PRODUCT_MODULE_NAME = SJRouter; + PRODUCT_NAME = SJRouter; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -4875,20 +5159,43 @@ }; name = Debug; }; - 5CE6F49CA900338CD15302FAC4F398B9 /* Release */ = { + 709603AF2EB9BAC99B80F2AD4676B3CE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C3C353770B2032844233173540079D9F /* Masonry.release.xcconfig */; + baseConfigurationReference = B2B44B4BDF38E3CE9D822B92ACD5AE80 /* Pods-SJVideoPlayer_Example.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.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; + }; + 721B2B4FCC21AD43B29DBBBE20571CE7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FCED2EAB1512AAF358439168BF6D8B4F /* YYModel.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/YYModel/YYModel-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Masonry; - PRODUCT_NAME = Masonry; + PRODUCT_MODULE_NAME = YYModel; + PRODUCT_NAME = YYModel; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -4898,42 +5205,45 @@ }; name = Release; }; - 69A63359CD786F7C70D9685F692F6D63 /* Debug */ = { + 744531120764CB7E1FE93D7508997E35 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B66BAE0E6D2328E826BBB9F6D9B80B34 /* SJVideoPlayer.debug.xcconfig */; + baseConfigurationReference = D3DEC4F18D607D9000086A2149510CC4 /* CocoaAsyncSocket.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJVideoPlayer/SJVideoPlayer-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SJVideoPlayer; - PRODUCT_NAME = SJVideoPlayer; + PRODUCT_MODULE_NAME = CocoaAsyncSocket; + PRODUCT_NAME = CocoaAsyncSocket; 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; }; - 6B35E8482A7E09B435AFCE486B003D5E /* Release */ = { + 7C442EA397E51B6736677726FF5C7613 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0AE4DE26E0A0AE87F0E9C63E73AB22F0 /* SDWebImage.release.xcconfig */; + baseConfigurationReference = 40660CEB9E983CC24BD8D018F5F68718 /* MJRefresh.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/MJRefresh/MJRefresh-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SDWebImage; - PRODUCT_NAME = SDWebImage; + PRODUCT_MODULE_NAME = MJRefresh; + PRODUCT_NAME = MJRefresh; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -4943,20 +5253,21 @@ }; name = Release; }; - 89DAF3144B55A61A7F7BF02F64C75037 /* Debug */ = { + 8196836E4403EBB19440EC6241AFBC5F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 01C82C208B0A4A92A9E70847FA57A410 /* SJUIKit.debug.xcconfig */; + baseConfigurationReference = 73E5FBDE07C568B19B47E7FFD4B79B0B /* SJUIKit-68d28646.debug.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJUIKit/SJUIKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = SJUIKit; - PRODUCT_NAME = SJUIKit; + PRODUCT_NAME = "SJUIKit-68d28646"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -4965,15 +5276,78 @@ }; name = Debug; }; - 8D8083A979AA81D1EB9B2D067369D144 /* Debug */ = { + 903A0004D3E6651EFD5D2E16214D101B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 17FBDFCEE51A2D0BB66309AB748C8F0D /* SDWebImage.debug.xcconfig */; buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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; + 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 = 11.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 = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + A538D4A42C1008EF7AFF5A7C354FC866 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 30BBE9C6A34AA927FEC8A0CAE08F28A8 /* SDWebImage.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; @@ -4984,88 +5358,96 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - A1463BEE8B3E458CA4A3A0303EE3C6AC /* Debug */ = { + A63F06D70955D3DA7EDDBA1454BB5F14 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 780634E729C4D79FBA038A7CA9ED0127 /* Pods-SJVideoPlayer_Example.debug.xcconfig */; + baseConfigurationReference = 6FFA8263DFA5190B140E95C24E8EE6D2 /* SJFullscreenPopGesture.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = staticlib; + GCC_PREFIX_HEADER = "Target Support Files/SJFullscreenPopGesture/SJFullscreenPopGesture-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = SJFullscreenPopGesture; + PRODUCT_NAME = SJFullscreenPopGesture; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - A9DCE5DDC732CAA4862100276397510F /* Debug */ = { + A7225738EE00F338E87025F8FAF3C7E9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3A1530A79C3796D1C6F9262DB3BC64C5 /* YYModel.debug.xcconfig */; + baseConfigurationReference = B49C9C421A2389B673870CBC0281AFDB /* SJVideoPlayer.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/YYModel/YYModel-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SJVideoPlayer/SJVideoPlayer-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = YYModel; - PRODUCT_NAME = YYModel; + PRODUCT_MODULE_NAME = SJVideoPlayer; + PRODUCT_NAME = SJVideoPlayer; 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; }; - B34804096415DDFA0E2B6BF19D8358CC /* Release */ = { + AD975ED36F34B678CE0ED3B006F1FA8F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18507B27A3402374E0CF315144B2C1E7 /* SJBaseVideoPlayer.release.xcconfig */; + baseConfigurationReference = 33DA61999313283B127B41CCCAA46FE6 /* Masonry.debug.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJBaseVideoPlayer/SJBaseVideoPlayer-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SJBaseVideoPlayer; - PRODUCT_NAME = SJBaseVideoPlayer; + PRODUCT_MODULE_NAME = Masonry; + PRODUCT_NAME = Masonry; 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; }; - C923F8771D135FDD71686BE79F75B273 /* Release */ = { + B3CD6A83D214FAC537887443CB14850F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1EA78FE444BC23A0A689142FB3CFE1CE /* YYModel.release.xcconfig */; + baseConfigurationReference = D147B945EEA5271B3E1E2A441DDCB21D /* Masonry.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/YYModel/YYModel-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = YYModel; - PRODUCT_NAME = YYModel; + PRODUCT_MODULE_NAME = Masonry; + PRODUCT_NAME = Masonry; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -5075,7 +5457,7 @@ }; name = Release; }; - CA547D2C7E9A8A153DC2B27FBE00B112 /* Release */ = { + B4EFE046ACF8F37157F6E322C7FCFC28 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -5110,13 +5492,16 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; + DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -5125,53 +5510,57 @@ 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; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; - name = Release; + name = Debug; }; - D1A2573A76CB2BF9E75FF20E2F3A5B0F /* Release */ = { + C44876E90F27C8975D1A26F9D389B2E3 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 09FAD31258382D3E1171F30A6A61D033 /* Pods-SJVideoPlayer_Example.release.xcconfig */; + baseConfigurationReference = B66BAE0E6D2328E826BBB9F6D9B80B34 /* SJVideoPlayer.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = staticlib; + GCC_PREFIX_HEADER = "Target Support Files/SJVideoPlayer/SJVideoPlayer-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = SJVideoPlayer; + PRODUCT_NAME = SJVideoPlayer; + 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; }; - DD70C2C07B831DB175C859DAF02EAB99 /* Release */ = { + D2AE34FEDB693933699E1AF17E37796C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 794C350CE87DE87A02B571FEB8D37898 /* SJMediaCacheServer.release.xcconfig */; + baseConfigurationReference = 3C586C773E6AFE5B333737FA964AFF9B /* SJUIKit-98d45660.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJMediaCacheServer/SJMediaCacheServer-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SJMediaCacheServer; - PRODUCT_NAME = SJMediaCacheServer; + PRODUCT_MODULE_NAME = SJUIKit; + PRODUCT_NAME = "SJUIKit-98d45660"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -5181,20 +5570,90 @@ }; name = Release; }; - EB2D95FC25EB7308FE5A6D91B1116FA4 /* Release */ = { + D73166D1A138F2B144C43EA32EFF446B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9963E705B0F81FE6D5DA1220EE7E9640 /* SJUIKit.release.xcconfig */; + baseConfigurationReference = BB8308C6B88D4323C3EB4DDCEA2156EB /* SDWebImage.debug.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SJUIKit/SJUIKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SJUIKit; - PRODUCT_NAME = SJUIKit; + PRODUCT_MODULE_NAME = SDWebImage; + PRODUCT_NAME = SDWebImage; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + E1D64A859549551E4EE9E3B181FA26AB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0253AB53B6D7184C77FA8D594626A84B /* MJRefresh.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/MJRefresh/MJRefresh-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = MJRefresh; + PRODUCT_NAME = MJRefresh; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F870F84366C4C9F3A11B9CEA0E0619C4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F47B7EFCF9AFA47EA2B01C675A3054CA /* CocoaAsyncSocket.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = CocoaAsyncSocket; + PRODUCT_NAME = CocoaAsyncSocket; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F93EA2A7143E9FD1395717D1B5D7DDE7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EF6F3CF2205E966D8B6E8F8585173363 /* SJMediaCacheServer.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/SJMediaCacheServer/SJMediaCacheServer-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = SJMediaCacheServer; + PRODUCT_NAME = SJMediaCacheServer; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -5207,38 +5666,47 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 03BD6C09CDDF8C0268B88A029D6DB71A /* Build configuration list for PBXNativeTarget "SJBaseVideoPlayer" */ = { + 07EB740ACD4A75E3149E9C870AA9BF0D /* Build configuration list for PBXNativeTarget "SJMediaCacheServer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5DB8E023F6B887AE30C7EFD7DB009E83 /* Debug */, + F93EA2A7143E9FD1395717D1B5D7DDE7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0F2BAEF2E3ADDA5146DDCC8F2393B86F /* Build configuration list for PBXNativeTarget "CocoaAsyncSocket" */ = { isa = XCConfigurationList; buildConfigurations = ( - 489826CB57F823D795569C4C26BB2209 /* Debug */, - B34804096415DDFA0E2B6BF19D8358CC /* Release */, + F870F84366C4C9F3A11B9CEA0E0619C4 /* Debug */, + 744531120764CB7E1FE93D7508997E35 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 0B9F7EAACDDA564EC328F53A4AB8CF85 /* Build configuration list for PBXNativeTarget "Masonry" */ = { + 1F9702CCE47385B076E06920BCE61A73 /* Build configuration list for PBXNativeTarget "SJBaseVideoPlayer" */ = { isa = XCConfigurationList; buildConfigurations = ( - 38157752B0C08F9285B88B5D1BD95926 /* Debug */, - 5CE6F49CA900338CD15302FAC4F398B9 /* Release */, + 63B93F68E09F29619FDF5ED9C4A5865F /* Debug */, + 4AD7E9B3A33A1482ABB29B09DA9F6578 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 15915D6B8D199A332EDA4D30549F0314 /* Build configuration list for PBXNativeTarget "MJRefresh" */ = { + 2C47C81EE2772557D9F502FA51A56641 /* Build configuration list for PBXNativeTarget "Pods-iPadDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0FA9EC49FE4FC247DBFC45AE4A2FB988 /* Debug */, - 087B6B71D2EE1F28A1EFF0114793C649 /* Release */, + 4376CCC400F0D7DEA8A5BFA9206F1186 /* Debug */, + 166D425F2AB402505C1EBDBA2A4C630D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 22D40617EE75484D922E0060D8FB4D65 /* Build configuration list for PBXNativeTarget "YYModel" */ = { + 470B0CD0B9AFCC1414069AEA5009D857 /* Build configuration list for PBXNativeTarget "YYModel" */ = { isa = XCConfigurationList; buildConfigurations = ( - A9DCE5DDC732CAA4862100276397510F /* Debug */, - C923F8771D135FDD71686BE79F75B273 /* Release */, + 4B504CF45B9BD004248D306783D63A00 /* Debug */, + 721B2B4FCC21AD43B29DBBBE20571CE7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5246,80 +5714,89 @@ 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 25AD9454612BF454A1E3DC4CD4FA8C6D /* Debug */, - CA547D2C7E9A8A153DC2B27FBE00B112 /* Release */, + B4EFE046ACF8F37157F6E322C7FCFC28 /* Debug */, + 903A0004D3E6651EFD5D2E16214D101B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 559E8FD749493F7FA264B4224CCEE2BC /* Build configuration list for PBXNativeTarget "SJVideoPlayer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C44876E90F27C8975D1A26F9D389B2E3 /* Debug */, + A7225738EE00F338E87025F8FAF3C7E9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 597B33B96FF70AA2E10BFE9A5E3A5D30 /* Build configuration list for PBXNativeTarget "SJFullscreenPopGesture" */ = { + 6525CCFB5FEEBC36FDDE16A88CD85B83 /* Build configuration list for PBXNativeTarget "Masonry" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2911C19FBA05F06BE52E8826776F3F4A /* Debug */, - 2C6C38C7BBB514A9F76D082C31C513B4 /* Release */, + AD975ED36F34B678CE0ED3B006F1FA8F /* Debug */, + B3CD6A83D214FAC537887443CB14850F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 60EA7763D7F05E6CECCD71A4788DD082 /* Build configuration list for PBXNativeTarget "SJMediaCacheServer" */ = { + A13108A80EFF573D65246A96A37FDA24 /* Build configuration list for PBXNativeTarget "SJUIKit-98d45660" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0B4528422F66D2E9BE7E4230B8A60616 /* Debug */, - DD70C2C07B831DB175C859DAF02EAB99 /* Release */, + 37ACB2D6C0CECB1DBA2AF9AD060A0634 /* Debug */, + D2AE34FEDB693933699E1AF17E37796C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6E035B39544C371B655EC3DEAF992DD0 /* Build configuration list for PBXNativeTarget "SJUIKit" */ = { + B8B0D23FFB968359602921868E13E2B0 /* Build configuration list for PBXNativeTarget "SDWebImage" */ = { isa = XCConfigurationList; buildConfigurations = ( - 89DAF3144B55A61A7F7BF02F64C75037 /* Debug */, - EB2D95FC25EB7308FE5A6D91B1116FA4 /* Release */, + D73166D1A138F2B144C43EA32EFF446B /* Debug */, + A538D4A42C1008EF7AFF5A7C354FC866 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 73EBF9ACCAC16FA97A3BC5BA8A123D31 /* Build configuration list for PBXNativeTarget "SJVideoPlayer" */ = { + C412188669F87C272B43503B1711DC78 /* Build configuration list for PBXNativeTarget "SJFullscreenPopGesture" */ = { isa = XCConfigurationList; buildConfigurations = ( - 69A63359CD786F7C70D9685F692F6D63 /* Debug */, - 2BD286A7FCBB2976A7814C602DC04753 /* Release */, + A63F06D70955D3DA7EDDBA1454BB5F14 /* Debug */, + 5E51E05AFC3DF44002EBFD6AA0D7DB68 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7C7D10C02B57C20C1D6F0C28407E6FCF /* Build configuration list for PBXNativeTarget "Pods-SJVideoPlayer_Example" */ = { + CA74A47F51589DA3D82B13A6A47D7EAD /* Build configuration list for PBXNativeTarget "MJRefresh" */ = { isa = XCConfigurationList; buildConfigurations = ( - A1463BEE8B3E458CA4A3A0303EE3C6AC /* Debug */, - D1A2573A76CB2BF9E75FF20E2F3A5B0F /* Release */, + E1D64A859549551E4EE9E3B181FA26AB /* Debug */, + 7C442EA397E51B6736677726FF5C7613 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8745B97255049322863DC2AF504413D7 /* Build configuration list for PBXNativeTarget "SJRouter" */ = { + CC4F22F54D70F8C2C17C28CDBC0FA9F6 /* Build configuration list for PBXNativeTarget "Pods-SJVideoPlayer_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 450F10ECF3C6C4834FF5E7DF283D8805 /* Debug */, - 1346F5D06EC59584D04DB4BD470C154E /* Release */, + 709603AF2EB9BAC99B80F2AD4676B3CE /* Debug */, + 0B3D706E071369495058A25341A3998A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B1FA491365904802AD9D5BF4683066A6 /* Build configuration list for PBXNativeTarget "SDWebImage" */ = { + CE572A8F0378A4CC2B650CDFA8B9C988 /* Build configuration list for PBXNativeTarget "SJRouter" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8D8083A979AA81D1EB9B2D067369D144 /* Debug */, - 6B35E8482A7E09B435AFCE486B003D5E /* Release */, + 6ACA8C28DB9B97AEF5F548274679E6C2 /* Debug */, + 359D76972FE1C50CF0F50C6B15AE8034 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BF535641E00BECC6FFAF53CFB25A8755 /* Build configuration list for PBXNativeTarget "CocoaAsyncSocket" */ = { + F43F9E72496E45893FB1A043A556D231 /* Build configuration list for PBXNativeTarget "SJUIKit-68d28646" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5143DB530E4F598359569FA3DA3C39B5 /* Debug */, - 48008434201DBC77F199FEE9462B12ED /* Release */, + 8196836E4403EBB19440EC6241AFBC5F /* Debug */, + 21C899A717C86273B0654C77A21FE48C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/CocoaAsyncSocket.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/CocoaAsyncSocket.xcscheme new file mode 100644 index 000000000..238e7bf37 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/CocoaAsyncSocket.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/MJRefresh.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/MJRefresh.xcscheme new file mode 100644 index 000000000..358ccef6c --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/MJRefresh.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/Masonry.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/Masonry.xcscheme new file mode 100644 index 000000000..f73701ee7 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/Masonry.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/Pods-SJVideoPlayer_Example.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/Pods-SJVideoPlayer_Example.xcscheme new file mode 100644 index 000000000..8f82ee269 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/Pods-SJVideoPlayer_Example.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/Pods-iPadDemo.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/Pods-iPadDemo.xcscheme new file mode 100644 index 000000000..786735b80 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/Pods-iPadDemo.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SDWebImage.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SDWebImage.xcscheme new file mode 100644 index 000000000..4d7314071 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SDWebImage.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJBaseVideoPlayer.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJBaseVideoPlayer.xcscheme new file mode 100644 index 000000000..61ce5ad1c --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJBaseVideoPlayer.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJFullscreenPopGesture.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJFullscreenPopGesture.xcscheme new file mode 100644 index 000000000..6fe79e6c1 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJFullscreenPopGesture.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJMediaCacheServer.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJMediaCacheServer.xcscheme new file mode 100644 index 000000000..4175ca709 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJMediaCacheServer.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJRouter.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJRouter.xcscheme new file mode 100644 index 000000000..27c032abb --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJRouter.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJUIKit-68d28646.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJUIKit-68d28646.xcscheme new file mode 100644 index 000000000..2416a2d7a --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJUIKit-68d28646.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJUIKit-98d45660.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJUIKit-98d45660.xcscheme new file mode 100644 index 000000000..8f0067867 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJUIKit-98d45660.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJVideoPlayer.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJVideoPlayer.xcscheme new file mode 100644 index 000000000..55f554309 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/SJVideoPlayer.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/YYModel.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/YYModel.xcscheme new file mode 100644 index 000000000..29038b517 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/YYModel.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/xcschememanagement.plist b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..65294087a --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,81 @@ + + + + + SchemeUserState + + CocoaAsyncSocket.xcscheme + + isShown + + + MJRefresh.xcscheme + + isShown + + + Masonry.xcscheme + + isShown + + + Pods-SJVideoPlayer_Example.xcscheme + + isShown + + + Pods-iPadDemo.xcscheme + + isShown + + + SDWebImage.xcscheme + + isShown + + + SJBaseVideoPlayer.xcscheme + + isShown + + + SJFullscreenPopGesture.xcscheme + + isShown + + + SJMediaCacheServer.xcscheme + + isShown + + + SJRouter.xcscheme + + isShown + + + SJUIKit-68d28646.xcscheme + + isShown + + + SJUIKit-98d45660.xcscheme + + isShown + + + SJVideoPlayer.xcscheme + + isShown + + + YYModel.xcscheme + + isShown + + + + SuppressBuildableAutocreation + + + diff --git a/Example/Pods/SDWebImage/README.md b/Example/Pods/SDWebImage/README.md index ea77ad772..06e28e3a1 100644 --- a/Example/Pods/SDWebImage/README.md +++ b/Example/Pods/SDWebImage/README.md @@ -75,7 +75,7 @@ The new framework introduce two View structs `WebImage` and `AnimatedImage` for #### Integration with 3rd party libraries - [SDWebImageLottiePlugin](https://github.com/SDWebImage/SDWebImageLottiePlugin) - plugin to support [Lottie-iOS](https://github.com/airbnb/lottie-ios), vector animation rending with remote JSON files -- [SDWebImageSVGKitPlugin](https://github.com/SDWebImage/SDWebImageLottiePlugin) - plugin to support [SVGKit](https://github.com/SVGKit/SVGKit), SVG rendering using Core Animation, iOS 8+/macOS 10.10+ support +- [SDWebImageSVGKitPlugin](https://github.com/SDWebImage/SDWebImageSVGKitPlugin) - plugin to support [SVGKit](https://github.com/SVGKit/SVGKit), SVG rendering using Core Animation, iOS 8+/macOS 10.10+ support - [SDWebImageFLPlugin](https://github.com/SDWebImage/SDWebImageFLPlugin) - plugin to support [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) as the engine for animated GIFs - [SDWebImageYYPlugin](https://github.com/SDWebImage/SDWebImageYYPlugin) - plugin to integrate [YYImage](https://github.com/ibireme/YYImage) & [YYCache](https://github.com/ibireme/YYCache) for image rendering & caching diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h b/Example/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h index a9921ea3e..fb5ba60a4 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h @@ -45,7 +45,7 @@ static const SDImageFormat SDImageFormatSVG = 8; * * @param format Format as SDImageFormat * @return The UTType as CFStringRef - * @note For unknown format, `kUTTypeImage` abstract type will return + * @note For unknown format, `kSDUTTypeImage` abstract type will return */ + (nonnull CFStringRef)sd_UTTypeFromImageFormat:(SDImageFormat)format CF_RETURNS_NOT_RETAINED NS_SWIFT_NAME(sd_UTType(from:)); diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m b/Example/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m index 35e27aa40..070dfdfca 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m @@ -87,16 +87,16 @@ + (nonnull CFStringRef)sd_UTTypeFromImageFormat:(SDImageFormat)format { CFStringRef UTType; switch (format) { case SDImageFormatJPEG: - UTType = kUTTypeJPEG; + UTType = kSDUTTypeJPEG; break; case SDImageFormatPNG: - UTType = kUTTypePNG; + UTType = kSDUTTypePNG; break; case SDImageFormatGIF: - UTType = kUTTypeGIF; + UTType = kSDUTTypeGIF; break; case SDImageFormatTIFF: - UTType = kUTTypeTIFF; + UTType = kSDUTTypeTIFF; break; case SDImageFormatWebP: UTType = kSDUTTypeWebP; @@ -108,14 +108,14 @@ + (nonnull CFStringRef)sd_UTTypeFromImageFormat:(SDImageFormat)format { UTType = kSDUTTypeHEIF; break; case SDImageFormatPDF: - UTType = kUTTypePDF; + UTType = kSDUTTypePDF; break; case SDImageFormatSVG: - UTType = kUTTypeScalableVectorGraphics; + UTType = kSDUTTypeSVG; break; default: // default is kUTTypeImage abstract type - UTType = kUTTypeImage; + UTType = kSDUTTypeImage; break; } return UTType; @@ -126,13 +126,13 @@ + (SDImageFormat)sd_imageFormatFromUTType:(CFStringRef)uttype { return SDImageFormatUndefined; } SDImageFormat imageFormat; - if (CFStringCompare(uttype, kUTTypeJPEG, 0) == kCFCompareEqualTo) { + if (CFStringCompare(uttype, kSDUTTypeJPEG, 0) == kCFCompareEqualTo) { imageFormat = SDImageFormatJPEG; - } else if (CFStringCompare(uttype, kUTTypePNG, 0) == kCFCompareEqualTo) { + } else if (CFStringCompare(uttype, kSDUTTypePNG, 0) == kCFCompareEqualTo) { imageFormat = SDImageFormatPNG; - } else if (CFStringCompare(uttype, kUTTypeGIF, 0) == kCFCompareEqualTo) { + } else if (CFStringCompare(uttype, kSDUTTypeGIF, 0) == kCFCompareEqualTo) { imageFormat = SDImageFormatGIF; - } else if (CFStringCompare(uttype, kUTTypeTIFF, 0) == kCFCompareEqualTo) { + } else if (CFStringCompare(uttype, kSDUTTypeTIFF, 0) == kCFCompareEqualTo) { imageFormat = SDImageFormatTIFF; } else if (CFStringCompare(uttype, kSDUTTypeWebP, 0) == kCFCompareEqualTo) { imageFormat = SDImageFormatWebP; @@ -140,9 +140,9 @@ + (SDImageFormat)sd_imageFormatFromUTType:(CFStringRef)uttype { imageFormat = SDImageFormatHEIC; } else if (CFStringCompare(uttype, kSDUTTypeHEIF, 0) == kCFCompareEqualTo) { imageFormat = SDImageFormatHEIF; - } else if (CFStringCompare(uttype, kUTTypePDF, 0) == kCFCompareEqualTo) { + } else if (CFStringCompare(uttype, kSDUTTypePDF, 0) == kCFCompareEqualTo) { imageFormat = SDImageFormatPDF; - } else if (CFStringCompare(uttype, kUTTypeScalableVectorGraphics, 0) == kCFCompareEqualTo) { + } else if (CFStringCompare(uttype, kSDUTTypeSVG, 0) == kCFCompareEqualTo) { imageFormat = SDImageFormatSVG; } else { imageFormat = SDImageFormatUndefined; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m b/Example/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m index 7de0c7035..ce67151ef 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m @@ -35,8 +35,8 @@ - (CGFloat)scale { NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil]; CGFloat width = imageRep.size.width; CGFloat height = imageRep.size.height; - NSUInteger pixelWidth = imageRep.pixelsWide; - NSUInteger pixelHeight = imageRep.pixelsHigh; + CGFloat pixelWidth = (CGFloat)imageRep.pixelsWide; + CGFloat pixelHeight = (CGFloat)imageRep.pixelsHigh; if (width > 0 && height > 0) { CGFloat widthScale = pixelWidth / width; CGFloat heightScale = pixelHeight / height; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m index 6f3916ce0..f98c49294 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m @@ -314,6 +314,10 @@ - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { return; } +- (NSUInteger)sd_imageFrameCount { + return self.animatedImageFrameCount; +} + - (SDImageFormat)sd_imageFormat { return self.animatedImageFormat; } diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m index 08317429d..2ef3a88bb 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m @@ -27,6 +27,12 @@ - (void)dealloc { } } +- (instancetype)copyWithZone:(NSZone *)zone { + SDAnimatedImageRep *imageRep = [super copyWithZone:zone]; + CFRetain(imageRep->_imageSource); + return imageRep; +} + // `NSBitmapImageRep`'s `imageRepWithData:` is not designed initializer + (instancetype)imageRepWithData:(NSData *)data { SDAnimatedImageRep *imageRep = [[SDAnimatedImageRep alloc] initWithData:data]; @@ -52,13 +58,13 @@ - (instancetype)initWithData:(NSData *)data { if (!type) { return self; } - if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) { + if (CFStringCompare(type, kSDUTTypeGIF, 0) == kCFCompareEqualTo) { // GIF // Fix the `NSBitmapImageRep` GIF loop count calculation issue // Which will use 0 when there are no loop count information metadata in GIF data NSUInteger loopCount = [SDImageGIFCoder imageLoopCountWithSource:imageSource]; [self setProperty:NSImageLoopCount withValue:@(loopCount)]; - } else if (CFStringCompare(type, kUTTypePNG, 0) == kCFCompareEqualTo) { + } else if (CFStringCompare(type, kSDUTTypePNG, 0) == kCFCompareEqualTo) { // APNG // Do initialize about frame count, current frame/duration and loop count [self setProperty:NSImageFrameCount withValue:@(frameCount)]; @@ -100,10 +106,10 @@ - (void)setProperty:(NSBitmapImageRepPropertyKey)property withValue:(id)value { } NSUInteger index = [value unsignedIntegerValue]; NSTimeInterval frameDuration = 0; - if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) { + if (CFStringCompare(type, kSDUTTypeGIF, 0) == kCFCompareEqualTo) { // GIF frameDuration = [SDImageGIFCoder frameDurationAtIndex:index source:imageSource]; - } else if (CFStringCompare(type, kUTTypePNG, 0) == kCFCompareEqualTo) { + } else if (CFStringCompare(type, kSDUTTypePNG, 0) == kCFCompareEqualTo) { // APNG frameDuration = [SDImageAPNGCoder frameDurationAtIndex:index source:imageSource]; } else if (CFStringCompare(type, kSDUTTypeHEICS, 0) == kCFCompareEqualTo) { diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m index 5f5d41a1d..2cdb766f8 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m @@ -87,7 +87,7 @@ - (void)setData:(NSData *)data forKey:(NSString *)key { // get cache Path for image key NSString *cachePathForKey = [self cachePathForKey:key]; // transform to NSURL - NSURL *fileURL = [NSURL fileURLWithPath:cachePathForKey]; + NSURL *fileURL = [NSURL fileURLWithPath:cachePathForKey isDirectory:NO]; [data writeToURL:fileURL options:self.config.diskCacheWritingOptions error:nil]; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m index 03aef3a5f..aeda97b14 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m @@ -132,7 +132,13 @@ - (instancetype)init { #elif SD_UIKIT CGFloat screenScale = [UIScreen mainScreen].scale; #elif SD_MAC - CGFloat screenScale = [NSScreen mainScreen].backingScaleFactor; + NSScreen *mainScreen = nil; + if (@available(macOS 10.12, *)) { + mainScreen = [NSScreen mainScreen]; + } else { + mainScreen = [NSScreen screens].firstObject; + } + CGFloat screenScale = mainScreen.backingScaleFactor ?: 1.0f; #endif self.scale = screenScale; self.opaque = NO; @@ -166,7 +172,13 @@ - (instancetype)initForMainScreen { #elif SD_UIKIT CGFloat screenScale = [UIScreen mainScreen].scale; #elif SD_MAC - CGFloat screenScale = [NSScreen mainScreen].backingScaleFactor; + NSScreen *mainScreen = nil; + if (@available(macOS 10.12, *)) { + mainScreen = [NSScreen mainScreen]; + } else { + mainScreen = [NSScreen screens].firstObject; + } + CGFloat screenScale = mainScreen.backingScaleFactor ?: 1.0f; #endif self.scale = screenScale; self.opaque = NO; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m index 6581f30dc..b262bd3b3 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m @@ -7,6 +7,7 @@ */ #import "SDImageAPNGCoder.h" +#import "SDImageIOAnimatedCoderInternal.h" #if SD_MAC #import #else @@ -31,7 +32,7 @@ + (SDImageFormat)imageFormat { } + (NSString *)imageUTType { - return (__bridge NSString *)kUTTypePNG; + return (__bridge NSString *)kSDUTTypePNG; } + (NSString *)dictionaryProperty { diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h index ad3afd53c..96b54e723 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h @@ -55,6 +55,20 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { SDImageCacheMatchAnimatedImageClass = 1 << 7, }; +@interface SDImageCacheToken : NSObject + +/** + Cancel the current cache query. + */ +- (void)cancel; + +/** + The query's cache key. + */ +@property (nonatomic, strong, nullable, readonly) NSString *key; + +@end + /** * SDImageCache maintains a memory cache and a disk cache. Disk cache write operations are performed * asynchronous so it doesn’t add unnecessary latency to the UI. @@ -179,6 +193,17 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { toDisk:(BOOL)toDisk completion:(nullable SDWebImageNoParamsBlock)completionBlock; +/** + * Asynchronously store an image data into disk cache at the given key. + * + * @param imageData The image data to store + * @param key The unique image cache key, usually it's image absolute URL + * @param completionBlock A block executed after the operation is finished + */ +- (void)storeImageData:(nullable NSData *)imageData + forKey:(nullable NSString *)key + completion:(nullable SDWebImageNoParamsBlock)completionBlock; + /** * Asynchronously store an image into memory and disk cache at the given key. * @@ -198,7 +223,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { completion:(nullable SDWebImageNoParamsBlock)completionBlock; /** - * Synchronously store image into memory cache at the given key. + * Synchronously store an image into memory cache at the given key. * * @param image The image to store * @param key The unique image cache key, usually it's image absolute URL @@ -207,7 +232,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { forKey:(nullable NSString *)key; /** - * Synchronously store image data into disk cache at the given key. + * Synchronously store an image data into disk cache at the given key. * * @param imageData The image data to store * @param key The unique image cache key, usually it's image absolute URL @@ -259,9 +284,9 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { * @param key The unique key used to store the wanted image. If you want transformed or thumbnail image, calculate the key with `SDTransformedKeyForKey`, `SDThumbnailedKeyForKey`, or generate the cache key from url with `cacheKeyForURL:context:`. * @param doneBlock The completion block. Will not get called if the operation is cancelled * - * @return a NSOperation instance containing the cache op + * @return a SDImageCacheToken instance containing the cache operation, will callback immediately when cancelled */ -- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; +- (nullable SDImageCacheToken *)queryCacheOperationForKey:(nullable NSString *)key done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; /** * Asynchronously queries the cache with operation and call the completion when done. @@ -270,9 +295,9 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { * @param options A mask to specify options to use for this cache query * @param doneBlock The completion block. Will not get called if the operation is cancelled * - * @return a NSOperation instance containing the cache op + * @return a SDImageCacheToken instance containing the cache operation, will callback immediately when cancelled */ -- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; +- (nullable SDImageCacheToken *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; /** * Asynchronously queries the cache with operation and call the completion when done. @@ -282,9 +307,9 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { * @param context A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold. * @param doneBlock The completion block. Will not get called if the operation is cancelled * - * @return a NSOperation instance containing the cache op + * @return a SDImageCacheToken instance containing the cache operation, will callback immediately when cancellederation, will callback immediately when cancelled */ -- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; +- (nullable SDImageCacheToken *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; /** * Asynchronously queries the cache with operation and call the completion when done. @@ -295,9 +320,9 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { * @param queryCacheType Specify where to query the cache from. By default we use `.all`, which means both memory cache and disk cache. You can choose to query memory only or disk only as well. Pass `.none` is invalid and callback with nil immediately. * @param doneBlock The completion block. Will not get called if the operation is cancelled * - * @return a NSOperation instance containing the cache op + * @return a SDImageCacheToken instance containing the cache operation, will callback immediately when cancelled */ -- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context cacheType:(SDImageCacheType)queryCacheType done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; +- (nullable SDImageCacheToken *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context cacheType:(SDImageCacheType)queryCacheType done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; /** * Synchronously query the memory cache. diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m index c1f99a899..1dc25feb4 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m @@ -15,6 +15,42 @@ #import "UIImage+Metadata.h" #import "UIImage+ExtendedCacheData.h" +@interface SDImageCacheToken () + +@property (nonatomic, strong, nullable, readwrite) NSString *key; +@property (nonatomic, assign, getter=isCancelled) BOOL cancelled; +@property (nonatomic, copy, nullable) SDImageCacheQueryCompletionBlock doneBlock; + +@end + +@implementation SDImageCacheToken + +-(instancetype)initWithDoneBlock:(nullable SDImageCacheQueryCompletionBlock)doneBlock { + self = [super init]; + if (self) { + self.doneBlock = doneBlock; + } + return self; +} + +- (void)cancel { + @synchronized (self) { + if (self.isCancelled) { + return; + } + self.cancelled = YES; + + dispatch_main_async_safe(^{ + if (self.doneBlock) { + self.doneBlock(nil, nil, SDImageCacheTypeNone); + self.doneBlock = nil; + } + }); + } +} + +@end + static NSString * _defaultDiskCacheDirectory; @interface SDImageCache () @@ -168,6 +204,12 @@ - (void)storeImage:(nullable UIImage *)image [self storeImage:image imageData:nil forKey:key toDisk:toDisk completion:completionBlock]; } +- (void)storeImageData:(nullable NSData *)imageData + forKey:(nullable NSString *)key + completion:(nullable SDWebImageNoParamsBlock)completionBlock { + [self storeImage:nil imageData:imageData forKey:key toDisk:YES completion:completionBlock]; +} + - (void)storeImage:(nullable UIImage *)image imageData:(nullable NSData *)imageData forKey:(nullable NSString *)key @@ -182,14 +224,14 @@ - (void)storeImage:(nullable UIImage *)image toMemory:(BOOL)toMemory toDisk:(BOOL)toDisk completion:(nullable SDWebImageNoParamsBlock)completionBlock { - if (!image || !key) { + if ((!image && !imageData) || !key) { if (completionBlock) { completionBlock(); } return; } // if memory cache is enabled - if (toMemory && self.config.shouldCacheImagesInMemory) { + if (image && toMemory && self.config.shouldCacheImagesInMemory) { NSUInteger cost = image.sd_memoryCost; [self.memoryCache setObject:image forKey:key cost:cost]; } @@ -234,7 +276,7 @@ - (void)storeImage:(nullable UIImage *)image } - (void)_archivedDataWithImage:(UIImage *)image forKey:(NSString *)key { - if (!image) { + if (!image || !key) { return; } // Check extended data @@ -367,7 +409,11 @@ - (nullable UIImage *)imageFromDiskCacheForKey:(nullable NSString *)key options: SDImageCacheType cacheType = [context[SDWebImageContextStoreCacheType] integerValue]; shouldCacheToMomery = (cacheType == SDImageCacheTypeAll || cacheType == SDImageCacheTypeMemory); } - if (diskImage && self.config.shouldCacheImagesInMemory && shouldCacheToMomery) { + if (context[SDWebImageContextImageThumbnailPixelSize]) { + // Query full size cache key which generate a thumbnail, should not write back to full size memory cache + shouldCacheToMomery = NO; + } + if (shouldCacheToMomery && diskImage && self.config.shouldCacheImagesInMemory) { NSUInteger cost = diskImage.sd_memoryCost; [self.memoryCache setObject:diskImage forKey:key cost:cost]; } @@ -382,6 +428,28 @@ - (nullable UIImage *)imageFromCacheForKey:(nullable NSString *)key { - (nullable UIImage *)imageFromCacheForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context { // First check the in-memory cache... UIImage *image = [self imageFromMemoryCacheForKey:key]; + if (image) { + if (options & SDImageCacheDecodeFirstFrameOnly) { + // Ensure static image + Class animatedImageClass = image.class; + if (image.sd_isAnimated || ([animatedImageClass isSubclassOfClass:[UIImage class]] && [animatedImageClass conformsToProtocol:@protocol(SDAnimatedImage)])) { +#if SD_MAC + image = [[NSImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:kCGImagePropertyOrientationUp]; +#else + image = [[UIImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:image.imageOrientation]; +#endif + } + } else if (options & SDImageCacheMatchAnimatedImageClass) { + // Check image class matching + Class animatedImageClass = image.class; + Class desiredImageClass = context[SDWebImageContextAnimatedImageClass]; + if (desiredImageClass && ![animatedImageClass isSubclassOfClass:desiredImageClass]) { + image = nil; + } + } + } + + // Since we don't need to query imageData, return image if exist if (image) { return image; } @@ -461,19 +529,19 @@ - (void)_unarchiveObjectWithImage:(UIImage *)image forKey:(NSString *)key { image.sd_extendedObject = extendedObject; } -- (nullable NSOperation *)queryCacheOperationForKey:(NSString *)key done:(SDImageCacheQueryCompletionBlock)doneBlock { +- (nullable SDImageCacheToken *)queryCacheOperationForKey:(NSString *)key done:(SDImageCacheQueryCompletionBlock)doneBlock { return [self queryCacheOperationForKey:key options:0 done:doneBlock]; } -- (nullable NSOperation *)queryCacheOperationForKey:(NSString *)key options:(SDImageCacheOptions)options done:(SDImageCacheQueryCompletionBlock)doneBlock { +- (nullable SDImageCacheToken *)queryCacheOperationForKey:(NSString *)key options:(SDImageCacheOptions)options done:(SDImageCacheQueryCompletionBlock)doneBlock { return [self queryCacheOperationForKey:key options:options context:nil done:doneBlock]; } -- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context done:(nullable SDImageCacheQueryCompletionBlock)doneBlock { +- (nullable SDImageCacheToken *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context done:(nullable SDImageCacheQueryCompletionBlock)doneBlock { return [self queryCacheOperationForKey:key options:options context:context cacheType:SDImageCacheTypeAll done:doneBlock]; } -- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context cacheType:(SDImageCacheType)queryCacheType done:(nullable SDImageCacheQueryCompletionBlock)doneBlock { +- (nullable SDImageCacheToken *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context cacheType:(SDImageCacheType)queryCacheType done:(nullable SDImageCacheQueryCompletionBlock)doneBlock { if (!key) { if (doneBlock) { doneBlock(nil, nil, SDImageCacheTypeNone); @@ -524,57 +592,80 @@ - (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key opt } // Second check the disk cache... - NSOperation *operation = [NSOperation new]; + SDImageCacheToken *operation = [[SDImageCacheToken alloc] initWithDoneBlock:doneBlock]; + operation.key = key; // Check whether we need to synchronously query disk // 1. in-memory cache hit & memoryDataSync // 2. in-memory cache miss & diskDataSync BOOL shouldQueryDiskSync = ((image && options & SDImageCacheQueryMemoryDataSync) || (!image && options & SDImageCacheQueryDiskDataSync)); - void(^queryDiskBlock)(void) = ^{ - if (operation.isCancelled) { - if (doneBlock) { - doneBlock(nil, nil, SDImageCacheTypeNone); + NSData* (^queryDiskDataBlock)(void) = ^NSData* { + @synchronized (operation) { + if (operation.isCancelled) { + return nil; } - return; } - @autoreleasepool { - NSData *diskData = [self diskImageDataBySearchingAllPathsForKey:key]; - UIImage *diskImage; - if (image) { - // the image is from in-memory cache, but need image data - diskImage = image; - } else if (diskData) { - BOOL shouldCacheToMomery = YES; - if (context[SDWebImageContextStoreCacheType]) { - SDImageCacheType cacheType = [context[SDWebImageContextStoreCacheType] integerValue]; - shouldCacheToMomery = (cacheType == SDImageCacheTypeAll || cacheType == SDImageCacheTypeMemory); - } - // decode image data only if in-memory cache missed - diskImage = [self diskImageForKey:key data:diskData options:options context:context]; - if (shouldCacheToMomery && diskImage && self.config.shouldCacheImagesInMemory) { - NSUInteger cost = diskImage.sd_memoryCost; - [self.memoryCache setObject:diskImage forKey:key cost:cost]; - } + return [self diskImageDataBySearchingAllPathsForKey:key]; + }; + + UIImage* (^queryDiskImageBlock)(NSData*) = ^UIImage*(NSData* diskData) { + @synchronized (operation) { + if (operation.isCancelled) { + return nil; } - - if (doneBlock) { - if (shouldQueryDiskSync) { - doneBlock(diskImage, diskData, SDImageCacheTypeDisk); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - doneBlock(diskImage, diskData, SDImageCacheTypeDisk); - }); - } + } + + UIImage *diskImage; + if (image) { + // the image is from in-memory cache, but need image data + diskImage = image; + } else if (diskData) { + BOOL shouldCacheToMomery = YES; + if (context[SDWebImageContextStoreCacheType]) { + SDImageCacheType cacheType = [context[SDWebImageContextStoreCacheType] integerValue]; + shouldCacheToMomery = (cacheType == SDImageCacheTypeAll || cacheType == SDImageCacheTypeMemory); + } + if (context[SDWebImageContextImageThumbnailPixelSize]) { + // Query full size cache key which generate a thumbnail, should not write back to full size memory cache + shouldCacheToMomery = NO; + } + // decode image data only if in-memory cache missed + diskImage = [self diskImageForKey:key data:diskData options:options context:context]; + if (shouldCacheToMomery && diskImage && self.config.shouldCacheImagesInMemory) { + NSUInteger cost = diskImage.sd_memoryCost; + [self.memoryCache setObject:diskImage forKey:key cost:cost]; } } + return diskImage; }; // Query in ioQueue to keep IO-safe if (shouldQueryDiskSync) { - dispatch_sync(self.ioQueue, queryDiskBlock); + __block NSData* diskData; + __block UIImage* diskImage; + dispatch_sync(self.ioQueue, ^{ + diskData = queryDiskDataBlock(); + diskImage = queryDiskImageBlock(diskData); + }); + if (doneBlock) { + doneBlock(diskImage, diskData, SDImageCacheTypeDisk); + } } else { - dispatch_async(self.ioQueue, queryDiskBlock); + dispatch_async(self.ioQueue, ^{ + NSData* diskData = queryDiskDataBlock(); + UIImage* diskImage = queryDiskImageBlock(diskData); + @synchronized (operation) { + if (operation.isCancelled) { + return; + } + } + if (doneBlock) { + dispatch_async(dispatch_get_main_queue(), ^{ + doneBlock(diskImage, diskData, SDImageCacheTypeDisk); + }); + } + }); } return operation; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h index f2d19203d..468fa09ec 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h @@ -57,7 +57,8 @@ typedef NS_ENUM(NSUInteger, SDImageCacheConfigExpireType) { /* * The option to control weak memory cache for images. When enable, `SDImageCache`'s memory cache will use a weak maptable to store the image at the same time when it stored to memory, and get removed at the same time. * However when memory warning is triggered, since the weak maptable does not hold a strong reference to image instance, even when the memory cache itself is purged, some images which are held strongly by UIImageViews or other live instances can be recovered again, to avoid later re-query from disk cache or network. This may be helpful for the case, for example, when app enter background and memory is purged, cause cell flashing after re-enter foreground. - * Defaults to YES. You can change this option dynamically. + * When enabling this option, we will sync back the image from weak maptable to strong cache during next time top level `sd_setImage` function call. + * Defaults to NO (YES before 5.12.0 version). You can change this option dynamically. */ @property (assign, nonatomic) BOOL shouldUseWeakMemoryCache; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m index ad5bcaadd..fc0228595 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m @@ -27,7 +27,7 @@ - (instancetype)init { if (self = [super init]) { _shouldDisableiCloud = YES; _shouldCacheImagesInMemory = YES; - _shouldUseWeakMemoryCache = YES; + _shouldUseWeakMemoryCache = NO; _shouldRemoveExpiredDataWhenEnterBackground = YES; _shouldRemoveExpiredDataWhenTerminate = YES; _diskCacheReadingOptions = 0; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h index 48f7b5ca1..9d8404628 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h @@ -10,6 +10,7 @@ #import "SDWebImageCompat.h" #import "SDWebImageOperation.h" #import "SDWebImageDefine.h" +#import "SDImageCoder.h" /// Image Cache Type typedef NS_ENUM(NSInteger, SDImageCacheType) { @@ -54,6 +55,12 @@ typedef void(^SDImageCacheContainsCompletionBlock)(SDImageCacheType containsCach */ FOUNDATION_EXPORT UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonnull imageData, NSString * _Nonnull cacheKey, SDWebImageOptions options, SDWebImageContext * _Nullable context); +/// Get the decode options from the loading context options and cache key. This is the built-in translate between the web loading part to the decoding part (which does not depens on). +/// @param context The options arg from the input +/// @param options The context arg from the input +/// @param cacheKey The image cache key from the input. Should not be nil +FOUNDATION_EXPORT SDImageCoderOptions * _Nonnull SDGetDecodeOptionsFromContext(SDWebImageContext * _Nullable context, SDWebImageOptions options, NSString * _Nonnull cacheKey); + /** This is the image cache protocol to provide custom image cache for `SDWebImageManager`. Though the best practice to custom image cache, is to write your own class which conform `SDMemoryCache` or `SDDiskCache` protocol for `SDImageCache` class (See more on `SDImageCacheConfig.memoryCacheClass & SDImageCacheConfig.diskCacheClass`). diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m index 19db161a4..8ee8750c7 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m @@ -13,8 +13,7 @@ #import "UIImage+Metadata.h" #import "SDInternalMacros.h" -UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonnull imageData, NSString * _Nonnull cacheKey, SDWebImageOptions options, SDWebImageContext * _Nullable context) { - UIImage *image; +SDImageCoderOptions * _Nonnull SDGetDecodeOptionsFromContext(SDWebImageContext * _Nullable context, SDWebImageOptions options, NSString * _Nonnull cacheKey) { BOOL decodeFirstFrame = SD_OPTIONS_CONTAINS(options, SDWebImageDecodeFirstFrameOnly); NSNumber *scaleValue = context[SDWebImageContextImageScaleFactor]; CGFloat scale = scaleValue.doubleValue >= 1 ? scaleValue.doubleValue : SDImageScaleFactorForKey(cacheKey); @@ -38,6 +37,17 @@ mutableCoderOptions[SDImageCoderWebImageContext] = context; SDImageCoderOptions *coderOptions = [mutableCoderOptions copy]; + return coderOptions; +} + +UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonnull imageData, NSString * _Nonnull cacheKey, SDWebImageOptions options, SDWebImageContext * _Nullable context) { + NSCParameterAssert(imageData); + NSCParameterAssert(cacheKey); + UIImage *image; + SDImageCoderOptions *coderOptions = SDGetDecodeOptionsFromContext(context, options, cacheKey); + BOOL decodeFirstFrame = SD_OPTIONS_CONTAINS(options, SDWebImageDecodeFirstFrameOnly); + CGFloat scale = [coderOptions[SDImageCoderDecodeScaleFactor] doubleValue]; + // Grab the image coder id imageCoder; if ([context[SDWebImageContextImageCoder] conformsToProtocol:@protocol(SDImageCoder)]) { @@ -79,6 +89,8 @@ if (shouldDecode) { image = [SDImageCoderHelper decodedImageWithImage:image]; } + // assign the decode options, to let manager check whether to re-decode if needed + image.sd_decodeOptions = coderOptions; } return image; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h index 77b9d779b..a7be63e45 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h @@ -76,6 +76,7 @@ /** Create a scaled CGImage by the provided CGImage and size. This follows The Create Rule and you are response to call release after usage. It will detect whether the image size matching the scale size, if not, stretch the image to the target size. + @note If you need to keep aspect ratio, you can calculate the scale size by using `scaledSizeWithImageSize` first. @param cgImage The CGImage @param size The scale size in pixel. @@ -83,6 +84,16 @@ */ + (CGImageRef _Nullable)CGImageCreateScaled:(_Nonnull CGImageRef)cgImage size:(CGSize)size CF_RETURNS_RETAINED; +/** Scale the image size based on provided scale size, whether or not to preserve aspect ratio, whether or not to scale up. + @note For example, if you implements thumnail decoding, pass `shouldScaleUp` to NO to avoid the calculated size larger than image size. + + @param imageSize The image size (in pixel or point defined by caller) + @param scaleSize The scale size (in pixel or point defined by caller) + @param preserveAspectRatio Whether or not to preserve aspect ratio + @param shouldScaleUp Whether or not to scale up (or scale down only) + */ ++ (CGSize)scaledSizeWithImageSize:(CGSize)imageSize scaleSize:(CGSize)scaleSize preserveAspectRatio:(BOOL)preserveAspectRatio shouldScaleUp:(BOOL)shouldScaleUp; + /** Return the decoded image by the provided image. This one unlike `CGImageCreateDecoded:`, will not decode the image which contains alpha channel or animated image @param image The image to be decoded diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m index 4244a9243..763a9a49e 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m @@ -15,6 +15,7 @@ #import "SDAssociatedObject.h" #import "UIImage+Metadata.h" #import "SDInternalMacros.h" +#import "SDGraphicsImageRenderer.h" #import static inline size_t SDByteAlign(size_t size, size_t alignment) { @@ -57,12 +58,12 @@ + (UIImage *)animatedImageWithFrames:(NSArray *)frames { durations[i] = frames[i].duration * 1000; } NSUInteger const gcd = gcdArray(frameCount, durations); - __block NSUInteger totalDuration = 0; + __block NSTimeInterval totalDuration = 0; NSMutableArray *animatedImages = [NSMutableArray arrayWithCapacity:frameCount]; [frames enumerateObjectsUsingBlock:^(SDImageFrame * _Nonnull frame, NSUInteger idx, BOOL * _Nonnull stop) { UIImage *image = frame.image; NSUInteger duration = frame.duration * 1000; - totalDuration += duration; + totalDuration += frame.duration; NSUInteger repeatCount; if (gcd) { repeatCount = duration / gcd; @@ -74,7 +75,7 @@ + (UIImage *)animatedImageWithFrames:(NSArray *)frames { } }]; - animatedImage = [UIImage animatedImageWithImages:animatedImages duration:totalDuration / 1000.f]; + animatedImage = [UIImage animatedImageWithImages:animatedImages duration:totalDuration]; #else @@ -135,7 +136,6 @@ + (UIImage *)animatedImageWithFrames:(NSArray *)frames { avgDuration = 0.1; // if it's a animated image but no duration, set it to default 100ms (this do not have that 10ms limit like GIF or WebP to allow custom coder provide the limit) } - __block NSUInteger index = 0; __block NSUInteger repeatCount = 1; __block UIImage *previousImage = animatedImages.firstObject; [animatedImages enumerateObjectsUsingBlock:^(UIImage * _Nonnull image, NSUInteger idx, BOOL * _Nonnull stop) { @@ -149,15 +149,12 @@ + (UIImage *)animatedImageWithFrames:(NSArray *)frames { SDImageFrame *frame = [SDImageFrame frameWithImage:previousImage duration:avgDuration * repeatCount]; [frames addObject:frame]; repeatCount = 1; - index++; } previousImage = image; - // last one - if (idx == frameCount - 1) { - SDImageFrame *frame = [SDImageFrame frameWithImage:previousImage duration:avgDuration * repeatCount]; - [frames addObject:frame]; - } }]; + // last one + SDImageFrame *frame = [SDImageFrame frameWithImage:previousImage duration:avgDuration * repeatCount]; + [frames addObject:frame]; #else @@ -192,24 +189,10 @@ + (UIImage *)animatedImageWithFrames:(NSArray *)frames { } + (CGColorSpaceRef)colorSpaceGetDeviceRGB { -#if SD_MAC - CGColorSpaceRef screenColorSpace = NSScreen.mainScreen.colorSpace.CGColorSpace; - if (screenColorSpace) { - return screenColorSpace; - } -#endif static CGColorSpaceRef colorSpace; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ -#if SD_UIKIT - if (@available(iOS 9.0, tvOS 9.0, *)) { - colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); - } else { - colorSpace = CGColorSpaceCreateDeviceRGB(); - } -#else - colorSpace = CGColorSpaceCreateDeviceRGB(); -#endif + colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); }); return colorSpace; } @@ -256,11 +239,18 @@ + (CGImageRef)CGImageCreateDecoded:(CGImageRef)cgImage orientation:(CGImagePrope } BOOL hasAlpha = [self CGImageContainsAlpha:cgImage]; - // iOS prefer BGRA8888 (premultiplied) or BGRX8888 bitmapInfo for screen rendering, which is same as `UIGraphicsBeginImageContext()` or `- [CALayer drawInContext:]` - // Though you can use any supported bitmapInfo (see: https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-BCIBHHBB ) and let Core Graphics reorder it when you call `CGContextDrawImage` - // But since our build-in coders use this bitmapInfo, this can have a little performance benefit - CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host; - bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst; + // kCGImageAlphaNone is not supported in CGBitmapContextCreate. + // Check #3330 for more detail about why this bitmap is choosen. + CGBitmapInfo bitmapInfo; + if (hasAlpha) { + // iPhone GPU prefer to use BGRA8888, see: https://forums.raywenderlich.com/t/why-mtlpixelformat-bgra8unorm/53489 + // BGRA8888 + bitmapInfo = kCGBitmapByteOrder32Host | kCGImageAlphaPremultipliedFirst; + } else { + // BGR888 previously works on iOS 8~iOS 14, however, iOS 15+ will result a black image. FB9958017 + // RGB888 + bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaNoneSkipLast; + } CGContextRef context = CGBitmapContextCreate(NULL, newWidth, newHeight, 8, 0, [self colorSpaceGetDeviceRGB], bitmapInfo); if (!context) { return NULL; @@ -293,9 +283,18 @@ + (CGImageRef)CGImageCreateScaled:(CGImageRef)cgImage size:(CGSize)size { if (output_buffer.data) free(output_buffer.data); }; BOOL hasAlpha = [self CGImageContainsAlpha:cgImage]; - // iOS display alpha info (BGRA8888/BGRX8888) - CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host; - bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst; + // kCGImageAlphaNone is not supported in CGBitmapContextCreate. + // Check #3330 for more detail about why this bitmap is choosen. + CGBitmapInfo bitmapInfo; + if (hasAlpha) { + // iPhone GPU prefer to use BGRA8888, see: https://forums.raywenderlich.com/t/why-mtlpixelformat-bgra8unorm/53489 + // BGRA8888 + bitmapInfo = kCGBitmapByteOrder32Host | kCGImageAlphaPremultipliedFirst; + } else { + // BGR888 previously works on iOS 8~iOS 14, however, iOS 15+ will result a black image. FB9958017 + // RGB888 + bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaNoneSkipLast; + } vImage_CGImageFormat format = (vImage_CGImageFormat) { .bitsPerComponent = 8, .bitsPerPixel = 32, @@ -303,7 +302,7 @@ + (CGImageRef)CGImageCreateScaled:(CGImageRef)cgImage size:(CGSize)size { .bitmapInfo = bitmapInfo, .version = 0, .decode = NULL, - .renderingIntent = kCGRenderingIntentDefault, + .renderingIntent = CGImageGetRenderingIntent(cgImage) }; vImage_Error a_ret = vImageBuffer_InitWithCGImage(&input_buffer, &format, NULL, cgImage, kvImageNoFlags); @@ -326,21 +325,76 @@ + (CGImageRef)CGImageCreateScaled:(CGImageRef)cgImage size:(CGSize)size { return outputImage; } ++ (CGSize)scaledSizeWithImageSize:(CGSize)imageSize scaleSize:(CGSize)scaleSize preserveAspectRatio:(BOOL)preserveAspectRatio shouldScaleUp:(BOOL)shouldScaleUp { + CGFloat width = imageSize.width; + CGFloat height = imageSize.height; + CGFloat resultWidth; + CGFloat resultHeight; + + if (width <= 0 || height <= 0 || scaleSize.width <= 0 || scaleSize.height <= 0) { + // Protect + resultWidth = width; + resultHeight = height; + } else { + // Scale to fit + if (preserveAspectRatio) { + CGFloat pixelRatio = width / height; + CGFloat scaleRatio = scaleSize.width / scaleSize.height; + if (pixelRatio > scaleRatio) { + resultWidth = scaleSize.width; + resultHeight = ceil(scaleSize.width / pixelRatio); + } else { + resultHeight = scaleSize.height; + resultWidth = ceil(scaleSize.height * pixelRatio); + } + } else { + // Stretch + resultWidth = scaleSize.width; + resultHeight = scaleSize.height; + } + if (!shouldScaleUp) { + // Scale down only + resultWidth = MIN(width, resultWidth); + resultHeight = MIN(height, resultHeight); + } + } + + return CGSizeMake(resultWidth, resultHeight); +} + + (UIImage *)decodedImageWithImage:(UIImage *)image { if (![self shouldDecodeImage:image]) { return image; } - CGImageRef imageRef = [self CGImageCreateDecoded:image.CGImage]; +#if SD_UIKIT + // See: https://developer.apple.com/documentation/uikit/uiimage/3750834-imagebypreparingfordisplay + // Need CGImage-based + if (@available(iOS 15, tvOS 15, *)) { + UIImage *decodedImage = [image imageByPreparingForDisplay]; + if (decodedImage) { + SDImageCopyAssociatedObject(image, decodedImage); + decodedImage.sd_isDecoded = YES; + return decodedImage; + } + } +#endif + + CGImageRef imageRef = image.CGImage; if (!imageRef) { return image; } -#if SD_MAC - UIImage *decodedImage = [[UIImage alloc] initWithCGImage:imageRef scale:image.scale orientation:kCGImagePropertyOrientationUp]; -#else - UIImage *decodedImage = [[UIImage alloc] initWithCGImage:imageRef scale:image.scale orientation:image.imageOrientation]; -#endif - CGImageRelease(imageRef); + BOOL hasAlpha = [self CGImageContainsAlpha:imageRef]; + // Prefer to use new Image Renderer to re-draw image, instead of low-level CGBitmapContext and CGContextDrawImage + // This can keep both OS compatible and don't fight with Apple's performance optimization + SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; + format.opaque = !hasAlpha; + format.scale = image.scale; + CGSize imageSize = image.size; + SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:imageSize format:format]; + UIImage *decodedImage = [renderer imageWithActions:^(CGContextRef _Nonnull context) { + [image drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)]; + }]; SDImageCopyAssociatedObject(image, decodedImage); decodedImage.sd_isDecoded = YES; return decodedImage; @@ -351,46 +405,70 @@ + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image limitBytes:(NSU return image; } - if (![self shouldScaleDownImage:image limitBytes:bytes]) { - return [self decodedImageWithImage:image]; - } - CGFloat destTotalPixels; CGFloat tileTotalPixels; if (bytes == 0) { - bytes = kDestImageLimitBytes; + bytes = [self defaultScaleDownLimitBytes]; } + bytes = MAX(bytes, kBytesPerPixel); destTotalPixels = bytes / kBytesPerPixel; tileTotalPixels = destTotalPixels / 3; - CGContextRef destContext; + + CGImageRef sourceImageRef = image.CGImage; + CGSize sourceResolution = CGSizeZero; + sourceResolution.width = CGImageGetWidth(sourceImageRef); + sourceResolution.height = CGImageGetHeight(sourceImageRef); + + if (![self shouldScaleDownImagePixelSize:sourceResolution limitBytes:bytes]) { + return [self decodedImageWithImage:image]; + } + + CGFloat sourceTotalPixels = sourceResolution.width * sourceResolution.height; + // Determine the scale ratio to apply to the input image + // that results in an output image of the defined size. + // see kDestImageSizeMB, and how it relates to destTotalPixels. + CGFloat imageScale = sqrt(destTotalPixels / sourceTotalPixels); + CGSize destResolution = CGSizeZero; + destResolution.width = MAX(1, (int)(sourceResolution.width * imageScale)); + destResolution.height = MAX(1, (int)(sourceResolution.height * imageScale)); + +#if SD_UIKIT + // See: https://developer.apple.com/documentation/uikit/uiimage/3750835-imagebypreparingthumbnailofsize + // Need CGImage-based + if (@available(iOS 15, tvOS 15, *)) { + // Calculate thumbnail point size + CGFloat scale = image.scale ?: 1; + CGSize thumbnailSize = CGSizeMake(destResolution.width / scale, destResolution.height / scale); + UIImage *decodedImage = [image imageByPreparingThumbnailOfSize:thumbnailSize]; + if (decodedImage) { + SDImageCopyAssociatedObject(image, decodedImage); + decodedImage.sd_isDecoded = YES; + return decodedImage; + } + } +#endif + + CGContextRef destContext = NULL; // autorelease the bitmap context and all vars to help system to free memory when there are memory warning. // on iOS7, do not forget to call [[SDImageCache sharedImageCache] clearMemory]; @autoreleasepool { - CGImageRef sourceImageRef = image.CGImage; - - CGSize sourceResolution = CGSizeZero; - sourceResolution.width = CGImageGetWidth(sourceImageRef); - sourceResolution.height = CGImageGetHeight(sourceImageRef); - CGFloat sourceTotalPixels = sourceResolution.width * sourceResolution.height; - // Determine the scale ratio to apply to the input image - // that results in an output image of the defined size. - // see kDestImageSizeMB, and how it relates to destTotalPixels. - CGFloat imageScale = sqrt(destTotalPixels / sourceTotalPixels); - CGSize destResolution = CGSizeZero; - destResolution.width = MAX(1, (int)(sourceResolution.width * imageScale)); - destResolution.height = MAX(1, (int)(sourceResolution.height * imageScale)); - // device color space CGColorSpaceRef colorspaceRef = [self colorSpaceGetDeviceRGB]; BOOL hasAlpha = [self CGImageContainsAlpha:sourceImageRef]; - // iOS display alpha info (BGRA8888/BGRX8888) - CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host; - bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst; // kCGImageAlphaNone is not supported in CGBitmapContextCreate. - // Since the original image here has no alpha info, use kCGImageAlphaNoneSkipFirst - // to create bitmap graphics contexts without alpha info. + // Check #3330 for more detail about why this bitmap is choosen. + CGBitmapInfo bitmapInfo; + if (hasAlpha) { + // iPhone GPU prefer to use BGRA8888, see: https://forums.raywenderlich.com/t/why-mtlpixelformat-bgra8unorm/53489 + // BGRA8888 + bitmapInfo = kCGBitmapByteOrder32Host | kCGImageAlphaPremultipliedFirst; + } else { + // BGR888 previously works on iOS 8~iOS 14, however, iOS 15+ will result a black image. FB9958017 + // RGB888 + bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaNoneSkipLast; + } destContext = CGBitmapContextCreate(NULL, destResolution.width, destResolution.height, @@ -452,7 +530,7 @@ + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image limitBytes:(NSU float dify = destTile.size.height; destTile.size.height = CGImageGetHeight( sourceTileImageRef ) * imageScale; dify -= destTile.size.height; - destTile.origin.y += dify; + destTile.origin.y = MIN(0, destTile.origin.y + dify); } CGContextDrawImage( destContext, destTile, sourceTileImageRef ); CGImageRelease( sourceTileImageRef ); @@ -582,14 +660,10 @@ + (BOOL)shouldDecodeImage:(nullable UIImage *)image { return YES; } -+ (BOOL)shouldScaleDownImage:(nonnull UIImage *)image limitBytes:(NSUInteger)bytes { ++ (BOOL)shouldScaleDownImagePixelSize:(CGSize)sourceResolution limitBytes:(NSUInteger)bytes { BOOL shouldScaleDown = YES; - CGImageRef sourceImageRef = image.CGImage; - CGSize sourceResolution = CGSizeZero; - sourceResolution.width = CGImageGetWidth(sourceImageRef); - sourceResolution.height = CGImageGetHeight(sourceImageRef); - float sourceTotalPixels = sourceResolution.width * sourceResolution.height; + CGFloat sourceTotalPixels = sourceResolution.width * sourceResolution.height; if (sourceTotalPixels <= 0) { return NO; } @@ -599,7 +673,7 @@ + (BOOL)shouldScaleDownImage:(nonnull UIImage *)image limitBytes:(NSUInteger)byt } bytes = MAX(bytes, kBytesPerPixel); destTotalPixels = bytes / kBytesPerPixel; - float imageScale = destTotalPixels / sourceTotalPixels; + CGFloat imageScale = destTotalPixels / sourceTotalPixels; if (imageScale < 1) { shouldScaleDown = YES; } else { diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m index e4aaa5d9f..a1838b168 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m @@ -7,6 +7,7 @@ */ #import "SDImageGIFCoder.h" +#import "SDImageIOAnimatedCoderInternal.h" #if SD_MAC #import #else @@ -31,7 +32,7 @@ + (SDImageFormat)imageFormat { } + (NSString *)imageUTType { - return (__bridge NSString *)kUTTypeGIF; + return (__bridge NSString *)kSDUTTypeGIF; } + (NSString *)dictionaryProperty { diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m index e7c4ed45e..d1a1ca658 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m @@ -8,6 +8,7 @@ #import "SDImageGraphics.h" #import "NSImage+Compatibility.h" +#import "SDImageCoderHelper.h" #import "objc/runtime.h" #if SD_MAC @@ -16,17 +17,32 @@ static CGContextRef SDCGContextCreateBitmapContext(CGSize size, BOOL opaque, CGFloat scale) { if (scale == 0) { // Match `UIGraphicsBeginImageContextWithOptions`, reset to the scale factor of the device’s main screen if scale is 0. - scale = [NSScreen mainScreen].backingScaleFactor; + NSScreen *mainScreen = nil; + if (@available(macOS 10.12, *)) { + mainScreen = [NSScreen mainScreen]; + } else { + mainScreen = [NSScreen screens].firstObject; + } + scale = mainScreen.backingScaleFactor ?: 1.0f; } size_t width = ceil(size.width * scale); size_t height = ceil(size.height * scale); if (width < 1 || height < 1) return NULL; - //pre-multiplied BGRA for non-opaque, BGRX for opaque, 8-bits per component, as Apple's doc - CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); - CGImageAlphaInfo alphaInfo = kCGBitmapByteOrder32Host | (opaque ? kCGImageAlphaNoneSkipFirst : kCGImageAlphaPremultipliedFirst); - CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, 0, space, kCGBitmapByteOrderDefault | alphaInfo); - CGColorSpaceRelease(space); + CGColorSpaceRef space = [SDImageCoderHelper colorSpaceGetDeviceRGB]; + // kCGImageAlphaNone is not supported in CGBitmapContextCreate. + // Check #3330 for more detail about why this bitmap is choosen. + CGBitmapInfo bitmapInfo; + if (!opaque) { + // iPhone GPU prefer to use BGRA8888, see: https://forums.raywenderlich.com/t/why-mtlpixelformat-bgra8unorm/53489 + // BGRA8888 + bitmapInfo = kCGBitmapByteOrder32Host | kCGImageAlphaPremultipliedFirst; + } else { + // BGR888 previously works on iOS 8~iOS 14, however, iOS 15+ will result a black image. FB9958017 + // RGB888 + bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaNoneSkipLast; + } + CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, 0, space, bitmapInfo); if (!context) { return NULL; } @@ -96,7 +112,13 @@ void SDGraphicsEndImageContext(void) { } if (!scale) { // reset to the scale factor of the device’s main screen if scale is 0. - scale = [NSScreen mainScreen].backingScaleFactor; + NSScreen *mainScreen = nil; + if (@available(macOS 10.12, *)) { + mainScreen = [NSScreen mainScreen]; + } else { + mainScreen = [NSScreen screens].firstObject; + } + scale = mainScreen.backingScaleFactor ?: 1.0f; } NSImage *image = [[NSImage alloc] initWithCGImage:imageRef scale:scale orientation:kCGImagePropertyOrientationUp]; CGImageRelease(imageRef); diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h index 3f4149a44..a314c57a5 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h @@ -24,7 +24,7 @@ */ @property (class, readonly) SDImageFormat imageFormat; /** - The supported image format UTI Type. Such as `kUTTypeGIF`. + The supported image format UTI Type. Such as `kSDUTTypeGIF`. This can be used for cases when we can not detect `SDImageFormat. Such as progressive decoding's hint format `kCGImageSourceTypeIdentifierHint`. @note Subclass override. */ diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m index bcb79c75b..22c050d5b 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m @@ -191,8 +191,8 @@ + (UIImage *)createFrameAtIndex:(NSUInteger)index source:(CGImageSourceRef)sourc // Some options need to pass to `CGImageSourceCopyPropertiesAtIndex` before `CGImageSourceCreateImageAtIndex`, or ImageIO will ignore them because they parse once :) // Parse the image properties NSDictionary *properties = (__bridge_transfer NSDictionary *)CGImageSourceCopyPropertiesAtIndex(source, index, (__bridge CFDictionaryRef)options); - NSUInteger pixelWidth = [properties[(__bridge NSString *)kCGImagePropertyPixelWidth] unsignedIntegerValue]; - NSUInteger pixelHeight = [properties[(__bridge NSString *)kCGImagePropertyPixelHeight] unsignedIntegerValue]; + CGFloat pixelWidth = [properties[(__bridge NSString *)kCGImagePropertyPixelWidth] doubleValue]; + CGFloat pixelHeight = [properties[(__bridge NSString *)kCGImagePropertyPixelHeight] doubleValue]; CGImagePropertyOrientation exifOrientation = (CGImagePropertyOrientation)[properties[(__bridge NSString *)kCGImagePropertyOrientation] unsignedIntegerValue]; if (!exifOrientation) { exifOrientation = kCGImagePropertyOrientationUp; @@ -238,9 +238,9 @@ + (UIImage *)createFrameAtIndex:(NSUInteger)index source:(CGImageSourceRef)sourc CGFloat pixelRatio = pixelWidth / pixelHeight; CGFloat thumbnailRatio = thumbnailSize.width / thumbnailSize.height; if (pixelRatio > thumbnailRatio) { - maxPixelSize = thumbnailSize.width; + maxPixelSize = MAX(thumbnailSize.width, thumbnailSize.width / pixelRatio); } else { - maxPixelSize = thumbnailSize.height; + maxPixelSize = MAX(thumbnailSize.height, thumbnailSize.height * pixelRatio); } } else { maxPixelSize = MAX(thumbnailSize.width, thumbnailSize.height); @@ -311,11 +311,14 @@ - (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderO // Which decode frames in time and reduce memory usage if (thumbnailSize.width == 0 || thumbnailSize.height == 0) { SDAnimatedImageRep *imageRep = [[SDAnimatedImageRep alloc] initWithData:data]; - NSSize size = NSMakeSize(imageRep.pixelsWide / scale, imageRep.pixelsHigh / scale); - imageRep.size = size; - NSImage *animatedImage = [[NSImage alloc] initWithSize:size]; - [animatedImage addRepresentation:imageRep]; - return animatedImage; + if (imageRep) { + NSSize size = NSMakeSize(imageRep.pixelsWide / scale, imageRep.pixelsHigh / scale); + imageRep.size = size; + NSImage *animatedImage = [[NSImage alloc] initWithSize:size]; + [animatedImage addRepresentation:imageRep]; + animatedImage.sd_imageFormat = self.class.imageFormat; + return animatedImage; + } } #endif @@ -496,16 +499,18 @@ - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format o maxPixelSize = maxPixelSizeValue.CGSizeValue; #endif } - NSUInteger pixelWidth = CGImageGetWidth(imageRef); - NSUInteger pixelHeight = CGImageGetHeight(imageRef); + CGFloat pixelWidth = (CGFloat)CGImageGetWidth(imageRef); + CGFloat pixelHeight = (CGFloat)CGImageGetHeight(imageRef); CGFloat finalPixelSize = 0; - if (maxPixelSize.width > 0 && maxPixelSize.height > 0 && pixelWidth > maxPixelSize.width && pixelHeight > maxPixelSize.height) { + BOOL encodeFullImage = maxPixelSize.width == 0 || maxPixelSize.height == 0 || pixelWidth == 0 || pixelHeight == 0 || (pixelWidth <= maxPixelSize.width && pixelHeight <= maxPixelSize.height); + if (!encodeFullImage) { + // Thumbnail Encoding CGFloat pixelRatio = pixelWidth / pixelHeight; CGFloat maxPixelSizeRatio = maxPixelSize.width / maxPixelSize.height; if (pixelRatio > maxPixelSizeRatio) { - finalPixelSize = maxPixelSize.width; + finalPixelSize = MAX(maxPixelSize.width, maxPixelSize.width / pixelRatio); } else { - finalPixelSize = maxPixelSize.height; + finalPixelSize = MAX(maxPixelSize.height, maxPixelSize.height * pixelRatio); } properties[(__bridge NSString *)kCGImageDestinationImageMaxPixelSize] = @(finalPixelSize); } diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m index d858125dc..7b5b4a8ab 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m @@ -250,16 +250,18 @@ - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format o maxPixelSize = maxPixelSizeValue.CGSizeValue; #endif } - NSUInteger pixelWidth = CGImageGetWidth(imageRef); - NSUInteger pixelHeight = CGImageGetHeight(imageRef); - if (maxPixelSize.width > 0 && maxPixelSize.height > 0 && pixelWidth > maxPixelSize.width && pixelHeight > maxPixelSize.height) { + CGFloat pixelWidth = (CGFloat)CGImageGetWidth(imageRef); + CGFloat pixelHeight = (CGFloat)CGImageGetHeight(imageRef); + CGFloat finalPixelSize = 0; + BOOL encodeFullImage = maxPixelSize.width == 0 || maxPixelSize.height == 0 || pixelWidth == 0 || pixelHeight == 0 || (pixelWidth <= maxPixelSize.width && pixelHeight <= maxPixelSize.height); + if (!encodeFullImage) { + // Thumbnail Encoding CGFloat pixelRatio = pixelWidth / pixelHeight; CGFloat maxPixelSizeRatio = maxPixelSize.width / maxPixelSize.height; - CGFloat finalPixelSize; if (pixelRatio > maxPixelSizeRatio) { - finalPixelSize = maxPixelSize.width; + finalPixelSize = MAX(maxPixelSize.width, maxPixelSize.width / pixelRatio); } else { - finalPixelSize = maxPixelSize.height; + finalPixelSize = MAX(maxPixelSize.height, maxPixelSize.height * pixelRatio); } properties[(__bridge NSString *)kCGImageDestinationImageMaxPixelSize] = @(finalPixelSize); } diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m index d6b959487..77d30737f 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m @@ -13,6 +13,7 @@ #import "SDAnimatedImage.h" #import "UIImage+Metadata.h" #import "SDInternalMacros.h" +#import "SDImageCacheDefine.h" #import "objc/runtime.h" SDWebImageContextOption const SDWebImageContextLoaderCachedImage = @"loaderCachedImage"; @@ -41,28 +42,9 @@ void SDImageLoaderSetProgressiveCoder(id operation, id= 1 ? scaleValue.doubleValue : SDImageScaleFactorForKey(cacheKey); - NSNumber *preserveAspectRatioValue = context[SDWebImageContextImagePreserveAspectRatio]; - NSValue *thumbnailSizeValue; - BOOL shouldScaleDown = SD_OPTIONS_CONTAINS(options, SDWebImageScaleDownLargeImages); - if (shouldScaleDown) { - CGFloat thumbnailPixels = SDImageCoderHelper.defaultScaleDownLimitBytes / 4; - CGFloat dimension = ceil(sqrt(thumbnailPixels)); - thumbnailSizeValue = @(CGSizeMake(dimension, dimension)); - } - if (context[SDWebImageContextImageThumbnailPixelSize]) { - thumbnailSizeValue = context[SDWebImageContextImageThumbnailPixelSize]; - } - - SDImageCoderMutableOptions *mutableCoderOptions = [NSMutableDictionary dictionaryWithCapacity:2]; - mutableCoderOptions[SDImageCoderDecodeFirstFrameOnly] = @(decodeFirstFrame); - mutableCoderOptions[SDImageCoderDecodeScaleFactor] = @(scale); - mutableCoderOptions[SDImageCoderDecodePreserveAspectRatio] = preserveAspectRatioValue; - mutableCoderOptions[SDImageCoderDecodeThumbnailPixelSize] = thumbnailSizeValue; - mutableCoderOptions[SDImageCoderWebImageContext] = context; - SDImageCoderOptions *coderOptions = [mutableCoderOptions copy]; + CGFloat scale = [coderOptions[SDImageCoderDecodeScaleFactor] doubleValue]; // Grab the image coder id imageCoder; @@ -106,6 +88,8 @@ void SDImageLoaderSetProgressiveCoder(id operation, id operation, id)loader { #pragma mark - SDImageLoader - (BOOL)canRequestImageForURL:(nullable NSURL *)url { + return [self canRequestImageForURL:url options:0 context:nil]; +} + +- (BOOL)canRequestImageForURL:(NSURL *)url options:(SDWebImageOptions)options context:(SDWebImageContext *)context { NSArray> *loaders = self.loaders; for (id loader in loaders.reverseObjectEnumerator) { - if ([loader canRequestImageForURL:url]) { - return YES; + if ([loader respondsToSelector:@selector(canRequestImageForURL:options:context:)]) { + if ([loader canRequestImageForURL:url options:options context:context]) { + return YES; + } + } else { + if ([loader canRequestImageForURL:url]) { + return YES; + } } } return NO; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h index 83a2d186e..3fb0976ae 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h @@ -105,6 +105,8 @@ typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) { /** * By default, placeholder images are loaded while the image is loading. This flag will delay the loading * of the placeholder image until after the image has finished loading. + * @note This is used to treate placeholder as an **Error Placeholder** but not **Loading Placeholder** by defaults. if the image loading is cancelled or error, the placeholder will be always set. + * @note Therefore, if you want both **Error Placeholder** and **Loading Placeholder** exist, use `SDWebImageAvoidAutoSetImage` to manually set the two placeholders and final loaded image by your hand depends on loading result. */ SDWebImageDelayPlaceholder = 1 << 8, diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m index 845730f02..aee8ca4dd 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m @@ -28,7 +28,13 @@ inline CGFloat SDImageScaleFactorForKey(NSString * _Nullable key) { #elif SD_UIKIT if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) #elif SD_MAC - if ([[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)]) + NSScreen *mainScreen = nil; + if (@available(macOS 10.12, *)) { + mainScreen = [NSScreen mainScreen]; + } else { + mainScreen = [NSScreen screens].firstObject; + } + if ([mainScreen respondsToSelector:@selector(backingScaleFactor)]) #endif { // a@2x.png -> 8 diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h index 49ecd5d36..a2f50f46a 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h @@ -157,7 +157,7 @@ typedef SDImageLoaderCompletedBlock SDWebImageDownloaderCompletedBlock; /** * Set the response modifier to modify the original download response during image load. - * This request modifier method will be called for each downloading image response. Return the original response means no modification. Return nil will mark current download as cancelled. + * This response modifier method will be called for each downloading image response. Return the original response means no modification. Return nil will mark current download as cancelled. * Defaults to nil, means does not modify the original download response. * @note If you want to modify single response, consider using `SDWebImageContextDownloadResponseModifier` context option. */ diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m index 2eeb05e4e..cd6b7966b 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m @@ -349,6 +349,14 @@ - (nullable SDWebImageDownloadToken *)downloadImageWithURL:(nullable NSURL *)url operation.minimumProgressInterval = MIN(MAX(self.config.minimumProgressInterval, 0), 1); } + if ([operation respondsToSelector:@selector(setAcceptableStatusCodes:)]) { + operation.acceptableStatusCodes = self.config.acceptableStatusCodes; + } + + if ([operation respondsToSelector:@selector(setAcceptableContentTypes:)]) { + operation.acceptableContentTypes = self.config.acceptableContentTypes; + } + if (options & SDWebImageDownloaderHighPriority) { operation.queuePriority = NSOperationQueuePriorityHigh; } else if (options & SDWebImageDownloaderLowPriority) { diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h index 5a8cf5839..9d5e67bf7 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h @@ -95,4 +95,19 @@ typedef NS_ENUM(NSInteger, SDWebImageDownloaderExecutionOrder) { */ @property (nonatomic, copy, nullable) NSString *password; +/** + * Set the acceptable HTTP Response status code. The status code which beyond the range will mark the download operation failed. + * For example, if we config [200, 400) but server response is 503, the download will fail with error code `SDWebImageErrorInvalidDownloadStatusCode`. + * Defaults to [200,400). Nil means no validation at all. + */ +@property (nonatomic, copy, nullable) NSIndexSet *acceptableStatusCodes; + +/** + * Set the acceptable HTTP Response content type. The content type beyond the set will mark the download operation failed. + * For example, if we config ["image/png"] but server response is "application/json", the download will fail with error code `SDWebImageErrorInvalidDownloadContentType`. + * Normally you don't need this for image format detection because we use image's data file signature magic bytes: https://en.wikipedia.org/wiki/List_of_file_signatures + * Defaults to nil. Nil means no validation at all. + */ +@property (nonatomic, copy, nullable) NSSet *acceptableContentTypes; + @end diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m index 1fc93308a..6120bd8a9 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m @@ -26,6 +26,7 @@ - (instancetype)init { _maxConcurrentDownloads = 6; _downloadTimeout = 15.0; _executionOrder = SDWebImageDownloaderFIFOExecutionOrder; + _acceptableStatusCodes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 100)]; } return self; } @@ -41,6 +42,8 @@ - (id)copyWithZone:(NSZone *)zone { config.urlCredential = self.urlCredential; config.username = self.username; config.password = self.password; + config.acceptableStatusCodes = self.acceptableStatusCodes; + config.acceptableContentTypes = self.acceptableContentTypes; return config; } diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h index 5fc192890..1cd2a50dc 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h @@ -37,8 +37,12 @@ @optional @property (strong, nonatomic, readonly, nullable) NSURLSessionTask *dataTask; @property (strong, nonatomic, readonly, nullable) NSURLSessionTaskMetrics *metrics API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); + +// These operation-level config was inherited from downloader. See `SDWebImageDownloaderConfig` for documentation. @property (strong, nonatomic, nullable) NSURLCredential *credential; @property (assign, nonatomic) double minimumProgressInterval; +@property (copy, nonatomic, nullable) NSIndexSet *acceptableStatusCodes; +@property (copy, nonatomic, nullable) NSSet *acceptableContentTypes; @end @@ -85,6 +89,21 @@ */ @property (assign, nonatomic) double minimumProgressInterval; +/** + * Set the acceptable HTTP Response status code. The status code which beyond the range will mark the download operation failed. + * For example, if we config [200, 400) but server response is 503, the download will fail with error code `SDWebImageErrorInvalidDownloadStatusCode`. + * Defaults to [200,400). Nil means no validation at all. + */ +@property (copy, nonatomic, nullable) NSIndexSet *acceptableStatusCodes; + +/** + * Set the acceptable HTTP Response content type. The content type beyond the set will mark the download operation failed. + * For example, if we config ["image/png"] but server response is "application/json", the download will fail with error code `SDWebImageErrorInvalidDownloadContentType`. + * Normally you don't need this for image format detection because we use image's data file signature magic bytes: https://en.wikipedia.org/wiki/List_of_file_signatures + * Defaults to nil. Nil means no validation at all. + */ +@property (copy, nonatomic, nullable) NSSet *acceptableContentTypes; + /** * The options for the receiver. */ diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m index 1de1e7e95..6df031973 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m @@ -191,6 +191,7 @@ - (void)start { } if (cachedResponse) { self.cachedData = cachedResponse.data; + self.response = cachedResponse.response; } } @@ -323,7 +324,9 @@ - (void)URLSession:(NSURLSession *)session response = [self.responseModifier modifiedResponseWithResponse:response]; if (!response) { valid = NO; - self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidDownloadResponse userInfo:@{NSLocalizedDescriptionKey : @"Download marked as failed because response is nil"}]; + self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain + code:SDWebImageErrorInvalidDownloadResponse + userInfo:@{NSLocalizedDescriptionKey : @"Download marked as failed because response is nil"}]; } } @@ -332,18 +335,42 @@ - (void)URLSession:(NSURLSession *)session self.expectedSize = expected; self.response = response; - NSInteger statusCode = [response respondsToSelector:@selector(statusCode)] ? ((NSHTTPURLResponse *)response).statusCode : 200; - // Status code should between [200,400) - BOOL statusCodeValid = statusCode >= 200 && statusCode < 400; + // Check status code valid (defaults [200,400)) + NSInteger statusCode = [response isKindOfClass:NSHTTPURLResponse.class] ? ((NSHTTPURLResponse *)response).statusCode : 0; + BOOL statusCodeValid = YES; + if (valid && statusCode > 0 && self.acceptableStatusCodes) { + statusCodeValid = [self.acceptableStatusCodes containsIndex:statusCode]; + } if (!statusCodeValid) { valid = NO; - self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidDownloadStatusCode userInfo:@{NSLocalizedDescriptionKey : @"Download marked as failed because response status code is not in 200-400", SDWebImageErrorDownloadStatusCodeKey : @(statusCode)}]; + self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain + code:SDWebImageErrorInvalidDownloadStatusCode + userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"Download marked as failed because of invalid response status code %ld", (long)statusCode], + SDWebImageErrorDownloadStatusCodeKey : @(statusCode), + SDWebImageErrorDownloadResponseKey : response}]; + } + // Check content type valid (defaults nil) + NSString *contentType = [response isKindOfClass:NSHTTPURLResponse.class] ? ((NSHTTPURLResponse *)response).MIMEType : nil; + BOOL contentTypeValid = YES; + if (valid && contentType.length > 0 && self.acceptableContentTypes) { + contentTypeValid = [self.acceptableContentTypes containsObject:contentType]; + } + if (!contentTypeValid) { + valid = NO; + self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain + code:SDWebImageErrorInvalidDownloadContentType + userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"Download marked as failed because of invalid response content type %@", contentType], + SDWebImageErrorDownloadContentTypeKey : contentType, + SDWebImageErrorDownloadResponseKey : response}]; } //'304 Not Modified' is an exceptional one //URLSession current behavior will return 200 status code when the server respond 304 and URLCache hit. But this is not a standard behavior and we just add a check - if (statusCode == 304 && !self.cachedData) { + if (valid && statusCode == 304 && !self.cachedData) { valid = NO; - self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCacheNotModified userInfo:@{NSLocalizedDescriptionKey : @"Download response status code is 304 not modified and ignored"}]; + self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain + code:SDWebImageErrorCacheNotModified + userInfo:@{NSLocalizedDescriptionKey: @"Download response status code is 304 not modified and ignored", + SDWebImageErrorDownloadResponseKey : response}]; } if (valid) { @@ -396,7 +423,7 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data // Progressive decoding Only decode partial image, full image in `URLSession:task:didCompleteWithError:` if (supportProgressive && !finished) { // Get the image data - NSData *imageData = [self.imageData copy]; + NSData *imageData = self.imageData; // keep maximum one progressive decode process during download if (self.coderQueue.operationCount == 0) { @@ -476,7 +503,10 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didComp * then we should check if the cached data is equal to image data */ if (self.options & SDWebImageDownloaderIgnoreCachedResponse && [self.cachedData isEqualToData:imageData]) { - self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCacheNotModified userInfo:@{NSLocalizedDescriptionKey : @"Downloaded image is not modified and ignored"}]; + self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain + code:SDWebImageErrorCacheNotModified + userInfo:@{NSLocalizedDescriptionKey : @"Downloaded image is not modified and ignored", + SDWebImageErrorDownloadResponseKey : self.response}]; // call completion block with not modified error [self callCompletionBlocksWithError:self.responseError]; [self done]; @@ -535,7 +565,9 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didRece credential = self.credential; disposition = NSURLSessionAuthChallengeUseCredential; } else { - disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; + // Web Server like Nginx can set `ssl_verify_client` to optional but not always on + // We'd better use default handling here + disposition = NSURLSessionAuthChallengePerformDefaultHandling; } } else { disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h index 2b412010f..bb91d0bd0 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h @@ -11,8 +11,12 @@ FOUNDATION_EXPORT NSErrorDomain const _Nonnull SDWebImageErrorDomain; +/// The response instance for invalid download response (NSURLResponse *) +FOUNDATION_EXPORT NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadResponseKey; /// The HTTP status code for invalid download response (NSNumber *) FOUNDATION_EXPORT NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadStatusCodeKey; +/// The HTTP MIME content type for invalid download response (NSString *) +FOUNDATION_EXPORT NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadContentTypeKey; /// SDWebImage error domain and codes typedef NS_ERROR_ENUM(SDWebImageErrorDomain, SDWebImageError) { @@ -24,4 +28,5 @@ typedef NS_ERROR_ENUM(SDWebImageErrorDomain, SDWebImageError) { SDWebImageErrorInvalidDownloadStatusCode = 2001, // The image download response a invalid status code. You can check the status code in error's userInfo under `SDWebImageErrorDownloadStatusCodeKey` SDWebImageErrorCancelled = 2002, // The image loading operation is cancelled before finished, during either async disk cache query, or waiting before actual network request. For actual network request error, check `NSURLErrorDomain` error domain and code. SDWebImageErrorInvalidDownloadResponse = 2003, // When using response modifier, the modified download response is nil and marked as failed. + SDWebImageErrorInvalidDownloadContentType = 2004, // The image download response a invalid content type. You can check the MIME content type in error's userInfo under `SDWebImageErrorDownloadContentTypeKey` }; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m index 6d1747697..bd0d17ad9 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m @@ -10,4 +10,7 @@ #import "SDWebImageError.h" NSErrorDomain const _Nonnull SDWebImageErrorDomain = @"SDWebImageErrorDomain"; + +NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadResponseKey = @"SDWebImageErrorDownloadResponseKey"; NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadStatusCodeKey = @"SDWebImageErrorDownloadStatusCodeKey"; +NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadContentTypeKey = @"SDWebImageErrorDownloadContentTypeKey"; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m index 6d4a8ee37..b45a08a40 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m @@ -12,6 +12,7 @@ #if SD_MAC #import +#import #endif #pragma mark - Activity Indicator diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m index b434d7834..73e9c5ec4 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m @@ -112,6 +112,26 @@ - (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url { return key; } +- (nullable NSString *)originalCacheKeyForURL:(nullable NSURL *)url context:(nullable SDWebImageContext *)context { + if (!url) { + return @""; + } + + NSString *key; + // Cache Key Filter + id cacheKeyFilter = self.cacheKeyFilter; + if (context[SDWebImageContextCacheKeyFilter]) { + cacheKeyFilter = context[SDWebImageContextCacheKeyFilter]; + } + if (cacheKeyFilter) { + key = [cacheKeyFilter cacheKeyForURL:url]; + } else { + key = url.absoluteString; + } + + return key; +} + - (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url context:(nullable SDWebImageContext *)context { if (!url) { return @""; @@ -278,10 +298,14 @@ - (void)callCacheProcessForOperation:(nonnull SDWebImageCombinedOperation *)oper [self callCompletionBlockForOperation:operation completion:completedBlock error:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCancelled userInfo:@{NSLocalizedDescriptionKey : @"Operation cancelled by user during querying the cache"}] url:url]; [self safelyRemoveOperationFromRunning:operation]; return; - } else if (context[SDWebImageContextImageTransformer] && !cachedImage) { - // Have a chance to query original cache instead of downloading - [self callOriginalCacheProcessForOperation:operation url:url options:options context:context progress:progressBlock completed:completedBlock]; - return; + } else if (!cachedImage) { + BOOL mayInOriginalCache = context[SDWebImageContextImageTransformer] || context[SDWebImageContextImageThumbnailPixelSize]; + // Have a chance to query original cache instead of downloading, then applying transform + // Thumbnail decoding is done inside SDImageCache's decoding part, which does not need post processing for transform + if (mayInOriginalCache) { + [self callOriginalCacheProcessForOperation:operation url:url options:options context:context progress:progressBlock completed:completedBlock]; + return; + } } // Continue download process @@ -321,10 +345,8 @@ - (void)callOriginalCacheProcessForOperation:(nonnull SDWebImageCombinedOperatio // Check whether we should query original cache BOOL shouldQueryOriginalCache = (originalQueryCacheType != SDImageCacheTypeNone); if (shouldQueryOriginalCache) { - // Disable transformer for original cache key generation - SDWebImageMutableContext *tempContext = [context mutableCopy]; - tempContext[SDWebImageContextImageTransformer] = [NSNull null]; - NSString *key = [self cacheKeyForURL:url context:tempContext]; + // Get original cache key generation without transformer/thumbnail + NSString *key = [self originalCacheKeyForURL:url context:context]; @weakify(operation); operation.cacheOperation = [imageCache queryImageForKey:key options:options context:context cacheType:originalQueryCacheType completion:^(UIImage * _Nullable cachedImage, NSData * _Nullable cachedData, SDImageCacheType cacheType) { @strongify(operation); @@ -333,20 +355,20 @@ - (void)callOriginalCacheProcessForOperation:(nonnull SDWebImageCombinedOperatio [self callCompletionBlockForOperation:operation completion:completedBlock error:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCancelled userInfo:@{NSLocalizedDescriptionKey : @"Operation cancelled by user during querying the cache"}] url:url]; [self safelyRemoveOperationFromRunning:operation]; return; - } else if (context[SDWebImageContextImageTransformer] && !cachedImage) { + } else if (!cachedImage) { // Original image cache miss. Continue download process - [self callDownloadProcessForOperation:operation url:url options:options context:context cachedImage:nil cachedData:nil cacheType:originalQueryCacheType progress:progressBlock completed:completedBlock]; + [self callDownloadProcessForOperation:operation url:url options:options context:context cachedImage:nil cachedData:nil cacheType:SDImageCacheTypeNone progress:progressBlock completed:completedBlock]; return; } // Use the store cache process instead of downloading, and ignore .refreshCached option for now - [self callStoreCacheProcessForOperation:operation url:url options:options context:context downloadedImage:cachedImage downloadedData:cachedData finished:YES progress:progressBlock completed:completedBlock]; + [self callStoreCacheProcessForOperation:operation url:url options:options context:context downloadedImage:cachedImage downloadedData:cachedData cacheType:cacheType finished:YES completed:completedBlock]; [self safelyRemoveOperationFromRunning:operation]; }]; } else { // Continue download process - [self callDownloadProcessForOperation:operation url:url options:options context:context cachedImage:nil cachedData:nil cacheType:originalQueryCacheType progress:progressBlock completed:completedBlock]; + [self callDownloadProcessForOperation:operation url:url options:options context:context cachedImage:nil cachedData:nil cacheType:SDImageCacheTypeNone progress:progressBlock completed:completedBlock]; } } @@ -420,7 +442,7 @@ - (void)callDownloadProcessForOperation:(nonnull SDWebImageCombinedOperation *)o SD_UNLOCK(self->_failedURLsLock); } // Continue store cache process - [self callStoreCacheProcessForOperation:operation url:url options:options context:context downloadedImage:downloadedImage downloadedData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; + [self callStoreCacheProcessForOperation:operation url:url options:options context:context downloadedImage:downloadedImage downloadedData:downloadedData cacheType:SDImageCacheTypeNone finished:finished completed:completedBlock]; } if (finished) { @@ -444,8 +466,8 @@ - (void)callStoreCacheProcessForOperation:(nonnull SDWebImageCombinedOperation * context:(SDWebImageContext *)context downloadedImage:(nullable UIImage *)downloadedImage downloadedData:(nullable NSData *)downloadedData + cacheType:(SDImageCacheType)cacheType finished:(BOOL)finished - progress:(nullable SDImageLoaderProgressBlock)progressBlock completed:(nullable SDInternalCompletionBlock)completedBlock { // Grab the image cache to use, choose standalone original cache firstly id imageCache; @@ -459,6 +481,7 @@ - (void)callStoreCacheProcessForOperation:(nonnull SDWebImageCombinedOperation * imageCache = self.imageCache; } } + BOOL waitStoreCache = SD_OPTIONS_CONTAINS(options, SDWebImageWaitStoreCache); // the target image store cache type SDImageCacheType storeCacheType = SDImageCacheTypeAll; if (context[SDWebImageContextStoreCacheType]) { @@ -469,44 +492,53 @@ - (void)callStoreCacheProcessForOperation:(nonnull SDWebImageCombinedOperation * if (context[SDWebImageContextOriginalStoreCacheType]) { originalStoreCacheType = [context[SDWebImageContextOriginalStoreCacheType] integerValue]; } - // Disable transformer for original cache key generation - SDWebImageMutableContext *tempContext = [context mutableCopy]; - tempContext[SDWebImageContextImageTransformer] = [NSNull null]; - NSString *key = [self cacheKeyForURL:url context:tempContext]; id transformer = context[SDWebImageContextImageTransformer]; if (![transformer conformsToProtocol:@protocol(SDImageTransformer)]) { transformer = nil; } id cacheSerializer = context[SDWebImageContextCacheSerializer]; + // transformer check BOOL shouldTransformImage = downloadedImage && transformer; shouldTransformImage = shouldTransformImage && (!downloadedImage.sd_isAnimated || (options & SDWebImageTransformAnimatedImage)); shouldTransformImage = shouldTransformImage && (!downloadedImage.sd_isVector || (options & SDWebImageTransformVectorImage)); - BOOL shouldCacheOriginal = downloadedImage && finished; + // thumbnail check + BOOL shouldThumbnailImage = context[SDWebImageContextImageThumbnailPixelSize] != nil || downloadedImage.sd_decodeOptions[SDImageCoderDecodeThumbnailPixelSize] != nil; + + BOOL shouldCacheOriginal = downloadedImage && finished && cacheType == SDImageCacheTypeNone; // if available, store original image to cache if (shouldCacheOriginal) { + // Get original cache key generation without transformer/thumbnail + NSString *key = [self originalCacheKeyForURL:url context:context]; // normally use the store cache type, but if target image is transformed, use original store cache type instead - SDImageCacheType targetStoreCacheType = shouldTransformImage ? originalStoreCacheType : storeCacheType; - if (cacheSerializer && (targetStoreCacheType == SDImageCacheTypeDisk || targetStoreCacheType == SDImageCacheTypeAll)) { + SDImageCacheType targetStoreCacheType = (shouldTransformImage || shouldThumbnailImage) ? originalStoreCacheType : storeCacheType; + UIImage *fullSizeImage = downloadedImage; + if (shouldThumbnailImage) { + // Thumbnail decoding does not keep original image + // Here we only store the original data to disk for original cache key + // Store thumbnail image to memory for thumbnail cache key later in `storeTransformCacheProcess` + fullSizeImage = nil; + } + if (fullSizeImage && cacheSerializer && (targetStoreCacheType == SDImageCacheTypeDisk || targetStoreCacheType == SDImageCacheTypeAll)) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ @autoreleasepool { - NSData *cacheData = [cacheSerializer cacheDataWithImage:downloadedImage originalData:downloadedData imageURL:url]; - [self storeImage:downloadedImage imageData:cacheData forKey:key imageCache:imageCache cacheType:targetStoreCacheType options:options context:context completion:^{ + NSData *cacheData = [cacheSerializer cacheDataWithImage:fullSizeImage originalData:downloadedData imageURL:url]; + [self storeImage:fullSizeImage imageData:cacheData forKey:key imageCache:imageCache cacheType:targetStoreCacheType waitStoreCache:waitStoreCache completion:^{ // Continue transform process - [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; + [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData cacheType:cacheType finished:finished completed:completedBlock]; }]; } }); } else { - [self storeImage:downloadedImage imageData:downloadedData forKey:key imageCache:imageCache cacheType:targetStoreCacheType options:options context:context completion:^{ + [self storeImage:fullSizeImage imageData:downloadedData forKey:key imageCache:imageCache cacheType:targetStoreCacheType waitStoreCache:waitStoreCache completion:^{ // Continue transform process - [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; + [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData cacheType:cacheType finished:finished completed:completedBlock]; }]; } } else { // Continue transform process - [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; + [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData cacheType:cacheType finished:finished completed:completedBlock]; } } @@ -517,56 +549,133 @@ - (void)callTransformProcessForOperation:(nonnull SDWebImageCombinedOperation *) context:(SDWebImageContext *)context originalImage:(nullable UIImage *)originalImage originalData:(nullable NSData *)originalData + cacheType:(SDImageCacheType)cacheType finished:(BOOL)finished - progress:(nullable SDImageLoaderProgressBlock)progressBlock completed:(nullable SDInternalCompletionBlock)completedBlock { - // Grab the image cache to use - id imageCache; - if ([context[SDWebImageContextImageCache] conformsToProtocol:@protocol(SDImageCache)]) { - imageCache = context[SDWebImageContextImageCache]; - } else { - imageCache = self.imageCache; - } // the target image store cache type SDImageCacheType storeCacheType = SDImageCacheTypeAll; if (context[SDWebImageContextStoreCacheType]) { storeCacheType = [context[SDWebImageContextStoreCacheType] integerValue]; } - // transformed cache key - NSString *key = [self cacheKeyForURL:url context:context]; id transformer = context[SDWebImageContextImageTransformer]; if (![transformer conformsToProtocol:@protocol(SDImageTransformer)]) { transformer = nil; } - id cacheSerializer = context[SDWebImageContextCacheSerializer]; + // transformer check BOOL shouldTransformImage = originalImage && transformer; shouldTransformImage = shouldTransformImage && (!originalImage.sd_isAnimated || (options & SDWebImageTransformAnimatedImage)); shouldTransformImage = shouldTransformImage && (!originalImage.sd_isVector || (options & SDWebImageTransformVectorImage)); - // if available, store transformed image to cache + + // thumbnail check + // This exist when previous thumbnail pipeline callback into next full size pipeline, because we share the same URL download but need different image + // Actually this is a hack, we attach the metadata into image object, which should design a better concept like `ImageInfo` and keep that around + // Redecode need the full size data (progressive decoding or third-party loaders may callback nil data) + BOOL shouldRedecodeFullImage = originalData && cacheType == SDImageCacheTypeNone; + if (shouldRedecodeFullImage) { + // If the retuened image decode options exist (some loaders impl does not use `SDImageLoaderDecode`) but does not match the options we provide, redecode + SDImageCoderOptions *returnedDecodeOptions = originalImage.sd_decodeOptions; + if (returnedDecodeOptions) { + SDImageCoderOptions *decodeOptions = SDGetDecodeOptionsFromContext(context, options, url.absoluteString); + shouldRedecodeFullImage = ![returnedDecodeOptions isEqualToDictionary:decodeOptions]; + } else { + shouldRedecodeFullImage = NO; + } + } + if (shouldTransformImage) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ @autoreleasepool { - UIImage *transformedImage = [transformer transformedImageWithImage:originalImage forKey:key]; - if (transformedImage && finished) { - BOOL imageWasTransformed = ![transformedImage isEqual:originalImage]; - NSData *cacheData; - // pass nil if the image was transformed, so we can recalculate the data from the image - if (cacheSerializer && (storeCacheType == SDImageCacheTypeDisk || storeCacheType == SDImageCacheTypeAll)) { - cacheData = [cacheSerializer cacheDataWithImage:transformedImage originalData:(imageWasTransformed ? nil : originalData) imageURL:url]; + // transformed/thumbnailed cache key + NSString *key = [self cacheKeyForURL:url context:context]; + // Case that transformer one thumbnail, which this time need full pixel image + UIImage *fullSizeImage = originalImage; + BOOL imageWasRedecoded = NO; + if (shouldRedecodeFullImage) { + fullSizeImage = SDImageCacheDecodeImageData(originalData, key, options, context); + if (fullSizeImage) { + imageWasRedecoded = YES; } else { - cacheData = (imageWasTransformed ? nil : originalData); + imageWasRedecoded = NO; + fullSizeImage = originalImage; // Fallback } - [self storeImage:transformedImage imageData:cacheData forKey:key imageCache:imageCache cacheType:storeCacheType options:options context:context completion:^{ - [self callCompletionBlockForOperation:operation completion:completedBlock image:transformedImage data:originalData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; - }]; + } + UIImage *transformedImage = [transformer transformedImageWithImage:fullSizeImage forKey:key]; + if (transformedImage && finished) { + BOOL imageWasTransformed = ![transformedImage isEqual:fullSizeImage]; + // Continue store transform cache process + [self callStoreTransformCacheProcessForOperation:operation url:url options:options context:context image:transformedImage data:originalData cacheType:cacheType finished:finished transformed:imageWasTransformed || imageWasRedecoded completed:completedBlock]; + } else { + // Continue store transform cache process + [self callStoreTransformCacheProcessForOperation:operation url:url options:options context:context image:fullSizeImage data:originalData cacheType:cacheType finished:finished transformed:imageWasRedecoded completed:completedBlock]; + } + } + }); + } else if (shouldRedecodeFullImage) { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ + @autoreleasepool { + // Re-decode because the returned image does not match current request pipeline's context + UIImage *fullSizeImage = SDImageCacheDecodeImageData(originalData, url.absoluteString, options, context); + BOOL imageWasRedecoded = NO; + if (fullSizeImage) { + imageWasRedecoded = YES; } else { - [self callCompletionBlockForOperation:operation completion:completedBlock image:transformedImage data:originalData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; + imageWasRedecoded = NO; + fullSizeImage = originalImage; // Fallback } + // Continue store transform cache process + [self callStoreTransformCacheProcessForOperation:operation url:url options:options context:context image:fullSizeImage data:originalData cacheType:cacheType finished:finished transformed:imageWasRedecoded completed:completedBlock]; } }); } else { - [self callCompletionBlockForOperation:operation completion:completedBlock image:originalImage data:originalData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; + // Continue store transform cache process + [self callStoreTransformCacheProcessForOperation:operation url:url options:options context:context image:originalImage data:originalData cacheType:cacheType finished:finished transformed:NO completed:completedBlock]; + } +} + +- (void)callStoreTransformCacheProcessForOperation:(nonnull SDWebImageCombinedOperation *)operation + url:(nonnull NSURL *)url + options:(SDWebImageOptions)options + context:(SDWebImageContext *)context + image:(nullable UIImage *)image + data:(nullable NSData *)data + cacheType:(SDImageCacheType)cacheType + finished:(BOOL)finished + transformed:(BOOL)transformed + completed:(nullable SDInternalCompletionBlock)completedBlock { + // Grab the image cache to use + id imageCache; + if ([context[SDWebImageContextImageCache] conformsToProtocol:@protocol(SDImageCache)]) { + imageCache = context[SDWebImageContextImageCache]; + } else { + imageCache = self.imageCache; + } + BOOL waitStoreCache = SD_OPTIONS_CONTAINS(options, SDWebImageWaitStoreCache); + // the target image store cache type + SDImageCacheType storeCacheType = SDImageCacheTypeAll; + if (context[SDWebImageContextStoreCacheType]) { + storeCacheType = [context[SDWebImageContextStoreCacheType] integerValue]; + } + id cacheSerializer = context[SDWebImageContextCacheSerializer]; + // thumbnail check + BOOL shouldThumbnailImage = context[SDWebImageContextImageThumbnailPixelSize] != nil || image.sd_decodeOptions[SDImageCoderDecodeThumbnailPixelSize] != nil; + + // Store the transformed/thumbnail image into the cache + if (transformed || shouldThumbnailImage) { + NSData *cacheData; + // pass nil if the image was transformed/thumbnailed, so we can recalculate the data from the image + if (cacheSerializer && (storeCacheType == SDImageCacheTypeDisk || storeCacheType == SDImageCacheTypeAll)) { + cacheData = [cacheSerializer cacheDataWithImage:image originalData:nil imageURL:url]; + } else { + cacheData = nil; + } + // transformed/thumbnailed cache key + NSString *key = [self cacheKeyForURL:url context:context]; + [self storeImage:image imageData:cacheData forKey:key imageCache:imageCache cacheType:storeCacheType waitStoreCache:waitStoreCache completion:^{ + [self callCompletionBlockForOperation:operation completion:completedBlock image:image data:data error:nil cacheType:cacheType finished:finished url:url]; + }]; + } else { + [self callCompletionBlockForOperation:operation completion:completedBlock image:image data:data error:nil cacheType:cacheType finished:finished url:url]; } } @@ -586,10 +695,8 @@ - (void)storeImage:(nullable UIImage *)image forKey:(nullable NSString *)key imageCache:(nonnull id)imageCache cacheType:(SDImageCacheType)cacheType - options:(SDWebImageOptions)options - context:(nullable SDWebImageContext *)context + waitStoreCache:(BOOL)waitStoreCache completion:(nullable SDWebImageNoParamsBlock)completion { - BOOL waitStoreCache = SD_OPTIONS_CONTAINS(options, SDWebImageWaitStoreCache); // Check whether we should wait the store cache finished. If not, callback immediately [imageCache storeImage:image imageData:data forKey:key cacheType:cacheType completion:^{ if (waitStoreCache) { diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h index 50266db16..bc4224f4b 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h @@ -11,8 +11,14 @@ /// A protocol represents cancelable operation. @protocol SDWebImageOperation +/// Cancel the operation - (void)cancel; +@optional + +/// Whether the operation has been cancelled. +@property (nonatomic, assign, readonly, getter=isCancelled) BOOL cancelled; + @end /// NSOperation conform to `SDWebImageOperation`. diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m b/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m index b0883b1fa..b9365009b 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m @@ -20,7 +20,8 @@ FOUNDATION_STATIC_INLINE NSUInteger SDMemoryCacheCostForImage(UIImage *image) { #if SD_MAC frameCount = 1; #elif SD_UIKIT || SD_WATCH - frameCount = image.images.count > 0 ? image.images.count : 1; + // Filter the same frame in `_UIAnimatedImage`. + frameCount = image.images.count > 1 ? [NSSet setWithArray:image.images].count : 1; #endif NSUInteger cost = bytesPerFrame * frameCount; return cost; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h b/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h index 8328c261e..90481eb03 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h @@ -8,6 +8,7 @@ #import "SDWebImageCompat.h" #import "NSData+ImageContentType.h" +#import "SDImageCoder.h" /** UIImage category for image metadata, including animation, loop count, format, incremental, etc. @@ -20,12 +21,23 @@ * For animated image format, 0 means infinite looping. * Note that because of the limitations of categories this property can get out of sync if you create another instance with CGImage or other methods. * AppKit: - * NSImage currently only support animated via GIF imageRep unlike UIImage. - * The getter of this property will get the loop count from GIF imageRep - * The setter of this property will set the loop count from GIF imageRep + * NSImage currently only support animated via `NSBitmapImageRep`(GIF) or `SDAnimatedImageRep`(APNG/GIF/WebP) unlike UIImage. + * The getter of this property will get the loop count from animated imageRep + * The setter of this property will set the loop count from animated imageRep */ @property (nonatomic, assign) NSUInteger sd_imageLoopCount; +/** + * UIKit: + * Returns the `images`'s count by unapply the patch for the different frame durations. Which matches the real visible frame count when displaying on UIImageView. + * See more in `SDImageCoderHelper.animatedImageWithFrames`. + * Returns 1 for static image. + * AppKit: + * Returns the underlaying `NSBitmapImageRep` or `SDAnimatedImageRep` frame count. + * Returns 1 for static image. + */ +@property (nonatomic, assign, readonly) NSUInteger sd_imageFrameCount; + /** * UIKit: * Check the `images` array property. @@ -54,4 +66,12 @@ */ @property (nonatomic, assign) BOOL sd_isIncremental; +/** + A dictionary value contains the decode options when decoded from SDWebImage loading system (say, `SDImageCacheDecodeImageData/SDImageLoaderDecode[Progressive]ImageData`) + It may not always available and only image decoding related options will be saved. (including [.decodeScaleFactor, .decodeThumbnailPixelSize, .decodePreserveAspectRatio, .decodeFirstFrameOnly]) + @note This is used to identify and check the image from downloader when multiple different request (which want different image thumbnail size, image class, etc) share the same URLOperation. + @warning This API exist only because of current SDWebImageDownloader bad design which does not callback the context we call it. There will be refactory in future (API break) and you SHOULD NOT rely on this property at all. + */ +@property (nonatomic, copy) SDImageCoderOptions *sd_decodeOptions; + @end diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m b/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m index 09724236e..5a8002c48 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m @@ -29,6 +29,32 @@ - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { objc_setAssociatedObject(self, @selector(sd_imageLoopCount), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } +- (NSUInteger)sd_imageFrameCount { + NSArray *animatedImages = self.images; + if (!animatedImages || animatedImages.count <= 1) { + return 1; + } + NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageFrameCount)); + if ([value isKindOfClass:[NSNumber class]]) { + return [value unsignedIntegerValue]; + } + __block NSUInteger frameCount = 1; + __block UIImage *previousImage = animatedImages.firstObject; + [animatedImages enumerateObjectsUsingBlock:^(UIImage * _Nonnull image, NSUInteger idx, BOOL * _Nonnull stop) { + // ignore first + if (idx == 0) { + return; + } + if (![image isEqual:previousImage]) { + frameCount++; + } + previousImage = image; + }]; + objc_setAssociatedObject(self, @selector(sd_imageFrameCount), @(frameCount), OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + return frameCount; +} + - (BOOL)sd_isAnimated { return (self.images != nil); } @@ -87,6 +113,19 @@ - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { } } +- (NSUInteger)sd_imageFrameCount { + NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); + NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil]; + NSBitmapImageRep *bitmapImageRep; + if ([imageRep isKindOfClass:[NSBitmapImageRep class]]) { + bitmapImageRep = (NSBitmapImageRep *)imageRep; + } + if (bitmapImageRep) { + return [[bitmapImageRep valueForProperty:NSImageFrameCount] unsignedIntegerValue]; + } + return 1; +} + - (BOOL)sd_isAnimated { BOOL isAnimated = NO; NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); @@ -147,4 +186,16 @@ - (BOOL)sd_isIncremental { return value.boolValue; } +- (void)setSd_decodeOptions:(SDImageCoderOptions *)sd_decodeOptions { + objc_setAssociatedObject(self, @selector(sd_decodeOptions), sd_decodeOptions, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +- (SDImageCoderOptions *)sd_decodeOptions { + SDImageCoderOptions *value = objc_getAssociatedObject(self, @selector(sd_decodeOptions)); + if ([value isKindOfClass:NSDictionary.class]) { + return value; + } + return nil; +} + @end diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m b/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m index b27b3a958..66c22d262 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m @@ -609,7 +609,7 @@ - (nullable UIImage *)sd_blurredImageWithRadius:(CGFloat)blurRadius { .bitmapInfo = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host, //requests a BGRA buffer. .version = 0, .decode = NULL, - .renderingIntent = kCGRenderingIntentDefault + .renderingIntent = CGImageGetRenderingIntent(imageRef) }; vImage_Error err; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h b/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h index ee9f761ba..48175f172 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h @@ -71,14 +71,15 @@ typedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable ima * block is called a last time with the full image and the last parameter set to YES. * * The last parameter is the original image URL + * @return The returned operation for cancelling cache and download operation, typically type is `SDWebImageCombinedOperation` */ -- (void)sd_internalSetImageWithURL:(nullable NSURL *)url - placeholderImage:(nullable UIImage *)placeholder - options:(SDWebImageOptions)options - context:(nullable SDWebImageContext *)context - setImageBlock:(nullable SDSetImageBlock)setImageBlock - progress:(nullable SDImageLoaderProgressBlock)progressBlock - completed:(nullable SDInternalCompletionBlock)completedBlock; +- (nullable id)sd_internalSetImageWithURL:(nullable NSURL *)url + placeholderImage:(nullable UIImage *)placeholder + options:(SDWebImageOptions)options + context:(nullable SDWebImageContext *)context + setImageBlock:(nullable SDSetImageBlock)setImageBlock + progress:(nullable SDImageLoaderProgressBlock)progressBlock + completed:(nullable SDInternalCompletionBlock)completedBlock; /** * Cancel the current image load diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m b/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m index d559b4cc3..486584f42 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m @@ -12,6 +12,7 @@ #import "SDWebImageError.h" #import "SDInternalMacros.h" #import "SDWebImageTransitionInternal.h" +#import "SDImageCache.h" const int64_t SDWebImageProgressUnitCountUnknown = 1LL; @@ -46,13 +47,13 @@ - (void)setSd_imageProgress:(NSProgress *)sd_imageProgress { objc_setAssociatedObject(self, @selector(sd_imageProgress), sd_imageProgress, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } -- (void)sd_internalSetImageWithURL:(nullable NSURL *)url - placeholderImage:(nullable UIImage *)placeholder - options:(SDWebImageOptions)options - context:(nullable SDWebImageContext *)context - setImageBlock:(nullable SDSetImageBlock)setImageBlock - progress:(nullable SDImageLoaderProgressBlock)progressBlock - completed:(nullable SDInternalCompletionBlock)completedBlock { +- (nullable id)sd_internalSetImageWithURL:(nullable NSURL *)url + placeholderImage:(nullable UIImage *)placeholder + options:(SDWebImageOptions)options + context:(nullable SDWebImageContext *)context + setImageBlock:(nullable SDSetImageBlock)setImageBlock + progress:(nullable SDImageLoaderProgressBlock)progressBlock + completed:(nullable SDInternalCompletionBlock)completedBlock { if (context) { // copy to avoid mutable object context = [context copy]; @@ -71,12 +72,35 @@ - (void)sd_internalSetImageWithURL:(nullable NSURL *)url [self sd_cancelImageLoadOperationWithKey:validOperationKey]; self.sd_imageURL = url; + SDWebImageManager *manager = context[SDWebImageContextCustomManager]; + if (!manager) { + manager = [SDWebImageManager sharedManager]; + } else { + // remove this manager to avoid retain cycle (manger -> loader -> operation -> context -> manager) + SDWebImageMutableContext *mutableContext = [context mutableCopy]; + mutableContext[SDWebImageContextCustomManager] = nil; + context = [mutableContext copy]; + } + + BOOL shouldUseWeakCache = NO; + if ([manager.imageCache isKindOfClass:SDImageCache.class]) { + shouldUseWeakCache = ((SDImageCache *)manager.imageCache).config.shouldUseWeakMemoryCache; + } if (!(options & SDWebImageDelayPlaceholder)) { + if (shouldUseWeakCache) { + NSString *key = [manager cacheKeyForURL:url context:context]; + // call memory cache to trigger weak cache sync logic, ignore the return value and go on normal query + // this unfortunately will cause twice memory cache query, but it's fast enough + // in the future the weak cache feature may be re-design or removed + [((SDImageCache *)manager.imageCache) imageFromMemoryCacheForKey:key]; + } dispatch_main_async_safe(^{ [self sd_setImage:placeholder imageData:nil basedOnClassOrViaCustomSetImageBlock:setImageBlock cacheType:SDImageCacheTypeNone imageURL:url]; }); } + id operation = nil; + if (url) { // reset the progress NSProgress *imageProgress = objc_getAssociatedObject(self, @selector(sd_imageProgress)); @@ -90,15 +114,6 @@ - (void)sd_internalSetImageWithURL:(nullable NSURL *)url [self sd_startImageIndicator]; id imageIndicator = self.sd_imageIndicator; #endif - SDWebImageManager *manager = context[SDWebImageContextCustomManager]; - if (!manager) { - manager = [SDWebImageManager sharedManager]; - } else { - // remove this manager to avoid retain cycle (manger -> loader -> operation -> context -> manager) - SDWebImageMutableContext *mutableContext = [context mutableCopy]; - mutableContext[SDWebImageContextCustomManager] = nil; - context = [mutableContext copy]; - } SDImageLoaderProgressBlock combinedProgressBlock = ^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) { if (imageProgress) { @@ -122,7 +137,7 @@ - (void)sd_internalSetImageWithURL:(nullable NSURL *)url } }; @weakify(self); - id operation = [manager loadImageWithURL:url options:options context:context progress:combinedProgressBlock completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { + operation = [manager loadImageWithURL:url options:options context:context progress:combinedProgressBlock completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { @strongify(self); if (!self) { return; } // if the progress not been updated, mark it to complete state @@ -221,6 +236,8 @@ - (void)sd_internalSetImageWithURL:(nullable NSURL *)url } }); } + + return operation; } - (void)sd_cancelCurrentImageLoad { @@ -283,7 +300,7 @@ - (void)sd_setImage:(UIImage *)image imageData:(NSData *)imageData basedOnClassO if (transition.prepares) { transition.prepares(view, image, imageData, cacheType, imageURL); } - } completion:^(BOOL finished) { + } completion:^(BOOL tempFinished) { [UIView transitionWithView:view duration:transition.duration options:transition.animationOptions animations:^{ if (!view.sd_latestOperationKey || ![originalOperationKey isEqualToString:view.sd_latestOperationKey]) { return; diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h b/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h index 53a7045ca..fc23508bd 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h +++ b/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h @@ -32,14 +32,14 @@ - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key; /** - * Cancel all operations for the current UIView and key + * Cancel the operation for the current UIView and key * * @param key key for identifying the operations */ - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key; /** - * Just remove the operations corresponding to the current UIView and key without cancelling them + * Just remove the operation corresponding to the current UIView and key without cancelling them * * @param key key for identifying the operations */ diff --git a/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m b/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m index adb2c105c..6fe23e481 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m +++ b/Example/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m @@ -9,8 +9,6 @@ #import "UIView+WebCacheOperation.h" #import "objc/runtime.h" -static char loadOperationKey; - // key is strong, value is weak because operation instance is retained by SDWebImageManager's runningOperations property // we should use lock to keep thread-safe because these method may not be accessed from main queue typedef NSMapTable> SDOperationsDictionary; @@ -19,12 +17,12 @@ @implementation UIView (WebCacheOperation) - (SDOperationsDictionary *)sd_operationDictionary { @synchronized(self) { - SDOperationsDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey); + SDOperationsDictionary *operations = objc_getAssociatedObject(self, @selector(sd_operationDictionary)); if (operations) { return operations; } operations = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsStrongMemory valueOptions:NSPointerFunctionsWeakMemory capacity:0]; - objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + objc_setAssociatedObject(self, @selector(sd_operationDictionary), operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); return operations; } } diff --git a/Example/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m b/Example/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m index a7c70763c..c122da4d3 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m +++ b/Example/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m @@ -18,6 +18,7 @@ void SDImageCopyAssociatedObject(UIImage * _Nullable source, UIImage * _Nullable } // Image Metadata target.sd_isIncremental = source.sd_isIncremental; + target.sd_decodeOptions = source.sd_decodeOptions; target.sd_imageLoopCount = source.sd_imageLoopCount; target.sd_imageFormat = source.sd_imageFormat; // Force Decode diff --git a/Example/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m b/Example/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m index 8ff0fc160..1dcfd99fc 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m +++ b/Example/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m @@ -89,7 +89,12 @@ - (CFTimeInterval)duration { #elif SD_IOS || SD_TV #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" - NSTimeInterval duration = self.displayLink.duration * self.displayLink.frameInterval; + NSTimeInterval duration = 0; + if (@available(iOS 10.0, tvOS 10.0, *)) { + duration = self.displayLink.targetTimestamp - CACurrentMediaTime(); + } else { + duration = self.displayLink.duration * self.displayLink.frameInterval; + } #pragma clang diagnostic pop #else NSTimeInterval duration = 0; @@ -98,7 +103,7 @@ - (CFTimeInterval)duration { duration = nextFireDate - self.currentFireDate; } #endif - if (duration == 0) { + if (duration <= 0) { duration = kSDDisplayLinkInterval; } return duration; diff --git a/Example/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m b/Example/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m index 50a4da948..7bca347c8 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m +++ b/Example/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m @@ -18,7 +18,13 @@ #elif SD_UIKIT CGFloat screenScale = [UIScreen mainScreen].scale; #elif SD_MAC - CGFloat screenScale = [NSScreen mainScreen].backingScaleFactor; + NSScreen *mainScreen = nil; + if (@available(macOS 10.12, *)) { + mainScreen = [NSScreen mainScreen]; + } else { + mainScreen = [NSScreen screens].firstObject; + } + CGFloat screenScale = mainScreen.backingScaleFactor ?: 1.0f; #endif if (screenScale <= 1) { scales = @[@1,@2,@3]; diff --git a/Example/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h b/Example/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h index 022cf7dc7..f74be7e5a 100644 --- a/Example/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h +++ b/Example/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h @@ -10,12 +10,20 @@ #import "SDImageIOAnimatedCoder.h" // AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation -#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic") -#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif") +#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic") +#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif") // HEIC Sequence (Animated Image) #define kSDUTTypeHEICS ((__bridge CFStringRef)@"public.heics") -// kUTTypeWebP seems not defined in public UTI framework, Apple use the hardcode string, we define them :) -#define kSDUTTypeWebP ((__bridge CFStringRef)@"org.webmproject.webp") +// kSDUTTypeWebP seems not defined in public UTI framework, Apple use the hardcode string, we define them :) +#define kSDUTTypeWebP ((__bridge CFStringRef)@"org.webmproject.webp") + +#define kSDUTTypeImage ((__bridge CFStringRef)@"public.image") +#define kSDUTTypeJPEG ((__bridge CFStringRef)@"public.jpeg") +#define kSDUTTypePNG ((__bridge CFStringRef)@"public.png") +#define kSDUTTypeTIFF ((__bridge CFStringRef)@"public.tiff") +#define kSDUTTypeSVG ((__bridge CFStringRef)@"public.svg-image") +#define kSDUTTypeGIF ((__bridge CFStringRef)@"com.compuserve.gif") +#define kSDUTTypePDF ((__bridge CFStringRef)@"com.adobe.pdf") @interface SDImageIOAnimatedCoder () diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayer.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayer.m index bdad2f1ea..2951b92ca 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayer.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayer.m @@ -22,7 +22,7 @@ @interface SJAVMediaPlayer () @property (nonatomic) NSTimeInterval playableDuration; @property (nonatomic, nullable) SJWaitingReason reasonForWaitingToPlay; @property (nonatomic) NSTimeInterval startPosition; -@property (nonatomic) BOOL needSeekToStartPosition; +@property (nonatomic) BOOL needsSeekToStartPosition; @property (nonatomic) BOOL isPlaybackFinished; ///< 播放结束 @property (nonatomic, nullable) SJFinishedReason finishedReason; ///< 播放结束的reason @property (nonatomic, strong, nullable) NSTimer *refreshTimer; @@ -47,7 +47,7 @@ - (instancetype)initWithAVPlayer:(AVPlayer *)player startPosition:(NSTimeInterva _avPlayer = player; _assetStatus = SJAssetStatusPreparing; _startPosition = time; - _needSeekToStartPosition = time != 0; + _needsSeekToStartPosition = time != 0; _minBufferedDuration = 8; [self _prepareToPlay]; } @@ -196,6 +196,7 @@ - (void)setPlaybackType:(SJPlaybackType)playbackType { - (void)setMuted:(BOOL)muted { _avPlayer.muted = muted; + [self _postNotification:SJMediaPlayerMutedDidChangeNotification]; } - (BOOL)isMuted { return _avPlayer.isMuted; @@ -203,6 +204,7 @@ - (BOOL)isMuted { - (void)setVolume:(float)volume { _avPlayer.volume = volume; + [self _postNotification:SJMediaPlayerVolumeDidChangeNotification]; } - (float)volume { return _avPlayer.volume; @@ -217,6 +219,8 @@ - (void)setRate:(float)rate { else { [self pause]; } + + [self _postNotification:SJMediaPlayerRateDidChangeNotification]; } - (void)setInnerError:(nullable NSError *)innerError { @@ -406,12 +410,12 @@ - (void)_toEvaluating { return ; } - if ( self.needSeekToStartPosition && !self.seekingInfo.isSeeking && assetStatus == SJAssetStatusReadyToPlay ) { + if ( self.needsSeekToStartPosition && !self.seekingInfo.isSeeking && assetStatus == SJAssetStatusReadyToPlay ) { __weak typeof(self) _self = self; [self seekToTime:CMTimeMakeWithSeconds(self.startPosition, NSEC_PER_SEC) toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:^(BOOL f) { __strong typeof(_self) self = _self; if ( !self ) return; - self.needSeekToStartPosition = NO; + self.needsSeekToStartPosition = NO; [self _toEvaluating]; }]; return; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLoader.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLoader.m index 81c751973..d756afb0f 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLoader.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVMediaPlayerLoader.m @@ -29,6 +29,20 @@ + (nullable SJAVMediaPlayer *)loadPlayerForMedia:(SJVideoPlayerURLAsset *)media AVPlayer *avPlayer = target.avPlayer; if ( avPlayer == nil ) { AVPlayerItem *avPlayerItem = target.avPlayerItem; + // fix: https://github.com/changsanjiang/SJBaseVideoPlayer/pull/17 & https://github.com/changsanjiang/SJBaseVideoPlayer/issues/18 + // + // 重新创建playerItem规避`An AVPlayerItem cannot be associated with more than one instance of AVPlayer`错误. + if (avPlayerItem != nil && avPlayerItem.status == AVPlayerStatusFailed) { + NSURL *URL = nil; + if ( [avPlayerItem.asset isKindOfClass:AVURLAsset.class] ) { + URL = [(AVURLAsset *)avPlayerItem.asset URL]; + } + if ( URL == nil ) + return nil; + avPlayerItem = [AVPlayerItem playerItemWithURL:URL]; + target.avPlayerItem = avPlayerItem; + } + if ( avPlayerItem == nil ) { AVAsset *avAsset = target.avAsset; if ( avAsset == nil ) { diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVPictureInPictureController.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVPictureInPictureController.m index 4d8513afd..37772864e 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVPictureInPictureController.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJAVPictureInPictureController.m @@ -169,7 +169,12 @@ - (void)pictureInPictureControllerDidStopPictureInPicture:(AVPictureInPictureCon } // 恢复界面(看后续是否需要) -//- (void)pictureInPictureController:(AVPictureInPictureController *)pictureInPictureController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler { -// -//} +- (void)pictureInPictureController:(AVPictureInPictureController *)pictureInPictureController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler { + if ( self.delegate != nil ) { + [self.delegate pictureInPictureController:self restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:completionHandler]; + } + else { + completionHandler(NO); + } +} @end diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h index 37a622d8d..2003c1acf 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/Core/SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h @@ -34,9 +34,9 @@ NS_ASSUME_NONNULL_BEGIN startPosition:(NSTimeInterval)startPosition playModel:(__kindof SJPlayModel *)playModel; -@property (nonatomic, strong, readonly, nullable) __kindof AVAsset *avAsset; -@property (nonatomic, strong, readonly, nullable) AVPlayerItem *avPlayerItem; -@property (nonatomic, strong, readonly, nullable) AVPlayer *avPlayer; +@property (nonatomic, strong, nullable) __kindof AVAsset *avAsset; +@property (nonatomic, strong, nullable) AVPlayerItem *avPlayerItem; +@property (nonatomic, strong, nullable) AVPlayer *avPlayer; - (nullable instancetype)initWithOtherAsset:(SJVideoPlayerURLAsset *)otherAsset playModel:(nullable __kindof SJPlayModel *)playModel; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/SJAVMediaPlaybackController.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/SJAVMediaPlaybackController.m index a8b4230df..4e32164f1 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/SJAVMediaPlaybackController.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/AVPlayer/SJAVMediaPlaybackController.m @@ -29,6 +29,9 @@ - (instancetype)init { if ( self ) { [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_av_playbackTypeDidChange:) name:SJMediaPlayerPlaybackTypeDidChangeNotification object:nil]; [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_av_playerViewReadyForDisplay:) name:SJMediaPlayerViewReadyForDisplayNotification object:nil]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_av_rateDidChange:) name:SJMediaPlayerRateDidChangeNotification object:nil]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_av_volumeDidChange:) name:SJMediaPlayerVolumeDidChangeNotification object:nil]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_av_mutedDidChange:) name:SJMediaPlayerMutedDidChangeNotification object:nil]; } return self; } @@ -73,14 +76,17 @@ - (void)receivedApplicationDidBecomeActiveNotification { } if ( @available(iOS 14.0, *) ) { - if ( self.pauseWhenAppDidEnterBackground ) { - if ( self.media.isM3u8 && self.timeControlStatus == SJPlaybackTimeControlStatusPaused ) { - self.needsToRefresh_fix339 = YES; -// [self refresh]; -// [self pause]; - return; + if ( self.media.isM3u8 ) { + if ( self.pauseWhenAppDidEnterBackground || + // fix: https://github.com/changsanjiang/SJVideoPlayer/issues/535 + self.timeControlStatus == SJPlaybackTimeControlStatusPaused ) { + if ( self.timeControlStatus == SJPlaybackTimeControlStatusPaused ) { + self.needsToRefresh_fix339 = YES; + return; + } } } + } SJAVMediaPlayerLayerView *view = self.currentPlayerView; @@ -112,7 +118,7 @@ - (void)receivedApplicationWillResignActiveNotification { return; } - if ( self.pauseWhenAppDidEnterBackground ) + if ( self.pauseWhenAppDidEnterBackground && self.assetStatus == SJAssetStatusReadyToPlay /*fix #430 */ ) [self.currentPlayerView setScreenshot:self.screenshot]; // 修复 14.0 后台播放失效的问题 @@ -169,6 +175,15 @@ - (void)pictureInPictureController:(id)controller } } +- (void)pictureInPictureController:(id)controller restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL))completionHandler API_AVAILABLE(ios(14.0)) { + if ( self.restoreUserInterfaceForPictureInPictureStop != nil ) { + self.restoreUserInterfaceForPictureInPictureStop(self, completionHandler); + } + else { + completionHandler(NO); + } +} + #pragma mark - - (void)seekToTime:(CMTime)time toleranceBefore:(CMTime)toleranceBefore toleranceAfter:(CMTime)toleranceAfter completionHandler:(void (^_Nullable)(BOOL))completionHandler { @@ -249,6 +264,24 @@ - (void)_av_playerViewReadyForDisplay:(NSNotification *)note { } } +- (void)_av_rateDidChange:(NSNotification *)note { + if ( self.currentPlayer == note.object && self.rate != self.currentPlayer.rate ) { + self.rate = self.currentPlayer.rate; + } +} + +- (void)_av_volumeDidChange:(NSNotification *)note { + if ( self.currentPlayer == note.object && self.volume != self.currentPlayer.volume ) { + self.volume = self.currentPlayer.volume; + } +} + +- (void)_av_mutedDidChange:(NSNotification *)note { + if ( self.currentPlayer == note.object && self.isMuted != self.currentPlayer.isMuted ) { + self.muted = self.currentPlayer.isMuted; + } +} + - (void)_removePlayerForLayerIfNeeded { if ( self.pauseWhenAppDidEnterBackground ) return; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.h index 9854811d6..438cb3f14 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.h @@ -13,8 +13,24 @@ NS_ASSUME_NONNULL_BEGIN -extern NSInteger const SJBaseVideoPlayerViewTag; -extern NSInteger const SJBaseVideoPlayerPresentViewTag; +extern NSInteger const SJPlayerViewTag; +extern NSInteger const SJPresentViewTag; + + +@interface SJPlayerZIndexes : NSObject ++ (instancetype)shared; +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +@property (nonatomic) NSInteger textPopupViewZIndex; +@property (nonatomic) NSInteger promptingPopupViewZIndex; +@property (nonatomic) NSInteger controlLayerViewZIndex; +@property (nonatomic) NSInteger danmakuViewZIndex; +@property (nonatomic) NSInteger placeholderImageViewZIndex; +@property (nonatomic) NSInteger watermarkViewZIndex; +@property (nonatomic) NSInteger subtitleViewZIndex; +@property (nonatomic) NSInteger playbackViewZIndex; +@end // - Playback Notifications - diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.m index a0e7943a5..a3e88d9d1 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Const/SJBaseVideoPlayerConst.m @@ -10,8 +10,34 @@ NS_ASSUME_NONNULL_BEGIN -NSInteger const SJBaseVideoPlayerViewTag = 0xFFFFFFF0; -NSInteger const SJBaseVideoPlayerPresentViewTag = 0xFFFFFFF1; +NSInteger const SJPlayerViewTag = 0xFFFFFFF0; +NSInteger const SJPresentViewTag = 0xFFFFFFF1; + +@implementation SJPlayerZIndexes ++ (instancetype)shared { + static id instance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + instance = [[self alloc] _init]; + }); + return instance; +} + +- (instancetype)_init { + self = [super init]; + if ( self ) { + _textPopupViewZIndex = -10; + _promptingPopupViewZIndex = -20; + _controlLayerViewZIndex = -30; + _danmakuViewZIndex = -40; + _placeholderImageViewZIndex = -50; + _watermarkViewZIndex = -60; + _subtitleViewZIndex = -70; + _playbackViewZIndex = -80; + } + return self; +} +@end /// /// assetStatus 改变的通知 diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.h deleted file mode 100644 index 96012899b..000000000 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.h +++ /dev/null @@ -1,90 +0,0 @@ -// -// SJBarrageQueueController.h -// Pods -// -// Created by 畅三江 on 2019/11/12. -// - -#import "SJBarrageQueueControllerDefines.h" -#import -@protocol SJBarrageLineConfigurationDelegate; -@class SJBarrageLineConfiguration; - -NS_ASSUME_NONNULL_BEGIN -@interface SJBarrageQueueController : NSObject -- (instancetype)initWithNumberOfLines:(NSUInteger)numberOfLines; - -@property (nonatomic) NSInteger numberOfLines; - -@property (nonatomic, strong, readonly) SJBarrageLineConfiguration *configuration; - -- (void)reloadConfiguration; ///< 当配置修改后, 请调用该方法来刷新 - -@property (nonatomic, getter=isDisabled) BOOL disabled; - -- (void)enqueue:(id)barrage; -- (void)emptyQueue; -- (void)removeDisplayedBarrages; -- (void)removeAll; - -@property (nonatomic, readonly, getter=isPaused) BOOL paused; -- (void)pause; -- (void)resume; - -- (id)getObserver; - -@property (nonatomic, strong, readonly) __kindof UIView *view; -@property (nonatomic, readonly) NSInteger queueSize; ///< 未显示的弹幕数量 - -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; -@end - - -@interface SJBarrageLineConfiguration : NSObject - -@property (nonatomic, weak, nullable) id delegate; - -/// -/// 弹幕移动速率 -/// -/// default value 1.0 -/// -@property (nonatomic) CGFloat rate; - -/// -/// 弹幕之间的间距 -/// -/// default value is 38.0 -/// -@property (nonatomic) CGFloat itemSpacing; - -/// -/// 顶部外间距 -/// -/// default value is 3.0 -/// -@property (nonatomic) CGFloat topMargin; - -/// -/// 行高 -/// -/// default value is 26.0 -/// -@property (nonatomic) CGFloat height; -@end - - -@protocol SJBarrageLineConfigurationDelegate -@optional -/// 移动速率 -- (CGFloat)barrageLineConfiguration:(SJBarrageLineConfiguration *)configuration rateForLineAtIndex:(NSInteger)index; -/// 弹幕之间的间距 -- (CGFloat)barrageLineConfiguration:(SJBarrageLineConfiguration *)configuration itemSpacingForLineAtIndex:(NSInteger)index; - -/// 顶部外间距 -- (CGFloat)barrageLineConfiguration:(SJBarrageLineConfiguration *)configuration topMarginForLineAtIndex:(NSInteger)index; -/// 行高 -- (CGFloat)barrageLineConfiguration:(SJBarrageLineConfiguration *)configuration heightForLineAtIndex:(NSInteger)index; -@end -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.m deleted file mode 100644 index 25ea507b8..000000000 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageQueueController.m +++ /dev/null @@ -1,645 +0,0 @@ -// -// SJBarrageQueueController.m -// Pods -// -// Created by 畅三江 on 2019/11/12. -// - -#import "SJBarrageQueueController.h" -#import "CALayer+SJBaseVideoPlayerExtended.h" -#import "NSTimer+SJAssetAdd.h" - -#if __has_include() -#import -#import -#else -#import "SJQueue.h" -#import "NSAttributedString+SJMake.h" -#endif - -#if __has_include() -#import -#else -#import "Masonry.h" -#endif - - -NS_ASSUME_NONNULL_BEGIN - -#define POINT_SPEED_FAST (0.01) - -static NSNotificationName const SJBarrageQueueControllerDisabledDidChangeNotification = @"SJBarrageQueueControllerDisabledDidChangeNotification"; -static NSNotificationName const SJBarrageQueueControllerPausedDidChangeNotification = @"SJBarrageQueueControllerPausedDidChangeNotification"; -static NSNotificationName const SJBarrageQueueControllerWillDisplayBarrageNotification = @"SJBarrageQueueControllerWillDisplayBarrageNotification"; -static NSNotificationName const SJBarrageQueueControllerDidEndDisplayBarrageNotification = @"SJBarrageQueueControllerDidEndDisplayBarrageNotification"; -static NSString *const SJBarrageQueueControllerBarrageItemKey = @"barrageItem"; - - -@interface SJBarrageViewModel : NSObject -- (instancetype)initWithBarrageItem:(id)item; - -@property (nonatomic, copy, readonly, nullable) NSAttributedString *content; -@property (nonatomic, strong, readonly, nullable) __kindof UIView *customView; -@property (nonatomic, readonly) CGSize contentSize; - -@property (nonatomic) NSTimeInterval duration; -@property (nonatomic) NSTimeInterval nextBarrageStartTime; -@property (nonatomic) NSTimeInterval delay; -@property (nonatomic) CGFloat points; -@end - -@implementation SJBarrageViewModel -- (instancetype)initWithBarrageItem:(id)item { - self = [super init]; - if ( self ) { - if ( item.content.length != 0 ) { - _content = item.content.copy; - _contentSize = [_content sj_textSize]; - } - else { - _customView = item.customView; - if ( CGSizeEqualToSize(CGSizeZero, _contentSize) ) - _contentSize = [item.customView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; - else - _contentSize = item.customView.bounds.size; - } - } - return self; -} -@end - -#pragma mark - - -@interface SJBarrageView : UILabel -@property (nonatomic, strong, nullable) SJBarrageViewModel *viewModel; -@end - -@interface SJBarrageView () -@property (nonatomic, strong, nullable) UIView *customView; -@end - -@implementation SJBarrageView -- (CGSize)intrinsicContentSize { - return _viewModel.contentSize; -} - -- (void)setViewModel:(nullable SJBarrageViewModel *)viewModel { - _viewModel = viewModel; - if ( _customView != nil ) { - [_customView removeFromSuperview]; - _customView = nil; - } - - if ( viewModel.content.length != 0 ) { - self.attributedText = viewModel.content; - } - else { - self.attributedText = nil; - _customView = viewModel.customView; - _customView.frame = CGRectMake(0, 0, viewModel.contentSize.width, viewModel.contentSize.height); - [self addSubview:viewModel.customView]; - } -} -@end - - -#pragma mark - - -@interface SJBarrageViewReusablePool : NSObject -+ (instancetype)pool; -@property (nonatomic) NSInteger size; -- (SJBarrageView *)dequeueReusableBarrageView; -- (void)addBarrageView:(SJBarrageView *)view; -@end - -@implementation SJBarrageViewReusablePool { - NSMutableArray *_m; -} -+ (instancetype)pool { - return SJBarrageViewReusablePool.alloc.init; -} -- (instancetype)init { - self = [super init]; - if ( self ) { - _size = 5; - _m = [NSMutableArray.alloc initWithCapacity:_size]; - } - return self; -} -- (SJBarrageView *)dequeueReusableBarrageView { - if ( _m.count == 0 ) { - [_m addObject:[SJBarrageView.alloc initWithFrame:CGRectZero]]; - } - - SJBarrageView *last = _m.lastObject; - [_m removeLastObject]; - return last; -} -- (void)addBarrageView:(SJBarrageView *)view { - if ( view != nil && _m.count < _size ) { - [_m addObject:view]; - } -} -@end - - -#pragma mark - - -@protocol SJBarrageClockDelegate; - -@interface SJBarrageClock : NSObject -+ (instancetype)clockWithDelegate:(id)delegate; -@property (nonatomic, weak, nullable) id delegate; -@property (nonatomic, readonly) NSTimeInterval time; - -@property (nonatomic, readonly, getter=isPaused) BOOL paused; -- (void)pause; -- (void)resume; -@end - -@protocol SJBarrageClockDelegate -- (void)clock:(SJBarrageClock *)clock timeDidChange:(NSTimeInterval)time; -- (void)clock:(SJBarrageClock *)clock pausedDidChange:(BOOL)isPaused; -@end - -@interface SJBarrageClock () -@property (nonatomic) NSTimeInterval time; -@property (nonatomic, strong, nullable) NSTimer *timer; -@property (nonatomic, getter=isPaused) BOOL paused; -@end -@implementation SJBarrageClock -+ (instancetype)clockWithDelegate:(id)delegate { - SJBarrageClock *clock = SJBarrageClock.alloc.init; - clock.delegate = delegate; - return clock; -} -- (instancetype)init { - self = [super init]; - if ( self ) { - _paused = YES; - } - return self; -} -- (void)pause { - if ( _paused == NO ) { - [_timer invalidate]; - _timer = nil; - self.paused = YES; - } -} -- (void)resume { - if ( _paused == YES ) { - __weak typeof(self) _self = self; - _timer = [NSTimer assetAdd_timerWithTimeInterval:0.1 block:^(NSTimer *timer) { - __strong typeof(_self) self = _self; - if ( !self ) { - [timer invalidate]; - return; - } - self.time += timer.timeInterval; - } repeats:YES]; - [_timer assetAdd_fire]; - [NSRunLoop.mainRunLoop addTimer:_timer forMode:NSRunLoopCommonModes]; - self.paused = NO; - } -} -- (void)setTime:(NSTimeInterval)time { - _time = time; - [self.delegate clock:self timeDidChange:time]; -} - -- (void)setPaused:(BOOL)paused { - _paused = paused; - [self.delegate clock:self pausedDidChange:paused]; -} -@end - -#pragma mark - - -@interface SJBarrageLineView : UIView -@end - -@implementation SJBarrageLineView -@end - -#pragma mark - - -@interface SJBarrageLineConfiguration () -- (CGFloat)rateForLineAtIndex:(NSInteger)index; -- (CGFloat)topMarginForLineAtIndex:(NSInteger)index; -- (CGFloat)itemSpacingForLineAtIndex:(NSInteger)index; -- (CGFloat)heightForLineAtIndex:(NSInteger)index; -@end - -#pragma mark - - -@interface SJBarrageLine : NSObject -- (instancetype)initWithPool:(SJBarrageViewReusablePool *)pool; -@property (nonatomic, strong, readonly) SJBarrageViewReusablePool *pool; -@property (nonatomic, strong, readonly) SJBarrageLineView *view; - -@property (nonatomic, strong, readonly, nullable) SJBarrageViewModel *last; -- (void)pause; -- (void)resume; -- (void)clear; -- (void)fire:(SJBarrageViewModel *)viewModel stoppedCallback:(void(^)(void))completion; -@end - -@implementation SJBarrageLine -- (instancetype)initWithPool:(SJBarrageViewReusablePool *)pool { - self = [super init]; - if ( self ) { - _pool = pool; - _view = [SJBarrageLineView.alloc initWithFrame:CGRectZero]; - } - return self; -} - -- (nullable SJBarrageViewModel *)last { - __auto_type view = (SJBarrageView *)_view.subviews.lastObject; - return view.viewModel; -} - -- (void)pause { - for ( UIView *subview in _view.subviews ) { - [subview.layer pauseAnimation]; - } -} - -- (void)resume { - for ( UIView *subview in _view.subviews ) { - [subview.layer resumeAnimation]; - } -} - -- (void)clear { - [_view.subviews enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(__kindof UIView * _Nonnull view, NSUInteger idx, BOOL * _Nonnull stop) { - [view.layer removeAllAnimations]; - [view removeFromSuperview]; - }]; -} - -- (void)fire:(SJBarrageViewModel *)viewModel stoppedCallback:(void(^)(void))completion { - SJBarrageView *barrageView = [_pool dequeueReusableBarrageView]; - barrageView.viewModel = viewModel; - [_view addSubview:barrageView]; - - CGRect frame = CGRectZero; - CGRect bounds = _view.bounds; - frame.origin.x = bounds.size.width; - frame.origin.y = (CGRectGetHeight(bounds) - barrageView.viewModel.contentSize.height) * 0.5; - frame.size = barrageView.viewModel.contentSize; - barrageView.frame = frame; - - CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"]; - animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity]; - animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(-barrageView.viewModel.points, 0, 0)]; - animation.duration = barrageView.viewModel.duration; - animation.fillMode = kCAFillModeForwards; - animation.removedOnCompletion = NO; - [barrageView.layer addAnimation:animation forKey:@"anim"]; - __weak typeof(self) _self = self; - __weak typeof(barrageView) _barrageView = barrageView; - [barrageView.layer addAnimation:animation stopHandler:^(CAAnimation * _Nonnull anim, BOOL isFinished) { - __strong typeof(_self) self = _self; - if ( !self ) return; - [_barrageView removeFromSuperview]; - [self.pool addBarrageView:_barrageView]; - if ( completion ) completion(); - }]; -} -@end - -#pragma mark - - -@protocol SJBarrageQueueControllerViewDelegate; - -@interface SJBarrageQueueControllerView : UIView -- (instancetype)initWithDelegate:(id)delegate; -@property (nonatomic, weak, nullable) id delegate; -@end - -@protocol SJBarrageQueueControllerViewDelegate -- (void)barrageQueueControllerView:(SJBarrageQueueControllerView *)view boundsDidChange:(CGRect)bounds previousBounds:(CGRect)previousBounds; -@end - -@implementation SJBarrageQueueControllerView { - CGRect _previousBounds; -} - -- (instancetype)initWithDelegate:(id)delegate { - self = [super init]; - if ( self ) { - _delegate = delegate; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - CGRect bounds = self.bounds; - if ( !CGRectEqualToRect(bounds, _previousBounds) ) { - if ( [self.delegate respondsToSelector:@selector(barrageQueueControllerView:boundsDidChange:previousBounds:)] ) { - [self.delegate barrageQueueControllerView:self boundsDidChange:bounds previousBounds:_previousBounds]; - } - } - _previousBounds = bounds; -} -@end - -#pragma mark - - -@interface SJBarrageQueueControllerObserver : NSObject -- (instancetype)initWithController:(SJBarrageQueueController *)controller; -@end - -@implementation SJBarrageQueueControllerObserver -@synthesize disabledDidChangeExeBlock = _disabledDidChangeExeBlock; -@synthesize pausedDidChangeExeBlock = _pausedDidChangeExeBlock; -@synthesize willDisplayBarrageExeBlock = _willDisplayBarrageExeBlock; -@synthesize didEndDisplayBarrageExeBlock = _didEndDisplayBarrageExeBlock; -- (instancetype)initWithController:(SJBarrageQueueController *)controller { - self = [super init]; - if ( self ) { - [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_pausedDidChange:) name:SJBarrageQueueControllerPausedDidChangeNotification object:controller]; - [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_disabledDidChange:) name:SJBarrageQueueControllerDisabledDidChangeNotification object:controller]; - [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_willDisplayBarrage:) name:SJBarrageQueueControllerWillDisplayBarrageNotification object:controller]; - [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didEndDisplayBarrage:) name:SJBarrageQueueControllerDidEndDisplayBarrageNotification object:controller]; - } - return self; -} -- (void)dealloc { - [NSNotificationCenter.defaultCenter removeObserver:self]; -} -- (void)_pausedDidChange:(NSNotification *)note { - if ( _pausedDidChangeExeBlock ) _pausedDidChangeExeBlock(note.object); -} -- (void)_disabledDidChange:(NSNotification *)note { - if ( _disabledDidChangeExeBlock ) _disabledDidChangeExeBlock(note.object); -} -- (void)_willDisplayBarrage:(NSNotification *)note { - if ( _willDisplayBarrageExeBlock ) _willDisplayBarrageExeBlock(note.object, note.userInfo[SJBarrageQueueControllerBarrageItemKey]); -} -- (void)_didEndDisplayBarrage:(NSNotification *)note { - if ( _didEndDisplayBarrageExeBlock ) _didEndDisplayBarrageExeBlock(note.object, note.userInfo[SJBarrageQueueControllerBarrageItemKey]); -} -@end - -#pragma mark - - - -@interface SJBarrageQueueController () { - SJQueue> *_queue; - SJBarrageClock *_clock; -} -@property (nonatomic, strong, readonly) SJBarrageViewReusablePool *reusablePool; -@property (nonatomic, strong, readonly) NSMutableArray *lines; -@property (nonatomic, getter=isPaused) BOOL paused; -@end - -@implementation SJBarrageQueueController -@synthesize view = _view; -static CGFloat SJScreenMaxWidth; -+ (void)initialize { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - SJScreenMaxWidth = MAX(CGRectGetWidth(UIScreen.mainScreen.bounds), CGRectGetHeight(UIScreen.mainScreen.bounds)); - }); -} - -- (instancetype)initWithNumberOfLines:(NSUInteger)numberOfLines { - self = [super init]; - if ( self ) { - _reusablePool = SJBarrageViewReusablePool.pool; - _queue = SJQueue.queue; - _clock = [SJBarrageClock clockWithDelegate:self]; - _view = [SJBarrageQueueControllerView.alloc initWithDelegate:self]; - _lines = [NSMutableArray arrayWithCapacity:4]; - _configuration = SJBarrageLineConfiguration.alloc.init; - - self.numberOfLines = numberOfLines; - } - return self; -} - -- (void)setNumberOfLines:(NSInteger)numberOfLines { - if ( numberOfLines != _numberOfLines ) { - _numberOfLines = numberOfLines; - - // 移除多余的行 - if ( numberOfLines < _lines.count ) { - NSRange range = NSMakeRange(numberOfLines, _lines.count - numberOfLines); - NSArray *useless = [_lines subarrayWithRange:range]; - [useless enumerateObjectsUsingBlock:^(SJBarrageLine * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [obj.view removeFromSuperview]; - }]; - [_lines removeObjectsInRange:range]; - } - // 创建新增的行 - else if ( numberOfLines > _lines.count ) { - for ( NSInteger i = _lines.count ; i < numberOfLines ; ++ i ) { - SJBarrageLine *line = [SJBarrageLine.alloc initWithPool:_reusablePool]; - [_view addSubview:line.view]; - [_lines addObject:line]; - } - } - - [self reloadConfiguration]; - } -} - -- (void)setDisabled:(BOOL)disabled { - if ( disabled != _disabled ) { - _disabled = disabled; - if ( disabled ) [self removeAll]; - [self _postNotification:SJBarrageQueueControllerDisabledDidChangeNotification]; - } -} - -- (void)reloadConfiguration { - SJBarrageLine *last = _lines.lastObject; - __block SJBarrageLine *prel = nil; - [_lines enumerateObjectsUsingBlock:^(SJBarrageLine * _Nonnull line, NSUInteger idx, BOOL * _Nonnull stop) { - CGFloat topMargin = [self.configuration topMarginForLineAtIndex:idx]; - CGFloat height = [self.configuration heightForLineAtIndex:idx]; - [line.view mas_remakeConstraints:^(MASConstraintMaker *make) { - prel == nil ? make.top.offset(topMargin) : make.top.equalTo(prel.view.mas_bottom).offset(topMargin); - make.left.right.offset(0); - make.height.offset(height); - if ( line == last ) make.bottom.offset(0); - }]; - - prel = line; - }]; -} - -- (void)enqueue:(id)barrage { - if ( _disabled ) return; - [_queue enqueue:barrage]; - if ( _paused == NO ) [_clock resume]; -} - -- (void)emptyQueue { - [_queue empty]; -} - -- (void)removeDisplayedBarrages { - [_lines makeObjectsPerformSelector:@selector(clear)]; -} - -- (void)removeAll { - [self emptyQueue]; - [self removeDisplayedBarrages]; - [self _pauseClockIfNeeded]; -} - -- (void)pause { - if ( _disabled ) return; - [_clock pause]; - self.paused = YES; -} - -- (void)resume { - if ( _disabled ) return; - [_clock resume]; - self.paused = NO; -} - -- (id)getObserver { - return [SJBarrageQueueControllerObserver.alloc initWithController:self]; -} - -- (NSInteger)queueSize { - return _queue.size; -} - -#pragma mark - - -- (void)clock:(SJBarrageClock *)clock timeDidChange:(NSTimeInterval)time { - if ( CGRectIsEmpty(self.view.bounds) ) - return; - - for ( NSInteger index = 0 ; index < _numberOfLines ; ++ index ) { - SJBarrageLine *line = _lines[index]; - SJBarrageViewModel *_Nullable last = line.last; - if ( time >= last.nextBarrageStartTime + last.delay ) { - id _Nullable item = _queue.dequeue; - if ( item != nil ) { - [self _postNotification:SJBarrageQueueControllerWillDisplayBarrageNotification userInfo:@{SJBarrageQueueControllerBarrageItemKey:item}]; - SJBarrageViewModel *viewModel = [SJBarrageViewModel.alloc initWithBarrageItem:item]; - CGFloat itemSpacing = [_configuration itemSpacingForLineAtIndex:index]; - CGFloat barragePoints = viewModel.contentSize.width; - NSTimeInterval pointDuration = [self _pointDurationForLineAtIndex:index]; - CGFloat allPoints = [self _allPointsWithBarragePoints:barragePoints]; - - viewModel.duration = allPoints * pointDuration; - viewModel.nextBarrageStartTime = time + (barragePoints + itemSpacing) * pointDuration; - viewModel.points = allPoints; - - __weak typeof(self) _self = self; - [line fire:viewModel stoppedCallback:^{ - __strong typeof(_self) self = _self; - if ( !self ) return; - [self _postNotification:SJBarrageQueueControllerDidEndDisplayBarrageNotification userInfo:@{SJBarrageQueueControllerBarrageItemKey:item}]; - [self _pauseClockIfNeeded]; - }]; - } - } - } -} - -- (void)clock:(SJBarrageClock *)clock pausedDidChange:(BOOL)isPaused { - [_lines makeObjectsPerformSelector:isPaused ? @selector(pause) : @selector(resume)]; -} - -- (void)barrageQueueControllerView:(SJBarrageQueueControllerView *)view boundsDidChange:(CGRect)bounds previousBounds:(CGRect)previousBounds { - if ( previousBounds.size.width > bounds.size.width ) { - CGFloat points = previousBounds.size.width - bounds.size.width; - for ( NSInteger i = 0 ; i < _numberOfLines ; ++ i ) { - _lines[i].last.delay += points * [self _pointDurationForLineAtIndex:i]; - } - } - previousBounds = bounds; -} - -#pragma mark - - -- (void)setPaused:(BOOL)paused { - if ( paused != _paused ) { - _paused = paused; - [self _postNotification:SJBarrageQueueControllerPausedDidChangeNotification]; - } -} - -- (NSTimeInterval)_pointDurationForLineAtIndex:(NSInteger)index { - return POINT_SPEED_FAST / [_configuration rateForLineAtIndex:index]; -} - -- (CGFloat)_allPointsWithBarragePoints:(CGFloat)barragePoints { - return barragePoints + SJScreenMaxWidth; -} - -- (void)_pauseClockIfNeeded { - if ( _queue.size == 0 ) { - for ( SJBarrageLine *line in _lines ) { - if ( line.last != nil ) return; - } - - [_clock pause]; - } -} - -- (void)_postNotification:(NSNotificationName)note { - [self _postNotification:note userInfo:nil]; -} - -- (void)_postNotification:(NSNotificationName)note userInfo:(nullable NSDictionary *)userInfo { - dispatch_async(dispatch_get_main_queue(), ^{ - [NSNotificationCenter.defaultCenter postNotificationName:note object:self userInfo:userInfo]; - }); -} -@end - -#pragma mark - - -@implementation SJBarrageLineConfiguration { - BOOL _isResponse_rateForLineAtIndex; - BOOL _isResponse_topMarginForLineAtIndex; - BOOL _isResponse_itemSpacingForLineAtIndex; - BOOL _isResponse_heightForLineAtIndex; -} - -- (instancetype)init { - self = [super init]; - if ( self ) { - _rate = 1; - _topMargin = 3.0; - _itemSpacing = 38.0; - _height = 26.0; - } - return self; -} - -- (void)setDelegate:(nullable id)delegate { - _delegate = delegate; - _isResponse_rateForLineAtIndex = [delegate respondsToSelector:@selector(barrageLineConfiguration:rateForLineAtIndex:)]; - _isResponse_topMarginForLineAtIndex = [delegate respondsToSelector:@selector(barrageLineConfiguration:topMarginForLineAtIndex:)]; - _isResponse_itemSpacingForLineAtIndex = [delegate respondsToSelector:@selector(barrageLineConfiguration:itemSpacingForLineAtIndex:)]; - _isResponse_heightForLineAtIndex = [delegate respondsToSelector:@selector(barrageLineConfiguration:heightForLineAtIndex:)]; -} - -- (CGFloat)rateForLineAtIndex:(NSInteger)index { - CGFloat rate = _isResponse_rateForLineAtIndex ? [_delegate barrageLineConfiguration:self rateForLineAtIndex:index] : _rate; - return rate ?: CGFLOAT_MIN; -} -- (CGFloat)topMarginForLineAtIndex:(NSInteger)index { - return _isResponse_topMarginForLineAtIndex ? [_delegate barrageLineConfiguration:self topMarginForLineAtIndex:index] : _topMargin; -} -- (CGFloat)itemSpacingForLineAtIndex:(NSInteger)index { - return _isResponse_itemSpacingForLineAtIndex ? [_delegate barrageLineConfiguration:self itemSpacingForLineAtIndex:index] : _itemSpacing; -} -- (CGFloat)heightForLineAtIndex:(NSInteger)index { - return _isResponse_heightForLineAtIndex ? [_delegate barrageLineConfiguration:self heightForLineAtIndex:index] : _height; -} -@end -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJControlLayerAppearStateManager.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJControlLayerAppearStateManager.m index 35c67e17a..475f09b76 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJControlLayerAppearStateManager.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJControlLayerAppearStateManager.m @@ -16,7 +16,7 @@ - (instancetype)initWithManager:(id)mgr; @end @implementation SJControlLayerAppearManagerObserver -@synthesize appearStateDidChangeExeBlock = _appearStateDidChangeExeBlock; +@synthesize onAppearChanged = _onAppearChanged; - (instancetype)initWithManager:(SJControlLayerAppearStateManager *)mgr { self = [super init]; if ( !self ) @@ -33,8 +33,8 @@ - (void)dealloc { - (void)appearStateDidChange:(NSNotification *)note { SJControlLayerAppearStateManager *mgr = note.object; - if ( _appearStateDidChangeExeBlock ) - _appearStateDidChangeExeBlock(mgr); + if ( _onAppearChanged ) + _onAppearChanged(mgr); } @end diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageItem.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.h similarity index 81% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageItem.h rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.h index 54f1078eb..214f61bc1 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageItem.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.h @@ -1,15 +1,15 @@ // -// SJBarrageItem.h +// SJDanmakuItem.h // Pods // // Created by 畅三江 on 2019/11/12. // #import -#import "SJBarrageQueueControllerDefines.h" +#import "SJDanmakuPopupControllerDefines.h" NS_ASSUME_NONNULL_BEGIN -@interface SJBarrageItem : NSObject +@interface SJDanmakuItem : NSObject - (instancetype)initWithContent:(NSAttributedString *)content; - (instancetype)initWithCustomView:(__kindof UIView *)customView; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageItem.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.m similarity index 85% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageItem.m rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.m index ff7e092f5..70aed3adf 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJBarrageItem.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuItem.m @@ -1,14 +1,14 @@ // -// SJBarrageItem.m +// SJDanmakuItem.m // Pods // // Created by 畅三江 on 2019/11/12. // -#import "SJBarrageItem.h" +#import "SJDanmakuItem.h" NS_ASSUME_NONNULL_BEGIN -@implementation SJBarrageItem +@implementation SJDanmakuItem - (instancetype)initWithContent:(NSAttributedString *)content { self = [super init]; if ( self ) { diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.h new file mode 100644 index 000000000..123dfb18b --- /dev/null +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.h @@ -0,0 +1,90 @@ +// +// SJDanmakuPopupController.h +// Pods +// +// Created by 畅三江 on 2019/11/12. +// + +#import "SJDanmakuPopupControllerDefines.h" +#import +@protocol SJDanmakuTrackConfigurationDelegate; +@class SJDanmakuTrackConfiguration; + +NS_ASSUME_NONNULL_BEGIN +@interface SJDanmakuPopupController : NSObject +- (instancetype)initWithNumberOfTracks:(NSUInteger)numberOfTracks; + +@property (nonatomic) NSInteger numberOfTracks; + +@property (nonatomic, strong, readonly) SJDanmakuTrackConfiguration *trackConfiguration; + +- (void)reloadTrackConfiguration; ///< 当配置修改后, 请调用该方法来刷新 + +@property (nonatomic, getter=isDisabled) BOOL disabled; + +- (void)enqueue:(id)item; +- (void)emptyQueue; +- (void)removeDisplayedItems; +- (void)removeAll; + +@property (nonatomic, readonly, getter=isPaused) BOOL paused; +- (void)pause; +- (void)resume; + +- (id)getObserver; + +@property (nonatomic, strong, readonly) __kindof UIView *view; +@property (nonatomic, readonly) NSInteger queueSize; ///< 未显示的弹幕数量 + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; +@end + + +@interface SJDanmakuTrackConfiguration : NSObject + +@property (nonatomic, weak, nullable) id delegate; + +/// +/// 弹幕移动速率 +/// +/// default value 1.0 +/// +@property (nonatomic) CGFloat rate; + +/// +/// 弹幕之间的间距 +/// +/// default value is 38.0 +/// +@property (nonatomic) CGFloat itemSpacing; + +/// +/// 顶部外间距 +/// +/// default value is 3.0 +/// +@property (nonatomic) CGFloat topMargin; + +/// +/// 行高 +/// +/// default value is 26.0 +/// +@property (nonatomic) CGFloat height; +@end + + +@protocol SJDanmakuTrackConfigurationDelegate +@optional +/// 移动速率 +- (CGFloat)trackConfiguration:(SJDanmakuTrackConfiguration *)trackConfiguration rateForTrackAtIndex:(NSInteger)index; +/// 弹幕之间的间距 +- (CGFloat)trackConfiguration:(SJDanmakuTrackConfiguration *)trackConfiguration itemSpacingForTrackAtIndex:(NSInteger)index; + +/// 顶部外间距 +- (CGFloat)trackConfiguration:(SJDanmakuTrackConfiguration *)trackConfiguration topMarginForTrackAtIndex:(NSInteger)index; +/// 行高 +- (CGFloat)trackConfiguration:(SJDanmakuTrackConfiguration *)trackConfiguration heightForTrackAtIndex:(NSInteger)index; +@end +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.m new file mode 100644 index 000000000..ef45e6ddf --- /dev/null +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDanmakuPopupController.m @@ -0,0 +1,655 @@ +// +// SJDanmakuPopupController.m +// Pods +// +// Created by 畅三江 on 2019/11/12. +// + +#import "SJDanmakuPopupController.h" +#import "CALayer+SJBaseVideoPlayerExtended.h" +#import "NSTimer+SJAssetAdd.h" + +#if __has_include() +#import +#import +#else +#import "SJQueue.h" +#import "NSAttributedString+SJMake.h" +#endif + +#if __has_include() +#import +#else +#import "Masonry.h" +#endif + + +NS_ASSUME_NONNULL_BEGIN + +#define POINT_SPEED_FAST (0.01) + +static NSNotificationName const SJDanmakuPopupControllerOnDisabledChangedNotification = @"SJDanmakuPopupControllerOnDisabledChangedNotification"; +static NSNotificationName const SJDanmakuPopupControllerOnPausedChangedNotification = @"SJDanmakuPopupControllerOnPausedChangedNotification"; +static NSNotificationName const SJDanmakuPopupControllerWillDisplayItemNotification = @"SJDanmakuPopupControllerWillDisplayItemNotification"; +static NSNotificationName const SJDanmakuPopupControllerDidEndDisplayingItemNotification = @"SJDanmakuPopupControllerDidEndDisplayingItemNotification"; +static NSString *const SJDanmakuItemUserInfoKey = @"danmakuItem"; + +#pragma mark - + +@protocol SJDanmakuViewDataSource +@property (nonatomic, copy, readonly, nullable) NSAttributedString *content; +@property (nonatomic, strong, readonly, nullable) __kindof UIView *customView; +@property (nonatomic, readonly) CGSize contentSize; +@end + +@interface SJDanmakuView : UILabel +@property (nonatomic, strong, nullable) id dataSource; +@end + +@interface SJDanmakuView () +@property (nonatomic, strong, nullable) UIView *customView; +@end + +@implementation SJDanmakuView +- (CGSize)intrinsicContentSize { + return _dataSource.contentSize; +} + +- (void)setDataSource:(nullable id)dataSource { + if ( dataSource != _dataSource ) { + _dataSource = dataSource; + + if ( _customView != nil ) { + [_customView removeFromSuperview]; + _customView = nil; + } + + if ( dataSource.content.length != 0 ) { + self.attributedText = dataSource.content; + } + else { + self.attributedText = nil; + _customView = dataSource.customView; + _customView.frame = CGRectMake(0, 0, dataSource.contentSize.width, dataSource.contentSize.height); + [self addSubview:dataSource.customView]; + } + } +} +@end + +#pragma mark - + +@interface SJDanmakuViewModel : NSObject +- (instancetype)initWithItem:(id)item; + +@property (nonatomic, copy, readonly, nullable) NSAttributedString *content; +@property (nonatomic, strong, readonly, nullable) __kindof UIView *customView; +@property (nonatomic, readonly) CGSize contentSize; + +@property (nonatomic) NSTimeInterval duration; +@property (nonatomic) NSTimeInterval nextItemStartTime; +@property (nonatomic) NSTimeInterval delay; +@property (nonatomic) CGFloat points; +@end + +@implementation SJDanmakuViewModel +- (instancetype)initWithItem:(id)item { + self = [super init]; + if ( self ) { + if ( item.content.length != 0 ) { + _content = item.content.copy; + _contentSize = [_content sj_textSize]; + } + else { + _customView = item.customView; + if ( CGSizeEqualToSize(CGSizeZero, _contentSize) ) + _contentSize = [item.customView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; + else + _contentSize = item.customView.bounds.size; + } + } + return self; +} +@end + +#pragma mark - + +@interface SJDanmakuViewReusablePool : NSObject ++ (instancetype)pool; +@property (nonatomic) NSInteger size; +- (SJDanmakuView *)dequeueReusableView; +- (void)addView:(SJDanmakuView *)view; +@end + +@implementation SJDanmakuViewReusablePool { + NSMutableArray *_m; +} ++ (instancetype)pool { + return SJDanmakuViewReusablePool.alloc.init; +} +- (instancetype)init { + self = [super init]; + if ( self ) { + _size = 5; + _m = [NSMutableArray.alloc initWithCapacity:_size]; + } + return self; +} +- (SJDanmakuView *)dequeueReusableView { + if ( _m.count == 0 ) { + [_m addObject:[SJDanmakuView.alloc initWithFrame:CGRectZero]]; + } + + SJDanmakuView *last = _m.lastObject; + [_m removeLastObject]; + return last; +} +- (void)addView:(SJDanmakuView *)view { + if ( view != nil && _m.count < _size ) { + [_m addObject:view]; + } +} +@end + + +#pragma mark - + +@protocol SJDanmakuClockDelegate; + +@interface SJDanmakuClock : NSObject ++ (instancetype)clockWithDelegate:(id)delegate; +@property (nonatomic, weak, nullable) id delegate; +@property (nonatomic, readonly) NSTimeInterval time; + +@property (nonatomic, readonly, getter=isPaused) BOOL paused; +- (void)pause; +- (void)resume; +@end + +@protocol SJDanmakuClockDelegate +- (void)clock:(SJDanmakuClock *)clock onTimeUpdated:(NSTimeInterval)time; +- (void)clock:(SJDanmakuClock *)clock onPausedChanged:(BOOL)isPaused; +@end + +@interface SJDanmakuClock () +@property (nonatomic) NSTimeInterval time; +@property (nonatomic, strong, nullable) NSTimer *timer; +@property (nonatomic, getter=isPaused) BOOL paused; +@end +@implementation SJDanmakuClock ++ (instancetype)clockWithDelegate:(id)delegate { + SJDanmakuClock *clock = SJDanmakuClock.alloc.init; + clock.delegate = delegate; + return clock; +} +- (instancetype)init { + self = [super init]; + if ( self ) { + _paused = YES; + } + return self; +} +- (void)pause { + if ( _paused == NO ) { + [_timer invalidate]; + _timer = nil; + self.paused = YES; + } +} +- (void)resume { + if ( _paused == YES ) { + __weak typeof(self) _self = self; + _timer = [NSTimer assetAdd_timerWithTimeInterval:0.1 block:^(NSTimer *timer) { + __strong typeof(_self) self = _self; + if ( !self ) { + [timer invalidate]; + return; + } + self.time += timer.timeInterval; + } repeats:YES]; + [_timer assetAdd_fire]; + [NSRunLoop.mainRunLoop addTimer:_timer forMode:NSRunLoopCommonModes]; + self.paused = NO; + } +} +- (void)setTime:(NSTimeInterval)time { + _time = time; + [self.delegate clock:self onTimeUpdated:time]; +} + +- (void)setPaused:(BOOL)paused { + _paused = paused; + [self.delegate clock:self onPausedChanged:paused]; +} +@end + +#pragma mark - + +@interface SJDanmakuTrackView : UIView +@end + +@implementation SJDanmakuTrackView +@end + +#pragma mark - + +@interface SJDanmakuTrackConfiguration () +- (CGFloat)rateForTrackAtIndex:(NSInteger)index; +- (CGFloat)topMarginForTrackAtIndex:(NSInteger)index; +- (CGFloat)itemSpacingForTrackAtIndex:(NSInteger)index; +- (CGFloat)heightForTrackAtIndex:(NSInteger)index; +@end + +#pragma mark - + +@interface SJDanmakuTrack : NSObject +- (instancetype)initWithPool:(SJDanmakuViewReusablePool *)pool; +@property (nonatomic, strong, readonly) SJDanmakuViewReusablePool *pool; +@property (nonatomic, strong, readonly) SJDanmakuTrackView *view; + +@property (nonatomic, strong, readonly, nullable) SJDanmakuViewModel *last; +- (void)pause; +- (void)resume; +- (void)clear; +- (void)fire:(SJDanmakuViewModel *)viewModel stoppedCallback:(void(^)(void))completion; +@end + +@implementation SJDanmakuTrack +- (instancetype)initWithPool:(SJDanmakuViewReusablePool *)pool { + self = [super init]; + if ( self ) { + _pool = pool; + _view = [SJDanmakuTrackView.alloc initWithFrame:CGRectZero]; + } + return self; +} + +- (nullable SJDanmakuViewModel *)last { + __auto_type view = (SJDanmakuView *)_view.subviews.lastObject; + return view.dataSource; +} + +- (void)pause { + for ( UIView *subview in _view.subviews ) { + [subview.layer pauseAnimation]; + } +} + +- (void)resume { + for ( UIView *subview in _view.subviews ) { + [subview.layer resumeAnimation]; + } +} + +- (void)clear { + [_view.subviews enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(__kindof UIView * _Nonnull view, NSUInteger idx, BOOL * _Nonnull stop) { + [view.layer removeAllAnimations]; + [view removeFromSuperview]; + }]; +} + +- (void)fire:(SJDanmakuViewModel *)viewModel stoppedCallback:(void(^)(void))completion { + SJDanmakuView *danmakuView = [_pool dequeueReusableView]; + danmakuView.dataSource = viewModel; + [danmakuView.layer removeAllAnimations]; + [_view addSubview:danmakuView]; + + CGRect frame = CGRectZero; + CGRect bounds = _view.bounds; + frame.origin.x = bounds.size.width; + frame.origin.y = (CGRectGetHeight(bounds) - viewModel.contentSize.height) * 0.5; + frame.size = viewModel.contentSize; + danmakuView.frame = frame; + + CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"]; + animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity]; + animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(-viewModel.points, 0, 0)]; + animation.duration = viewModel.duration; + animation.fillMode = kCAFillModeForwards; + animation.removedOnCompletion = NO; + [danmakuView.layer addAnimation:animation forKey:@"anim"]; + __weak typeof(self) _self = self; + __weak typeof(danmakuView) _danmakuView = danmakuView; + [danmakuView.layer addAnimation:animation stopHandler:^(CAAnimation * _Nonnull anim, BOOL isFinished) { + __strong typeof(_self) self = _self; + if ( !self ) return; + [_danmakuView removeFromSuperview]; + [self.pool addView:_danmakuView]; + if ( completion ) completion(); + }]; +} +@end + +#pragma mark - + +@protocol SJDanmakuLayoutContainerViewDelegate; + +@interface SJDanmakuLayoutContainerView : UIView +- (instancetype)initWithDelegate:(id)delegate; +@property (nonatomic, weak, nullable) id delegate; +@end + +@protocol SJDanmakuLayoutContainerViewDelegate +- (void)layoutContainerView:(SJDanmakuLayoutContainerView *)view boundsDidChange:(CGRect)bounds previousBounds:(CGRect)previousBounds; +@end + +@implementation SJDanmakuLayoutContainerView { + CGRect _previousBounds; +} + +- (instancetype)initWithDelegate:(id)delegate { + self = [super init]; + if ( self ) { + _delegate = delegate; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + CGRect bounds = self.bounds; + if ( !CGRectEqualToRect(bounds, _previousBounds) ) { + if ( [self.delegate respondsToSelector:@selector(layoutContainerView:boundsDidChange:previousBounds:)] ) { + [self.delegate layoutContainerView:self boundsDidChange:bounds previousBounds:_previousBounds]; + } + } + _previousBounds = bounds; +} +@end + +#pragma mark - + +@interface SJDanmakuPopupControllerObserver : NSObject +- (instancetype)initWithController:(SJDanmakuPopupController *)controller; +@end + +@implementation SJDanmakuPopupControllerObserver +@synthesize onDisabledChanged = _onDisabledChanged; +@synthesize onPausedChanged = _onPausedChanged; +@synthesize willDisplayItem = _willDisplayItem; +@synthesize didEndDisplayingItem = _didEndDisplayingItem; +- (instancetype)initWithController:(SJDanmakuPopupController *)controller { + self = [super init]; + if ( self ) { + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_onPausedChanged:) name:SJDanmakuPopupControllerOnPausedChangedNotification object:controller]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_disabledDidChange:) name:SJDanmakuPopupControllerOnDisabledChangedNotification object:controller]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_willDisplayItem:) name:SJDanmakuPopupControllerWillDisplayItemNotification object:controller]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didEndDisplayingItem:) name:SJDanmakuPopupControllerDidEndDisplayingItemNotification object:controller]; + } + return self; +} +- (void)dealloc { + [NSNotificationCenter.defaultCenter removeObserver:self]; +} +- (void)_onPausedChanged:(NSNotification *)note { + if ( _onPausedChanged ) _onPausedChanged(note.object); +} +- (void)_disabledDidChange:(NSNotification *)note { + if ( _onDisabledChanged ) _onDisabledChanged(note.object); +} +- (void)_willDisplayItem:(NSNotification *)note { + if ( _willDisplayItem ) _willDisplayItem(note.object, note.userInfo[SJDanmakuItemUserInfoKey]); +} +- (void)_didEndDisplayingItem:(NSNotification *)note { + if ( _didEndDisplayingItem ) _didEndDisplayingItem(note.object, note.userInfo[SJDanmakuItemUserInfoKey]); +} +@end + +#pragma mark - + + +@interface SJDanmakuPopupController () { + SJQueue> *_queue; + SJDanmakuClock *_clock; +} +@property (nonatomic, strong, readonly) SJDanmakuViewReusablePool *reusablePool; +@property (nonatomic, strong, readonly) NSMutableArray *tracks; +@property (nonatomic, getter=isPaused) BOOL paused; +@end + +@implementation SJDanmakuPopupController +@synthesize view = _view; +static CGFloat SJScreenMaxWidth; ++ (void)initialize { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + SJScreenMaxWidth = MAX(CGRectGetWidth(UIScreen.mainScreen.bounds), CGRectGetHeight(UIScreen.mainScreen.bounds)); + }); +} + +- (instancetype)initWithNumberOfTracks:(NSUInteger)numberOfTracks { + self = [super init]; + if ( self ) { + _reusablePool = SJDanmakuViewReusablePool.pool; + _queue = SJQueue.queue; + _clock = [SJDanmakuClock clockWithDelegate:self]; + _view = [SJDanmakuLayoutContainerView.alloc initWithDelegate:self]; + _tracks = [NSMutableArray arrayWithCapacity:4]; + _trackConfiguration = SJDanmakuTrackConfiguration.alloc.init; + + self.numberOfTracks = numberOfTracks; + } + return self; +} + +- (void)setNumberOfTracks:(NSInteger)numberOfTracks { + if ( numberOfTracks != _numberOfTracks ) { + _numberOfTracks = numberOfTracks; + + // 移除多余的行 + if ( numberOfTracks < _tracks.count ) { + NSRange range = NSMakeRange(numberOfTracks, _tracks.count - numberOfTracks); + NSArray *useless = [_tracks subarrayWithRange:range]; + [useless enumerateObjectsUsingBlock:^(SJDanmakuTrack * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + [obj.view removeFromSuperview]; + }]; + [_tracks removeObjectsInRange:range]; + } + // 创建新增的行 + else if ( numberOfTracks > _tracks.count ) { + for ( NSInteger i = _tracks.count ; i < numberOfTracks ; ++ i ) { + SJDanmakuTrack *track = [SJDanmakuTrack.alloc initWithPool:_reusablePool]; + [_view addSubview:track.view]; + [_tracks addObject:track]; + } + } + + [self reloadTrackConfiguration]; + } +} + +- (void)setDisabled:(BOOL)disabled { + if ( disabled != _disabled ) { + _disabled = disabled; + if ( disabled ) [self removeAll]; + [self _postNotification:SJDanmakuPopupControllerOnDisabledChangedNotification]; + } +} + +- (void)reloadTrackConfiguration { + SJDanmakuTrack *last = _tracks.lastObject; + __block SJDanmakuTrack *pret = nil; + [_tracks enumerateObjectsUsingBlock:^(SJDanmakuTrack * _Nonnull track, NSUInteger idx, BOOL * _Nonnull stop) { + CGFloat topMargin = [self.trackConfiguration topMarginForTrackAtIndex:idx]; + CGFloat height = [self.trackConfiguration heightForTrackAtIndex:idx]; + [track.view mas_remakeConstraints:^(MASConstraintMaker *make) { + pret == nil ? make.top.offset(topMargin) : make.top.equalTo(pret.view.mas_bottom).offset(topMargin); + make.left.right.offset(0); + make.height.offset(height); + if ( track == last ) make.bottom.offset(0); + }]; + + pret = track; + }]; +} + +- (void)enqueue:(id)item { + if ( _disabled ) return; + [_queue enqueue:item]; + if ( _paused == NO ) [_clock resume]; +} + +- (void)emptyQueue { + [_queue empty]; +} + +- (void)removeDisplayedItems { + [_tracks makeObjectsPerformSelector:@selector(clear)]; +} + +- (void)removeAll { + [self emptyQueue]; + [self removeDisplayedItems]; + [self _pauseClockIfNeeded]; +} + +- (void)pause { + if ( _disabled ) return; + [_clock pause]; + self.paused = YES; +} + +- (void)resume { + if ( _disabled ) return; + [_clock resume]; + self.paused = NO; +} + +- (id)getObserver { + return [SJDanmakuPopupControllerObserver.alloc initWithController:self]; +} + +- (NSInteger)queueSize { + return _queue.size; +} + +#pragma mark - + +- (void)clock:(SJDanmakuClock *)clock onTimeUpdated:(NSTimeInterval)time { + if ( CGRectIsEmpty(self.view.bounds) ) + return; + + for ( NSInteger index = 0 ; index < _numberOfTracks ; ++ index ) { + SJDanmakuTrack *line = _tracks[index]; + SJDanmakuViewModel *_Nullable last = line.last; + if ( time >= last.nextItemStartTime + last.delay ) { + id _Nullable item = _queue.dequeue; + if ( item != nil ) { + [self _postNotification:SJDanmakuPopupControllerWillDisplayItemNotification userInfo:@{SJDanmakuItemUserInfoKey:item}]; + SJDanmakuViewModel *viewModel = [SJDanmakuViewModel.alloc initWithItem:item]; + CGFloat itemSpacing = [_trackConfiguration itemSpacingForTrackAtIndex:index]; + CGFloat danmakuPoints = viewModel.contentSize.width; + NSTimeInterval pointDuration = [self _pointDurationForLineAtIndex:index]; + CGFloat allPoints = [self _allTransitionPointsWithDanmakuPoints:danmakuPoints]; + + viewModel.duration = allPoints * pointDuration; + viewModel.nextItemStartTime = time + (danmakuPoints + itemSpacing) * pointDuration; + viewModel.points = allPoints; + + __weak typeof(self) _self = self; + [line fire:viewModel stoppedCallback:^{ + __strong typeof(_self) self = _self; + if ( !self ) return; + [self _postNotification:SJDanmakuPopupControllerDidEndDisplayingItemNotification userInfo:@{SJDanmakuItemUserInfoKey:item}]; + [self _pauseClockIfNeeded]; + }]; + } + } + } +} + +- (void)clock:(SJDanmakuClock *)clock onPausedChanged:(BOOL)isPaused { + [_tracks makeObjectsPerformSelector:isPaused ? @selector(pause) : @selector(resume)]; +} + +- (void)layoutContainerView:(SJDanmakuLayoutContainerView *)view boundsDidChange:(CGRect)bounds previousBounds:(CGRect)previousBounds { + if ( previousBounds.size.width > bounds.size.width ) { + CGFloat points = previousBounds.size.width - bounds.size.width; + for ( NSInteger i = 0 ; i < _numberOfTracks ; ++ i ) { + _tracks[i].last.delay += points * [self _pointDurationForLineAtIndex:i]; + } + } + previousBounds = bounds; +} + +#pragma mark - + +- (void)setPaused:(BOOL)paused { + if ( paused != _paused ) { + _paused = paused; + [self _postNotification:SJDanmakuPopupControllerOnPausedChangedNotification]; + } +} + +- (NSTimeInterval)_pointDurationForLineAtIndex:(NSInteger)index { + return POINT_SPEED_FAST / [_trackConfiguration rateForTrackAtIndex:index]; +} + +- (CGFloat)_allTransitionPointsWithDanmakuPoints:(CGFloat)danmakuPoints { + return danmakuPoints + SJScreenMaxWidth; +} + +- (void)_pauseClockIfNeeded { + if ( _queue.size == 0 ) { + for ( SJDanmakuTrack *line in _tracks ) { + if ( line.last != nil ) return; + } + + [_clock pause]; + } +} + +- (void)_postNotification:(NSNotificationName)note { + [self _postNotification:note userInfo:nil]; +} + +- (void)_postNotification:(NSNotificationName)note userInfo:(nullable NSDictionary *)userInfo { + dispatch_async(dispatch_get_main_queue(), ^{ + [NSNotificationCenter.defaultCenter postNotificationName:note object:self userInfo:userInfo]; + }); +} +@end + +#pragma mark - + +@implementation SJDanmakuTrackConfiguration { + BOOL _isResponse_rateForTrackAtIndex; + BOOL _isResponse_topMarginForTrackAtIndex; + BOOL _isResponse_itemSpacingForTrackAtIndex; + BOOL _isResponse_heightForTrackAtIndex; +} + +- (instancetype)init { + self = [super init]; + if ( self ) { + _rate = 1; + _topMargin = 3.0; + _itemSpacing = 38.0; + _height = 26.0; + } + return self; +} + +- (void)setDelegate:(nullable id)delegate { + _delegate = delegate; + _isResponse_rateForTrackAtIndex = [delegate respondsToSelector:@selector(trackConfiguration:rateForTrackAtIndex:)]; + _isResponse_topMarginForTrackAtIndex = [delegate respondsToSelector:@selector(trackConfiguration:topMarginForTrackAtIndex:)]; + _isResponse_itemSpacingForTrackAtIndex = [delegate respondsToSelector:@selector(trackConfiguration:itemSpacingForTrackAtIndex:)]; + _isResponse_heightForTrackAtIndex = [delegate respondsToSelector:@selector(trackConfiguration:heightForTrackAtIndex:)]; +} + +- (CGFloat)rateForTrackAtIndex:(NSInteger)index { + CGFloat rate = _isResponse_rateForTrackAtIndex ? [_delegate trackConfiguration:self rateForTrackAtIndex:index] : _rate; + return rate ?: CGFLOAT_MIN; +} +- (CGFloat)topMarginForTrackAtIndex:(NSInteger)index { + return _isResponse_topMarginForTrackAtIndex ? [_delegate trackConfiguration:self topMarginForTrackAtIndex:index] : _topMargin; +} +- (CGFloat)itemSpacingForTrackAtIndex:(NSInteger)index { + return _isResponse_itemSpacingForTrackAtIndex ? [_delegate trackConfiguration:self itemSpacingForTrackAtIndex:index] : _itemSpacing; +} +- (CGFloat)heightForTrackAtIndex:(NSInteger)index { + return _isResponse_heightForTrackAtIndex ? [_delegate trackConfiguration:self heightForTrackAtIndex:index] : _height; +} +@end +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDeviceVolumeAndBrightnessManager.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDeviceVolumeAndBrightnessManager.m index 2a4b421ad..3d5c84056 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDeviceVolumeAndBrightnessManager.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJDeviceVolumeAndBrightnessManager.m @@ -9,6 +9,7 @@ #import "SJDeviceVolumeAndBrightnessManager.h" #import "SJBaseVideoPlayerResourceLoader.h" #import "SJBaseVideoPlayerConst.h" +#import "SJPlayerView.h" #import #import @@ -214,7 +215,8 @@ - (void)prepare { } - (nullable UIView *)targetView { - return [UIApplication.sharedApplication.keyWindow viewWithTag:SJBaseVideoPlayerPresentViewTag]; + SJPlayerView *playerView = (SJPlayerView *)[UIApplication.sharedApplication.keyWindow viewWithTag:SJPlayerViewTag]; + return playerView != nil ? playerView.presentView : nil; } - (void)_addOrRemoveSysVolumeView:(nullable UIWindow *)newWindow { @@ -230,8 +232,13 @@ - (void)_addOrRemoveSysVolumeView:(nullable UIWindow *)newWindow { #pragma mark - volume - (void)_volumeDidChange { - [self _refreshDataForVolumeView]; - [self _showVolumeViewIfNeeded]; + if ( NSThread.currentThread.isMainThread ) { + [self _refreshDataForVolumeView]; + [self _showVolumeViewIfNeeded]; + } + else { + [self performSelectorOnMainThread:@selector(_volumeDidChange) withObject:nil waitUntilDone:NO modes:@[NSRunLoopCommonModes]]; + } } @synthesize volume = _volume; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJFitOnScreenManager.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJFitOnScreenManager.m index dfa840c7b..2846e6bf2 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJFitOnScreenManager.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJFitOnScreenManager.m @@ -70,16 +70,12 @@ @interface SJFitOnScreenModeNavigationController : UINavigationController @implementation SJFitOnScreenModeNavigationController - (void)viewDidLoad { [super viewDidLoad]; - self.navigationBarHidden = YES; + [super setNavigationBarHidden:YES animated:NO]; } -- (void)setNavigationBarHidden:(BOOL)navigationBarHidden { - [super setNavigationBarHidden:YES]; -} +- (void)setNavigationBarHidden:(BOOL)navigationBarHidden { } -- (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated { - [super setNavigationBarHidden:YES animated:animated]; -} +- (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated { } - (BOOL)shouldAutorotate { return self.topViewController.shouldAutorotate; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJFloatSmallViewController.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJFloatSmallViewController.m index ea81e7bc2..8492de27f 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJFloatSmallViewController.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJFloatSmallViewController.m @@ -56,8 +56,8 @@ - (instancetype)initWithController:(id)controller; @end @implementation SJFloatSmallViewControllerObserver -@synthesize appearStateDidChangeExeBlock = _appearStateDidChangeExeBlock; -@synthesize enabledControllerExeBlock = _enabledControllerExeBlock; +@synthesize onAppearChanged = _onAppearChanged; +@synthesize onEnabled = _onEnabled; @synthesize controller = _controller; - (instancetype)initWithController:(id)controller { @@ -67,15 +67,15 @@ - (instancetype)initWithController:(id)controller { sjkvo_observe(controller, @"isAppeared", ^(id _Nonnull target, NSDictionary * _Nullable change) { dispatch_async(dispatch_get_main_queue(), ^{ - if ( self.appearStateDidChangeExeBlock ) - self.appearStateDidChangeExeBlock(target); + if ( self.onAppearChanged ) + self.onAppearChanged(target); }); }); sjkvo_observe(controller, @"enabled", ^(id _Nonnull target, NSDictionary * _Nullable change) { dispatch_async(dispatch_get_main_queue(), ^{ - if ( self.enabledControllerExeBlock ) - self.enabledControllerExeBlock(target); + if ( self.onEnabled ) + self.onEnabled(target); }); }); } @@ -94,8 +94,8 @@ @implementation SJFloatSmallViewController // 由于tap手势会阻断事件响应链, 为了避免此种情况, 此处无需添加单击和双击手势, 已改为由播放器主动调用这两个block. // // 这两个block将来可能会直接移动到播放器中. -@synthesize singleTappedOnTheFloatViewExeBlock = _singleTappedOnTheFloatViewExeBlock; -@synthesize doubleTappedOnTheFloatViewExeBlock = _doubleTappedOnTheFloatViewExeBlock; +@synthesize onSingleTapped = _onSingleTapped; +@synthesize onDoubleTapped = _onDoubleTapped; @synthesize floatViewShouldAppear = _floatViewShouldAppear; @synthesize targetSuperview = _targetSuperview; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.h index 88c7e5fb9..d6d591ec7 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.h @@ -38,6 +38,9 @@ NS_ASSUME_NONNULL_BEGIN - (void)receivedApplicationWillResignActiveNotification; - (void)receivedApplicationWillEnterForegroundNotification; - (void)receivedApplicationDidEnterBackgroundNotification; + +/// PIP +@property (nonatomic, copy, nullable) void(^restoreUserInterfaceForPictureInPictureStop)(id controller, void(^completionHandler)(BOOL restored)); @end /// @@ -51,6 +54,9 @@ extern NSNotificationName const SJMediaPlayerPlaybackDidFinishNotification; extern NSNotificationName const SJMediaPlayerDidReplayNotification; extern NSNotificationName const SJMediaPlayerDurationDidChangeNotification; extern NSNotificationName const SJMediaPlayerPlayableDurationDidChangeNotification; +extern NSNotificationName const SJMediaPlayerRateDidChangeNotification; +extern NSNotificationName const SJMediaPlayerVolumeDidChangeNotification; +extern NSNotificationName const SJMediaPlayerMutedDidChangeNotification; /// view extern NSNotificationName const SJMediaPlayerViewReadyForDisplayNotification; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.m index 26c92212e..194c37dce 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJMediaPlaybackController.m @@ -122,12 +122,11 @@ @implementation SJMediaPlayerContentView - (void)setView:(nullable UIView *)view { if ( _view ) [_view removeFromSuperview]; _view = view; - if ( view != nil ) [self addSubview:view]; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - _view.frame = self.bounds; + if ( view != nil ) { + view.frame = self.bounds; + view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + [self addSubview:view]; + } } @end @@ -300,7 +299,7 @@ - (void)stop { } - (void)refresh { - if ( self.currentPlayer.isPlayed && self.currentTime != 0 ) + if ( self.currentPlayer.isPlayed && self.duration != 0 && self.currentTime != 0 ) self.media.startPosition = self.currentTime; self.currentPlayer = nil; [self prepareToPlay]; @@ -403,7 +402,7 @@ - (NSTimeInterval)durationWatched { } - (nullable NSError *)error { - return nil; + return _currentPlayer.error; } - (BOOL)isPlayed { @@ -474,16 +473,25 @@ - (void)setPeriodicTimeInterval:(NSTimeInterval)periodicTimeInterval { - (void)setRate:(float)rate { _rate = rate; if ( self.timeControlStatus != SJPlaybackTimeControlStatusPaused ) _currentPlayer.rate = rate; + if ( [self.delegate respondsToSelector:@selector(playbackController:rateDidChange:)] ) { + [self.delegate playbackController:self rateDidChange:rate]; + } } - (void)setVolume:(float)volume { _volume = volume; _currentPlayer.volume = volume; + if ( [self.delegate respondsToSelector:@selector(playbackController:volumeDidChange:)] ) { + [self.delegate playbackController:self volumeDidChange:volume]; + } } - (void)setMuted:(BOOL)muted { _muted = muted; _currentPlayer.muted = muted; + if ( [self.delegate respondsToSelector:@selector(playbackController:mutedDidChange:)] ) { + [self.delegate playbackController:self mutedDidChange:muted]; + } } - (void)setCurrentPlayer:(nullable id)currentPlayer { @@ -871,6 +879,10 @@ - (void)cancel { NSNotificationName const SJMediaPlayerDidReplayNotification = @"SJMediaPlayerDidReplayNotification"; NSNotificationName const SJMediaPlayerDurationDidChangeNotification = @"SJMediaPlayerDurationDidChangeNotification"; NSNotificationName const SJMediaPlayerPlayableDurationDidChangeNotification = @"SJMediaPlayerPlayableDurationDidChangeNotification"; +NSNotificationName const SJMediaPlayerRateDidChangeNotification = @"SJMediaPlayerRateDidChangeNotification"; +NSNotificationName const SJMediaPlayerVolumeDidChangeNotification = @"SJMediaPlayerVolumeDidChangeNotification"; +NSNotificationName const SJMediaPlayerMutedDidChangeNotification = @"SJMediaPlayerMutedDidChangeNotification"; + NSNotificationName const SJMediaPlayerViewReadyForDisplayNotification = @"SJMediaPlayerViewReadyForDisplayNotification"; NSNotificationName const SJMediaPlayerPlaybackTypeDidChangeNotification = @"SJMediaPlayerPlaybackTypeDidChangeNotification"; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayModel.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayModel.h index f66820661..14c6ac738 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayModel.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayModel.h @@ -253,7 +253,7 @@ NS_ASSUME_NONNULL_BEGIN /// /// 当多个父视图设置不同的tag后, 管理类将通过此tag来定位对应父视图, 从而实现同一个页面中多个播放器同时播放的效果 /// -@property (nonatomic) NSUInteger superviewTag __deprecated_msg("use `playModel.superviewSelector`;"); +@property (nonatomic) NSUInteger superviewTag; @end diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerView.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerView.h index 26dadb570..401164325 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerView.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerView.h @@ -11,11 +11,11 @@ NS_ASSUME_NONNULL_BEGIN @interface SJPlayerView : UIView +@property (nonatomic, strong, readonly, nullable) UIView *presentView; @property (nonatomic, weak, nullable) id delegate; @end @protocol SJPlayerViewDelegate -- (void)playerViewDidLayoutSubviews:(SJPlayerView *)playerView; - (void)playerViewWillMoveToWindow:(SJPlayerView *)playerView; - (nullable UIView *)playerView:(SJPlayerView *)playerView hitTestForView:(nullable __kindof UIView *)view; @end diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerView.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerView.m index 7f862b87a..612055098 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerView.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerView.m @@ -6,17 +6,14 @@ // #import "SJPlayerView.h" -#import "SJBaseVideoPlayerConst.h" +#import "SJPlayerViewInternal.h" NS_ASSUME_NONNULL_BEGIN +@interface SJPlayerView () +@property (nonatomic, strong, nullable) UIView *presentView; +@end + @implementation SJPlayerView -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.tag = SJBaseVideoPlayerViewTag; - } - return self; -} - (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event { UIView *_Nullable view = [super hitTest:point withEvent:event]; @@ -28,13 +25,6 @@ - (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event return view; } -- (void)layoutSubviews { - [super layoutSubviews]; - if ( [self.delegate respondsToSelector:@selector(playerViewDidLayoutSubviews:)] ) { - [self.delegate playerViewDidLayoutSubviews:self]; - } -} - - (void)willMoveToWindow:(nullable UIWindow *)newWindow { [super willMoveToWindow:newWindow]; dispatch_async(dispatch_get_main_queue(), ^{ diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerViewInternal.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerViewInternal.h new file mode 100644 index 000000000..997ce28a3 --- /dev/null +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPlayerViewInternal.h @@ -0,0 +1,14 @@ +// +// SJPlayerViewInternal.h +// Pods +// +// Created by 畅三江 on 2022/7/10. +// + +#import "SJPlayerView.h" + +NS_ASSUME_NONNULL_BEGIN +@interface SJPlayerView (Internal) +@property (nonatomic, strong, nullable) UIView *presentView; +@end +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPrompt.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPrompt.h deleted file mode 100755 index 0841597b8..000000000 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPrompt.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// SJPrompt.h -// SJPromptProject -// -// Created by 畅三江 on 2017/9/26. -// Copyright © 2017年 changsanjiang. All rights reserved. -// - -#import "SJPromptDefines.h" - -NS_ASSUME_NONNULL_BEGIN -@interface SJPrompt : NSObject - -@end -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.h deleted file mode 100755 index 9c41c7d06..000000000 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// SJPromptPopupController.h -// Pods -// -// Created by 畅三江 on 2019/7/12. -// - -#import "SJPromptPopupControllerDefines.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SJPromptPopupController : NSObject - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.h new file mode 100755 index 000000000..a4902f84a --- /dev/null +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.h @@ -0,0 +1,16 @@ +// +// SJPromptingPopupController.h +// Pods +// +// Created by 畅三江 on 2019/7/12. +// + +#import "SJPromptingPopupControllerDefines.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SJPromptingPopupController : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.m similarity index 81% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.m rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.m index b677151e8..6a903060f 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptPopupController.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPromptingPopupController.m @@ -1,11 +1,12 @@ // -// SJPromptPopupController.m +// SJPromptingPopupController.m // Pods // // Created by 畅三江 on 2019/7/12. // -#import "SJPromptPopupController.h" +#import "SJPromptingPopupController.h" +#import "SJBaseVideoPlayerConst.h" #if __has_include() #import #else @@ -16,12 +17,12 @@ #define _AnimDuration (0.4) -@interface _SJPopItemContainerView : UIView +@interface _SJItemPopupContainerView : UIView @property (nonatomic, strong, readonly) UILabel *titleLabel; @property (nonatomic, strong, readonly) UIView *customView; @end -@implementation _SJPopItemContainerView +@implementation _SJItemPopupContainerView - (instancetype)initWithFrame:(CGRect)frame contentInset:(UIEdgeInsets)contentInset { self = [self initWithFrame:frame]; if (self) { @@ -52,17 +53,19 @@ - (instancetype)initWithFrame:(CGRect)frame customView:(UIView *)customView { - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; - if ( self ) { } + if ( self ) { + self.layer.zPosition = SJPlayerZIndexes.shared.promptingPopupViewZIndex; + } return self; } @end -@interface SJPromptPopupController () -@property (nonatomic, strong, readonly) NSMutableArray<_SJPopItemContainerView *> *subviews; +@interface SJPromptingPopupController () +@property (nonatomic, strong, readonly) NSMutableArray<_SJItemPopupContainerView *> *subviews; @end -@implementation SJPromptPopupController +@implementation SJPromptingPopupController @synthesize target = _target; @synthesize leftMargin = _leftMargin; @synthesize bottomMargin = _bottomMargin; @@ -103,7 +106,7 @@ - (void)show:(NSAttributedString *)title { } - (void)show:(NSAttributedString *)title duration:(NSTimeInterval)duration { - _SJPopItemContainerView *view = [[_SJPopItemContainerView alloc] initWithFrame:CGRectZero contentInset:_contentInset]; + _SJItemPopupContainerView *view = [[_SJItemPopupContainerView alloc] initWithFrame:CGRectZero contentInset:_contentInset]; view.titleLabel.attributedText = title; [self _show:view duration:duration]; } @@ -113,12 +116,12 @@ - (void)showCustomView:(UIView *)view { } - (void)showCustomView:(UIView *)customView duration:(NSTimeInterval)duration { - _SJPopItemContainerView *view = [[_SJPopItemContainerView alloc] initWithFrame:CGRectZero customView:customView]; + _SJItemPopupContainerView *view = [[_SJItemPopupContainerView alloc] initWithFrame:CGRectZero customView:customView]; [self _show:view duration:duration]; } - (BOOL)isShowingWithCustomView:(UIView *)view { - for ( _SJPopItemContainerView *containerView in self.subviews ) { + for ( _SJItemPopupContainerView *containerView in self.subviews ) { if ( containerView.customView == view ) return YES; } @@ -128,7 +131,7 @@ - (BOOL)isShowingWithCustomView:(UIView *)view { - (nullable __kindof NSArray *)displayingViews { if ( self.subviews.count != 0 ) { NSMutableArray *m = [NSMutableArray arrayWithCapacity:self.subviews.count]; - for ( _SJPopItemContainerView *containerView in self.subviews ) { + for ( _SJItemPopupContainerView *containerView in self.subviews ) { [m addObject:containerView.customView ?: containerView.titleLabel]; } return m; @@ -141,7 +144,7 @@ - (void)clear { } - (void)remove:(UIView *)view { - for ( _SJPopItemContainerView *containerView in self.subviews ) { + for ( _SJItemPopupContainerView *containerView in self.subviews ) { if ( containerView.customView == view || containerView.titleLabel == view ) { [self _removeSubview:containerView]; break; @@ -149,7 +152,7 @@ - (void)remove:(UIView *)view { } } -- (void)_show:(_SJPopItemContainerView *)view duration:(NSTimeInterval)duration { +- (void)_show:(_SJItemPopupContainerView *)view duration:(NSTimeInterval)duration { [self _addSubview:view]; __weak typeof(view) _view = view; __weak typeof(self) _self = self; @@ -161,13 +164,13 @@ - (void)_show:(_SJPopItemContainerView *)view duration:(NSTimeInterval)duration }); } -- (void)_addSubview:(_SJPopItemContainerView *)view { +- (void)_addSubview:(_SJItemPopupContainerView *)view { CGRect bounds = self.target.bounds; view.frame = CGRectMake(-bounds.size.width, bounds.size.height - _bottomMargin, 0, 0); [self.target addSubview:view]; [self.subviews addObject:view]; - [self.subviews enumerateObjectsUsingBlock:^(_SJPopItemContainerView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + [self.subviews enumerateObjectsUsingBlock:^(_SJItemPopupContainerView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { [self _remakeConstraintsAtIndex:idx]; }]; @@ -176,7 +179,7 @@ - (void)_addSubview:(_SJPopItemContainerView *)view { } completion:nil]; } -- (void)_removeSubview:(_SJPopItemContainerView *)view { +- (void)_removeSubview:(_SJItemPopupContainerView *)view { NSUInteger idx = [self.subviews indexOfObject:view]; if ( idx == NSNotFound ) return; @@ -196,14 +199,14 @@ - (void)_removeSubview:(_SJPopItemContainerView *)view { - (void)_removeAllSubviews { if ( self.subviews.count != 0 ) { - NSArray<_SJPopItemContainerView *> *subviews = self.subviews.copy; + NSArray<_SJItemPopupContainerView *> *subviews = self.subviews.copy; [self.subviews removeAllObjects]; [UIView animateWithDuration:_AnimDuration animations:^{ for ( UIView *subview in subviews ) { subview.alpha = 0.001; } } completion:^(BOOL finished) { - [subviews enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(_SJPopItemContainerView * _Nonnull subview, NSUInteger idx, BOOL * _Nonnull stop) { + [subviews enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(_SJItemPopupContainerView * _Nonnull subview, NSUInteger idx, BOOL * _Nonnull stop) { [subview removeFromSuperview]; }]; }]; @@ -215,7 +218,7 @@ - (void)_remakeConstraintsAtIndex:(NSInteger)idx { return; NSUInteger count = self.subviews.count; - _SJPopItemContainerView *view = self.subviews[idx]; + _SJItemPopupContainerView *view = self.subviews[idx]; [view mas_remakeConstraints:^(MASConstraintMaker *make) { if ( self.automaticallyAdjustsLeftInset ) { if ( @available(iOS 11.0, *) ) { diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJReachability.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJReachability.m index 57314d511..1ed352e77 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJReachability.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJReachability.m @@ -522,8 +522,8 @@ -(void)reachabilityChanged:(SCNetworkReachabilityFlags)flags - (NSString *) description { - NSString *description = [NSString stringWithFormat:@"<%@: %#x (%@)>", - NSStringFromClass([self class]), (unsigned int) self, [self currentReachabilityFlags]]; + NSString *description = [NSString stringWithFormat:@"<%@: %p (%@)>", + NSStringFromClass([self class]), self, [self currentReachabilityFlags]]; return description; } diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager.h deleted file mode 100755 index 9118f9b93..000000000 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// SJRotationManager.h -// SJVideoPlayer_Example -// -// Created by 畅三江 on 2019/7/13. -// Copyright © 2019 changsanjiang. All rights reserved. -// - -#import -#import "SJRotationManagerDefines.h" -@protocol SJRotationManagerDelegate; - -NS_ASSUME_NONNULL_BEGIN -@interface SJRotationManager : NSObject -@property (nonatomic, weak, nullable) id delegate; -@end - -@protocol SJRotationManagerDelegate -- (BOOL)prefersStatusBarHidden; -- (UIStatusBarStyle)preferredStatusBarStyle; -- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; -@end -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager.m deleted file mode 100755 index e71e7508d..000000000 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager.m +++ /dev/null @@ -1,599 +0,0 @@ -// -// SJRotationManager.m -// SJVideoPlayer_Example -// -// Created by 畅三江 on 2019/7/13. -// Copyright © 2019 changsanjiang. All rights reserved. -// - -#import "SJRotationManager.h" -#import "SJTimerControl.h" -#import "UIView+SJBaseVideoPlayerExtended.h" - -#if __has_include() -#import -#else -#import "SJRunLoopTaskQueue.h" -#endif - - -@class SJFullscreenModeViewController, SJFullscreenModeNavigationController; - -NS_ASSUME_NONNULL_BEGIN -@protocol SJFullscreenModeViewControllerDelegate -- (UIView *)target; -- (CGRect)targetOriginFrame; -- (BOOL)prefersStatusBarHidden; -- (UIStatusBarStyle)preferredStatusBarStyle; - -- (BOOL)shouldAutorotateToOrientation:(UIDeviceOrientation)orientation; -- (void)fullscreenModeViewController:(SJFullscreenModeViewController *)vc willRotateToOrientation:(UIDeviceOrientation)orientation; -- (void)fullscreenModeViewController:(SJFullscreenModeViewController *)vc didRotateFromOrientation:(UIDeviceOrientation)orientation; -@end - -@interface SJFullscreenModeViewController : UIViewController -@property (nonatomic, weak, nullable) id delegate; -@property (nonatomic) UIDeviceOrientation currentOrientation; -@property (nonatomic, readonly) BOOL isFullscreen; -@property (nonatomic, readonly, getter=isRotating) BOOL rotating; -@property (nonatomic) BOOL disableAnimations; -@end - -@implementation SJFullscreenModeViewController -- (instancetype)init { - self = [super init]; - if ( self ) { - _currentOrientation = UIDeviceOrientationPortrait; - } - return self; -} - -- (BOOL)shouldAutorotate { - return [self.delegate shouldAutorotateToOrientation:UIDevice.currentDevice.orientation]; -} - -- (UIInterfaceOrientationMask)supportedInterfaceOrientations { - if ( self.presentedViewController != nil ) - return 1 << _currentOrientation; - return UIInterfaceOrientationMaskAll; -} - -//- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { -// return UIInterfaceOrientationPortrait; -//} - -- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { - if ( self.navigationController.view.window == nil || self.navigationController.view.window.isHidden ) { - [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; - return; - } - _rotating = YES; - - [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; - - UIDeviceOrientation new = UIDevice.currentDevice.orientation; - UIDeviceOrientation old = _currentOrientation; - - if ( new == UIDeviceOrientationLandscapeLeft || - new == UIDeviceOrientationLandscapeRight ) { - if ( self.delegate.target.superview != self.view ) { - [self.view addSubview:self.delegate.target]; - } - } - - if ( old == UIDeviceOrientationPortrait ) { - self.delegate.target.frame = self.delegate.targetOriginFrame; - } - - _currentOrientation = new; - - [self.delegate fullscreenModeViewController:self willRotateToOrientation:_currentOrientation]; - - BOOL isFullscreen = size.width > size.height; - - if ( self.disableAnimations ) { - [CATransaction begin]; - [CATransaction setDisableActions:YES]; - } - [coordinator animateAlongsideTransition:^(id _Nonnull context) { - if ( isFullscreen ) - self.delegate.target.frame = CGRectMake(0, 0, size.width, size.height); - else - self.delegate.target.frame = self.delegate.targetOriginFrame; - - [self.delegate.target layoutIfNeeded]; - } completion:^(id _Nonnull context) { - if ( self.disableAnimations ) - [CATransaction commit]; - self->_rotating = NO; - [self.delegate fullscreenModeViewController:self didRotateFromOrientation:self.currentOrientation]; - }]; -} - -- (BOOL)isFullscreen { - return _currentOrientation == UIDeviceOrientationLandscapeLeft || _currentOrientation == UIDeviceOrientationLandscapeRight; -} - -- (BOOL)prefersStatusBarHidden { - return self.delegate.prefersStatusBarHidden; -} - -- (UIStatusBarStyle)preferredStatusBarStyle { - return self.delegate.preferredStatusBarStyle; -} - -- (BOOL)prefersHomeIndicatorAutoHidden { - return YES; -} - -- (void)setNeedsStatusBarAppearanceUpdate { - [super setNeedsStatusBarAppearanceUpdate]; -} -@end - - -@protocol SJFullscreenModeNavigationControllerDelegate -- (void)vc_forwardPushViewController:(UIViewController *)viewController animated:(BOOL)animated; -@end - -@interface SJFullscreenModeNavigationController : UINavigationController -@property (nonatomic, weak, nullable) id sj_delegate; -@end - -@implementation SJFullscreenModeNavigationController -- (void)viewDidLoad { - [super viewDidLoad]; - self.navigationBarHidden = YES; -} - -- (void)setNavigationBarHidden:(BOOL)navigationBarHidden { - [super setNavigationBarHidden:YES]; -} - -- (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated { - [super setNavigationBarHidden:YES animated:animated]; -} - -- (BOOL)shouldAutorotate { - return self.topViewController.shouldAutorotate; -} -- (UIInterfaceOrientationMask)supportedInterfaceOrientations { - return self.topViewController.supportedInterfaceOrientations; -} -- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { - return self.topViewController.preferredInterfaceOrientationForPresentation; -} -- (nullable UIViewController *)childViewControllerForStatusBarStyle { - return self.topViewController; -} -- (nullable UIViewController *)childViewControllerForStatusBarHidden { - return self.topViewController; -} -- (BOOL)prefersHomeIndicatorAutoHidden { - return YES; -} -- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { - if ( [viewController isKindOfClass:SJFullscreenModeViewController.class] ) { - [super pushViewController:viewController animated:animated]; - } - else if ( [self.sj_delegate respondsToSelector:@selector(vc_forwardPushViewController:animated:)] ) { - [self.sj_delegate vc_forwardPushViewController:viewController animated:animated]; - } -} -@end - -#pragma mark - - -@interface SJFullscreenModeWindow : UIWindow -@property (nonatomic, strong, nullable) SJFullscreenModeNavigationController *rootViewController; -@property (nonatomic, strong, readonly) SJFullscreenModeViewController *fullscreenModeViewController; -@end - -@implementation SJFullscreenModeWindow -@dynamic rootViewController; - -#ifdef DEBUG -- (void)dealloc { - NSLog(@"%d \t %s", (int)__LINE__, __func__); -} -#endif - -- (void)setBackgroundColor:(nullable UIColor *)backgroundColor {} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if ( !self ) return nil; - self.windowLevel = UIWindowLevelNormal; - _fullscreenModeViewController = SJFullscreenModeViewController.new; - self.rootViewController = [[SJFullscreenModeNavigationController alloc] initWithRootViewController:_fullscreenModeViewController]; -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 - if ( @available(iOS 13.0, *) ) { - if ( self.windowScene == nil ) - self.windowScene = UIApplication.sharedApplication.keyWindow.windowScene; - } -#endif - self.hidden = YES; - return self; -} - -- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *_Nullable)event { - return YES; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - - static CGRect bounds; - - // 如果是大屏转大屏 就不需要修改了 - - if ( !CGRectEqualToRect(bounds, self.bounds) ) { - - UIView *superview = self; - if ( @available(iOS 13.0, *) ) { - superview = self.subviews.firstObject; - } - - [UIView performWithoutAnimation:^{ - for ( UIView *view in superview.subviews ) { - if ( view != self.rootViewController.view && [view isMemberOfClass:UIView.class] ) { - view.backgroundColor = UIColor.clearColor; - for ( UIView *subview in view.subviews ) { - subview.backgroundColor = UIColor.clearColor; - } - } - - } - }]; - } - - bounds = self.bounds; - self.rootViewController.view.frame = bounds; -} -@end - - - -static NSNotificationName const SJRotationManagerTransitioningValueDidChangeNotification = @"SJRotationManagerTransitioningValueDidChangeNotification"; - -@interface SJRotationManagerObserver : NSObject -- (instancetype)initWithRotationManager:(SJRotationManager *)mgr; -@end - -@interface SJRotationManager () -@property (nonatomic, strong, readonly) SJFullscreenModeWindow *window; -@property (nonatomic, weak, nullable) UIWindow *previousKeyWindow; - -@property (nonatomic, getter=isForcedRotation) BOOL forcedRotation; -@property (nonatomic, getter=isTransitioning) BOOL transitioning; -@property (nonatomic) UIDeviceOrientation deviceOrientation; -@property (nonatomic) SJOrientation currentOrientation; - -/// -/// 默认为活跃状态 -/// -/// 进入后台时, 将设置状态为不活跃状态, 此时将不会触发自动旋转 -/// 进入前台时, 两秒后将恢复为活跃状态, 两秒之后才能开始响应自动旋转 -/// -/// 主动调用旋转时, 将直接激活为活跃状态 -/// -@property (nonatomic, getter=isInactivated) BOOL inactivated; -@property (nonatomic, strong, readonly) SJTimerControl *timerControl; -@end - -@implementation SJRotationManager { - void(^_Nullable _completionHandler)(id mgr); -} - -@synthesize autorotationSupportedOrientations = _autorotationSupportedOrientations; -@synthesize shouldTriggerRotation = _shouldTriggerRotation; -@synthesize disabledAutorotation = _disabledAutorotation; -@synthesize superview = _superview; -@synthesize target = _target; - -- (instancetype)init { - self = [super init]; - if (self) { - _currentOrientation = SJOrientation_Portrait; - _autorotationSupportedOrientations = SJOrientationMaskAll; - [self _observeNotifies]; - [self performSelectorOnMainThread:@selector(_setupWindow) withObject:nil waitUntilDone:NO]; - } - return self; -} - -- (void)dealloc { - [NSNotificationCenter.defaultCenter removeObserver:self]; -} - -- (void)_setupWindow { - self->_window = [SJFullscreenModeWindow new]; - self->_window.fullscreenModeViewController.delegate = self; - self->_window.rootViewController.sj_delegate = self; - self->_window.frame = UIScreen.mainScreen.bounds; - if ( @available(iOS 9.0, *) ) { - [self->_window.rootViewController loadViewIfNeeded]; - } - else { - [self->_window.rootViewController loadView]; - [self->_window.rootViewController viewDidLoad]; - } -} - -- (void)_observeNotifies { - UIDevice *device = UIDevice.currentDevice; - if ( !device.isGeneratingDeviceOrientationNotifications ) { - [device beginGeneratingDeviceOrientationNotifications]; - } - - [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(deviceOrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:device]; - [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(willResignActive) name:UIApplicationWillResignActiveNotification object:nil]; - [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(didBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil]; -} - -- (void)deviceOrientationDidChange:(NSNotification *)note { - UIDeviceOrientation orientation = UIDevice.currentDevice.orientation; - switch ( orientation ) { - case UIDeviceOrientationPortraitUpsideDown: - case UIDeviceOrientationPortrait: - case UIDeviceOrientationLandscapeLeft: - case UIDeviceOrientationLandscapeRight: { - _deviceOrientation = orientation; - } - break; - default: break; - } -} - -- (void)willResignActive { - [self.timerControl clear]; - _inactivated = YES; -} - -- (void)didBecomeActive { - [self.timerControl start]; -} - -#pragma mark - - -- (BOOL)isFullscreen { - return _currentOrientation == (NSInteger)UIDeviceOrientationLandscapeLeft || - _currentOrientation == (NSInteger)UIDeviceOrientationLandscapeRight; -} - -- (id)getObserver { - return [[SJRotationManagerObserver alloc] initWithRotationManager:self]; -} - -- (void)rotate { - if ( ![self _isSupported:SJOrientation_LandscapeLeft] && - ![self _isSupported:SJOrientation_LandscapeRight] ) { - if ( self.isFullscreen ) - [self rotate:SJOrientation_Portrait animated:YES]; - else - [self rotate:SJOrientation_LandscapeLeft animated:YES]; - return; - } - - if ( self.isFullscreen && [self _isSupported:SJOrientation_Portrait] ) { - [self rotate:SJOrientation_Portrait animated:YES]; - return; - } - - - if ( [self _isSupported:SJOrientation_LandscapeLeft] && - [self _isSupported:SJOrientation_LandscapeRight] ) { - SJOrientation orientation = (NSInteger)_deviceOrientation; - if ( self.window.fullscreenModeViewController.currentOrientation == SJOrientation_Portrait ) - orientation = SJOrientation_LandscapeLeft; - [self rotate:orientation animated:YES]; - return; - } - - if ( [self _isSupported:SJOrientation_LandscapeLeft] && - ![self _isSupported:SJOrientation_LandscapeRight] ) { - [self rotate:SJOrientation_LandscapeLeft animated:YES]; - return; - } - - if ( ![self _isSupported:SJOrientation_LandscapeLeft] && - [self _isSupported:SJOrientation_LandscapeRight] ) { - [self rotate:SJOrientation_LandscapeRight animated:YES]; - return; - } -} - -- (void)rotate:(SJOrientation)orientation animated:(BOOL)animated { - [self rotate:orientation animated:animated completionHandler:nil]; -} - -- (void)rotate:(SJOrientation)orientation animated:(BOOL)animated completionHandler:(nullable void(^)(id mgr))completionHandler { - _completionHandler = completionHandler; - if ( orientation == (NSInteger)self.window.fullscreenModeViewController.currentOrientation ) { - [self _finishTransition]; - return; - } - - _inactivated = NO; - _forcedRotation = YES; - _window.fullscreenModeViewController.disableAnimations = !animated; - [UIDevice.currentDevice setValue:@(UIDeviceOrientationUnknown) forKey:@"orientation"]; - [UIDevice.currentDevice setValue:@(orientation) forKey:@"orientation"]; -} - -#pragma mark - - -- (CGRect)targetOriginFrame { - if ( self.superview.window == nil ) - return CGRectZero; - return [self.superview convertRect:self.superview.bounds toView:self.superview.window]; -} - -- (BOOL)prefersStatusBarHidden { - return self.delegate.prefersStatusBarHidden; -} - -- (UIStatusBarStyle)preferredStatusBarStyle { - return self.delegate.preferredStatusBarStyle; -} - -- (void)vc_forwardPushViewController:(UIViewController *)viewController animated:(BOOL)animated { - [self.delegate pushViewController:viewController animated:animated]; -} - -#pragma mark - - -- (BOOL)shouldAutorotateToOrientation:(UIDeviceOrientation)orientation { - if ( _inactivated ) - return NO; - - if ( orientation == (NSInteger)_window.fullscreenModeViewController.currentOrientation ) - return NO; - - if ( self.isDisabledAutorotation && !_forcedRotation ) - return NO; - - if ( self.isTransitioning && _window.fullscreenModeViewController.isRotating ) - return NO; - - if ( !_forcedRotation ) { - if ( ![self _isSupported:(NSInteger)orientation] ) - return NO; - } - - if ( _shouldTriggerRotation && !_shouldTriggerRotation(self) ) - return NO; - - self.currentOrientation = (NSInteger)orientation; - - if ( self.isTransitioning == NO ) - [self _beginTransition]; - - if ( orientation == UIDeviceOrientationLandscapeLeft || - orientation == UIDeviceOrientationLandscapeRight ) { - UIWindow *keyWindow = UIApplication.sharedApplication.keyWindow; - if ( keyWindow != self.window && self.previousKeyWindow != keyWindow ) { - self.previousKeyWindow = UIApplication.sharedApplication.keyWindow; - } - if ( self.window.isKeyWindow == NO ) - [self.window makeKeyAndVisible]; - } - return YES; -} - -- (void)fullscreenModeViewController:(SJFullscreenModeViewController *)vc willRotateToOrientation:(UIDeviceOrientation)orientation { - if ( orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown ) { - [self performSelector:@selector(_fixNavigationBarLayout) onThread:NSThread.mainThread withObject:@(NO) waitUntilDone:NO]; - } -} - -- (void)_fixNavigationBarLayout { - UINavigationController *nav = [self.superview lookupResponderForClass:UINavigationController.class]; - [nav viewDidAppear:NO]; - [nav.navigationBar layoutSubviews]; -} - -- (void)fullscreenModeViewController:(SJFullscreenModeViewController *)vc didRotateFromOrientation:(UIDeviceOrientation)orientation { - if ( !vc.isFullscreen ) { - UIView *snapshot = [self.target snapshotViewAfterScreenUpdates:NO]; - snapshot.frame = self.superview.bounds; - [self.superview addSubview:snapshot]; - SJRunLoopTaskQueue.main.enqueue(^{ - [self.superview addSubview:self.target]; - }).enqueue(^{ - [snapshot removeFromSuperview]; - UIWindow *previousKeyWindow = self.previousKeyWindow ?: UIApplication.sharedApplication.windows.firstObject; - [previousKeyWindow makeKeyAndVisible]; - self.previousKeyWindow = nil; - self.window.hidden = YES; - [self _finishTransition]; - }); - } - else { - [self _finishTransition]; - } - -} - -- (void)_beginTransition { - self.transitioning = YES; - if ( !_forcedRotation ) _window.fullscreenModeViewController.disableAnimations = NO; // 自动旋转时, 默认触发动画 -} - -- (void)_finishTransition { - self.forcedRotation = NO; - self.transitioning = NO; - - if ( _completionHandler ) - _completionHandler(self); - - _completionHandler = nil; -} - -- (BOOL)_isSupported:(SJOrientation)orientation { - switch ( orientation ) { - case SJOrientation_Portrait: - return _autorotationSupportedOrientations & SJOrientationMaskPortrait; - case SJOrientation_LandscapeLeft: - return _autorotationSupportedOrientations & SJOrientationMaskLandscapeLeft; - case SJOrientation_LandscapeRight: - return _autorotationSupportedOrientations & SJOrientationMaskLandscapeRight; - } - return NO; -} - -#pragma mark - -- (void)setTransitioning:(BOOL)transitioning { - _transitioning = transitioning; - [NSNotificationCenter.defaultCenter postNotificationName:SJRotationManagerTransitioningValueDidChangeNotification object:self]; -} - -@synthesize timerControl = _timerControl; -- (SJTimerControl *)timerControl { - if ( _timerControl == nil ) { - _timerControl = [SJTimerControl.alloc init]; - _timerControl.interval = 2; - __weak typeof(self) _self = self; - _timerControl.exeBlock = ^(SJTimerControl * _Nonnull control) { - __strong typeof(_self) self = _self; - if ( !self ) return; - self.inactivated = NO; - }; - } - return _timerControl; -} -@end - -@implementation SJRotationManagerObserver { - __weak SJRotationManager *_Nullable _mgr; -} -@synthesize rotationDidStartExeBlock = _rotationDidStartExeBlock; -@synthesize rotationDidEndExeBlock = _rotationDidEndExeBlock; - -- (instancetype)initWithRotationManager:(SJRotationManager *)mgr { - self = [super init]; - if ( !self ) - return nil; - _mgr = mgr; - [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(transitioningValueDidChange:) name:SJRotationManagerTransitioningValueDidChangeNotification object:mgr]; - return self; -} - -- (void)dealloc { - [NSNotificationCenter.defaultCenter removeObserver:self]; -} - -- (void)transitioningValueDidChange:(NSNotification *)note { - if ( _mgr == nil ) return; - SJRotationManager *mgr = note.object; - if ( mgr.isTransitioning ) { - if ( _rotationDidStartExeBlock ) - _rotationDidStartExeBlock(mgr); - } - else { - if ( _rotationDidEndExeBlock ) - _rotationDidEndExeBlock(mgr); - } -} -@end -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManagerInternal_4.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManagerInternal_4.h new file mode 100644 index 000000000..037a1c217 --- /dev/null +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManagerInternal_4.h @@ -0,0 +1,32 @@ +// +// SJRotationManagerInternal_4.h +// SJVideoPlayer +// +// Created by 蓝舞者 on 2022/7/7. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import "SJRotationManager_4.h" +@protocol SJRotationManager_4Delegate; + +NS_ASSUME_NONNULL_BEGIN +@interface SJRotationManager_4 (Internal) +@property (nonatomic, weak, nullable) id delegate; + +- (void)setNeedsStatusBarAppearanceUpdate; +@end + +@protocol SJRotationManager_4Delegate +- (BOOL)prefersStatusBarHidden; +- (UIStatusBarStyle)preferredStatusBarStyle; +- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; +@end + + +@interface SJRotationManager_4 (Subclass) +- (void)rotate:(SJOrientation)orientation animated:(BOOL)animated completionHandler:(nullable void(^)(id mgr))completionHandler; + +- (void)onDeviceOrientationChanged; +@end +NS_ASSUME_NONNULL_END + diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.h similarity index 58% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.h index 98c4b2474..166a4cec7 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.h @@ -1,18 +1,30 @@ // -// UIViewController+SJRotationPrivate_FixSafeArea.h -// Pods +// SJRotationManager_4.h +// version_4 // -// Created by 畅三江 on 2019/8/6. +// Created by 畅三江 on 2022/7/6. +// Copyright © 2022 changsanjiang. All rights reserved. // -// 适配 iOS 13.0 -// - -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 -#import +#import "SJRotationManagerDefines.h" NS_ASSUME_NONNULL_BEGIN +@interface SJRotationManager_4 : NSObject ++ (instancetype)rotationManager; +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; +@end + +@interface UIWindow (SJRotationControls) +@property (nonatomic, readonly) UIInterfaceOrientationMask sj_4_supportedInterfaceOrientations; +@end +NS_ASSUME_NONNULL_END + + +#pragma mark - fix safe area + +NS_ASSUME_NONNULL_BEGIN typedef NS_OPTIONS(NSUInteger, SJSafeAreaInsetsMask) { SJSafeAreaInsetsMaskNone = 0, SJSafeAreaInsetsMaskTop = 1 << 0, @@ -26,13 +38,10 @@ typedef NS_OPTIONS(NSUInteger, SJSafeAreaInsetsMask) { } NS_AVAILABLE_IOS(13.0); -API_AVAILABLE(ios(13.0)) @interface UIViewController (SJRotationPrivate_FixSafeArea) +API_AVAILABLE(ios(13.0)) @interface UIViewController (SJRotationSafeAreaFixing) /// 禁止调整哪些方向的安全区 @property (nonatomic) SJSafeAreaInsetsMask disabledAdjustSafeAreaInsetsMask; @end - NS_ASSUME_NONNULL_END - -#endif diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.m new file mode 100644 index 000000000..aecb3e75b --- /dev/null +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJRotationManager_4.m @@ -0,0 +1,776 @@ +// +// SJRotationManager_4.m +// version_4 +// +// Created by 畅三江 on 2022/7/6. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import "SJRotationManager_4.h" +#import "SJTimerControl.h" +#import "SJBaseVideoPlayerConst.h" +#import "SJRotationManagerInternal_4.h" +#import "UIView+SJBaseVideoPlayerExtended.h" + +FOUNDATION_STATIC_INLINE BOOL +_isFullscreenOrientation(SJOrientation orientation) { + return orientation != SJOrientation_Portrait; +} + +FOUNDATION_STATIC_INLINE BOOL +_isSupportedOrientation(SJOrientationMask supportedOrientations, SJOrientation orientation) { + switch ( orientation ) { + case SJOrientation_Portrait: + return supportedOrientations & SJOrientationMaskPortrait; + case SJOrientation_LandscapeLeft: + return supportedOrientations & SJOrientationMaskLandscapeLeft; + case SJOrientation_LandscapeRight: + return supportedOrientations & SJOrientationMaskLandscapeRight; + } + return NO; +} + +#pragma mark - observer + + +static NSNotificationName const SJRotationManagerRotationNotification_4 = @"SJRotationManagerRotationNotification_4"; +static NSNotificationName const SJRotationManagerTransitionNotification_4 = @"SJRotationManagerTransitionNotification_4"; + + +@interface SJRotationObserver_4 : NSObject +- (instancetype)initWithManager:(id)manager; + +@property (nonatomic, copy, nullable) void(^onRotatingChanged)(id mgr, BOOL isRotating); +@property (nonatomic, copy, nullable) void(^onTransitioningChanged)(id mgr, BOOL isTransitioning); +@end + +@implementation SJRotationObserver_4 +- (instancetype)initWithManager:(id)manager { + self = [super init]; + if ( self ) { + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(onRotation:) name:SJRotationManagerRotationNotification_4 object:manager]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(onTransition:) name:SJRotationManagerTransitionNotification_4 object:manager]; + } + return self; +} + +- (void)dealloc { + [NSNotificationCenter.defaultCenter removeObserver:self]; +} + +- (void)onRotation:(NSNotification *)note { + BOOL isRotating = [(SJRotationManager_4 *)note.object isRotating]; + if ( _onRotatingChanged != nil ) _onRotatingChanged(note.object, isRotating); +} + +- (void)onTransition:(NSNotification *)note { + BOOL isTransitioning = [(SJRotationManager_4 *)note.object isTransitioning]; + if ( _onTransitioningChanged != nil ) _onTransitioningChanged(note.object, isTransitioning); +} +@end + +#pragma mark - view controller + +@protocol SJRotationFullscreenViewController_4Delegate; + +@interface SJRotationFullscreenViewController_4 : UIViewController + +@property (nonatomic, weak, nullable) id sj_4_delegate; + +@property (nonatomic, strong, readonly) UIView *playerSuperview; + +@end + + +@protocol SJRotationFullscreenViewController_4Delegate +- (BOOL)shouldAutorotate; +- (void)viewController:(SJRotationFullscreenViewController_4 *)viewController viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator; + +- (BOOL)prefersStatusBarHidden; +- (UIStatusBarStyle)preferredStatusBarStyle; +@end + +@interface SJRotationFullscreenView_4 : UIView + +@end + +@implementation SJRotationFullscreenView_4 +- (UIEdgeInsets)safeAreaInsets { + CGSize size = self.bounds.size; + if ( size.width > size.height ) return [super safeAreaInsets]; + return [UIApplication.sharedApplication.keyWindow safeAreaInsets]; +} +@end + +@implementation SJRotationFullscreenViewController_4 + +- (void)loadView { + self.view = [SJRotationFullscreenView_4.alloc initWithFrame:UIScreen.mainScreen.bounds]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.clipsToBounds = NO; + self.view.backgroundColor = UIColor.clearColor; + + _playerSuperview = [UIView.alloc initWithFrame:CGRectZero]; + _playerSuperview.backgroundColor = UIColor.clearColor; + [self.view addSubview:_playerSuperview]; +} + +- (BOOL)shouldAutorotate { + return [_sj_4_delegate shouldAutorotate]; +} + +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskAllButUpsideDown; +} + +- (BOOL)prefersHomeIndicatorAutoHidden { + return YES; +} + +- (BOOL)prefersStatusBarHidden { + return [_sj_4_delegate prefersStatusBarHidden]; +} + +- (UIStatusBarStyle)preferredStatusBarStyle { + return [_sj_4_delegate preferredStatusBarStyle]; +} + +- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation { + return UIStatusBarAnimationNone; +} + +- (void)setNeedsStatusBarAppearanceUpdate { + [super setNeedsStatusBarAppearanceUpdate]; +} + +- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { + [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; + [_sj_4_delegate viewController:self viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; +} +@end + +@protocol SJRotationFullscreenNavigationController_4Delegate +- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; +@end + +@interface SJRotationFullscreenNavigationController_4 : UINavigationController +@property (nonatomic, weak, nullable) id sj_4_delegate; +@end + +@implementation SJRotationFullscreenNavigationController_4 +- (void)viewDidLoad { + [super viewDidLoad]; + [super setNavigationBarHidden:YES animated:NO]; +} + +- (void)setNavigationBarHidden:(BOOL)navigationBarHidden { } + +- (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated { } + +- (BOOL)shouldAutorotate { + return self.topViewController.shouldAutorotate; +} +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { + return self.topViewController.supportedInterfaceOrientations; +} +- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { + return self.topViewController.preferredInterfaceOrientationForPresentation; +} +- (nullable UIViewController *)childViewControllerForStatusBarStyle { + return self.topViewController; +} +- (nullable UIViewController *)childViewControllerForStatusBarHidden { + return self.topViewController; +} +- (BOOL)prefersHomeIndicatorAutoHidden { + return YES; +} +- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { + if ( [viewController isKindOfClass:SJRotationFullscreenViewController_4.class] ) { + [super pushViewController:viewController animated:animated]; + } + else if ( [self.sj_4_delegate respondsToSelector:@selector(pushViewController:animated:)] ) { + [self.sj_4_delegate pushViewController:viewController animated:animated]; + } +} +@end + + +#pragma mark - window + +@protocol SJRotationFullscreenWindow_4Delegate; + + +@interface SJRotationFullscreenWindow_4 : UIWindow +@property (nonatomic, weak, nullable) id sj_4_delegate; +@end + + +@protocol SJRotationFullscreenWindow_4Delegate +- (BOOL)window:(SJRotationFullscreenWindow_4 *)window pointInside:(CGPoint)point withEvent:(UIEvent *_Nullable)event; +- (BOOL)allowsRotation; +@end + +@implementation SJRotationFullscreenWindow_4 +@dynamic rootViewController; + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if ( self ) { + [self _setup]; + } + return self; +} + +- (instancetype)initWithWindowScene:(UIWindowScene *)windowScene { + self = [super initWithWindowScene:windowScene]; + if ( self ) { + [self _setup]; + } + return self; +} + +- (BOOL)canBecomeKeyWindow { + return NO; +} + +- (void)makeKeyWindow { } + +- (void)makeKeyAndVisible { } + +#ifdef DEBUG +- (void)dealloc { + NSLog(@"%d \t %s", (int)__LINE__, __func__); +} +#endif + +- (void)setRootViewController:(UIViewController *)rootViewController { + [super setRootViewController:rootViewController]; + rootViewController.view.frame = self.bounds; + rootViewController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; +} + +- (void)_setup { + self.frame = UIScreen.mainScreen.bounds; +} + +- (void)setBackgroundColor:(nullable UIColor *)backgroundColor {} + +- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *_Nullable)event { + return [_sj_4_delegate window:self pointInside:point withEvent:event]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + + static CGRect bounds; + + // 如果是大屏转大屏 就不需要修改了 + + if ( !CGRectEqualToRect(bounds, self.bounds) ) { + + UIView *superview = self; + if ( @available(iOS 13.0, *) ) { + superview = self.subviews.firstObject; + } + + [UIView performWithoutAnimation:^{ + for ( UIView *view in superview.subviews ) { + if ( view != self.rootViewController.view && [view isMemberOfClass:UIView.class] ) { + view.backgroundColor = UIColor.clearColor; + for ( UIView *subview in view.subviews ) { + subview.backgroundColor = UIColor.clearColor; + } + } + + } + }]; + } + + bounds = self.bounds; + self.rootViewController.view.frame = bounds; +} + +@end + +#pragma mark - manager + +@interface SJRotationManager_4_iOS_9_15 : SJRotationManager_4 + +@end + +API_AVAILABLE(ios(16.0)) +@interface SJRotationManager_4_iOS_16_Later : SJRotationManager_4 + +@end + +@interface SJRotationManager_4 () +@property (nonatomic) UIDeviceOrientation deviceOrientation; +@property (nonatomic, copy, nullable) void(^completionHandler)(id mgr); + +/// +/// 默认为活跃状态 +/// +/// 进入后台时, 将设置状态为不活跃状态, 此时将不会触发自动旋转 +/// 进入前台时, 两秒后将恢复为活跃状态, 两秒之后才能开始响应自动旋转 +/// +/// 主动调用旋转时, 将直接激活为活跃状态 +/// +@property (nonatomic, getter=isInactivated) BOOL inactivated; +@property (nonatomic, strong, readonly) SJTimerControl *timerControl; + +@property (nonatomic, getter=isForcedrotation) BOOL forcedrotation; +@property (nonatomic, getter=isTransitioning) BOOL transitioning; +@property (nonatomic, getter=isWindowPreparing) BOOL windowPreparing; + +@property (nonatomic, strong) SJRotationFullscreenWindow_4 *window; +@property (nonatomic, strong) SJRotationFullscreenViewController_4 *viewController; +@property (nonatomic, weak, nullable) id delegate; +@end + +@implementation SJRotationManager_4 +@synthesize shouldTriggerRotation = _shouldTriggerRotation; +@synthesize disabledAutorotation = _disabledAutorotation; +@synthesize autorotationSupportedOrientations = _autorotationSupportedOrientations; +@synthesize currentOrientation = _currentOrientation; +@synthesize rotating = _rotating; +@synthesize superview = _superview; +@synthesize target = _target; + ++ (instancetype)rotationManager { + if ( @available(iOS 16.0, *) ) + return [SJRotationManager_4_iOS_16_Later.alloc _init]; + else + return [SJRotationManager_4_iOS_9_15.alloc _init]; +} + +- (instancetype)_init { + self = [super init]; + if ( self ) { + _autorotationSupportedOrientations = SJOrientationMaskAll; + _currentOrientation = SJOrientation_Portrait; + _deviceOrientation = UIDeviceOrientationPortrait; + _timerControl = [SJTimerControl.alloc init]; + _timerControl.interval = 2; + __weak typeof(self) _self = self; + _timerControl.exeBlock = ^(SJTimerControl * _Nonnull control) { + __strong typeof(_self) self = _self; + if ( !self ) return ; + self.inactivated = NO; + }; + [self _observeNotifies]; + + _viewController = [SJRotationFullscreenViewController_4.alloc init]; + _viewController.sj_4_delegate = self; + + SJRotationFullscreenNavigationController_4 *nav = [SJRotationFullscreenNavigationController_4.alloc initWithRootViewController:_viewController]; + nav.sj_4_delegate = self; + + if ( @available(iOS 13.0, *) ) { + _window = [SJRotationFullscreenWindow_4.alloc initWithWindowScene:UIApplication.sharedApplication.keyWindow.windowScene]; + } + else { + _window = [SJRotationFullscreenWindow_4.alloc initWithFrame:UIScreen.mainScreen.bounds]; + } + _window.sj_4_delegate = self; + _window.rootViewController = nav; + + [self _prepareWindowForRotation]; + } + return self; +} + +- (void)_prepareWindowForRotation { + _windowPreparing = YES; + [UIView animateWithDuration:0.0 animations:^{ /** next */ } completion:^(BOOL finished) { + self->_window.windowLevel = UIWindowLevelNormal - 1; + self->_window.hidden = NO; + [UIView animateWithDuration:0.0 animations:^{ /** preparing */} completion:^(BOOL finished) { + self->_window.hidden = YES; + self->_window.windowLevel = UIWindowLevelStatusBar - 1; + self->_windowPreparing = NO; + }]; + }]; +} + +- (id)getObserver { + return [SJRotationObserver_4.alloc initWithManager:self]; +} + +- (BOOL)isFullscreen { + return _rotating ? _isFullscreenOrientation(_deviceOrientation) : _isFullscreenOrientation(_currentOrientation); +} + +- (void)rotate { + SJOrientation orientation; + if ( _isFullscreenOrientation(_currentOrientation) ) { + orientation = SJOrientation_Portrait; + } + else { + orientation = _isFullscreenOrientation(_deviceOrientation) ? _deviceOrientation : SJOrientation_LandscapeLeft; + } + + [self rotate:orientation animated:YES]; +} + +- (void)rotate:(SJOrientation)orientation animated:(BOOL)animated { + [self rotate:orientation animated:animated completionHandler:nil]; +} + +- (void)rotate:(SJOrientation)orientation animated:(BOOL)animated completionHandler:(nullable void(^)(id mgr))completionHandler { + // subclass +} + +#pragma mark - SJRotationFullscreenWindow_4Delegate, SJRotationFullscreenViewController_4Delegate, SJRotationFullscreenNavigationController_4Delegate + +- (BOOL)window:(SJRotationFullscreenWindow_4 *)window pointInside:(CGPoint)point withEvent:(UIEvent *)event { + return (_target.superview == _viewController.playerSuperview) && + [_viewController.playerSuperview pointInside:[window convertPoint:point toView:_viewController.playerSuperview] withEvent:event]; +} + +- (BOOL)prefersStatusBarHidden { + return _rotating ? _isFullscreenOrientation(_deviceOrientation) : [_delegate prefersStatusBarHidden]; +} + +- (UIStatusBarStyle)preferredStatusBarStyle { + return [_delegate preferredStatusBarStyle]; +} + +- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { + [_delegate pushViewController:viewController animated:animated]; +} + +- (BOOL)allowsRotation { + if ( _windowPreparing ) return NO; + if ( _inactivated ) return NO; + if ( _currentOrientation == (SJOrientation)_deviceOrientation ) return NO; + if ( !_forcedrotation ) { + if ( _disabledAutorotation ) return NO; + if ( !_isSupportedOrientation(_autorotationSupportedOrientations, _deviceOrientation) ) return NO; + } + if ( _rotating && _transitioning ) return NO; + if ( _shouldTriggerRotation != nil && !_shouldTriggerRotation(self) ) return NO; + return YES; +} + +- (BOOL)shouldAutorotate { + // subclass + return NO; +} + +- (void)viewController:(SJRotationFullscreenViewController_4 *)viewController viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { + _currentOrientation = _deviceOrientation; + [self _transitionBegin]; + + if ( size.width > size.height ) { + if ( _target.superview != _viewController.playerSuperview ) { + CGRect frame = [_target convertRect:_target.bounds toView:_target.window]; + _viewController.playerSuperview.frame = frame; // t1 + + _target.frame = (CGRect){0, 0, frame.size}; + _target.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + [_viewController.playerSuperview addSubview:_target]; // t2 + } + + [UIView animateWithDuration:0.0 animations:^{ /* preparing */ } completion:^(BOOL finished) { + [UIView animateWithDuration:0.3 animations:^{ + self->_viewController.playerSuperview.frame = (CGRect){CGPointZero, size}; + } completion:^(BOOL finished) { + [self _transitionEnd]; + [self _rotationEnd]; + }]; + }]; + } + else { + [UIView animateWithDuration:0.0 animations:^{ /* preparing */ } completion:^(BOOL finished) { + [UIView animateWithDuration:0.3 animations:^{ + self->_viewController.playerSuperview.frame = [self->_superview convertRect:self->_superview.bounds toView:self->_superview.window]; + } completion:^(BOOL finished) { + UIView *snapshot = [self->_target snapshotViewAfterScreenUpdates:NO]; + snapshot.frame = self->_superview.bounds; + snapshot.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + [self->_superview addSubview:snapshot]; + [UIView animateWithDuration:0.0 animations:^{ /* preparing */ } completion:^(BOOL finished) { + self->_target.frame = self->_superview.bounds; + self->_target.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + [self->_superview addSubview:self->_target]; + [snapshot removeFromSuperview]; + [self _transitionEnd]; + [self _rotationEnd]; + }]; + }]; + }]; + } +} + +- (void)_rotationBegin { + _window.hidden = NO; + _rotating = YES; + [UIView animateWithDuration:0.0 animations:^{ } completion:^(BOOL finished) { + [self->_window.rootViewController setNeedsStatusBarAppearanceUpdate]; + }]; + [NSNotificationCenter.defaultCenter postNotificationName:SJRotationManagerRotationNotification_4 object:self]; +} + +- (void)_rotationEnd { + _rotating = NO; + _forcedrotation = NO; + if ( ![self isFullscreen] ) _window.hidden = YES; + if ( _completionHandler ) { + _completionHandler(self); + _completionHandler = nil; + } + [NSNotificationCenter.defaultCenter postNotificationName:SJRotationManagerRotationNotification_4 object:self]; +} + +- (void)_transitionBegin { + _transitioning = YES; + [NSNotificationCenter.defaultCenter postNotificationName:SJRotationManagerTransitionNotification_4 object:self]; +} + +- (void)_transitionEnd { + self->_transitioning = NO; + [NSNotificationCenter.defaultCenter postNotificationName:SJRotationManagerTransitionNotification_4 object:self]; +} + +#pragma mark - + +- (void)_observeNotifies { + UIDevice *device = UIDevice.currentDevice; + if ( !device.isGeneratingDeviceOrientationNotifications ) { + [device beginGeneratingDeviceOrientationNotifications]; + } + + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_onDeviceOrientationChanged:) name:UIDeviceOrientationDidChangeNotification object:device]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_onApplicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_onApplicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; +} + +- (void)_onDeviceOrientationChanged:(NSNotification *)note { + UIDeviceOrientation orientation = UIDevice.currentDevice.orientation; + switch ( orientation ) { + case UIDeviceOrientationPortraitUpsideDown: + case UIDeviceOrientationPortrait: + case UIDeviceOrientationLandscapeLeft: + case UIDeviceOrientationLandscapeRight: { + if ( _deviceOrientation != orientation ) { + _deviceOrientation = orientation; + + [self onDeviceOrientationChanged]; + } + + } + break; + default: break; + } +} + +- (void)_onApplicationWillResignActive:(NSNotification *)note { + [_timerControl clear]; + _inactivated = YES; +} + +- (void)_onApplicationDidBecomeActive:(NSNotification *)note { + [_timerControl start]; +} + +- (void)dealloc { + _window.hidden = YES; + [NSNotificationCenter.defaultCenter removeObserver:self]; +} + +- (void)setNeedsStatusBarAppearanceUpdate { + [_window.rootViewController setNeedsStatusBarAppearanceUpdate]; +} + +- (void)onDeviceOrientationChanged { /** subclass */ } +@end + + +//if ( UIUserInterfaceIdiomPhone == UI_USER_INTERFACE_IDIOM() ) { } +//else if ( UIUserInterfaceIdiomPad == UI_USER_INTERFACE_IDIOM() ) { } + +#pragma mark - iOS 9, 15; + +@implementation SJRotationManager_4_iOS_9_15 + +- (BOOL)shouldAutorotate { + if ( [self allowsRotation] ) { + if ( !self.rotating ) [self _rotationBegin]; + return YES; + } + return NO; +} + +- (void)rotate:(SJOrientation)orientation animated:(BOOL)animated completionHandler:(nullable void(^)(id mgr))completionHandler { +#ifdef DEBUG + if ( !animated ) { + NSAssert(false, @"暂不支持关闭动画!"); + } +#endif + self.completionHandler = completionHandler; + self.inactivated = NO; + self.forcedrotation = YES; + + if ( orientation == self.currentOrientation ) { + [self _rotationEnd]; + return; + } + + [UIDevice.currentDevice setValue:@(UIDeviceOrientationUnknown) forKey:@"orientation"]; + [UIDevice.currentDevice setValue:@(orientation) forKey:@"orientation"]; +} +@end + +#pragma mark - iOS 16 later; + +@implementation SJRotationManager_4_iOS_16_Later + +- (void)rotate:(SJOrientation)orientation animated:(BOOL)animated completionHandler:(nullable void(^)(id mgr))completionHandler { +#ifdef DEBUG + if ( !animated ) { + NSAssert(false, @"暂不支持关闭动画!"); + } +#endif + self.completionHandler = completionHandler; + self.inactivated = NO; + self.forcedrotation = YES; + + if ( orientation == self.currentOrientation ) { + [self _rotationEnd]; + return; + } + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 160000 + __weak typeof(self) _self = self; + UIWindowSceneGeometryPreferencesIOS *preferences = [UIWindowSceneGeometryPreferencesIOS.alloc initWithInterfaceOrientations:1 << orientation]; + self.deviceOrientation = orientation; + [UIApplication.sharedApplication.keyWindow.rootViewController setNeedsUpdateOfSupportedInterfaceOrientations]; + [UIView animateWithDuration:0.0 animations:^{ /* preparing */ } completion:^(BOOL finished) { + [self _rotationBegin]; + [self.window.windowScene requestGeometryUpdateWithPreferences:preferences errorHandler:^(NSError * _Nonnull error) { + __strong typeof(_self) self = _self; + if ( !self ) return ; +#ifdef DEBUG + NSLog(@"旋转失败: %@", error); +#endif + [self _rotationEnd]; + }]; + }]; +#endif +} + +- (void)setDisabledAutorotation:(BOOL)disabledAutorotation { + if ( disabledAutorotation != self.isDisabledAutorotation ) { + [super setDisabledAutorotation:disabledAutorotation]; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 160000 + [UIApplication.sharedApplication.keyWindow.rootViewController setNeedsUpdateOfSupportedInterfaceOrientations]; +#endif + } +} + +- (void)onDeviceOrientationChanged { +#ifdef DEBUG + NSLog(@"%d - -[%@ %s]", (int)__LINE__, NSStringFromClass([self class]), sel_getName(_cmd)); +#endif + if ( [self allowsRotation] ) { + [self _rotationBegin]; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 160000 + [UIApplication.sharedApplication.keyWindow.rootViewController setNeedsUpdateOfSupportedInterfaceOrientations]; +#endif + } +} +@end + + +#pragma mark - window rotation orientations + +@implementation UIWindow (SJRotationControls) +- (UIInterfaceOrientationMask)sj_4_supportedInterfaceOrientations { + if ( [self isKindOfClass:SJRotationFullscreenWindow_4.class] ) { + SJRotationFullscreenWindow_4 *window = (SJRotationFullscreenWindow_4 *)self; + SJRotationManager_4 *rotationManager = (SJRotationManager_4 *)window.sj_4_delegate; + if ( [rotationManager allowsRotation] ) { + return UIInterfaceOrientationMaskAllButUpsideDown; + } + return 1 << rotationManager.currentOrientation; + } + + return UIInterfaceOrientationMaskAll; +} +@end + + +#pragma mark - fix safe area + +#import + +API_AVAILABLE(ios(13.0)) @protocol _UIViewControllerSafeAreaFixingHooks +- (void)_setContentOverlayInsets:(UIEdgeInsets)insets andLeftMargin:(CGFloat)leftMargin rightMargin:(CGFloat)rightMargin; +- (void)sj_setContentOverlayInsets:(UIEdgeInsets)insets andLeftMargin:(CGFloat)leftMargin rightMargin:(CGFloat)rightMargin; +@end + +API_AVAILABLE(ios(13.0)) @implementation SJRotationManager_4 (SJRotationSafeAreaFixing) ++ (void)initialize { + if ( @available(iOS 13.0, *) ) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Class cls = UIViewController.class; + NSData *data = [NSData.alloc initWithBase64EncodedString:@"X3NldENvbnRlbnRPdmVybGF5SW5zZXRzOmFuZExlZnRNYXJnaW46cmlnaHRNYXJnaW46" options:kNilOptions]; + NSString *method = [NSString.alloc initWithData:data encoding:NSUTF8StringEncoding]; + SEL originalSelector = NSSelectorFromString(method); + SEL swizzledSelector = @selector(sj_setContentOverlayInsets:andLeftMargin:rightMargin:); + + Method originalMethod = class_getInstanceMethod(cls, originalSelector); + Method swizzledMethod = class_getInstanceMethod(cls, swizzledSelector); + if ( originalMethod != NULL ) method_exchangeImplementations(originalMethod, swizzledMethod); + }); + } +} +@end + +API_AVAILABLE(ios(13.0)) @implementation UIViewController (SJRotationSafeAreaFixing) +- (BOOL)sj_containsPlayerView { + return [self.view viewWithTag:SJPlayerViewTag] != nil; +} + +- (void)sj_setContentOverlayInsets:(UIEdgeInsets)insets andLeftMargin:(CGFloat)leftMargin rightMargin:(CGFloat)rightMargin { + SJSafeAreaInsetsMask mask = self.disabledAdjustSafeAreaInsetsMask; + if ( mask & SJSafeAreaInsetsMaskTop ) insets.top = 0; + if ( mask & SJSafeAreaInsetsMaskLeft ) insets.left = 0; + if ( mask & SJSafeAreaInsetsMaskBottom ) insets.bottom = 0; + if ( mask & SJSafeAreaInsetsMaskRight ) insets.right = 0; + + BOOL isFullscreen = self.view.bounds.size.width > self.view.bounds.size.height; + if ( ![self.class isKindOfClass:SJRotationFullscreenViewController_4.class] || isFullscreen ) { + if ( isFullscreen || insets.top != 0 || [self sj_containsPlayerView] == NO ) { + [self sj_setContentOverlayInsets:insets andLeftMargin:leftMargin rightMargin:rightMargin]; + } + } +} + +- (void)setDisabledAdjustSafeAreaInsetsMask:(SJSafeAreaInsetsMask)disabledAdjustSafeAreaInsetsMask { + objc_setAssociatedObject(self, @selector(disabledAdjustSafeAreaInsetsMask), @(disabledAdjustSafeAreaInsetsMask), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (SJSafeAreaInsetsMask)disabledAdjustSafeAreaInsetsMask { + return [objc_getAssociatedObject(self, _cmd) integerValue]; +} +@end + +API_AVAILABLE(ios(13.0)) @implementation UINavigationController (SJRotationSafeAreaFixing) +- (BOOL)sj_containsPlayerView { + return [self.topViewController sj_containsPlayerView]; +} +@end + +API_AVAILABLE(ios(13.0)) @implementation UITabBarController (SJRotationSafeAreaFixing) +- (BOOL)sj_containsPlayerView { + UIViewController *vc = self.selectedIndex != NSNotFound ? self.selectedViewController : self.viewControllers.firstObject; + return [vc sj_containsPlayerView]; +} +@end diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitleItem.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitleItem.h index 2af7beb6b..55d68a31e 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitleItem.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitleItem.h @@ -6,7 +6,7 @@ // #import -#import "SJSubtitlesPromptControllerDefines.h" +#import "SJSubtitlePopupControllerDefines.h" NS_ASSUME_NONNULL_BEGIN @interface SJSubtitleItem : NSObject diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.h similarity index 76% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.h rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.h index ab2e051ff..e497695d9 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.h @@ -1,16 +1,16 @@ // -// SJSubtitlesPromptController.h +// SJSubtitlePopupController.h // SJBaseVideoPlayer // // Created by 畅三江 on 2019/11/8. // #import -#import "SJSubtitlesPromptControllerDefines.h" +#import "SJSubtitlePopupControllerDefines.h" #import "SJSubtitleItem.h" NS_ASSUME_NONNULL_BEGIN -@interface SJSubtitlesPromptController : NSObject +@interface SJSubtitlePopupController : NSObject /// /// 设置未来将要显示的字幕 diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.m similarity index 93% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.m rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.m index 8e47c4fa1..47e736f97 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlesPromptController.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJSubtitlePopupController.m @@ -1,11 +1,11 @@ // -// SJSubtitlesPromptController.m +// SJSubtitlePopupController.m // SJBaseVideoPlayer // // Created by 畅三江 on 2019/11/8. // -#import "SJSubtitlesPromptController.h" +#import "SJSubtitlePopupController.h" #if __has_include() #import #else @@ -13,12 +13,12 @@ #endif NS_ASSUME_NONNULL_BEGIN -@interface SJSubtitlesPromptController () +@interface SJSubtitlePopupController () @property (nonatomic, strong, readonly) UIView *containerView; @property (nonatomic, strong, readonly) UILabel *subtitleLabel; @end -@implementation SJSubtitlesPromptController +@implementation SJSubtitlePopupController @synthesize subtitles = _subtitles; @synthesize numberOfLines = _numberOfLines; @synthesize contentInsets = _contentInsets; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJTextPopupController.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJTextPopupController.h new file mode 100755 index 000000000..1a6f22c06 --- /dev/null +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJTextPopupController.h @@ -0,0 +1,15 @@ +// +// SJTextPopupController.h +// SJTextPopupControllerProject +// +// Created by 畅三江 on 2017/9/26. +// Copyright © 2017年 changsanjiang. All rights reserved. +// + +#import "SJTextPopupControllerDefines.h" + +NS_ASSUME_NONNULL_BEGIN +@interface SJTextPopupController : NSObject + +@end +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPrompt.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJTextPopupController.m similarity index 92% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPrompt.m rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJTextPopupController.m index 27dbc4e4b..52e1b91f7 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJPrompt.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJTextPopupController.m @@ -1,12 +1,13 @@ // -// SJPrompt.m -// SJPromptProject +// SJTextPopupController.m +// SJTextPopupControllerProject // // Created by 畅三江 on 2017/9/26. // Copyright © 2017年 changsanjiang. All rights reserved. // -#import "SJPrompt.h" +#import "SJTextPopupController.h" +#import "SJBaseVideoPlayerConst.h" #if __has_include() #import #else @@ -14,13 +15,13 @@ #endif NS_ASSUME_NONNULL_BEGIN -@interface SJPrompt () +@interface SJTextPopupController () @property (nonatomic, strong, readonly) UIView *contentView; @property (nonatomic, strong, readonly) UILabel *label; @property (nonatomic, copy, nullable) void(^completionHandler)(void); @end -@implementation SJPrompt +@implementation SJTextPopupController @synthesize contentInset = _contentInset; @synthesize maxLayoutWidth = _maxLayoutWidth; @synthesize target = _target; @@ -105,6 +106,7 @@ - (nullable UIColor *)backgroundColor { - (UIView *)contentView { if ( _contentView == nil ) { _contentView = [UIView.alloc initWithFrame:CGRectZero]; + _contentView.layer.zPosition = SJPlayerZIndexes.shared.textPopupViewZIndex; } return _contentView; } diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.h index 497a4e0ab..0ef95c3b3 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.h @@ -8,17 +8,16 @@ #import #import "SJVideoPlayerPresentViewDefines.h" -#import "SJPlayerGestureControlDefines.h" +#import "SJGestureControllerDefines.h" @protocol SJVideoPlayerPresentViewDelegate; NS_ASSUME_NONNULL_BEGIN -@interface SJVideoPlayerPresentView : UIView +@interface SJVideoPlayerPresentView : UIView @property (nonatomic, weak, nullable) id delegate; @end @protocol SJVideoPlayerPresentViewDelegate @optional - (void)presentViewDidLayoutSubviews:(SJVideoPlayerPresentView *)presentView; -- (void)presentViewWillMoveToWindow:(nullable UIWindow *)window; @end NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.m index 7b35ea65b..198337633 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJVideoPlayerPresentView.m @@ -7,11 +7,9 @@ // #import "SJVideoPlayerPresentView.h" -#import "SJBaseVideoPlayerConst.h" #import "NSTimer+SJAssetAdd.h" #import -NS_ASSUME_NONNULL_BEGIN @interface SJVideoPlayerPresentView () @property (nonatomic, strong, readonly) UIPanGestureRecognizer *pan; @property (nonatomic, strong, readonly) UIPinchGestureRecognizer *pinch; @@ -46,22 +44,10 @@ - (void)dealloc { } #endif -- (void)layoutSubviews { - [super layoutSubviews]; - if ( [self.delegate respondsToSelector:@selector(presentViewDidLayoutSubviews:)] ) { - [self.delegate presentViewDidLayoutSubviews:self]; - } -} - -- (void)willMoveToWindow:(nullable UIWindow *)newWindow { - [super willMoveToWindow:newWindow]; - if ( [self.delegate respondsToSelector:@selector(presentViewWillMoveToWindow:)] ) { - [self.delegate presentViewWillMoveToWindow:newWindow]; - } -} +#pragma mark - - (void)handleSingleTap:(UITouch *)tap { - if ( ![self _isSupported:SJPlayerGestureTypeMask_SingleTap ] ) + if ( ![self _isGestureSupported:SJPlayerGestureTypeMask_SingleTap ] ) return; CGPoint location = [tap locationInView:self]; @@ -72,7 +58,7 @@ - (void)handleSingleTap:(UITouch *)tap { } - (void)handleDoubleTap:(UITouch *)tap { - if ( ![self _isSupported:SJPlayerGestureTypeMask_DoubleTap] ) + if ( ![self _isGestureSupported:SJPlayerGestureTypeMask_DoubleTap] ) return; CGPoint location = [tap locationInView:self]; @@ -136,7 +122,61 @@ - (void)handleLongPress:(UILongPressGestureRecognizer *)longPress { } } -- (void)showPlaceholderAnimated:(BOOL)animated { +- (void)cancelGesture:(SJPlayerGestureType)type { + UIGestureRecognizer *gesture = nil; + switch ( type ) { + default: break; + case SJPlayerGestureType_Pan: + gesture = _pan; + break; + case SJPlayerGestureType_Pinch: + gesture = _pinch; + break; + case SJPlayerGestureType_LongPress: + gesture = _longPress; + break; + } + gesture.state = UIGestureRecognizerStateCancelled; +} + +- (UIGestureRecognizerState)stateOfGesture:(SJPlayerGestureType)type { + UIGestureRecognizer *gesture = nil; + switch ( type ) { + default: break; + case SJPlayerGestureType_Pan: + gesture = _pan; + break; + case SJPlayerGestureType_Pinch: + gesture = _pinch; + break; + } + return gesture.state; +} + +#pragma mark - + +- (void)setPlaceholderImageViewContentMode:(UIViewContentMode)placeholderImageViewContentMode { + self.placeholderImageView.contentMode = placeholderImageViewContentMode; +} + +- (UIViewContentMode)placeholderImageViewContentMode { + return self.placeholderImageView.contentMode; +} + +- (void)setPlaceholderImageViewHidden:(BOOL)isHidden animated:(BOOL)animated { + if ( isHidden ) { + [self _hidePlaceholderImageViewAnimated:animated delay:0]; + } + else { + [self _showPlaceholderImageViewAnimated:animated]; + } +} + +- (void)hidePlaceholderImageViewAnimated:(BOOL)animated delay:(NSTimeInterval)secs { + [self _hidePlaceholderImageViewAnimated:animated delay:secs]; +} + +- (void)_showPlaceholderImageViewAnimated:(BOOL)animated { if ( _placeholderImageView.isHidden == NO ) return; @@ -155,26 +195,22 @@ - (void)showPlaceholderAnimated:(BOOL)animated { } } -- (void)hiddenPlaceholderAnimated:(BOOL)animated { - [self hiddenPlaceholderAnimated:animated delay:0]; -} - -- (void)hiddenPlaceholderAnimated:(BOOL)animated delay:(NSTimeInterval)secs { +- (void)_hidePlaceholderImageViewAnimated:(BOOL)animated delay:(NSTimeInterval)secs { if ( _placeholderImageView.isHidden == YES ) return; [NSObject cancelPreviousPerformRequestsWithTarget:self]; if ( secs == 0 ) { - [self _hiddenPlaceholderAnimated:@(animated)]; + [self _hidePlaceholderImageViewAnimated:@(animated)]; } else { - [self performSelector:@selector(_hiddenPlaceholderAnimated:) + [self performSelector:@selector(_hidePlaceholderImageViewAnimated:) withObject:@(animated) afterDelay:secs inModes:@[NSRunLoopCommonModes]]; } } -- (void)_hiddenPlaceholderAnimated:(NSNumber *)animated { +- (void)_hidePlaceholderImageViewAnimated:(NSNumber *)animated { if ( [animated boolValue] ) { [UIView animateWithDuration:0.4 animations:^{ self->_placeholderImageView.alpha = 0.001; @@ -188,42 +224,19 @@ - (void)_hiddenPlaceholderAnimated:(NSNumber *)animated { } } -- (void)cancelGesture:(SJPlayerGestureType)type { - UIGestureRecognizer *gesture = nil; - switch ( type ) { - default: break; - case SJPlayerGestureType_Pan: - gesture = _pan; - break; - case SJPlayerGestureType_Pinch: - gesture = _pinch; - break; - case SJPlayerGestureType_LongPress: - gesture = _longPress; - break; - } - gesture.state = UIGestureRecognizerStateCancelled; -} +#pragma mark - -- (UIGestureRecognizerState)stateOfGesture:(SJPlayerGestureType)type { - UIGestureRecognizer *gesture = nil; - switch ( type ) { - default: break; - case SJPlayerGestureType_Pan: - gesture = _pan; - break; - case SJPlayerGestureType_Pinch: - gesture = _pinch; - break; +- (void)layoutSubviews { + [super layoutSubviews]; + if ( [self.delegate respondsToSelector:@selector(presentViewDidLayoutSubviews:)] ) { + [self.delegate presentViewDidLayoutSubviews:self]; } - return gesture.state; } #pragma mark - - (void)_setupViews { self.supportedGestureTypes = SJPlayerGestureTypeMask_Default; - self.tag = SJBaseVideoPlayerPresentViewTag; self.backgroundColor = [UIColor blackColor]; self.placeholderImageView.frame = self.bounds; _placeholderImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; @@ -276,7 +289,7 @@ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { switch ( type ) { default: break; case SJPlayerGestureType_Pan: { - if ( ![self _isSupported:SJPlayerGestureTypeMask_Pan] ) + if ( ![self _isGestureSupported:SJPlayerGestureTypeMask_Pan] ) return NO; CGPoint location = [_pan locationInView:self]; @@ -297,10 +310,10 @@ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { _movingDirection = SJPanGestureMovingDirection_V; } - if ( _movingDirection == SJPanGestureMovingDirection_H && ![self _isSupported:SJPlayerGestureTypeMask_Pan_H] ) + if ( _movingDirection == SJPanGestureMovingDirection_H && ![self _isGestureSupported:SJPlayerGestureTypeMask_Pan_H] ) return NO; - if ( _movingDirection == SJPanGestureMovingDirection_V && ![self _isSupported:SJPlayerGestureTypeMask_Pan_V] ) + if ( _movingDirection == SJPanGestureMovingDirection_V && ![self _isGestureSupported:SJPlayerGestureTypeMask_Pan_V] ) return NO; if ( _longPress.state == UIGestureRecognizerStateChanged ) @@ -308,12 +321,12 @@ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { } break; case SJPlayerGestureType_Pinch: { - if ( ![self _isSupported:SJPlayerGestureTypeMask_Pinch] ) + if ( ![self _isGestureSupported:SJPlayerGestureTypeMask_Pinch] ) return NO; } break; case SJPlayerGestureType_LongPress: { - if ( ![self _isSupported:SJPlayerGestureTypeMask_LongPress] ) + if ( ![self _isGestureSupported:SJPlayerGestureTypeMask_LongPress] ) return NO; } break; @@ -340,6 +353,23 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecogni return YES; } +/// 每个子视图需要重写该方法, 判断是否消费该事件; +/// +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { + UIView *prev = nil; + UIView *retv = nil; + for ( UIView *subview in self.subviews ) { + UIView *target = [subview hitTest:[self convertPoint:point toView:subview] withEvent:event]; + if ( target != nil ) { + if ( retv == nil || subview.layer.zPosition > prev.layer.zPosition ) { + retv = target; + prev = subview; + } + } + } + return retv; +} + - (void)touchesBegan:(NSSet *)touches withEvent:(nullable UIEvent *)event { if ( event.allTouches.count != 1 ) { [self _reset]; @@ -402,8 +432,7 @@ - (void)_reset { _numberOfTaps = 0; } -- (BOOL)_isSupported:(SJPlayerGestureTypeMask)type { +- (BOOL)_isGestureSupported:(SJPlayerGestureTypeMask)type { return _supportedGestureTypes & type; } @end -NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.h index 9df6b267a..6f13795cb 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.h @@ -10,10 +10,10 @@ #import "SJRotationManagerDefines.h" #import "SJControlLayerAppearManagerDefines.h" #import "SJVideoPlayerPresentViewDefines.h" -#import "SJRotationManager.h" +#import "SJRotationManagerInternal_4.h" NS_ASSUME_NONNULL_BEGIN -@interface SJViewControllerManager : NSObject +@interface SJViewControllerManager : NSObject @property (nonatomic, weak, nullable) id fitOnScreenManager; @property (nonatomic, weak, nullable) id rotationManager; @property (nonatomic, weak, nullable) id controlLayerAppearManager; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.m index 5bbfbb255..d5a38d523 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Implements/SJViewControllerManager.m @@ -28,7 +28,7 @@ - (BOOL)prefersStatusBarHidden { if ( _tmpHiddenStatusBar ) return YES; if ( _lockedScreen ) return YES; if ( _controlLayerAppearManager.isAppeared ) return NO; - if ( _rotationManager.isTransitioning ) return NO; + if ( _rotationManager.isRotating ) return NO; if ( _fitOnScreenManager.isTransitioning ) return NO; // 全屏时, 使状态栏根据控制层显示或隐藏 @@ -36,9 +36,8 @@ - (BOOL)prefersStatusBarHidden { return !_controlLayerAppearManager.isAppeared; return NO; } - - (UIStatusBarStyle)preferredStatusBarStyle { - if ( _rotationManager.isTransitioning || _fitOnScreenManager.isTransitioning ) + if ( _rotationManager.isRotating || _fitOnScreenManager.isTransitioning ) return UIStatusBarStyleLightContent; // 全屏时, 使状态栏变成白色 @@ -46,6 +45,14 @@ - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; return UIStatusBarStyleDefault; } +- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { + UINavigationController *nav = [_presentView lookupResponderForClass:UINavigationController.class]; + if ( nav == nil ) return; + [_rotationManager rotate:SJOrientation_Portrait animated:YES completionHandler:^(id _Nonnull mgr) { + [nav pushViewController:viewController animated:animated]; + }]; +} + - (void)viewDidAppear { _viewDisappeared = NO; @@ -57,15 +64,7 @@ - (void)viewWillDisappear { - (void)viewDidDisappear { -} - -- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { - UINavigationController *nav = [_presentView lookupResponderForClass:UINavigationController.class]; - if ( nav == nil ) return; - [_rotationManager rotate:SJOrientation_Portrait animated:YES completionHandler:^(id _Nonnull mgr) { - [nav pushViewController:viewController animated:animated]; - }]; -} +} - (void)showStatusBar { if ( _tmpShowStatusBar ) return; @@ -87,6 +86,12 @@ - (void)hiddenStatusBar { - (void)setNeedsStatusBarAppearanceUpdate { [UIApplication.sharedApplication.keyWindow.rootViewController setNeedsStatusBarAppearanceUpdate]; + + if ( [_rotationManager isKindOfClass:SJRotationManager_4.class] && _rotationManager.isFullscreen ) { + SJRotationManager_4 *rotationManager = (id)_rotationManager; + [rotationManager setNeedsStatusBarAppearanceUpdate]; + } } + @end NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJControlLayerAppearManagerDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJControlLayerAppearManagerDefines.h index ad05aed83..c0a7420d8 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJControlLayerAppearManagerDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJControlLayerAppearManagerDefines.h @@ -30,7 +30,7 @@ NS_ASSUME_NONNULL_BEGIN @end @protocol SJControlLayerAppearManagerObserver -@property (nonatomic, copy, nullable) void(^appearStateDidChangeExeBlock)(id mgr); +@property (nonatomic, copy, nullable) void(^onAppearChanged)(id mgr); @end NS_ASSUME_NONNULL_END #endif /* SJControlLayerAppearManagerProtocol_h */ diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJBarrageQueueControllerDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJDanmakuPopupControllerDefines.h similarity index 59% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJBarrageQueueControllerDefines.h rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJDanmakuPopupControllerDefines.h index 4f51287d2..47d13fe49 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJBarrageQueueControllerDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJDanmakuPopupControllerDefines.h @@ -1,22 +1,22 @@ // -// SJBarrageControllerDefines.h +// SJDanmakuPopupControllerDefines.h // Pods // // Created by 畅三江 on 2019/11/12. // -#ifndef SJBarrageControllerDefines_h -#define SJBarrageControllerDefines_h +#ifndef SJDanmakuPopupControllerDefines_h +#define SJDanmakuPopupControllerDefines_h #import #import -@protocol SJBarrageItem, SJBarrageQueueControllerObserver; +@protocol SJDanmakuItem, SJDanmakuPopupControllerObserver; /// /// 弹幕控制 /// NS_ASSUME_NONNULL_BEGIN -@protocol SJBarrageQueueController -- (instancetype)initWithNumberOfLines:(NSUInteger)numberOfLines; +@protocol SJDanmakuPopupController +- (instancetype)initWithNumberOfTracks:(NSUInteger)numberOfTracks; /// /// 是否禁用 @@ -30,7 +30,7 @@ NS_ASSUME_NONNULL_BEGIN /// /// 该弹幕将会在某一条队列中适时显示 /// -- (void)enqueue:(id)barrage; +- (void)enqueue:(id)danmaku; /// /// 移除未显示的弹幕 @@ -40,7 +40,7 @@ NS_ASSUME_NONNULL_BEGIN /// /// 移除已显示的弹幕 /// -- (void)removeDisplayedBarrages; +- (void)removeDisplayedItems; /// /// 移除所有弹幕(已显示的弹幕也会被移除) @@ -70,20 +70,20 @@ NS_ASSUME_NONNULL_BEGIN /// /// 获取观察者 /// -- (id)getObserver; +- (id)getObserver; /// /// 未显示的弹幕数量 /// @property (nonatomic, readonly) NSInteger queueSize; -@property (nonatomic) NSInteger numberOfLines; +@property (nonatomic) NSInteger numberOfTracks; - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; @end -@protocol SJBarrageItem +@protocol SJDanmakuItem - (instancetype)initWithContent:(NSAttributedString *)content; - (instancetype)initWithCustomView:(__kindof UIView *)customView; @@ -94,14 +94,14 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)new NS_UNAVAILABLE; @end -@protocol SJBarrageQueueControllerObserver -@property (nonatomic, copy, nullable) void(^disabledDidChangeExeBlock)(id controller); -@property (nonatomic, copy, nullable) void(^pausedDidChangeExeBlock)(id controller); +@protocol SJDanmakuPopupControllerObserver +@property (nonatomic, copy, nullable) void(^onDisabledChanged)(id controller); +@property (nonatomic, copy, nullable) void(^onPausedChanged)(id controller); /// 该条弹幕已出队列, 将要显示时调用 -@property (nonatomic, copy, nullable) void(^willDisplayBarrageExeBlock)(id controller, id item); +@property (nonatomic, copy, nullable) void(^willDisplayItem)(id controller, id item); /// 结束显示时调用 -@property (nonatomic, copy, nullable) void(^didEndDisplayBarrageExeBlock)(id controller, id item); +@property (nonatomic, copy, nullable) void(^didEndDisplayingItem)(id controller, id item); @end NS_ASSUME_NONNULL_END -#endif /* SJBarrageControllerDefines_h */ +#endif /* SJDanmakuPopupControllerDefines_h */ diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJFloatSmallViewControllerDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJFloatSmallViewControllerDefines.h index d31c58446..6af1bc92f 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJFloatSmallViewControllerDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJFloatSmallViewControllerDefines.h @@ -36,11 +36,11 @@ NS_ASSUME_NONNULL_BEGIN /// 该block将会在单击小浮窗视图时被调用 /// -@property (nonatomic, copy, nullable) void(^singleTappedOnTheFloatViewExeBlock)(id controller); +@property (nonatomic, copy, nullable) void(^onSingleTapped)(id controller); /// 该block将会在双击小浮窗视图时被调用 /// -@property (nonatomic, copy, nullable) void(^doubleTappedOnTheFloatViewExeBlock)(id controller); +@property (nonatomic, copy, nullable) void(^onDoubleTapped)(id controller); /// 小浮窗视图是否已显示 /// @@ -68,8 +68,8 @@ NS_ASSUME_NONNULL_BEGIN @protocol SJFloatSmallViewControllerObserverProtocol @property (nonatomic, weak, readonly, nullable) id controller; -@property (nonatomic, copy, nullable) void(^appearStateDidChangeExeBlock)(id controller); -@property (nonatomic, copy, nullable) void(^enabledControllerExeBlock)(id controller); +@property (nonatomic, copy, nullable) void(^onAppearChanged)(id controller); +@property (nonatomic, copy, nullable) void(^onEnabled)(id controller); @end NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPlayerGestureControlDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJGestureControllerDefines.h similarity index 62% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPlayerGestureControlDefines.h rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJGestureControllerDefines.h index cce1375c1..5357d8c66 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPlayerGestureControlDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJGestureControllerDefines.h @@ -1,12 +1,12 @@ // -// SJPlayerGestureControlDefines.h +// SJGestureControllerDefines.h // Pods // // Created by 畅三江 on 2019/1/3. // -#ifndef SJPlayerGestureControlProtocol_h -#define SJPlayerGestureControlProtocol_h +#ifndef SJGestureControllerProtocol_h +#define SJGestureControllerProtocol_h #import NS_ASSUME_NONNULL_BEGIN @@ -25,14 +25,15 @@ typedef NS_ENUM(NSUInteger, SJPlayerGestureType) { typedef NS_OPTIONS(NSUInteger, SJPlayerGestureTypeMask) { SJPlayerGestureTypeMask_None, - SJPlayerGestureTypeMask_SingleTap = 1 << 0, - SJPlayerGestureTypeMask_DoubleTap = 1 << 1, - SJPlayerGestureTypeMask_Pan_H = 1 << 2, // 水平方向 - SJPlayerGestureTypeMask_Pan_V = 1 << 3, // 垂直方向 - SJPlayerGestureTypeMask_Pinch = 1 << 4, - SJPlayerGestureTypeMask_LongPress = 1 << 5, + SJPlayerGestureTypeMask_SingleTap = 1 << SJPlayerGestureType_SingleTap, + SJPlayerGestureTypeMask_DoubleTap = 1 << SJPlayerGestureType_DoubleTap, + SJPlayerGestureTypeMask_Pan = 1 << SJPlayerGestureType_Pan, + SJPlayerGestureTypeMask_Pinch = 1 << SJPlayerGestureType_Pinch, + SJPlayerGestureTypeMask_LongPress = 1 << SJPlayerGestureType_LongPress, + + SJPlayerGestureTypeMask_Pan_H = SJPlayerGestureTypeMask_Pan | 0, // 水平方向 + SJPlayerGestureTypeMask_Pan_V = SJPlayerGestureTypeMask_Pan | 1, // 垂直方向 - SJPlayerGestureTypeMask_Pan = SJPlayerGestureTypeMask_Pan_H | SJPlayerGestureTypeMask_Pan_V, SJPlayerGestureTypeMask_Default = SJPlayerGestureTypeMask_SingleTap | SJPlayerGestureTypeMask_DoubleTap | SJPlayerGestureTypeMask_Pan | SJPlayerGestureTypeMask_Pinch, SJPlayerGestureTypeMask_All = SJPlayerGestureTypeMask_Default | SJPlayerGestureTypeMask_LongPress, }; @@ -63,14 +64,14 @@ typedef NS_ENUM(NSUInteger, SJLongPressGestureRecognizerState) { SJLongPressGestureRecognizerStateEnded, }; -@protocol SJPlayerGestureControl +@protocol SJGestureController @property (nonatomic) SJPlayerGestureTypeMask supportedGestureTypes; ///< default value is .Default -@property (nonatomic, copy, nullable) BOOL(^gestureRecognizerShouldTrigger)(id control, SJPlayerGestureType type, CGPoint location); -@property (nonatomic, copy, nullable) void(^singleTapHandler)(id control, CGPoint location); -@property (nonatomic, copy, nullable) void(^doubleTapHandler)(id control, CGPoint location); -@property (nonatomic, copy, nullable) void(^panHandler)(id control, SJPanGestureTriggeredPosition position, SJPanGestureMovingDirection direction, SJPanGestureRecognizerState state, CGPoint translate); -@property (nonatomic, copy, nullable) void(^pinchHandler)(id control, CGFloat scale); -@property (nonatomic, copy, nullable) void(^longPressHandler)(id control, SJLongPressGestureRecognizerState state); +@property (nonatomic, copy, nullable) BOOL(^gestureRecognizerShouldTrigger)(id control, SJPlayerGestureType type, CGPoint location); +@property (nonatomic, copy, nullable) void(^singleTapHandler)(id control, CGPoint location); +@property (nonatomic, copy, nullable) void(^doubleTapHandler)(id control, CGPoint location); +@property (nonatomic, copy, nullable) void(^panHandler)(id control, SJPanGestureTriggeredPosition position, SJPanGestureMovingDirection direction, SJPanGestureRecognizerState state, CGPoint translate); +@property (nonatomic, copy, nullable) void(^pinchHandler)(id control, CGFloat scale); +@property (nonatomic, copy, nullable) void(^longPressHandler)(id control, SJLongPressGestureRecognizerState state); - (void)cancelGesture:(SJPlayerGestureType)type; - (UIGestureRecognizerState)stateOfGesture:(SJPlayerGestureType)type; @@ -80,4 +81,4 @@ typedef NS_ENUM(NSUInteger, SJLongPressGestureRecognizerState) { @end NS_ASSUME_NONNULL_END -#endif /* SJPlayerGestureControlProtocol_h */ +#endif /* SJGestureControllerProtocol_h */ diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPictureInPictureControllerDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPictureInPictureControllerDefines.h index ed9cb2465..3778a9363 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPictureInPictureControllerDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPictureInPictureControllerDefines.h @@ -36,6 +36,8 @@ API_AVAILABLE(ios(14.0)) @protocol SJPictureInPictureController API_AVAILABLE(ios(14.0)) @protocol SJPictureInPictureControllerDelegate - (void)pictureInPictureController:(id)controller statusDidChange:(SJPictureInPictureStatus)status; + +- (void)pictureInPictureController:(id)controller restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler; @end NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptPopupControllerDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptingPopupControllerDefines.h similarity index 82% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptPopupControllerDefines.h rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptingPopupControllerDefines.h index 1f45bd324..cb71eb5c2 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptPopupControllerDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptingPopupControllerDefines.h @@ -1,16 +1,16 @@ // -// SJPromptPopupController.h +// SJPromptingPopupController.h // Pods // // Created by 畅三江 on 2019/7/12. // -#ifndef SJPromptPopupControllerProtocol_h -#define SJPromptPopupControllerProtocol_h +#ifndef SJPromptingPopupControllerProtocol_h +#define SJPromptingPopupControllerProtocol_h #import NS_ASSUME_NONNULL_BEGIN -@protocol SJPromptPopupController +@protocol SJPromptingPopupController @property (nonatomic) UIEdgeInsets contentInset; ///< default value is UIEdgeInsetsMake(12, 22, 12, 22); - (void)show:(NSAttributedString *)title; - (void)show:(NSAttributedString *)title duration:(NSTimeInterval)duration; @@ -36,4 +36,4 @@ NS_ASSUME_NONNULL_BEGIN @end NS_ASSUME_NONNULL_END -#endif /* SJPromptPopupControllerProtocol_h */ +#endif /* SJPromptingPopupControllerProtocol_h */ diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJRotationManagerDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJRotationManagerDefines.h index 9c238d1da..18542a8b0 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJRotationManagerDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJRotationManagerDefines.h @@ -77,8 +77,8 @@ NS_ASSUME_NONNULL_BEGIN /// - landscapeRight 或者 landscapeLeft 即为全屏 /// @property (nonatomic, readonly) BOOL isFullscreen; -@property (nonatomic, readonly, getter=isTransitioning) BOOL transitioning; // 是否正在旋转 - +@property (nonatomic, readonly, getter=isRotating) BOOL rotating; // 是否正在旋转 +@property (nonatomic, readonly, getter=isTransitioning) BOOL transitioning; // 是否正在进行转场 /// /// 以下属性由播放器维护 @@ -90,8 +90,8 @@ NS_ASSUME_NONNULL_BEGIN @protocol SJRotationManagerProtocol @end @protocol SJRotationManagerObserver -@property (nonatomic, copy, nullable) void(^rotationDidStartExeBlock)(id mgr); -@property (nonatomic, copy, nullable) void(^rotationDidEndExeBlock)(id mgr); +@property (nonatomic, copy, nullable) void(^onRotatingChanged)(id mgr, BOOL isRotating); +@property (nonatomic, copy, nullable) void(^onTransitioningChanged)(id mgr, BOOL isTransitioning); @end NS_ASSUME_NONNULL_END #endif diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlesPromptControllerDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlePopupControllerDefines.h similarity index 87% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlesPromptControllerDefines.h rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlePopupControllerDefines.h index 87db75621..c60bb825d 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlesPromptControllerDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJSubtitlePopupControllerDefines.h @@ -1,12 +1,12 @@ // -// SJSubtitlesPromptControllerDefines.h +// SJSubtitlePopupControllerDefines.h // Pods // // Created by 畅三江 on 2019/11/8. // -#ifndef SJSubtitlesPromptControllerDefines_h -#define SJSubtitlesPromptControllerDefines_h +#ifndef SJSubtitlePopupControllerDefines_h +#define SJSubtitlePopupControllerDefines_h #include @protocol SJSubtitleItem; @class UIColor; @@ -27,7 +27,7 @@ SJTimeRangeContainsTime(NSTimeInterval time, SJTimeRange range) { return (!(time < range.start) && (time - range.start) < range.duration) ? YES : NO; } -@protocol SJSubtitlesPromptController +@protocol SJSubtitlePopupController /// /// 设置未来将要显示的字幕 @@ -47,11 +47,12 @@ SJTimeRangeContainsTime(NSTimeInterval time, SJTimeRange range) { /// @property (nonatomic) UIEdgeInsets contentInsets; +@property (nonatomic, strong, readonly) UIView *view; + /// /// 以下属性由播放器维护, 开发者无需设置 /// @property (nonatomic) NSTimeInterval currentTime; -@property (nonatomic, strong, readonly) UIView *view; @end @@ -65,4 +66,4 @@ SJTimeRangeContainsTime(NSTimeInterval time, SJTimeRange range) { @end NS_ASSUME_NONNULL_END -#endif /* SJSubtitlesPromptControllerDefines_h */ +#endif /* SJSubtitlePopupControllerDefines_h */ diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJTextPopupControllerDefines.h similarity index 81% rename from Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptDefines.h rename to Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJTextPopupControllerDefines.h index 140225c4e..313b89ae9 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJPromptDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJTextPopupControllerDefines.h @@ -1,16 +1,16 @@ // -// SJPromptDefines.h +// SJTextPopupControllerDefines.h // Pods // // Created by 畅三江 on 2019/9/15. // -#ifndef SJPromptDefines_h -#define SJPromptDefines_h +#ifndef SJTextPopupControllerDefines_h +#define SJTextPopupControllerDefines_h #import NS_ASSUME_NONNULL_BEGIN -@protocol SJPromptProtocol +@protocol SJTextPopupController - (void)show:(NSAttributedString *)title; - (void)show:(NSAttributedString *)title duration:(NSTimeInterval)duration; - (void)show:(NSAttributedString *)title duration:(NSTimeInterval)duration completionHandler:(nullable void(^)(void))completionHandler; @@ -26,4 +26,4 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, weak, nullable) UIView *target; @end NS_ASSUME_NONNULL_END -#endif /* SJPromptDefines_h */ +#endif /* SJTextPopupControllerDefines_h */ diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerControlLayerProtocol.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerControlLayerProtocol.h index 5ee95012b..ebe93f133 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerControlLayerProtocol.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerControlLayerProtocol.h @@ -12,14 +12,14 @@ #import "SJReachabilityDefines.h" #import "SJVideoPlayerPlayStatusDefines.h" #import "SJVideoPlayerPlaybackControllerDefines.h" -#import "SJPlayerGestureControlDefines.h" +#import "SJGestureControllerDefines.h" @protocol SJPlaybackInfoDelegate, SJNetworkStatusControlDelegate, SJLockScreenStateControlDelegate, SJAppActivityControlDelegate, SJVolumeBrightnessRateControlDelegate, -SJGestureControlDelegate, +SJGestureControllerDelegate, SJRotationControlDelegate, SJFitOnScreenControlDelegate, SJSwitchVideoDefinitionControlDelegate, @@ -46,7 +46,7 @@ SJPlaybackControlDelegate; @protocol SJVideoPlayerControlLayerDelegate < SJPlaybackInfoDelegate, SJRotationControlDelegate, - SJGestureControlDelegate, + SJGestureControllerDelegate, SJNetworkStatusControlDelegate, SJVolumeBrightnessRateControlDelegate, SJLockScreenStateControlDelegate, @@ -141,6 +141,8 @@ SJPlaybackControlDelegate; /// 当播放器旋转完成的时候, 会回调这个方法 /// isFull 标识是否是全屏 - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer didEndRotation:(BOOL)isFull; + +- (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer onRotationTransitioningChanged:(BOOL)isTransitioning; @end @@ -156,7 +158,7 @@ SJPlaybackControlDelegate; -@protocol SJGestureControlDelegate +@protocol SJGestureControllerDelegate @optional /// Asks the delegate if gesture should trigger in the video player. /// 是否可以触发某个手势 diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPlaybackControllerDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPlaybackControllerDefines.h index 58e4913fe..5e5a49842 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPlaybackControllerDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPlaybackControllerDefines.h @@ -70,6 +70,7 @@ NS_ASSUME_NONNULL_BEGIN - (BOOL)isPictureInPictureSupported API_AVAILABLE(ios(14.0)); @property (nonatomic) BOOL requiresLinearPlaybackInPictureInPicture API_AVAILABLE(ios(14.0)); @property (nonatomic, readonly) SJPictureInPictureStatus pictureInPictureStatus API_AVAILABLE(ios(14.0)); +@property (nonatomic, copy, nullable) void(^restoreUserInterfaceForPictureInPictureStop)(id controller, void(^completionHandler)(BOOL restored)); - (void)startPictureInPicture API_AVAILABLE(ios(14.0)); - (void)stopPictureInPicture API_AVAILABLE(ios(14.0)); @end @@ -116,6 +117,10 @@ NS_ASSUME_NONNULL_BEGIN // - new - +- (void)playbackController:(id)controller volumeDidChange:(float)volume; +- (void)playbackController:(id)controller rateDidChange:(float)rate; +- (void)playbackController:(id)controller mutedDidChange:(BOOL)isMuted; + - (void)playbackController:(id)controller playbackDidFinish:(SJFinishedReason)reason; - (void)playbackController:(id)controller durationDidChange:(NSTimeInterval)duration; - (void)playbackController:(id)controller currentTimeDidChange:(NSTimeInterval)currentTime; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPresentViewDefines.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPresentViewDefines.h index 8041910a7..f21cddd0f 100644 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPresentViewDefines.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/Common/Interfaces/SJVideoPlayerPresentViewDefines.h @@ -14,9 +14,10 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, strong, readonly) UIImageView *placeholderImageView; @property (nonatomic, readonly, getter=isPlaceholderImageViewHidden) BOOL placeholderImageViewHidden; -- (void)showPlaceholderAnimated:(BOOL)animated; -- (void)hiddenPlaceholderAnimated:(BOOL)animated; -- (void)hiddenPlaceholderAnimated:(BOOL)animated delay:(NSTimeInterval)secs; +@property (nonatomic) UIViewContentMode placeholderImageViewContentMode; // default value is UIViewContentModeScaleAspectFill; + +- (void)setPlaceholderImageViewHidden:(BOOL)isHidden animated:(BOOL)animated; +- (void)hidePlaceholderImageViewAnimated:(BOOL)animated delay:(NSTimeInterval)secs; @end NS_ASSUME_NONNULL_END #endif /* SJVideoPlayerPresentViewDefines_h */ diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/SJBaseVideoPlayer.h b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/SJBaseVideoPlayer.h index 7f9203187..e77499ca6 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/SJBaseVideoPlayer.h +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/SJBaseVideoPlayer.h @@ -20,16 +20,16 @@ #import "SJFlipTransitionManagerDefines.h" #import "SJVideoPlayerPlaybackControllerDefines.h" #import "SJVideoPlayerURLAsset+SJAVMediaPlaybackAdd.h" -#import "SJPlayerGestureControlDefines.h" +#import "SJGestureControllerDefines.h" #import "SJDeviceVolumeAndBrightnessManagerDefines.h" #import "SJFloatSmallViewControllerDefines.h" #import "SJVideoDefinitionSwitchingInfo.h" -#import "SJPromptPopupControllerDefines.h" +#import "SJPromptingPopupControllerDefines.h" #import "SJPlaybackObservation.h" #import "SJVideoPlayerPresentViewDefines.h" -#import "SJSubtitlesPromptControllerDefines.h" -#import "SJBarrageQueueControllerDefines.h" -#import "SJPromptDefines.h" +#import "SJSubtitlePopupControllerDefines.h" +#import "SJDanmakuPopupControllerDefines.h" +#import "SJTextPopupControllerDefines.h" #import "SJWatermarkViewDefines.h" NS_ASSUME_NONNULL_BEGIN @@ -59,7 +59,14 @@ NS_ASSUME_NONNULL_BEGIN @end -@interface SJBaseVideoPlayer (SJAVAudioSessionExtended) +@interface SJBaseVideoPlayer (AudioSession) +/// +/// 每次执行play的时候是否设置 AVAudioSession +/// +/// default value is YES +/// +@property (nonatomic, getter=isAudioSessionControlEnabled) BOOL audioSessionControlEnabled; + - (void)setCategory:(AVAudioSessionCategory)category withOptions:(AVAudioSessionCategoryOptions)options; - (void)setActiveOptions:(AVAudioSessionSetActiveOptions)options; @end @@ -121,7 +128,7 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - 播放控制 -@interface SJBaseVideoPlayer (PlayControl) +@interface SJBaseVideoPlayer (Playback) /// /// 播放控制 @@ -195,6 +202,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readonly) BOOL isEvaluating; ///< 调用了播放, 正在评估缓冲中(这个过程会进行的很快, 不需要显示loading视图) @property (nonatomic, readonly) BOOL isNoAssetToPlay; ///< 调用了播放, 但未设置播放资源(设置资源后将会自动播放 ) +@property (nonatomic, readonly) BOOL isPlaybackFailed; ///< 播放失败 @property (nonatomic, readonly) BOOL isPlaybackFinished; ///< 播放结束 @property (nonatomic, readonly, nullable) SJFinishedReason finishedReason; ///< 播放结束的reason @@ -383,21 +391,21 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - 弹出提示文本 -@interface SJBaseVideoPlayer (PromptControl) +@interface SJBaseVideoPlayer (Popup) /// /// 中心弹出文本提示 /// /// 了解更多请前往协议头文件查看 /// -@property (nonatomic, strong, null_resettable) id prompt; +@property (nonatomic, strong, null_resettable) id textPopupController; /// /// 左下角弹出提示 /// /// 了解更多请前往协议头文件查看 /// -@property (nonatomic, strong, null_resettable) id promptPopupController; +@property (nonatomic, strong, null_resettable) id promptingPopupController; @end @@ -426,17 +434,17 @@ NS_ASSUME_NONNULL_BEGIN LongPressGesture 长按手势 - 当用户长按播放器时, 将加速播放. 该手势默认不会启用, 如需开启请设置`player.gestureControl.supportedGestureTypes = SJPlayerGestureTypeMask_LongPress | 其他支持的手势;` + 当用户长按播放器时, 将加速播放. 该手势默认不会启用, 如需开启请设置`player.gestureController.supportedGestureTypes = SJPlayerGestureTypeMask_LongPress | 其他支持的手势;` */ -@interface SJBaseVideoPlayer (GestureControl) +@interface SJBaseVideoPlayer (Gesture) /// /// 手势控制 /// -/// 如果想自己设置支持的手势类型, 可以`player.gestureControl.supportedGestureTypes = SJPlayerGestureTypeMask_SingleTap | 其他支持的手势;` +/// 如果想自己设置支持的手势类型, 可以`player.gestureController.supportedGestureTypes = SJPlayerGestureTypeMask_SingleTap | 其他支持的手势;` /// 了解更多请前往头文件查看 /// -@property (nonatomic, strong, readonly) id gestureControl; +@property (nonatomic, strong, readonly) id gestureController; /// /// 是否可以触发某个手势 @@ -485,7 +493,7 @@ NS_ASSUME_NONNULL_BEGIN /// /// 观察者 /// -/// 当需要监听控制层的显示和隐藏时, 可以设置`player.controlLayerAppearObserver.appearStateDidChangeExeBlock = ...;` +/// 当需要监听控制层的显示和隐藏时, 可以设置`player.controlLayerAppearObserver.onAppearChanged = ...;` /// @property (nonatomic, strong, readonly) id controlLayerAppearObserver; @@ -557,6 +565,13 @@ NS_ASSUME_NONNULL_BEGIN /// @property (nonatomic, getter=isFitOnScreen) BOOL fitOnScreen; +/// +/// 是否仅在竖屏全屏与竖屏小屏之间切换, 不触发旋转. +/// +/// 注意: 开启后, 旋转功能将会失效. +/// +@property (nonatomic) BOOL onlyFitOnScreen; + /// Whether fullscreen or smallscreen, this method does not trigger rotation. /// 全屏或小屏, 此方法不触发旋转 /// - animated : 是否动画 @@ -584,12 +599,12 @@ NS_ASSUME_NONNULL_BEGIN /// 如果需要禁止自动旋转, 可以设置`player.rotationManager.disabledAutorotation = YES;` /// 了解更多请前往头文件查看 /// -@property (nonatomic, strong, null_resettable) id rotationManager; +@property (nonatomic, strong, nullable) id rotationManager; /// /// 观察者 /// -/// 当需要监听旋转时, 可以设置`player.rotationObserver.rotationDidStartExeBlock = ...;` +/// 当需要监听旋转时, 可以设置`player.rotationObserver.onRotatingChanged = ...;` /// 了解更多请前往头文件查看 /// @property (nonatomic, strong, readonly) id rotationObserver; @@ -631,8 +646,8 @@ NS_ASSUME_NONNULL_BEGIN */ - (void)rotate:(SJOrientation)orientation animated:(BOOL)animated completion:(void (^ _Nullable)(__kindof SJBaseVideoPlayer *player))block; -@property (nonatomic, readonly) BOOL isTransitioning; -@property (nonatomic, readonly) BOOL isFullScreen; ///< 是否已全屏 +@property (nonatomic, readonly) BOOL isRotating; ///< 是否在旋转中 +@property (nonatomic, readonly) BOOL isFullscreen; ///< 是否已全屏 @property (nonatomic, getter=isLockedScreen) BOOL lockedScreen; ///< 是否锁屏 @property (nonatomic, readonly) UIInterfaceOrientation currentOrientation; ///< 当前的方向 @end @@ -696,6 +711,17 @@ NS_ASSUME_NONNULL_BEGIN @interface SJBaseVideoPlayer (ScrollView) +/// 刷新显示 +/// +/// 该方法针对的场景是: 在 CollectionView 或 TableView 调用 reloadData 时, cell 被重新创建后播放器会被移除, 调用此方法可以刷新以让播放器显示. +/// +/// \code +/// // cell被reload重新创建时, 调用此方法刷新以让播放器显示 +/// [_tableView reloadData]; +/// [_player refreshAppearStateForPlayerView]; +/// \endcode +- (void)refreshAppearStateForPlayerView; + /// /// 小浮窗控制 /// @@ -706,9 +732,9 @@ NS_ASSUME_NONNULL_BEGIN /// // 1. 开启小浮窗控制. 滑动列表当视图消失时, 将显示小浮窗视图 /// _player.floatSmallViewController.enabled = YES; /// // 2. 设置单击小浮窗执行的block -/// _player.floatSmallViewController.singleTappedOnTheFloatViewExeBlock = ...; +/// _player.floatSmallViewController.onSingleTapped = ...; /// // 3. 设置双击小浮窗执行的block -/// _player.floatSmallViewController.doubleTappedOnTheFloatViewExeBlock = ...; +/// _player.floatSmallViewController.onDoubleTapped = ...; /// /// // more /// #import @@ -770,7 +796,7 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - 字幕 -@interface SJBaseVideoPlayer (Subtitles) +@interface SJBaseVideoPlayer (Subtitle) /// /// 字幕管理 /// @@ -790,13 +816,13 @@ NS_ASSUME_NONNULL_BEGIN /// // 以下是更多设置 /// _player.subtitleBottomMargin = 22.0; /// _player.subtitleHorizontalMinMargin = 22.0; -/// _player.subtitlesPromptController.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8]; -/// _player.subtitlesPromptController.view.layer.cornerRadius = 5; -/// _player.subtitlesPromptController.contentInsets = UIEdgeInsetsMake(12, 22, 12, 22); +/// _player.subtitlePopupController.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8]; +/// _player.subtitlePopupController.view.layer.cornerRadius = 5; +/// _player.subtitlePopupController.contentInsets = UIEdgeInsetsMake(12, 22, 12, 22); /// /// \endcode /// -@property (nonatomic, strong, null_resettable) id subtitlesPromptController; +@property (nonatomic, strong, null_resettable) id subtitlePopupController; /// /// 字幕底部间距 @@ -816,17 +842,17 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - 弹幕 -@interface SJBaseVideoPlayer (Barrages) +@interface SJBaseVideoPlayer (Danmaku) /// /// 弹幕控制 /// /// \code /// -/// #import +/// #import /// /// // 创建一条弹幕 -/// SJBarrageItem *item = [SJBarrageItem.alloc initWithContent:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { +/// SJDanmakuItem *item = [SJDanmakuItem.alloc initWithContent:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { /// make.append( @"我是一条弹幕消息" ); /// make.font([UIFont boldSystemFontOfSize:16]); /// make.textColor(UIColor.whiteColor); @@ -837,11 +863,11 @@ NS_ASSUME_NONNULL_BEGIN /// }]]; /// /// // 发送一条弹幕, 弹幕将自动显示 -/// [self.player.barrageQueueController enqueue:item]; +/// [self.player.danmakuPopupController enqueue:item]; /// /// \endcode /// -@property (nonatomic, strong, null_resettable) id barrageQueueController; +@property (nonatomic, strong, null_resettable) id danmakuPopupController; @end diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/SJBaseVideoPlayer.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/SJBaseVideoPlayer.m index 62911b2c4..7e800c7f8 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/SJBaseVideoPlayer.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/SJBaseVideoPlayer.m @@ -8,7 +8,8 @@ #import "SJBaseVideoPlayer.h" #import -#import "SJRotationManager.h" +#import "SJRotationManager_4.h" +#import "SJRotationManagerInternal_4.h" #import "SJDeviceVolumeAndBrightnessManager.h" #import "SJVideoPlayerRegistrar.h" #import "SJVideoPlayerPresentView.h" @@ -23,16 +24,17 @@ #import "SJPlayerView.h" #import "SJFloatSmallViewController.h" #import "SJVideoDefinitionSwitchingInfo+Private.h" -#import "SJPromptPopupController.h" -#import "SJPrompt.h" +#import "SJPromptingPopupController.h" +#import "SJTextPopupController.h" #import "SJBaseVideoPlayerConst.h" -#import "SJSubtitlesPromptController.h" +#import "SJSubtitlePopupController.h" #import "SJBaseVideoPlayer+TestLog.h" #import "SJVideoPlayerURLAsset+SJSubtitlesAdd.h" -#import "SJBarrageQueueController.h" +#import "SJDanmakuPopupController.h" #import "SJViewControllerManager.h" #import "UIView+SJBaseVideoPlayerExtended.h" #import "NSString+SJBaseVideoPlayerExtended.h" +#import "SJPlayerViewInternal.h" #if __has_include() #import @@ -55,7 +57,7 @@ SJPlayerGestureTypeMask disabledGestures; CGFloat rateWhenLongPressGestureTriggered; BOOL allowHorizontalTriggeringOfPanGesturesInCells; - } gestureControl; + } gestureController; struct { BOOL needToHiddenWhenPlayerIsReadyForDisplay; @@ -86,6 +88,10 @@ BOOL pausedToKeepAppearState; } controlLayer; + struct { + BOOL isEnabled; + } audioSessionControl; + struct { BOOL isAppeared; BOOL hiddenFloatSmallViewWhenPlaybackFinished; @@ -150,8 +156,8 @@ @implementation SJBaseVideoPlayer { id _Nullable _floatSmallViewController; id _Nullable _floatSmallViewControllerObesrver; - id _Nullable _subtitlesPromptController; - id _Nullable _barrageQueueController; + id _Nullable _subtitlePopupController; + id _Nullable _danmakuPopupController; AVAudioSessionCategory _mCategory; AVAudioSessionCategoryOptions _mCategoryOptions; @@ -163,7 +169,7 @@ + (instancetype)player { } + (NSString *)version { - return @"v3.6.2"; + return @"v3.7.0"; } - (void)setVideoGravity:(SJVideoGravity)videoGravity { @@ -195,22 +201,27 @@ - (instancetype)init { _controlInfo->playbackControl.autoplayWhenSetNewAsset = YES; _controlInfo->playbackControl.resumePlaybackWhenPlayerHasFinishedSeeking = YES; _controlInfo->floatSmallViewControl.hiddenFloatSmallViewWhenPlaybackFinished = YES; - _controlInfo->gestureControl.rateWhenLongPressGestureTriggered = 2.0; + _controlInfo->gestureController.rateWhenLongPressGestureTriggered = 2.0; + _controlInfo->audioSessionControl.isEnabled = YES; _controlInfo->pan.factor = 667; _mCategory = AVAudioSessionCategoryPlayback; _mSetActiveOptions = AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation; [self _setupViews]; + [self performSelectorOnMainThread:@selector(_prepare) withObject:nil waitUntilDone:NO]; + return self; +} + +- (void)_prepare { [self fitOnScreenManager]; - [self rotationManager]; + if ( !self.onlyFitOnScreen ) [self rotationManager]; [self controlLayerAppearManager]; [self registrar]; [self reachability]; - [self gestureControl]; + [self gestureController]; [self.deviceVolumeAndBrightnessManager prepare]; [self _setupViewControllerManager]; [self _showOrHiddenPlaceholderImageViewIfNeeded]; - return self; } - (void)dealloc { @@ -223,12 +234,6 @@ - (void)dealloc { free(_controlInfo); } -- (void)playerViewDidLayoutSubviews:(SJPlayerView *)playerView { - if ( _presentView.superview == playerView ) { - _presentView.frame = playerView.bounds; - } -} - - (void)playerViewWillMoveToWindow:(SJPlayerView *)playerView { [self.playModelObserver refreshAppearState]; } @@ -238,7 +243,7 @@ - (void)playerViewWillMoveToWindow:(SJPlayerView *)playerView { /// - (nullable UIView *)playerView:(SJPlayerView *)playerView hitTestForView:(nullable __kindof UIView *)view { - if ( playerView.hidden ) return nil; + if ( playerView.hidden || playerView.alpha < 0.01 || !playerView.isUserInteractionEnabled ) return nil; for ( UIGestureRecognizer *gesture in playerView.superview.gestureRecognizers ) { if ( [gesture isKindOfClass:UITapGestureRecognizer.class] && gesture.isEnabled ) { @@ -254,19 +259,19 @@ - (nullable UIView *)playerView:(SJPlayerView *)playerView hitTestForView:(nulla - (void)presentViewDidLayoutSubviews:(SJVideoPlayerPresentView *)presentView { [self updateWatermarkViewLayout]; - if ( !CGSizeEqualToSize(_controlLayerDataSource.controlView.frame.size, presentView.bounds.size) ) { - _controlLayerDataSource.controlView.frame = presentView.bounds; + if ( self.isRotating ) { + [UIView animateWithDuration:0.3 animations:^{ + [presentView layoutIfNeeded]; + }]; } } -//- (void)presentViewWillMoveToWindow:(nullable UIWindow *)window { } - #pragma mark - - (void)_handleSingleTap:(CGPoint)location { if ( self.controlInfo->floatSmallViewControl.isAppeared ) { - if ( self.floatSmallViewController.singleTappedOnTheFloatViewExeBlock ) { - self.floatSmallViewController.singleTappedOnTheFloatViewExeBlock(self.floatSmallViewController); + if ( self.floatSmallViewController.onSingleTapped ) { + self.floatSmallViewController.onSingleTapped(self.floatSmallViewController); } return; } @@ -283,8 +288,8 @@ - (void)_handleSingleTap:(CGPoint)location { - (void)_handleDoubleTap:(CGPoint)location { if ( self.controlInfo->floatSmallViewControl.isAppeared ) { - if ( self.floatSmallViewController.doubleTappedOnTheFloatViewExeBlock ) { - self.floatSmallViewController.doubleTappedOnTheFloatViewExeBlock(self.floatSmallViewController); + if ( self.floatSmallViewController.onDoubleTapped ) { + self.floatSmallViewController.onDoubleTapped(self.floatSmallViewController); } return; } @@ -427,6 +432,8 @@ - (void)setControlLayerDataSource:(nullable id)rotationManager { + _rotationManager = rotationManager; + _rotationManagerObserver = nil; + + if ( rotationManager == nil || self.onlyFitOnScreen ) + return; + + self.viewControllerManager.rotationManager = rotationManager; + + rotationManager.superview = self.view; + rotationManager.target = self.presentView; + __weak typeof(self) _self = self; + rotationManager.shouldTriggerRotation = ^BOOL(id _Nonnull mgr) { + __strong typeof(_self) self = _self; + if ( !self ) return NO; + if ( mgr.isFullscreen == NO ) { + if ( self.playModelObserver.isScrolling ) return NO; + if ( !self.view.superview ) return NO; +// UIWindow *_Nullable window = self.view.window; +// if ( window && !window.isKeyWindow ) return NO; + if ( self.isPlayOnScrollView && !(self.isScrollAppeared || self.controlInfo->floatSmallViewControl.isAppeared) ) return NO; + if ( self.touchedOnTheScrollView ) return NO; + } + if ( self.isLockedScreen ) return NO; + + if ( self.isFitOnScreen ) + return self.allowsRotationInFitOnScreen; + + if ( self.viewControllerManager.isViewDisappeared ) return NO; + if ( [self.controlLayerDelegate respondsToSelector:@selector(canTriggerRotationOfVideoPlayer:)] ) { + if ( ![self.controlLayerDelegate canTriggerRotationOfVideoPlayer:self] ) + return NO; + } + if ( self.atViewController.presentedViewController ) return NO; + if ( self.shouldTriggerRotation && !self.shouldTriggerRotation(self) ) return NO; + return YES; + }; + + _rotationManagerObserver = [rotationManager getObserver]; + _rotationManagerObserver.onRotatingChanged = ^(id _Nonnull mgr, BOOL isRotating) { + __strong typeof(_self) self = _self; + if ( !self ) return ; + if ( isRotating ) { + if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:willRotateView:)] ) { + [self.controlLayerDelegate videoPlayer:self willRotateView:mgr.isFullscreen]; + } + + [self controlLayerNeedDisappear]; + } + else { + [self.playModelObserver refreshAppearState]; + if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:didEndRotation:)] ) { + [self.controlLayerDelegate videoPlayer:self didEndRotation:mgr.isFullscreen]; + } + + if ( mgr.isFullscreen ) { + [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; + } + else { + [UIView animateWithDuration:0.25 animations:^{ + [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; + }]; + } + } + }; + + _rotationManagerObserver.onTransitioningChanged = ^(id _Nonnull mgr, BOOL isTransitioning) { + __strong typeof(_self) self = _self; + if ( !self ) return ; + if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:onRotationTransitioningChanged:)] ) { + [self.controlLayerDelegate videoPlayer:self onRotationTransitioningChanged:isTransitioning]; + } + }; +} + +- (void)_clearRotationManager { + _viewControllerManager.rotationManager = nil; + _rotationManagerObserver = nil; + _rotationManager = nil; +} + +#pragma mark - + +- (void)_setupFitOnScreenManager:(id)fitOnScreenManager { + _fitOnScreenManager = fitOnScreenManager; + _fitOnScreenManagerObserver = nil; + + if ( fitOnScreenManager == nil ) return; + + self.viewControllerManager.fitOnScreenManager = fitOnScreenManager; + + _fitOnScreenManagerObserver = [fitOnScreenManager getObserver]; + __weak typeof(self) _self = self; + _fitOnScreenManagerObserver.fitOnScreenWillBeginExeBlock = ^(id mgr) { + __strong typeof(_self) self = _self; + if ( !self ) return; + self.rotationManager.superview = mgr.isFitOnScreen ? self.fitOnScreenManager.superviewInFitOnScreen : self.view; + + [self controlLayerNeedDisappear]; + + if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:willFitOnScreen:)] ) { + [self.controlLayerDelegate videoPlayer:self willFitOnScreen:mgr.isFitOnScreen]; + } + }; + + _fitOnScreenManagerObserver.fitOnScreenDidEndExeBlock = ^(id mgr) { + __strong typeof(_self) self = _self; + if ( !self ) return; + + if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:didCompleteFitOnScreen:)] ) { + [self.controlLayerDelegate videoPlayer:self didCompleteFitOnScreen:mgr.isFitOnScreen]; + } + + [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; + }; +} + + +#pragma mark - + +- (void)_setupControlLayerAppearManager:(id)controlLayerAppearManager { + _controlLayerAppearManager = controlLayerAppearManager; + _controlLayerAppearManagerObserver = nil; + + if ( controlLayerAppearManager == nil ) return; + + self.viewControllerManager.controlLayerAppearManager = controlLayerAppearManager; + + __weak typeof(self) _self = self; + _controlLayerAppearManager.canAutomaticallyDisappear = ^BOOL(id _Nonnull mgr) { + __strong typeof(_self) self = _self; + if ( !self ) return NO; + + if ( [self.controlLayerDelegate respondsToSelector:@selector(controlLayerOfVideoPlayerCanAutomaticallyDisappear:)] ) { + if ( ![self.controlLayerDelegate controlLayerOfVideoPlayerCanAutomaticallyDisappear:self] ) { + return NO; + } + } + + if ( self.canAutomaticallyDisappear && !self.canAutomaticallyDisappear(self) ) { + return NO; + } + return YES; + }; + + _controlLayerAppearManagerObserver = [_controlLayerAppearManager getObserver]; + _controlLayerAppearManagerObserver.onAppearChanged = ^(id mgr) { + __strong typeof(_self) self = _self; + if ( !self ) return; + + if ( mgr.isAppeared ) { + if ( [self.controlLayerDelegate respondsToSelector:@selector(controlLayerNeedAppear:)] ) { + [self.controlLayerDelegate controlLayerNeedAppear:self]; + } + } + else { + if ( [self.controlLayerDelegate respondsToSelector:@selector(controlLayerNeedDisappear:)] ) { + [self.controlLayerDelegate controlLayerNeedDisappear:self]; + } + } + + if ( !self.isFullscreen || self.isRotating ) { + [UIView animateWithDuration:0 animations:^{ + } completion:^(BOOL finished) { + [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; + }]; + } + else { + [UIView animateWithDuration:0.25 animations:^{ + [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; + }]; + } + }; +} + #pragma mark - @@ -455,27 +639,31 @@ - (SJVideoPlayerRegistrar *)registrar { - (void)_setupViews { _view = [SJPlayerView new]; + _view.tag = SJPlayerViewTag; _view.delegate = self; _view.backgroundColor = [UIColor blackColor]; _presentView = [SJVideoPlayerPresentView new]; + _presentView.tag = SJPresentViewTag; + _presentView.frame = _view.bounds; + _presentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + _presentView.placeholderImageView.layer.zPosition = SJPlayerZIndexes.shared.placeholderImageViewZIndex; _presentView.delegate = self; - [self _configGestureControl:_presentView]; + [self _configGestureController:_presentView]; [_view addSubview:_presentView]; + _view.presentView = _presentView; } - (void)_setupViewControllerManager { - if ( _viewControllerManager == nil ) { - _viewControllerManager = SJViewControllerManager.alloc.init; - } + if ( _viewControllerManager == nil ) _viewControllerManager = SJViewControllerManager.alloc.init; _viewControllerManager.fitOnScreenManager = _fitOnScreenManager; _viewControllerManager.rotationManager = _rotationManager; _viewControllerManager.controlLayerAppearManager = _controlLayerAppearManager; _viewControllerManager.presentView = self.presentView; _viewControllerManager.lockedScreen = self.isLockedScreen; - if ( [_rotationManager isKindOfClass:SJRotationManager.class] ) { - SJRotationManager *mgr = _rotationManager; + if ( [_rotationManager isKindOfClass:SJRotationManager_4.class] ) { + SJRotationManager_4 *mgr = _rotationManager; mgr.delegate = _viewControllerManager; } } @@ -493,22 +681,22 @@ - (void)_showOrHiddenPlaceholderImageViewIfNeeded { if ( _controlInfo->placeholder.needToHiddenWhenPlayerIsReadyForDisplay ) { NSTimeInterval delay = _URLAsset.original != nil ? 0 : _controlInfo->placeholder.delayHidden; BOOL animated = _URLAsset.original == nil; - [self.presentView hiddenPlaceholderAnimated:animated delay:delay]; + [self.presentView hidePlaceholderImageViewAnimated:animated delay:delay]; } } else { - [self.presentView showPlaceholderAnimated:NO]; + [self.presentView setPlaceholderImageViewHidden:NO animated:NO]; } } -- (void)_configGestureControl:(id)gestureControl { +- (void)_configGestureController:(id)gestureController { __weak typeof(self) _self = self; - gestureControl.gestureRecognizerShouldTrigger = ^BOOL(id _Nonnull control, SJPlayerGestureType type, CGPoint location) { + gestureController.gestureRecognizerShouldTrigger = ^BOOL(id _Nonnull control, SJPlayerGestureType type, CGPoint location) { __strong typeof(_self) self = _self; if ( !self ) return NO; - if ( self.isTransitioning ) + if ( self.isRotating ) return NO; if ( type != SJPlayerGestureType_SingleTap && self.isLockedScreen ) @@ -527,8 +715,8 @@ - (void)_configGestureControl:(id)gestureControl { return NO; if ( self.isPlayOnScrollView ) { - if ( !self.controlInfo->gestureControl.allowHorizontalTriggeringOfPanGesturesInCells ) { - if ( !self.isFitOnScreen && !self.isFullScreen ) + if ( !self.controlInfo->gestureController.allowHorizontalTriggeringOfPanGesturesInCells ) { + if ( !self.isFitOnScreen && !self.isRotating ) return NO; } } @@ -536,7 +724,7 @@ - (void)_configGestureControl:(id)gestureControl { break; case SJPanGestureMovingDirection_V: { if ( self.isPlayOnScrollView ) { - if ( !self.isFitOnScreen && !self.isFullScreen ) + if ( !self.isFitOnScreen && !self.isRotating ) return NO; } switch ( control.triggeredPosition ) { @@ -573,31 +761,31 @@ - (void)_configGestureControl:(id)gestureControl { return YES; }; - gestureControl.singleTapHandler = ^(id _Nonnull control, CGPoint location) { + gestureController.singleTapHandler = ^(id _Nonnull control, CGPoint location) { __strong typeof(_self) self = _self; if ( !self ) return ; [self _handleSingleTap:location]; }; - gestureControl.doubleTapHandler = ^(id _Nonnull control, CGPoint location) { + gestureController.doubleTapHandler = ^(id _Nonnull control, CGPoint location) { __strong typeof(_self) self = _self; if ( !self ) return ; [self _handleDoubleTap:location]; }; - gestureControl.panHandler = ^(id _Nonnull control, SJPanGestureTriggeredPosition position, SJPanGestureMovingDirection direction, SJPanGestureRecognizerState state, CGPoint translate) { + gestureController.panHandler = ^(id _Nonnull control, SJPanGestureTriggeredPosition position, SJPanGestureMovingDirection direction, SJPanGestureRecognizerState state, CGPoint translate) { __strong typeof(_self) self = _self; if ( !self ) return ; [self _handlePan:position direction:direction state:state translate:translate]; }; - gestureControl.pinchHandler = ^(id _Nonnull control, CGFloat scale) { + gestureController.pinchHandler = ^(id _Nonnull control, CGFloat scale) { __strong typeof(_self) self = _self; if ( !self ) return ; [self _handlePinch:scale]; }; - gestureControl.longPressHandler = ^(id _Nonnull control, SJLongPressGestureRecognizerState state) { + gestureController.longPressHandler = ^(id _Nonnull control, SJLongPressGestureRecognizerState state) { __strong typeof(_self) self = _self; if ( !self ) return; [self _handleLongPress:state]; @@ -622,7 +810,15 @@ - (BOOL)touchedOnTheScrollView { } @end -@implementation SJBaseVideoPlayer (SJAVAudioSessionExtended) +@implementation SJBaseVideoPlayer (AudioSession) +- (void)setAudioSessionControlEnabled:(BOOL)audioSessionControlEnabled { + _controlInfo->audioSessionControl.isEnabled = audioSessionControlEnabled; +} + +- (BOOL)isAudioSessionControlEnabled { + return _controlInfo->audioSessionControl.isEnabled; +} + - (void)setCategory:(AVAudioSessionCategory)category withOptions:(AVAudioSessionCategoryOptions)options { _mCategory = category; _mCategoryOptions = options; @@ -693,7 +889,7 @@ - (void)setFlipTransitionManager:(id _Nullable)flipTran @end #pragma mark - 控制 -@implementation SJBaseVideoPlayer (PlayControl) +@implementation SJBaseVideoPlayer (Playback) - (void)setPlaybackController:(nullable __kindof id)playbackController { if ( _playbackController != nil ) { [_playbackController.playerView removeFromSuperview]; @@ -715,17 +911,15 @@ - (void)_playbackControllerDidChange { return; _playbackController.delegate = self; + if ( _playbackController.playerView.superview != self.presentView ) { _playbackController.playerView.frame = self.presentView.bounds; _playbackController.playerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - [_presentView insertSubview:_playbackController.playerView atIndex:0]; + _playbackController.playerView.layer.zPosition = SJPlayerZIndexes.shared.playbackViewZIndex; + [_presentView addSubview:_playbackController.playerView]; } _flipTransitionManager.target = _playbackController.playerView; - if ( _subtitlesPromptController.view != nil ) - [self.presentView insertSubview:_subtitlesPromptController.view aboveSubview:_playbackController.playerView]; - if ( self.watermarkView != nil ) - [self.presentView insertSubview:self.watermarkView aboveSubview:_playbackController.playerView]; } - (SJPlaybackObservation *)playbackObserver { @@ -782,6 +976,10 @@ - (BOOL)isBuffering { return self.timeControlStatus == SJPlaybackTimeControlStat - (BOOL)isEvaluating { return self.timeControlStatus == SJPlaybackTimeControlStatusWaitingToPlay && self.reasonForWaitingToPlay == SJWaitingWhileEvaluatingBufferingRateReason; } - (BOOL)isNoAssetToPlay { return self.timeControlStatus == SJPlaybackTimeControlStatusWaitingToPlay && self.reasonForWaitingToPlay == SJWaitingWithNoAssetToPlayReason; } +- (BOOL)isPlaybackFailed { + return self.assetStatus == SJAssetStatusFailed; +} + - (nullable SJWaitingReason)reasonForWaitingToPlay { return _playbackController.reasonForWaitingToPlay; } @@ -855,8 +1053,8 @@ - (void)setURLAsset:(nullable SJVideoPlayerURLAsset *)URLAsset { return; } - if ( URLAsset.subtitles != nil || _subtitlesPromptController != nil ) { - self.subtitlesPromptController.subtitles = URLAsset.subtitles; + if ( URLAsset.subtitles != nil || _subtitlePopupController != nil ) { + self.subtitlePopupController.subtitles = URLAsset.subtitles; } [(SJMediaPlaybackController *)self.playbackController prepareToPlay]; @@ -900,19 +1098,16 @@ - (void)refresh { - (void)setPlayerVolume:(float)playerVolume { self.playbackController.volume = playerVolume; - [self _postNotification:SJVideoPlayerVolumeDidChangeNotification]; } + - (float)playerVolume { return self.playbackController.volume; } - (void)setMuted:(BOOL)muted { self.playbackController.muted = muted; - if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:muteChanged:)] ) { - [self.controlLayerDelegate videoPlayer:self muteChanged:muted]; - } - [self _postNotification:SJVideoPlayerMutedDidChangeNotification]; } + - (BOOL)isMuted { return self.playbackController.muted; } @@ -970,16 +1165,18 @@ - (void)play { return; } - NSError *error = nil; - if ( ![AVAudioSession.sharedInstance setCategory:_mCategory withOptions:_mCategoryOptions error:&error] ) { + if (_controlInfo->audioSessionControl.isEnabled) { + NSError *error = nil; + if ( ![AVAudioSession.sharedInstance setCategory:_mCategory withOptions:_mCategoryOptions error:&error] ) { #ifdef DEBUG - NSLog(@"%@", error); + NSLog(@"%@", error); #endif - } - if ( ![AVAudioSession.sharedInstance setActive:YES withOptions:_mSetActiveOptions error:&error] ) { + } + if ( ![AVAudioSession.sharedInstance setActive:YES withOptions:_mSetActiveOptions error:&error] ) { #ifdef DEBUG - NSLog(@"%@", error); + NSLog(@"%@", error); #endif + } } [_playbackController play]; @@ -1010,7 +1207,7 @@ - (void)stop { [self _postNotification:SJVideoPlayerPlaybackWillStopNotification]; _controlInfo->playbackControl.isUserPaused = NO; - _subtitlesPromptController.subtitles = nil; + _subtitlePopupController.subtitles = nil; _playModelObserver = nil; _URLAsset = nil; [_playbackController stop]; @@ -1097,12 +1294,6 @@ - (void)setRate:(float)rate { return; self.playbackController.rate = rate; - - if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:rateChanged:)] ) { - [self.controlLayerDelegate videoPlayer:self rateChanged:rate]; - } - - [self _postNotification:SJVideoPlayerRateDidChangeNotification]; } - (float)rate { @@ -1158,6 +1349,25 @@ - (void)playbackController:(id)controller timeC #endif } +- (void)playbackController:(id)controller volumeDidChange:(float)volume { + [self _postNotification:SJVideoPlayerVolumeDidChangeNotification]; +} + +- (void)playbackController:(id)controller rateDidChange:(float)rate { + if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:rateChanged:)] ) { + [self.controlLayerDelegate videoPlayer:self rateChanged:rate]; + } + + [self _postNotification:SJVideoPlayerRateDidChangeNotification]; +} + +- (void)playbackController:(id)controller mutedDidChange:(BOOL)isMuted { + if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:muteChanged:)] ) { + [self.controlLayerDelegate videoPlayer:self muteChanged:isMuted]; + } + [self _postNotification:SJVideoPlayerMutedDidChangeNotification]; +} + - (void)playbackController:(id)controller pictureInPictureStatusDidChange:(SJPictureInPictureStatus)status API_AVAILABLE(ios(14.0)) { if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:pictureInPictureStatusDidChange:)] ) { [self.controlLayerDelegate videoPlayer:self pictureInPictureStatusDidChange:status]; @@ -1175,7 +1385,7 @@ - (void)playbackController:(id)controller durat } - (void)playbackController:(id)controller currentTimeDidChange:(NSTimeInterval)currentTime { - _subtitlesPromptController.currentTime = currentTime; + _subtitlePopupController.currentTime = currentTime; if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:currentTimeDidChange:)] ) { [self.controlLayerDelegate videoPlayer:self currentTimeDidChange:currentTime]; @@ -1265,7 +1475,8 @@ - (void)playbackController:(id)controller didRe } - (void)applicationDidBecomeActiveWithPlaybackController:(id)controller { - BOOL canPlay = self.isPaused && + BOOL canPlay = self.URLAsset != nil && + self.isPaused && self.controlInfo->playbackControl.resumePlaybackWhenAppDidEnterForeground && !self.vc_isDisappeared; if ( self.isPlayOnScrollView ) { @@ -1450,9 +1661,9 @@ - (void)needHiddenStatusBar { #pragma mark - Gesture -@implementation SJBaseVideoPlayer (GestureControl) +@implementation SJBaseVideoPlayer (Gesture) -- (id)gestureControl { +- (id)gestureController { return _presentView; } @@ -1464,18 +1675,18 @@ - (void)setGestureRecognizerShouldTrigger:(BOOL (^_Nullable)(__kindof SJBaseVide } - (void)setAllowHorizontalTriggeringOfPanGesturesInCells:(BOOL)allowHorizontalTriggeringOfPanGesturesInCells { - _controlInfo->gestureControl.allowHorizontalTriggeringOfPanGesturesInCells = allowHorizontalTriggeringOfPanGesturesInCells; + _controlInfo->gestureController.allowHorizontalTriggeringOfPanGesturesInCells = allowHorizontalTriggeringOfPanGesturesInCells; } - (BOOL)allowHorizontalTriggeringOfPanGesturesInCells { - return _controlInfo->gestureControl.allowHorizontalTriggeringOfPanGesturesInCells; + return _controlInfo->gestureController.allowHorizontalTriggeringOfPanGesturesInCells; } - (void)setRateWhenLongPressGestureTriggered:(CGFloat)rateWhenLongPressGestureTriggered { - _controlInfo->gestureControl.rateWhenLongPressGestureTriggered = rateWhenLongPressGestureTriggered; + _controlInfo->gestureController.rateWhenLongPressGestureTriggered = rateWhenLongPressGestureTriggered; } - (CGFloat)rateWhenLongPressGestureTriggered { - return _controlInfo->gestureControl.rateWhenLongPressGestureTriggered; + return _controlInfo->gestureController.rateWhenLongPressGestureTriggered; } - (void)setOffsetFactorForHorizontalPanGesture:(CGFloat)offsetFactorForHorizontalPanGesture { @@ -1502,13 +1713,12 @@ - (void)controlLayerNeedDisappear { } - (void)setControlLayerAppearManager:(id _Nullable)controlLayerAppearManager { - _controlLayerAppearManager = controlLayerAppearManager; - [self _setupControlLayerAppearManager]; + [self _setupControlLayerAppearManager:controlLayerAppearManager]; } - (id)controlLayerAppearManager { if ( _controlLayerAppearManager == nil ) { - [self setControlLayerAppearManager:SJControlLayerAppearStateManager.alloc.init]; + [self _setupControlLayerAppearManager:SJControlLayerAppearStateManager.alloc.init]; } return _controlLayerAppearManager; } @@ -1529,60 +1739,6 @@ - (void)setCanAutomaticallyDisappear:(BOOL (^_Nullable)(__kindof SJBaseVideoPlay return objc_getAssociatedObject(self, _cmd); } -- (void)_setupControlLayerAppearManager { - if ( !_controlLayerAppearManager ) - return; - - self.viewControllerManager.controlLayerAppearManager = _controlLayerAppearManager; - - __weak typeof(self) _self = self; - _controlLayerAppearManager.canAutomaticallyDisappear = ^BOOL(id _Nonnull mgr) { - __strong typeof(_self) self = _self; - if ( !self ) return NO; - - if ( [self.controlLayerDelegate respondsToSelector:@selector(controlLayerOfVideoPlayerCanAutomaticallyDisappear:)] ) { - if ( ![self.controlLayerDelegate controlLayerOfVideoPlayerCanAutomaticallyDisappear:self] ) { - return NO; - } - } - - if ( self.canAutomaticallyDisappear && !self.canAutomaticallyDisappear(self) ) { - return NO; - } - return YES; - }; - - _controlLayerAppearManagerObserver = [_controlLayerAppearManager getObserver]; - _controlLayerAppearManagerObserver.appearStateDidChangeExeBlock = ^(id mgr) { - __strong typeof(_self) self = _self; - if ( !self ) return; - - if ( mgr.isAppeared ) { - if ( [self.controlLayerDelegate respondsToSelector:@selector(controlLayerNeedAppear:)] ) { - [self.controlLayerDelegate controlLayerNeedAppear:self]; - } - } - else { - if ( [self.controlLayerDelegate respondsToSelector:@selector(controlLayerNeedDisappear:)] ) { - [self.controlLayerDelegate controlLayerNeedDisappear:self]; - } - } - - if ( !self.rotationManager.isFullscreen || - self.rotationManager.isTransitioning ) { - [UIView animateWithDuration:0 animations:^{ - } completion:^(BOOL finished) { - [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; - }]; - } - else { - [UIView animateWithDuration:0.25 animations:^{ - [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; - }]; - } - }; -} - /// 控制层是否显示 - (void)setControlLayerAppeared:(BOOL)controlLayerAppeared { controlLayerAppeared ? [self.controlLayerAppearManager needAppear] : @@ -1608,14 +1764,12 @@ - (BOOL)pausedToKeepAppearState { @implementation SJBaseVideoPlayer (FitOnScreen) - (void)setFitOnScreenManager:(id _Nullable)fitOnScreenManager { - _fitOnScreenManager = fitOnScreenManager; - [self _setupFitOnScreenManager]; + [self _setupFitOnScreenManager:fitOnScreenManager]; } - (id)fitOnScreenManager { if ( _fitOnScreenManager == nil ) { - SJFitOnScreenManager *mgr = [[SJFitOnScreenManager alloc] initWithTarget:self.presentView targetSuperview:self.view]; - [self setFitOnScreenManager:mgr]; + [self _setupFitOnScreenManager:[[SJFitOnScreenManager alloc] initWithTarget:self.presentView targetSuperview:self.view]]; } return _fitOnScreenManager; } @@ -1629,41 +1783,18 @@ - (void)setFitOnScreenManager:(id _Nullable)fitOnScreenMan return observer; } -- (void)_setupFitOnScreenManager { - if ( _fitOnScreenManager == nil ) return; - - self.viewControllerManager.fitOnScreenManager = _fitOnScreenManager; - - _fitOnScreenManagerObserver = [_fitOnScreenManager getObserver]; - __weak typeof(self) _self = self; - _fitOnScreenManagerObserver.fitOnScreenWillBeginExeBlock = ^(id mgr) { - __strong typeof(_self) self = _self; - if ( !self ) return; - self.rotationManager.superview = mgr.isFitOnScreen ? self.fitOnScreenManager.superviewInFitOnScreen : self.view; - - [self controlLayerNeedDisappear]; - - if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:willFitOnScreen:)] ) { - [self.controlLayerDelegate videoPlayer:self willFitOnScreen:mgr.isFitOnScreen]; - } - - [UIView performWithoutAnimation:^{ - [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; - }]; - }; - - _fitOnScreenManagerObserver.fitOnScreenDidEndExeBlock = ^(id mgr) { - __strong typeof(_self) self = _self; - if ( !self ) return; - - if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:didCompleteFitOnScreen:)] ) { - [self.controlLayerDelegate videoPlayer:self didCompleteFitOnScreen:mgr.isFitOnScreen]; - } - - [UIView performWithoutAnimation:^{ - [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; - }]; - }; +- (void)setOnlyFitOnScreen:(BOOL)onlyFitOnScreen { + objc_setAssociatedObject(self, @selector(onlyFitOnScreen), @(onlyFitOnScreen), OBJC_ASSOCIATION_RETAIN_NONATOMIC); + if ( onlyFitOnScreen ) { + [self _clearRotationManager]; + } + else { + [self rotationManager]; + } +} + +- (BOOL)onlyFitOnScreen { + return [objc_getAssociatedObject(self, _cmd) boolValue]; } - (BOOL)isFitOnScreen { @@ -1676,7 +1807,7 @@ - (void)setFitOnScreen:(BOOL)fitOnScreen animated:(BOOL)animated { [self setFitOnScreen:fitOnScreen animated:animated completionHandler:nil]; } - (void)setFitOnScreen:(BOOL)fitOnScreen animated:(BOOL)animated completionHandler:(nullable void(^)(__kindof SJBaseVideoPlayer *player))completionHandler { - NSAssert(!self.isFullScreen, @"横屏全屏状态下, 无法执行竖屏全屏!"); + NSAssert(!self.isFullscreen, @"横屏全屏状态下, 无法执行竖屏全屏!"); __weak typeof(self) _self = self; [self.fitOnScreenManager setFitOnScreen:fitOnScreen animated:animated completionHandler:^(id mgr) { @@ -1693,15 +1824,14 @@ - (void)setFitOnScreen:(BOOL)fitOnScreen animated:(BOOL)animated completionHandl @implementation SJBaseVideoPlayer (Rotation) - (void)setRotationManager:(nullable id)rotationManager { - _rotationManager = rotationManager; [self _setupRotationManager:rotationManager]; } -- (id)rotationManager { - if ( _rotationManager == nil ) { - SJRotationManager *mgr = [SJRotationManager.alloc init]; - mgr.delegate = _viewControllerManager; - [self setRotationManager:mgr]; +- (nullable id)rotationManager { + if ( _rotationManager == nil && !self.onlyFitOnScreen ) { + SJRotationManager_4 *defaultManager = [SJRotationManager_4 rotationManager]; + defaultManager.delegate = self.viewControllerManager; + [self _setupRotationManager:defaultManager]; } return _rotationManager; } @@ -1722,86 +1852,6 @@ - (void)setShouldTriggerRotation:(BOOL (^_Nullable)(__kindof SJBaseVideoPlayer * return objc_getAssociatedObject(self, _cmd); } -- (void)_setupRotationManager:(id)rotationManager { - if ( !rotationManager ) - return; - - self.viewControllerManager.rotationManager = rotationManager; - - rotationManager.superview = self.view; - rotationManager.target = self.presentView; - __weak typeof(self) _self = self; - rotationManager.shouldTriggerRotation = ^BOOL(id _Nonnull mgr) { - __strong typeof(_self) self = _self; - if ( !self ) return NO; - if ( mgr.isFullscreen == NO ) { - if ( self.playModelObserver.isScrolling ) return NO; - if ( !self.view.superview ) return NO; -// UIWindow *_Nullable window = self.view.window; -// if ( window && !window.isKeyWindow ) return NO; - if ( self.isPlayOnScrollView && !(self.isScrollAppeared || self.controlInfo->floatSmallViewControl.isAppeared) ) return NO; - if ( self.touchedOnTheScrollView ) return NO; - } - if ( self.isLockedScreen ) return NO; - - if ( self.isFitOnScreen ) - return self.allowsRotationInFitOnScreen; - - if ( self.viewControllerManager.isViewDisappeared ) return NO; - if ( [self.controlLayerDelegate respondsToSelector:@selector(canTriggerRotationOfVideoPlayer:)] ) { - if ( ![self.controlLayerDelegate canTriggerRotationOfVideoPlayer:self] ) - return NO; - } - if ( self.atViewController.presentedViewController ) return NO; - if ( self.shouldTriggerRotation && !self.shouldTriggerRotation(self) ) return NO; - return YES; - }; - - _rotationManagerObserver = [rotationManager getObserver]; - _rotationManagerObserver.rotationDidStartExeBlock = ^(id _Nonnull mgr) { - __strong typeof(_self) self = _self; - if ( !self ) return ; - if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:willRotateView:)] ) { - [self.controlLayerDelegate videoPlayer:self willRotateView:mgr.isFullscreen]; - } - - [self controlLayerNeedDisappear]; - -// UINavigationController *nav = [self.view lookupResponderForClass:UINavigationController.class]; -//// _updateBarsForCurrentInterfaceOrientation -// [nav performSelector:@selector(_updateBarsForCurrentInterfaceOrientation)]; - - /// - /// Thanks @SuperEvilRabbit - /// https://github.com/changsanjiang/SJVideoPlayer/issues/58 - /// - [UIView animateWithDuration:0 animations:^{ } completion:^(BOOL finished) { - if ( mgr.isFullscreen ) - [self needHiddenStatusBar]; - else - [self needShowStatusBar]; - }]; - }; - - _rotationManagerObserver.rotationDidEndExeBlock = ^(id _Nonnull mgr) { - __strong typeof(_self) self = _self; - if ( !self ) return ; - [self.playModelObserver refreshAppearState]; - if ( [self.controlLayerDelegate respondsToSelector:@selector(videoPlayer:didEndRotation:)] ) { - [self.controlLayerDelegate videoPlayer:self didEndRotation:mgr.isFullscreen]; - } - - if ( mgr.isFullscreen ) { - [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; - } - else { - [UIView animateWithDuration:0.25 animations:^{ - [self.viewControllerManager setNeedsStatusBarAppearanceUpdate]; - }]; - } - }; -} - - (void)setAllowsRotationInFitOnScreen:(BOOL)allowsRotationInFitOnScreen { objc_setAssociatedObject(self, @selector(allowsRotationInFitOnScreen), @(allowsRotationInFitOnScreen), OBJC_ASSOCIATION_RETAIN_NONATOMIC); } @@ -1826,16 +1876,16 @@ - (void)rotate:(SJOrientation)orientation animated:(BOOL)animated completion:(vo }]; } -- (BOOL)isTransitioning { - return self.rotationManager.isTransitioning; +- (BOOL)isRotating { + return _rotationManager.isRotating; } -- (BOOL)isFullScreen { - return self.rotationManager.isFullscreen; +- (BOOL)isFullscreen { + return _rotationManager.isFullscreen; } - (UIInterfaceOrientation)currentOrientation { - return (NSInteger)self.rotationManager.currentOrientation; + return (NSInteger)_rotationManager.currentOrientation; } - (void)setLockedScreen:(BOOL)lockedScreen { @@ -1991,6 +2041,10 @@ - (void)cancelGenerateGIFOperation { @implementation SJBaseVideoPlayer (ScrollView) +- (void)refreshAppearStateForPlayerView { + [self.playModelObserver refreshAppearState]; +} + - (void)setFloatSmallViewController:(nullable id)floatSmallViewController { _floatSmallViewController = floatSmallViewController; [self _resetFloatSmallViewControllerObserver:floatSmallViewController]; @@ -2019,7 +2073,7 @@ - (void)_resetFloatSmallViewControllerObserver:(nullable id _Nonnull controller) { + _floatSmallViewControllerObesrver.onAppearChanged = ^(id _Nonnull controller) { __strong typeof(_self) self = _self; if ( !self ) return ; BOOL isAppeared = controller.isAppeared; @@ -2081,12 +2135,13 @@ - (void)setPlayerViewWillDisappearExeBlock:(void (^_Nullable)(__kindof SJBaseVid @implementation SJBaseVideoPlayer (Subtitles) -- (void)setSubtitlesPromptController:(nullable id)subtitlesPromptController { - [_subtitlesPromptController.view removeFromSuperview]; - _subtitlesPromptController = subtitlesPromptController; - if ( subtitlesPromptController ) { - [self.presentView insertSubview:subtitlesPromptController.view aboveSubview:self.playbackController.playerView]; - [subtitlesPromptController.view mas_makeConstraints:^(MASConstraintMaker *make) { +- (void)setSubtitlePopupController:(nullable id)subtitlePopupController { + [_subtitlePopupController.view removeFromSuperview]; + _subtitlePopupController = subtitlePopupController; + if ( subtitlePopupController != nil ) { + subtitlePopupController.view.layer.zPosition = SJPlayerZIndexes.shared.subtitleViewZIndex; + [self.presentView addSubview:subtitlePopupController.view]; + [subtitlePopupController.view mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_greaterThanOrEqualTo(self.subtitleHorizontalMinMargin); make.right.mas_lessThanOrEqualTo(-self.subtitleHorizontalMinMargin); make.centerX.offset(0); @@ -2095,16 +2150,16 @@ - (void)setSubtitlesPromptController:(nullable id)s } } -- (id)subtitlesPromptController { - if ( _subtitlesPromptController == nil ) { - self.subtitlesPromptController = SJSubtitlesPromptController.alloc.init; +- (id)subtitlePopupController { + if ( _subtitlePopupController == nil ) { + self.subtitlePopupController = SJSubtitlePopupController.alloc.init; } - return _subtitlesPromptController; + return _subtitlePopupController; } - (void)setSubtitleBottomMargin:(CGFloat)subtitleBottomMargin { objc_setAssociatedObject(self, @selector(subtitleBottomMargin), @(subtitleBottomMargin), OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [self.subtitlesPromptController.view mas_updateConstraints:^(MASConstraintMaker *make) { + [self.subtitlePopupController.view mas_updateConstraints:^(MASConstraintMaker *make) { make.bottom.offset(-subtitleBottomMargin); }]; } @@ -2115,7 +2170,7 @@ - (CGFloat)subtitleBottomMargin { - (void)setSubtitleHorizontalMinMargin:(CGFloat)subtitleHorizontalMinMargin { objc_setAssociatedObject(self, @selector(subtitleHorizontalMinMargin), @(subtitleHorizontalMinMargin), OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [self.subtitlesPromptController.view mas_updateConstraints:^(MASConstraintMaker *make) { + [self.subtitlePopupController.view mas_updateConstraints:^(MASConstraintMaker *make) { make.left.mas_greaterThanOrEqualTo(subtitleHorizontalMinMargin); make.right.mas_lessThanOrEqualTo(-subtitleHorizontalMinMargin); }]; @@ -2129,66 +2184,66 @@ - (CGFloat)subtitleHorizontalMinMargin { #pragma mark - 提示 -@implementation SJBaseVideoPlayer (PromptControl) -- (void)setPromptPopupController:(nullable id)promptPopupController { - objc_setAssociatedObject(self, @selector(promptPopupController), promptPopupController, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - if ( promptPopupController != nil ) { - [self _setupPromptPopupController]; - } +@implementation SJBaseVideoPlayer (Popup) +- (void)setTextPopupController:(nullable id)controller { + objc_setAssociatedObject(self, @selector(textPopupController), controller, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + if ( controller != nil ) [self _setupTextPopupController:controller]; } -- (id)promptPopupController { - id_Nullable controller = objc_getAssociatedObject(self, _cmd); +- (id)textPopupController { + id controller = objc_getAssociatedObject(self, _cmd); if ( controller == nil ) { - controller = [SJPromptPopupController new]; + controller = SJTextPopupController.alloc.init; objc_setAssociatedObject(self, _cmd, controller, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [self _setupPromptPopupController]; + [self _setupTextPopupController:controller]; } return controller; } -- (void)_setupPromptPopupController { - id_Nullable controller = objc_getAssociatedObject(self, @selector(promptPopupController)); + +- (void)_setupTextPopupController:(id)controller { controller.target = self.presentView; } -- (void)setPrompt:(nullable id)prompt { - objc_setAssociatedObject(self, @selector(prompt), prompt, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [self _setupPrompt]; +- (void)setPromptingPopupController:(nullable id)controller { + objc_setAssociatedObject(self, @selector(promptingPopupController), controller, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + if ( controller != nil ) [self _setupPromptingPopupController:controller]; } -- (id)prompt { - id prompt = objc_getAssociatedObject(self, _cmd); - if ( prompt == nil ) { - prompt = SJPrompt.alloc.init; - objc_setAssociatedObject(self, _cmd, prompt, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [self _setupPrompt]; + +- (id)promptingPopupController { + id_Nullable controller = objc_getAssociatedObject(self, _cmd); + if ( controller == nil ) { + controller = [SJPromptingPopupController new]; + objc_setAssociatedObject(self, _cmd, controller, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [self _setupPromptingPopupController:controller]; } - return prompt; + return controller; } -- (void)_setupPrompt { - id prompt = objc_getAssociatedObject(self, @selector(prompt)); - prompt.target = self.presentView; + +- (void)_setupPromptingPopupController:(id)controller { + controller.target = self.presentView; } @end -@implementation SJBaseVideoPlayer (Barrages) -- (void)setBarrageQueueController:(nullable id)barrageQueueController { - if ( _barrageQueueController != nil ) - [_barrageQueueController.view removeFromSuperview]; +@implementation SJBaseVideoPlayer (Danmaku) +- (void)setDanmakuPopupController:(nullable id)danmakuPopupController { + if ( _danmakuPopupController != nil ) + [_danmakuPopupController.view removeFromSuperview]; - _barrageQueueController = barrageQueueController; - if ( barrageQueueController != nil ) { - [self.presentView insertSubview:barrageQueueController.view aboveSubview:self.presentView.placeholderImageView]; - [barrageQueueController.view mas_makeConstraints:^(MASConstraintMaker *make) { + _danmakuPopupController = danmakuPopupController; + if ( danmakuPopupController != nil ) { + danmakuPopupController.view.layer.zPosition = SJPlayerZIndexes.shared.danmakuViewZIndex; + [self.presentView addSubview:danmakuPopupController.view]; + [danmakuPopupController.view mas_makeConstraints:^(MASConstraintMaker *make) { make.top.left.right.offset(0); }]; } } -- (id)barrageQueueController { - id controller = _barrageQueueController; +- (id)danmakuPopupController { + id controller = _danmakuPopupController; if ( controller == nil ) { - controller = [SJBarrageQueueController.alloc initWithNumberOfLines:4]; - [self setBarrageQueueController:controller]; + controller = [SJDanmakuPopupController.alloc initWithNumberOfTracks:4]; + [self setDanmakuPopupController:controller]; } return controller; } @@ -2208,7 +2263,8 @@ - (void)setWatermarkView:(nullable UIView *)watermarkView { objc_setAssociatedObject(self, @selector(watermarkView), watermarkView, OBJC_ASSOCIATION_RETAIN_NONATOMIC); if ( watermarkView != nil ) { - [self.presentView insertSubview:watermarkView aboveSubview:self.playbackController.playerView]; + watermarkView.layer.zPosition = SJPlayerZIndexes.shared.watermarkViewZIndex; + [self.presentView addSubview:watermarkView]; [watermarkView layoutWatermarkInRect:self.presentView.bounds videoPresentationSize:self.videoPresentationSize videoGravity:self.videoGravity]; } } @@ -2276,7 +2332,7 @@ - (void)playerWillDisappearForObserver:(nonnull SJPlayModelPropertiesObserver *) return; } - if ( _rotationManager.isTransitioning ) + if ( _rotationManager.isRotating ) return; _controlInfo->scrollControl.isScrollAppeared = NO; diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIScrollView+ListViewAutoplaySJAdd.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIScrollView+ListViewAutoplaySJAdd.m index 3c1d7b3e4..62afbce29 100755 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIScrollView+ListViewAutoplaySJAdd.m +++ b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIScrollView+ListViewAutoplaySJAdd.m @@ -163,7 +163,7 @@ - (void)sj_playNextVisibleAsset { - (void)sj_removeCurrentPlayerView { self.sj_currentPlayingIndexPath = nil; - [[self viewWithTag:SJBaseVideoPlayerViewTag] removeFromSuperview]; + [[self viewWithTag:SJPlayerViewTag] removeFromSuperview]; } - (void)sj_playNextAssetAfterEndScroll { diff --git a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.m b/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.m deleted file mode 100644 index 0d3629def..000000000 --- a/Example/Pods/SJBaseVideoPlayer/SJBaseVideoPlayer/UIViewController+SJRotationPrivate_FixSafeArea.m +++ /dev/null @@ -1,85 +0,0 @@ -// -// UIViewController+SJRotationPrivate_FixSafeArea.m -// Pods -// -// Created by 畅三江 on 2019/8/6. -// - -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 - -#import "UIViewController+SJRotationPrivate_FixSafeArea.h" -#import "SJBaseVideoPlayer.h" -#import "SJBaseVideoPlayerConst.h" -#import - -NS_ASSUME_NONNULL_BEGIN -API_AVAILABLE(ios(13.0)) @protocol _UIViewControllerPrivateMethodsProtocol -- (void)_setContentOverlayInsets:(UIEdgeInsets)insets andLeftMargin:(CGFloat)leftMargin rightMargin:(CGFloat)rightMargin; -@end - -API_AVAILABLE(ios(13.0)) @implementation UIViewController (SJRotationPrivate_FixSafeArea) -- (BOOL)sj_containsPlayerView { - return [self.view viewWithTag:SJBaseVideoPlayerPresentViewTag] != nil || - [self.view viewWithTag:SJBaseVideoPlayerViewTag] != nil; -} - -- (void)sj_setContentOverlayInsets:(UIEdgeInsets)insets andLeftMargin:(CGFloat)leftMargin rightMargin:(CGFloat)rightMargin { - SJSafeAreaInsetsMask mask = self.disabledAdjustSafeAreaInsetsMask; - if ( mask & SJSafeAreaInsetsMaskTop ) insets.top = 0; - if ( mask & SJSafeAreaInsetsMaskLeft ) insets.left = 0; - if ( mask & SJSafeAreaInsetsMaskBottom ) insets.bottom = 0; - if ( mask & SJSafeAreaInsetsMaskRight ) insets.right = 0; - - BOOL isFullscreen = self.view.bounds.size.width > self.view.bounds.size.height; - if ( ![NSStringFromClass(self.class) isEqualToString:@"SJFullscreenModeViewController"] || isFullscreen ) { - if ( isFullscreen || insets.top != 0 || [self sj_containsPlayerView] == NO ) { - [self sj_setContentOverlayInsets:insets andLeftMargin:leftMargin rightMargin:rightMargin]; - } - } -} - -- (void)setDisabledAdjustSafeAreaInsetsMask:(SJSafeAreaInsetsMask)disabledAdjustSafeAreaInsetsMask { - objc_setAssociatedObject(self, @selector(disabledAdjustSafeAreaInsetsMask), @(disabledAdjustSafeAreaInsetsMask), OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} -- (SJSafeAreaInsetsMask)disabledAdjustSafeAreaInsetsMask { - return [objc_getAssociatedObject(self, _cmd) integerValue]; -} -@end - - -#pragma mark - - -API_AVAILABLE(ios(13.0)) @implementation SJBaseVideoPlayer (SJRotationPrivate_FixSafeArea) -+ (void)initialize { - if ( @available(iOS 13.0, *) ) { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - Class cls = UIViewController.class; - NSData *data = [NSData.alloc initWithBase64EncodedString:@"X3NldENvbnRlbnRPdmVybGF5SW5zZXRzOmFuZExlZnRNYXJnaW46cmlnaHRNYXJnaW46" options:kNilOptions]; - NSString *method = [NSString.alloc initWithData:data encoding:NSUTF8StringEncoding]; - SEL originalSelector = NSSelectorFromString(method); - SEL swizzledSelector = @selector(sj_setContentOverlayInsets:andLeftMargin:rightMargin:); - - Method originalMethod = class_getInstanceMethod(cls, originalSelector); - Method swizzledMethod = class_getInstanceMethod(cls, swizzledSelector); - method_exchangeImplementations(originalMethod, swizzledMethod); - }); - } -} -@end - -API_AVAILABLE(ios(13.0)) @implementation UINavigationController (SJRotationPrivate_FixSafeArea) -- (BOOL)sj_containsPlayerView { - return [self.topViewController sj_containsPlayerView]; -} -@end - -API_AVAILABLE(ios(13.0)) @implementation UITabBarController (SJRotationPrivate_FixSafeArea) -- (BOOL)sj_containsPlayerView { - UIViewController *vc = self.selectedIndex != NSNotFound ? self.selectedViewController : self.viewControllers.firstObject; - return [vc sj_containsPlayerView]; -} -@end -NS_ASSUME_NONNULL_END - -#endif diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAsset.h b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAsset.h index ef4521198..3b0781f71 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAsset.h +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAsset.h @@ -9,6 +9,7 @@ #import "MCSInterfaces.h" #import "MCSAssetDefines.h" #import "MCSReadwrite.h" +@protocol FILEAssetContentNode; NS_ASSUME_NONNULL_BEGIN @interface FILEAsset : MCSReadwrite @@ -21,7 +22,13 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readonly) BOOL isStored; - (nullable id)createContentReadwriteWithDataType:(MCSDataType)dataType response:(id)response; -- (nullable NSArray> *)contents; - (nullable NSString *)filepathForContent:(id)content; +- (void)enumerateContentNodesUsingBlock:(void(NS_NOESCAPE ^)(id node, BOOL *stop))block; +@end + +@protocol FILEAssetContentNode +@property (nonatomic, readonly) UInt64 startPositionInAsset; +@property (nonatomic, readonly, nullable) NSArray> *allContents; +@property (nonatomic, readonly, nullable) id longestContent; @end NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAsset.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAsset.m index fb55a37ff..c39e6c520 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAsset.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAsset.m @@ -15,9 +15,154 @@ #import "NSFileHandle+MCS.h" #import "MCSQueue.h" +@interface FILEAssetContentNode : NSObject +@property (nonatomic, readonly) UInt64 startPositionInAsset; +@property (nonatomic, readonly, nullable) id longestContent; +@property (nonatomic, readonly, nullable) NSArray> *allContents; +@end + +@interface FILEAssetContentNode () +- (instancetype)initWithContent:(id)content; +@property (nonatomic, unsafe_unretained, nullable) FILEAssetContentNode *prev; +@property (nonatomic, unsafe_unretained, nullable) FILEAssetContentNode *next; +- (void)addContent:(id)content; +- (void)removeContentAtIndex:(NSInteger)index; +@end + +@implementation FILEAssetContentNode { + NSMutableArray> *mContents; +} +- (instancetype)initWithContent:(id)content { + self = [super init]; + if ( self ) { + mContents = [NSMutableArray arrayWithObject:content]; + } + return self; +} + +- (UInt64)startPositionInAsset { + return mContents.firstObject.startPositionInAsset; +} + +- (nullable id)longestContent { + id retv = mContents.firstObject; + for ( NSInteger i = 1 ; i < mContents.count ; ++ i ) { + id content = mContents[i]; + if ( content.length > retv.length ) { + retv = content; + } + } + return retv; +} + +- (void)addContent:(id)content { + [mContents addObject:content]; +} + +- (void)removeContentAtIndex:(NSInteger)index { + [mContents removeObjectAtIndex:index]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"%@: <%p> { startPositionInAsset: %llu, maximumLength: %llu, contents: %lu };\n", NSStringFromClass(self.class), self, self.startPositionInAsset, self.longestContent.length, (unsigned long)mContents.count]; +} +@end + +@interface FILEAssetContentNodeList : NSObject +- (instancetype)initWithContents:(nullable NSArray> *)contents; +@property (nonatomic, readonly) NSUInteger count; // node count +@property (nonatomic, readonly, nullable) FILEAssetContentNode *head; +@property (nonatomic, readonly, nullable) FILEAssetContentNode *tail; +- (void)bringContentToNode:(id)content; +- (void)removeNode:(FILEAssetContentNode *)node; +- (void)enumerateContentNodesUsingBlock:(void(NS_NOESCAPE ^)(id node, BOOL *stop))block; +@end + +@implementation FILEAssetContentNodeList { + NSMutableDictionary *mNodes; +} +- (instancetype)initWithContents:(nullable NSArray> *)contents { + self = [super init]; + mNodes = NSMutableDictionary.dictionary; + for ( id content in contents ) { + [self bringContentToNode:content]; + } + return self; +} + +- (NSUInteger)count { + return mNodes.count; +} + +- (void)bringContentToNode:(id)content { + UInt64 curNodePosition = content.startPositionInAsset; + NSNumber *curNodeKey = @(curNodePosition); + FILEAssetContentNode *curNode = mNodes[curNodeKey]; + if ( curNode == nil ) { + // create new node + // + curNode = [FILEAssetContentNode.alloc initWithContent:content]; + mNodes[curNodeKey] = curNode; + + // restructure nodes position + // + // prevNode.position < curNode.position < nextNode.position + // + // preNode.next = curNode; curNode.prev = prevNode, curNode.next = nextNode; nextNode.prev = curNode; + // + FILEAssetContentNode *prevNode = _tail; + FILEAssetContentNode *nextNode = nil; + while ( prevNode.startPositionInAsset > curNodePosition ) { + nextNode = prevNode; + prevNode = prevNode.prev; + } + + prevNode.next = curNode; + curNode.prev = prevNode; + curNode.next = nextNode; + nextNode.prev = curNode; + + if ( _head == nil || _head.startPositionInAsset > curNodePosition ) { + _head = curNode; + } + + if ( _tail == nil || _tail.startPositionInAsset < curNodePosition ) { + _tail = curNode; + } + } + else { + [curNode addContent:content]; + } +} + +- (void)enumerateContentNodesUsingBlock:(void(NS_NOESCAPE ^)(id node, BOOL *stop))block { + BOOL stop = NO; + FILEAssetContentNode *cur = _head; + while ( cur != nil ) { + block(cur, &stop); + cur = cur.next; + if ( stop ) break;; + } +} + +- (void)removeNode:(FILEAssetContentNode *)node { + FILEAssetContentNode *prevNode = node.prev; + FILEAssetContentNode *nextNode = node.next; + nextNode.prev = prevNode; + prevNode.next = nextNode; + + if ( _head == node ) _head = nextNode; + if ( _tail == node ) _tail = prevNode; + + NSNumber *nodeKey = @(node.startPositionInAsset); + [mNodes removeObjectForKey:nodeKey]; +} +@end + + @interface FILEAsset () { FILEAssetContentProvider *mProvider; - NSMutableArray> *mContents; + FILEAssetContentNodeList *mNodeList; BOOL mIsPrepared; } @@ -62,8 +207,8 @@ - (void)prepare { NSString *directory = [MCSRootDirectory assetPathForFilename:self.name]; _configuration = MCSConfiguration.alloc.init; mProvider = [FILEAssetContentProvider contentProviderWithDirectory:directory]; - mContents = [(mProvider.contents ?: @[]) mutableCopy]; - [self _mergeContents]; + mNodeList = [FILEAssetContentNodeList.alloc initWithContents:mProvider.contents]; + [self _restructureContents]; }); } @@ -77,12 +222,10 @@ - (MCSAssetType)type { return MCSAssetTypeFILE; } -- (nullable NSArray> *)contents { - __block NSArray> *contents; +- (void)enumerateContentNodesUsingBlock:(void(NS_NOESCAPE ^)(id node, BOOL *stop))block { mcs_queue_sync(^{ - contents = mContents.copy; + [mNodeList enumerateContentNodesUsingBlock:block]; }); - return contents; } - (BOOL)isStored { @@ -151,7 +294,7 @@ - (NSUInteger)totalLength { content = [mProvider createContentAtOffset:offset pathExtension:_pathExtension]; [content readwriteRetain]; - if ( content != nil ) [mContents addObject:content]; + if ( content != nil ) [mNodeList bringContentToNode:content]; }); if ( isUpdated ) @@ -161,79 +304,71 @@ - (NSUInteger)totalLength { - (void)readwriteCountDidChange:(NSInteger)count { if ( count == 0 ) - [self _mergeContents]; + [self _restructureContents]; } -// 合并文件 -- (void)_mergeContents { - if ( self.readwriteCount != 0 ) return; - if ( _isStored ) return; - if ( mContents.count < 2 ) { - _isStored = mContents.count == 1 && mContents.lastObject.length == _totalLength; - return; - } - - NSMutableArray> *contents = [mContents mutableCopy]; - NSMutableArray> *deletes = NSMutableArray.alloc.init; - [contents sortUsingComparator:^NSComparisonResult(idobj1, idobj2) { - NSRange range1 = NSMakeRange(obj1.startPositionInAsset, obj1.length); - NSRange range2 = NSMakeRange(obj2.startPositionInAsset, obj2.length); - - // 1 包含 2 - if ( MCSNSRangeContains(range1, range2) ) { - if ( ![deletes containsObject:obj2] ) [deletes addObject:obj2]; - } - // 2 包含 1 - else if ( MCSNSRangeContains(range2, range1) ) { - if ( ![deletes containsObject:obj1] ) [deletes addObject:obj1];; - } - - return [@(range1.location) compare:@(range2.location)]; - }]; - - if ( deletes.count != 0 ) [contents removeObjectsInArray:deletes]; - - // merge +// 拆分重组内容. 将内容按指定字节拆分重组 +- (void)_restructureContents { + if ( _isStored || self.readwriteCount != 0 ) return; UInt64 capacity = 1 * 1024 * 1024; - for ( NSInteger i = 0 ; i < contents.count - 1; i += 2 ) { - idwrite = contents[i]; - idread = contents[i + 1]; + FILEAssetContentNode *curNode = mNodeList.head; + while ( curNode != nil ) { + [self _removeExcessContentsForNode:curNode]; + FILEAssetContentNode *nextNode = curNode.next; + if ( nextNode == nil ) break; + [self _removeExcessContentsForNode:nextNode]; - NSUInteger maxPosition1 = write.startPositionInAsset + write.length; - NSUInteger maxPosition2 = read.startPositionInAsset + read.length; - NSRange readRange = NSMakeRange(0, 0); - if ( maxPosition1 >= read.startPositionInAsset && maxPosition1 < maxPosition2 ) // 有交集 - readRange = NSMakeRange(maxPosition1, maxPosition2 - maxPosition1); // 读取read中未相交的部分 + id write = curNode.longestContent; + id read = nextNode.longestContent; - if ( readRange.length != 0 ) { + NSRange curRange = {write.startPositionInAsset, write.length}; + NSRange nextRange = {read.startPositionInAsset, read.length}; + if ( MCSNSRangeContains(curRange, nextRange) ) { + [mProvider removeContent:read]; + [mNodeList removeNode:nextNode]; + } + else if ( NSIntersectionRange(curRange, nextRange).location != NSNotFound ) { // 连续的, 存在交集 + NSRange readRange = {NSMaxRange(curRange), NSMaxRange(nextRange) - NSMaxRange(curRange)}; // 读取read中未相交的部分 [write readwriteRetain]; [read readwriteRetain]; NSError *error = nil; - UInt64 positon = readRange.location; + UInt64 position = readRange.location; while ( true ) { @autoreleasepool { - NSData *data = [read readDataAtPosition:positon capacity:capacity error:&error]; + NSData *data = [read readDataAtPosition:position capacity:capacity error:&error]; if ( error != nil || data.length == 0 ) break; if ( ![write writeData:data error:&error] ) break; - positon += data.length; - if ( positon == NSMaxRange(readRange) ) break; + position += data.length; + if ( position == NSMaxRange(readRange) ) break; }} [read readwriteRelease]; - [write readwriteRelease]; [read closeRead]; + [write readwriteRelease]; [write closeWrite]; + if ( error == nil ) { - [deletes addObject:read]; + [mProvider removeContent:read]; + [mNodeList removeNode:nextNode]; } } + curNode = curNode.next; } - if ( deletes.count != 0 ) { - for ( idcontent in deletes ) { [mProvider removeContent:content]; } - [mContents removeObjectsInArray:deletes]; + _isStored = mNodeList.head.longestContent.length == _totalLength; +} + +- (void)_removeExcessContentsForNode:(FILEAssetContentNode *)node { + NSArray> *contents = node.allContents; + // 同一段位置可能存在多个文件 + // 删除多余的无用的content + if ( contents.count > 1 ) { + [contents enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ( idx != 0 && obj.readwriteCount == 0 ) { + [mProvider removeContent:obj]; + [node removeContentAtIndex:idx]; + } + }]; } - - _isStored = mContents.count == 1 && mContents.lastObject.length == _totalLength; } @end diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetReader.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetReader.m index 026e260bb..fffdeba59 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetReader.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetReader.m @@ -216,13 +216,6 @@ - (float)networkTaskPriority { #pragma mark - - (void)_prepare { - // `length`经常变动, 暂时这里排序吧 - __auto_type contents = [mAsset.contents sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { - if ( obj1.startPositionInAsset == obj2.startPositionInAsset ) - return obj1.length >= obj2.length ? NSOrderedAscending : NSOrderedDescending; - return [@(obj1.startPositionInAsset) compare:@(obj2.startPositionInAsset)]; - }]; - NSUInteger totalLength = mAsset.totalLength; if ( totalLength == 0 ) { // create single sub reader to load asset total length @@ -266,9 +259,10 @@ - (void)_prepare { return; } - NSRange curr = fixed; + __block NSRange curr = fixed; NSMutableArray> *subreaders = NSMutableArray.array; - for ( id content in contents ) { + [mAsset enumerateContentNodesUsingBlock:^(id _Nonnull node, BOOL * _Nonnull stop) { + id content = node.longestContent; NSRange available = NSMakeRange(content.startPositionInAsset, content.length); NSRange intersection = NSIntersectionRange(curr, available); if ( intersection.length != 0 ) { @@ -288,8 +282,11 @@ - (void)_prepare { curr = NSMakeRange(NSMaxRange(intersection), NSMaxRange(fixed) - NSMaxRange(intersection)); } - if ( curr.length == 0 || available.location > NSMaxRange(curr) ) break; - } + // stop + if ( curr.length == 0 || available.location > NSMaxRange(curr) ) { + *stop = YES; + } + }]; if ( curr.length != 0 ) { // undownloaded part diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetContentProvider.h b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/Private/FILEAssetContentProvider.h similarity index 100% rename from Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetContentProvider.h rename to Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/Private/FILEAssetContentProvider.h diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetContentProvider.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/Private/FILEAssetContentProvider.m similarity index 100% rename from Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/FILEAssetContentProvider.m rename to Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/FILE/Private/FILEAssetContentProvider.m diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/HLS/HLSAssetParser.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/HLS/HLSAssetParser.m index f1d1a70b1..03dd228a1 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/HLS/HLSAssetParser.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/HLS/HLSAssetParser.m @@ -307,11 +307,8 @@ - (void)_parseContentsWithRequest:(NSURLRequest *)currRequest data:(NSData *)dat } if ( error != nil ) { - [self _onError:[NSError mcs_errorWithCode:MCSUnknownError userInfo:@{ - MCSErrorUserInfoObjectKey : currRequest, - MCSErrorUserInfoErrorKey : error, - MCSErrorUserInfoReasonKey : @"下载数据失败!" - }]]; + //Just deliver the original error, do not package again + [self _onError:error]; return; } diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetContent.h b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetContent.h index 6781ece96..aafb54bb6 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetContent.h +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetContent.h @@ -12,10 +12,10 @@ NS_ASSUME_NONNULL_BEGIN @interface MCSAssetContent : MCSReadwrite -// used in existing file +/// Used for existing files /// @param position 不是文件偏移量, 是该内容在整个资源中的位置 - (instancetype)initWithFilepath:(NSString *)filepath startPositionInAsset:(UInt64)position length:(UInt64)length; -// used in new file +/// Used for new files - (instancetype)initWithFilepath:(NSString *)filepath startPositionInAsset:(UInt64)position; - (nullable NSData *)readDataAtPosition:(UInt64)positionInAsset capacity:(UInt64)capacity error:(out NSError **)error; diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetContentReader.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetContentReader.m index 91ce2eefd..e3a722005 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetContentReader.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetContentReader.m @@ -238,7 +238,7 @@ - (void)preparationDidFinishWithContentReadwrite:(id)content ra }); } -#pragma mark - MCSAssetContentObsever +#pragma mark - MCSAssetContentObserver - (void)content:(id)content didWriteDataWithLength:(NSUInteger)length { mcs_queue_sync(^{ @@ -296,22 +296,22 @@ - (void)_clean { @implementation MCSAssetFileContentReader { id mFileContent; - NSRange mTempRange; + NSRange mReadRange; } - (instancetype)initWithAsset:(id)asset fileContent:(id)content rangeInAsset:(NSRange)range delegate:(id)delegate { self = [super initWithAsset:asset delegate:delegate]; if ( self ) { mFileContent = content; - mTempRange = range; + mReadRange = range; } return self; } - (void)prepareContent { - MCSContentReaderDebugLog(@"%@: <%p>.prepareContent { range: %@, file: %@ };\n", NSStringFromClass(self.class), self, NSStringFromRange(mTempRange), mFileContent); + MCSContentReaderDebugLog(@"%@: <%p>.prepareContent { range: %@, file: %@ };\n", NSStringFromClass(self.class), self, NSStringFromRange(mReadRange), mFileContent); - if ( mTempRange.location < mFileContent.startPositionInAsset || NSMaxRange(mTempRange) > (mFileContent.startPositionInAsset + mFileContent.length) ) { + if ( mReadRange.location < mFileContent.startPositionInAsset || NSMaxRange(mReadRange) > (mFileContent.startPositionInAsset + mFileContent.length) ) { [self abortWithError:[NSError mcs_errorWithCode:MCSInvalidParameterError userInfo:@{ MCSErrorUserInfoObjectKey : self, MCSErrorUserInfoReasonKey : @"请求范围错误, 请求范围未在内容范围中!" @@ -320,7 +320,7 @@ - (void)prepareContent { } [mFileContent readwriteRetain]; - [self preparationDidFinishWithContentReadwrite:mFileContent range:mTempRange]; + [self preparationDidFinishWithContentReadwrite:mFileContent range:mReadRange]; } @end @@ -335,7 +335,7 @@ @interface MCSAssetHTTPContentReader () { id mAsset; NSURLRequest *mRequest; MCSDataType mDataType; - NSRange mTempRange; + NSRange mReadRange; id_Nullable mHTTPContent; id_Nullable mTask; float mNetworkTaskPriority; @@ -354,7 +354,7 @@ - (instancetype)initWithAsset:(id)asset request:(NSURLRequest *)reques mRequest = request; mDataType = dataType; mHTTPContent = content; - mTempRange = range; + mReadRange = range; mNetworkTaskPriority = priority; } return self; @@ -369,14 +369,14 @@ - (void)prepareContent { if ( mHTTPContent != nil ) { // broken point download - if ( mTempRange.length > mHTTPContent.length ) { - NSUInteger start = mTempRange.location + mHTTPContent.length; - NSUInteger length = NSMaxRange(mTempRange) - start; + if ( mReadRange.length > mHTTPContent.length ) { + NSUInteger start = mReadRange.location + mHTTPContent.length; + NSUInteger length = NSMaxRange(mReadRange) - start; NSRange newRange = NSMakeRange(start, length); NSMutableURLRequest *newRequest = [[mRequest mcs_requestWithRange:newRange] mcs_requestWithHTTPAdditionalHeaders:[mAsset.configuration HTTPAdditionalHeadersForDataRequestsOfType:mDataType]]; mTask = [MCSDownload.shared downloadWithRequest:newRequest priority:mNetworkTaskPriority delegate:self]; } - [self preparationDidFinishWithContentReadwrite:mHTTPContent range:mTempRange]; + [self preparationDidFinishWithContentReadwrite:mHTTPContent range:mReadRange]; } // download ts all content else { diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetManager.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetManager.m index 99e11e4fb..929a243cc 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetManager.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Asset/MCSAssetManager.m @@ -240,20 +240,18 @@ - (void)removeAssetsForLastReadingTime:(NSTimeInterval)timeLimit notIn:(nullable NSString *s0 = [readwriteFileAssets.allObjects componentsJoinedByString:@","]; NSString *s1 = [readwriteHLSAssets.allObjects componentsJoinedByString:@","]; - + NSArray *rows = nil; if ( countLimit != NSNotFound ) { rows = [mSqlite3 exec:[NSString stringWithFormat: - @"SELECT * FROM MCSAssetUsageLog WHERE (asset NOT IN (%@) AND assetType = 0) \ - OR (asset NOT IN (%@) AND assetType = 1) \ + @"SELECT * FROM MCSAssetUsageLog WHERE ( (asset NOT IN (%@) AND assetType = 0) OR (asset NOT IN (%@) AND assetType = 1) ) \ AND updatedTime <= %lf \ ORDER BY updatedTime ASC, usageCount ASC \ LIMIT 0, %ld;", s0, s1, timeLimit, (long)countLimit] error:NULL]; } else { rows = [mSqlite3 exec:[NSString stringWithFormat: - @"SELECT * FROM MCSAssetUsageLog WHERE (asset NOT IN (%@) AND assetType = 0) \ - OR (asset NOT IN (%@) AND assetType = 1) \ + @"SELECT * FROM MCSAssetUsageLog WHERE ( (asset NOT IN (%@) AND assetType = 0) OR (asset NOT IN (%@) AND assetType = 1) ) \ AND updatedTime <= %lf;", s0, s1, timeLimit] error:NULL]; } NSArray *logs = [mSqlite3 objectsForClass:MCSAssetUsageLog.class rowDatas:rows error:NULL]; diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Common/MCSInterfaces.h b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Common/MCSInterfaces.h index 7208f2726..802c0940a 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Common/MCSInterfaces.h +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Common/MCSInterfaces.h @@ -23,6 +23,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)prepare; - (nullable NSData *)readDataOfLength:(NSUInteger)length; +@property (nonatomic, strong, readonly) NSURLRequest * request; @property (nonatomic, strong, readonly, nullable) id response; @property (nonatomic, readonly) NSUInteger offset; @property (nonatomic, readonly) BOOL isPrepared; diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Common/MCSURL.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Common/MCSURL.m index 18c8a55b7..376645650 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Common/MCSURL.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Common/MCSURL.m @@ -32,12 +32,7 @@ - (NSString *)mcs_fname; @implementation NSString (MCSFileManagerExtended) - (NSString *)mcs_fname { - NSString *name = self.lastPathComponent; - NSRange range = [name rangeOfString:@"?"]; - if ( range.location != NSNotFound ) { - name = [name substringToIndex:range.location]; - } - return MCSMD5(name); + return MCSMD5(self); } @end diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Download/MCSDownload.h b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Download/MCSDownload.h index 460909db6..165dd051b 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Download/MCSDownload.h +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Download/MCSDownload.h @@ -14,6 +14,7 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)shared; @property (nonatomic, copy, nullable) NSMutableURLRequest *_Nullable(^requestHandler)(NSMutableURLRequest *request); +@property (nonatomic, copy, nullable) void (^didFinishCollectingMetrics)(NSURLSession *session, NSURLSessionTask *task, NSURLSessionTaskMetrics *metrics) API_AVAILABLE(ios(10.0)); @property (nonatomic, copy, nullable) NSData *(^dataEncoder)(NSURLRequest *request, NSUInteger offset, NSData *data); @property (nonatomic, copy, nullable) void(^errorCallback)(NSURLRequest *request, NSError *error); @property (nonatomic) NSTimeInterval timeoutInterval; @@ -21,6 +22,8 @@ NS_ASSUME_NONNULL_BEGIN - (nullable id)downloadWithRequest:(NSURLRequest *)request priority:(float)priority delegate:(id)delegate; - (void)cancelAllDownloadTasks; +- (void)customSessionConfig:(nullable void(^)(NSURLSessionConfiguration *))config; + @property (nonatomic, readonly) NSInteger taskCount; + (instancetype)new NS_UNAVAILABLE; diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Download/MCSDownload.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Download/MCSDownload.m index 5e4335b47..51060b275 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Download/MCSDownload.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Download/MCSDownload.m @@ -27,6 +27,7 @@ @interface MCSDownload () { UIBackgroundTaskIdentifier mBackgroundTask; NSMutableURLRequest *_Nullable(^mRequestHandler)(NSMutableURLRequest *request); + void (^mDidFinishCollectingMetrics)(NSURLSession *session, NSURLSessionTask *task, NSURLSessionTaskMetrics *metrics) API_AVAILABLE(ios(10.0)); NSData *(^mDataEncoder)(NSURLRequest *request, NSUInteger offset, NSData *data); void(^mErrorCallback)(NSURLRequest *request, NSError *error); NSTimeInterval mTimeoutInterval; @@ -46,11 +47,6 @@ + (instancetype)shared { } - (instancetype)init { -#ifdef DEBUG - NSLog(@"%d : %s", __LINE__, sel_getName(_cmd)); -#endif - - if (self = [super init]) { mTimeoutInterval = 30.0f; mBackgroundTask = UIBackgroundTaskInvalid; @@ -93,6 +89,20 @@ - (void)setRequestHandler:(NSMutableURLRequest * _Nullable (^_Nullable)(NSMutabl return retv; } +- (void)setDidFinishCollectingMetrics:(void (^)(NSURLSession * _Nonnull, NSURLSessionTask * _Nonnull, NSURLSessionTaskMetrics * _Nonnull))didFinishCollectingMetrics { + mcs_queue_sync(^{ + mDidFinishCollectingMetrics = didFinishCollectingMetrics; + }); +} + +- (void (^)(NSURLSession * _Nonnull, NSURLSessionTask * _Nonnull, NSURLSessionTaskMetrics * _Nonnull))didFinishCollectingMetrics { + __block id retv; + mcs_queue_sync(^{ + retv = mDidFinishCollectingMetrics; + }); + return retv; +} + - (void)setDataEncoder:(NSData * _Nonnull (^_Nullable)(NSURLRequest * _Nonnull, NSUInteger, NSData * _Nonnull))dataEncoder { mcs_queue_sync(^{ mDataEncoder = dataEncoder; @@ -174,6 +184,12 @@ - (void)cancelAllDownloadTasks { mTaskCount = 0; }); } + +- (void)customSessionConfig:(void (^)(NSURLSessionConfiguration * _Nonnull))config { + mcs_queue_sync(^{ + config(mSession.configuration); + }); +} #pragma mark - mark @@ -226,6 +242,14 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data }); } +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics API_AVAILABLE(ios(10.0)) { + mcs_queue_async(^{ + if (self->mDidFinishCollectingMetrics != nil) { + self->mDidFinishCollectingMetrics(session, task, metrics); + } + }); +} + - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)errorParam { MCSDownloaderDebugLog(@"%@: <%p>.didCompleteWithError { task: %lu, error: %@ };\n", NSStringFromClass(self.class), self, (unsigned long)task.taskIdentifier, errorParam); mcs_queue_async(^{ diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Export/MCSAssetExporterDefines.h b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Export/MCSAssetExporterDefines.h index a27622531..9184bfc80 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Export/MCSAssetExporterDefines.h +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Export/MCSAssetExporterDefines.h @@ -69,6 +69,7 @@ NS_ASSUME_NONNULL_BEGIN @protocol MCSAssetExportObserver @optional - (void)exporter:(id)exporter statusDidChange:(MCSAssetExportStatus)status; +- (void)exporter:(id)exporter failedWithError:(nullable NSError *)error; - (void)exporter:(id)exporter progressDidChange:(float)progress; - (void)exporterManager:(id)manager didRemoveAssetWithURL:(NSURL *)URL; - (void)exporterManagerDidRemoveAllAssets:(id)manager; diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Export/MCSAssetExporterManager.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Export/MCSAssetExporterManager.m index 9f7518bf5..4df19c902 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Export/MCSAssetExporterManager.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/Export/MCSAssetExporterManager.m @@ -19,6 +19,8 @@ static NSNotificationName const MCSAssetExporterProgressDidChangeNotification = @"MCSAssetExporterProgressDidChangeNotification"; static NSNotificationName const MCSAssetExporterStatusDidChangeNotification = @"MCSAssetExporterStatusDidChangeNotification"; +static NSString *const MCSAssetExporterErrorUserInfoKey = @"MCSAssetExporterErrorUserInfoKey"; + @interface MCSAssetExporter : NSObject - (instancetype)initWithURLString:(NSString *)URLStr name:(NSString *)name type:(MCSAssetType)type; @property (nonatomic, strong, readonly) NSURL *URL; @@ -253,7 +255,11 @@ - (void)_prefetchTaskDidCompleteWithError:(NSError *_Nullable)error { _task = nil; _status = error != nil ? MCSAssetExportStatusFailed : MCSAssetExportStatusFinished; }]; - [NSNotificationCenter.defaultCenter postNotificationName:MCSAssetExporterStatusDidChangeNotification object:self]; + NSDictionary *userInfo = nil; + if ( error != nil ) { + userInfo = @{MCSAssetExporterErrorUserInfoKey: error}; + } + [NSNotificationCenter.defaultCenter postNotificationName:MCSAssetExporterStatusDidChangeNotification object:self userInfo:userInfo]; } - (void)_lockInBlock:(void(^NS_NOESCAPE)(void))task { @@ -271,27 +277,16 @@ - (void)_synchronizeForFILEAsset:(FILEAsset *)asset { float progress = _progress; NSUInteger totalLength = asset.totalLength; if ( totalLength != 0 ) { - NSMutableArray > *contents = [asset.contents mutableCopy]; - [contents sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { - NSRange range1 = NSMakeRange(obj1.startPositionInAsset, obj1.length); - NSRange range2 = NSMakeRange(obj2.startPositionInAsset, obj2.length); - if ( range1.location == range2.location ) { - if ( obj1.length == obj2.length ) - return NSOrderedSame; - return obj1.length > obj2.length ? NSOrderedAscending : NSOrderedDescending; - } - return [@(range1.location) compare:@(range2.location)]; + __block id prev = nil; + __block UInt64 length = 0; + [asset enumerateContentNodesUsingBlock:^(id _Nonnull node, BOOL * _Nonnull stop) { + id cur = node.longestContent; + length += cur.length; + UInt64 prevPosition = prev.startPositionInAsset + prev.length; + if ( prevPosition > cur.startPositionInAsset ) length -= (prevPosition - cur.startPositionInAsset); + prev = cur; }]; - - NSUInteger current = 0; - id pre = nil; - for ( id content in contents ) { - if ( pre == nil || pre.startPositionInAsset != content.startPositionInAsset ) { - current += content.length; - } - pre = content; - } - progress = current * 1.0 / totalLength; + progress = length * 1.0 / totalLength; } isChanged = progress != _progress; if ( isChanged ) _progress = progress; @@ -402,7 +397,8 @@ - (instancetype)init { dispatch_async(dispatch_get_global_queue(0, 0), ^{ __strong typeof(_self) self = _self; if ( self == nil ) return; - [self _statusDidChange:note.object]; + NSError *error = [note.userInfo objectForKey:MCSAssetExporterErrorUserInfoKey]; + [self _statusDidChange:note.object error:error]; }); }]; } @@ -746,7 +742,7 @@ - (nullable MCSAssetExporter *)_exporterInMemoryForName:(NSString *)name { return retv.copy; } -- (void)_statusDidChange:(MCSAssetExporter *)exporter { +- (void)_statusDidChange:(MCSAssetExporter *)exporter error:(nullable NSError *)error { MCSAssetExportStatus status = exporter.status; if ( status == MCSAssetExportStatusCancelled ) { [self _lockInBlock:^{ @@ -785,6 +781,14 @@ - (void)_statusDidChange:(MCSAssetExporter *)exporter { [observer exporter:exporter statusDidChange:status]; } } + + if ( status == MCSAssetExportStatusFailed ) { + for ( id observer in MCSAllHashTableObjects(self->_observers) ) { + if ( [observer respondsToSelector:@selector(exporter:statusDidChange:)] ) { + [observer exporter:exporter failedWithError:error]; + } + } + } }); } diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.h b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.h index d6796a573..baf8f6caa 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.h +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.h @@ -25,5 +25,7 @@ NS_ASSUME_NONNULL_BEGIN @protocol MCSProxyServerDelegate - (id)server:(MCSProxyServer *)server taskWithRequest:(NSURLRequest *)request delegate:(id)delegate; +- (void)server:(MCSProxyServer *)server performTask:(id)task failure:(NSError *)error; + @end NS_ASSUME_NONNULL_END diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.m index b56dbdfc2..129fecf24 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/Core/ProxyServer/MCSProxyServer.m @@ -366,6 +366,8 @@ - (void)task:(id)task hasAvailableDataWithLength:(NSUInteger)lengt - (void)task:(id)task didAbortWithError:(nullable NSError *)error { [_connection responseDidAbort:self]; + MCSProxyServer *server = [_connection mcs_server]; + [server.delegate server:server performTask:task failure:error]; } #pragma mark - Chunked diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/SJMediaCacheServer.h b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/SJMediaCacheServer.h index cb87502ba..1b362f512 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/SJMediaCacheServer.h +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/SJMediaCacheServer.h @@ -17,6 +17,18 @@ NS_ASSUME_NONNULL_BEGIN +/// MCSPlayBackRequestTaskDidFailedNotification: +/// Playback request failure will past by this notificaion. +/// One playback item may has multiple request task. +/// So this notification may be posted multiple time. +/// MCSPlayBackRequestURLUserInfoKey: +/// Request URL in this key, Type URL +/// MCSPlayBackFailureUserInfoKey: +/// Request error in this key, type NSError +extern NSNotificationName const MCSPlayBackRequestTaskDidFailedNotification; +extern NSString *const MCSPlayBackRequestURLUserInfoKey; +extern NSString *const MCSPlayBackRequestFailureUserInfoKey; + @interface SJMediaCacheServer : NSObject + (instancetype)shared; @@ -174,11 +186,18 @@ NS_ASSUME_NONNULL_BEGIN /// Note that these headers are added to the request only if not already present. /// - (nullable NSDictionary *)assetURL:(NSURL *)URL HTTPAdditionalHeadersForDataRequestsOfType:(MCSDataType)type; + +/// custom URLSessionConfiguration +/// @param config the using config, to be customed +- (void)customSessionConfig:(nullable void(^)(NSURLSessionConfiguration *))config; @end @interface SJMediaCacheServer (Convert) +/// Access metrics in this block. This may not be executed in main thread. +@property (nonatomic, copy, nullable) void (^didFinishCollectingMetrics)(NSURLSession *session, NSURLSessionTask *task, NSURLSessionTaskMetrics *metrics) API_AVAILABLE(ios(10.0)); + /// Resolve the identifier of the asset referenced by the URL. /// /// The asset identifier represents a unique asset. When different URLs references the same asset, you can return the same identifier in the block. diff --git a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/SJMediaCacheServer.m b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/SJMediaCacheServer.m index 2ebc48d5a..8f39d7cb3 100644 --- a/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/SJMediaCacheServer.m +++ b/Example/Pods/SJMediaCacheServer/SJMediaCacheServer/SJMediaCacheServer.m @@ -18,6 +18,10 @@ #import "MCSPrefetcherManager.h" #import "MCSQueue.h" +NSNotificationName const MCSPlayBackRequestTaskDidFailedNotification = @"MCSPlayBackRequestTaskDidFailedNotification"; +NSString *const MCSPlayBackRequestURLUserInfoKey = @"MCSPlayBackRequestURLUserInfoKey"; +NSString *const MCSPlayBackRequestFailureUserInfoKey = @"MCSPlayBackRequestFailureUserInfoKey"; + @interface SJMediaCacheServer () @property (nonatomic, strong, readonly) MCSProxyServer *server; @end @@ -47,7 +51,7 @@ - (instancetype)init { NSString *retv = URL.absoluteString; NSString *query = URL.query; if ( query.length != 0 ) { - retv = [retv substringToIndex:retv.length - (query.length + 1 /*?*/)]; + retv = [retv substringToIndex:retv.length - (query.length + 1 /*'?'.length*/)]; } return retv; }; @@ -86,6 +90,18 @@ - (void)setActive:(BOOL)active { - (id)server:(MCSProxyServer *)server taskWithRequest:(NSURLRequest *)request delegate:(id)delegate { return [MCSProxyTask.alloc initWithRequest:request delegate:delegate]; } + +- (void)server:(MCSProxyServer *)server performTask:(id)task failure:(NSError *)error { + NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] initWithCapacity:2]; + NSURL *proxyURL = task.request.URL; + NSURL *URL = [MCSURL.shared URLWithProxyURL:proxyURL]; + userInfo[MCSPlayBackRequestURLUserInfoKey] = URL; + userInfo[MCSPlayBackRequestFailureUserInfoKey] = error; + + [NSNotificationCenter.defaultCenter postNotificationName:MCSPlayBackRequestTaskDidFailedNotification + object:nil userInfo:userInfo]; +} + @end @@ -151,11 +167,25 @@ - (nullable NSDictionary *)assetURL:(NSURL *)URL HTTPAdditionalHeadersForDataReq id asset = [MCSAssetManager.shared assetWithURL:URL]; return [asset.configuration HTTPAdditionalHeadersForDataRequestsOfType:type]; } + +- (void)customSessionConfig:(nullable void(^)(NSURLSessionConfiguration *))config { + [MCSDownload.shared customSessionConfig:config]; +} + @end @implementation SJMediaCacheServer (Convert) + +- (void)setDidFinishCollectingMetrics:(void (^)(NSURLSession * _Nonnull, NSURLSessionTask * _Nonnull, NSURLSessionTaskMetrics * _Nonnull))didFinishCollectingMetrics { + MCSDownload.shared.didFinishCollectingMetrics = didFinishCollectingMetrics; +} + +- (void (^)(NSURLSession * _Nonnull, NSURLSessionTask * _Nonnull, NSURLSessionTaskMetrics * _Nonnull))didFinishCollectingMetrics { + return MCSDownload.shared.didFinishCollectingMetrics; +} + - (void)setResolveAssetIdentifier:(NSString * _Nonnull (^)(NSURL * _Nonnull))resolveAssetIdentifier { MCSURL.shared.resolveAssetIdentifier = resolveAssetIdentifier; } diff --git a/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example-frameworks.sh index 5f11bb635..0f5424ac5 100755 --- a/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example-frameworks.sh @@ -113,6 +113,7 @@ install_dsym() { rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" else # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + mkdir -p "${DWARF_DSYM_FOLDER_PATH}" touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" fi fi diff --git a/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.debug.xcconfig index 6189aa531..23067da68 100644 --- a/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.debug.xcconfig @@ -1,9 +1,9 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJFullscreenPopGesture" "${PODS_ROOT}/Headers/Public/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public/SJRouter" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/SJVideoPlayer" "${PODS_ROOT}/Headers/Public/YYModel" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaAsyncSocket" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SJBaseVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SJFullscreenPopGesture" "${PODS_CONFIGURATION_BUILD_DIR}/SJMediaCacheServer" "${PODS_CONFIGURATION_BUILD_DIR}/SJRouter" "${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit" "${PODS_CONFIGURATION_BUILD_DIR}/SJVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaAsyncSocket" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SJBaseVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SJFullscreenPopGesture" "${PODS_CONFIGURATION_BUILD_DIR}/SJMediaCacheServer" "${PODS_CONFIGURATION_BUILD_DIR}/SJRouter" "${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit-98d45660" "${PODS_CONFIGURATION_BUILD_DIR}/SJVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaAsyncSocket" -l"MJRefresh" -l"Masonry" -l"SDWebImage" -l"SJBaseVideoPlayer" -l"SJFullscreenPopGesture" -l"SJMediaCacheServer" -l"SJRouter" -l"SJUIKit" -l"SJVideoPlayer" -l"YYModel" -framework "AVFoundation" -framework "CFNetwork" -framework "CoreFoundation" -framework "Foundation" -framework "ImageIO" -framework "Security" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaAsyncSocket" -l"MJRefresh" -l"Masonry" -l"SDWebImage" -l"SJBaseVideoPlayer" -l"SJFullscreenPopGesture" -l"SJMediaCacheServer" -l"SJRouter" -l"SJUIKit-98d45660" -l"SJVideoPlayer" -l"YYModel" -framework "AVFoundation" -framework "CFNetwork" -framework "CoreFoundation" -framework "Foundation" -framework "ImageIO" -framework "Security" -framework "UIKit" 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-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.release.xcconfig index 6189aa531..23067da68 100644 --- a/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.release.xcconfig @@ -1,9 +1,9 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJFullscreenPopGesture" "${PODS_ROOT}/Headers/Public/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public/SJRouter" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/SJVideoPlayer" "${PODS_ROOT}/Headers/Public/YYModel" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaAsyncSocket" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SJBaseVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SJFullscreenPopGesture" "${PODS_CONFIGURATION_BUILD_DIR}/SJMediaCacheServer" "${PODS_CONFIGURATION_BUILD_DIR}/SJRouter" "${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit" "${PODS_CONFIGURATION_BUILD_DIR}/SJVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaAsyncSocket" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SJBaseVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SJFullscreenPopGesture" "${PODS_CONFIGURATION_BUILD_DIR}/SJMediaCacheServer" "${PODS_CONFIGURATION_BUILD_DIR}/SJRouter" "${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit-98d45660" "${PODS_CONFIGURATION_BUILD_DIR}/SJVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaAsyncSocket" -l"MJRefresh" -l"Masonry" -l"SDWebImage" -l"SJBaseVideoPlayer" -l"SJFullscreenPopGesture" -l"SJMediaCacheServer" -l"SJRouter" -l"SJUIKit" -l"SJVideoPlayer" -l"YYModel" -framework "AVFoundation" -framework "CFNetwork" -framework "CoreFoundation" -framework "Foundation" -framework "ImageIO" -framework "Security" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaAsyncSocket" -l"MJRefresh" -l"Masonry" -l"SDWebImage" -l"SJBaseVideoPlayer" -l"SJFullscreenPopGesture" -l"SJMediaCacheServer" -l"SJRouter" -l"SJUIKit-98d45660" -l"SJVideoPlayer" -l"YYModel" -framework "AVFoundation" -framework "CFNetwork" -framework "CoreFoundation" -framework "Foundation" -framework "ImageIO" -framework "Security" -framework "UIKit" 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-iPadDemo/Pods-iPadDemo-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-acknowledgements.markdown new file mode 100644 index 000000000..fe769cb7b --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-acknowledgements.markdown @@ -0,0 +1,147 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## MJRefresh + +Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +## Masonry + +Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +## SJBaseVideoPlayer + +MIT License + +Copyright (c) 2017 changsanjiang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +## SJUIKit + +Copyright (c) 2018 changsanjiang@gmail.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +## SJVideoPlayer + +MIT License + +Copyright (c) 2017 changsanjiang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +## YYModel + +The MIT License (MIT) + +Copyright (c) 2015 ibireme + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-acknowledgements.plist new file mode 100644 index 000000000..437a9ecfd --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-acknowledgements.plist @@ -0,0 +1,209 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + MJRefresh + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + License + MIT + Title + Masonry + Type + PSGroupSpecifier + + + FooterText + MIT License + +Copyright (c) 2017 changsanjiang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + SJBaseVideoPlayer + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2018 changsanjiang@gmail.com <changsanjiang@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + SJUIKit + Type + PSGroupSpecifier + + + FooterText + MIT License + +Copyright (c) 2017 changsanjiang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + SJVideoPlayer + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2015 ibireme <ibireme@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + License + MIT + Title + YYModel + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-dummy.m b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-dummy.m new file mode 100644 index 000000000..6ab75bb5c --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_iPadDemo : NSObject +@end +@implementation PodsDummy_Pods_iPadDemo +@end diff --git a/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-resources.sh b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-resources.sh new file mode 100755 index 000000000..64fb49e62 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-resources.sh @@ -0,0 +1,133 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY:-}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" || true + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_resource "${PODS_ROOT}/MJRefresh/MJRefresh/MJRefresh.bundle" + install_resource "${PODS_ROOT}/SJBaseVideoPlayer/SJBaseVideoPlayer/ResourceLoader/SJBaseVideoPlayerResources.bundle" + install_resource "${PODS_ROOT}/../../SJVideoPlayer/ResourceLoader/SJVideoPlayer.bundle" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_resource "${PODS_ROOT}/MJRefresh/MJRefresh/MJRefresh.bundle" + install_resource "${PODS_ROOT}/SJBaseVideoPlayer/SJBaseVideoPlayer/ResourceLoader/SJBaseVideoPlayerResources.bundle" + install_resource "${PODS_ROOT}/../../SJVideoPlayer/ResourceLoader/SJVideoPlayer.bundle" +fi + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find -L "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "${PODS_ROOT}*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + else + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" + fi +fi diff --git a/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo.debug.xcconfig b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo.debug.xcconfig new file mode 100644 index 000000000..569c8ad6e --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJFullscreenPopGesture" "${PODS_ROOT}/Headers/Public/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public/SJRouter" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/SJVideoPlayer" "${PODS_ROOT}/Headers/Public/YYModel" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SJBaseVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit-68d28646" "${PODS_CONFIGURATION_BUILD_DIR}/SJVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" +OTHER_LDFLAGS = $(inherited) -ObjC -l"MJRefresh" -l"Masonry" -l"SJBaseVideoPlayer" -l"SJUIKit-68d28646" -l"SJVideoPlayer" -l"YYModel" -framework "AVFoundation" -framework "CoreFoundation" -framework "Foundation" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo.release.xcconfig b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo.release.xcconfig new file mode 100644 index 000000000..569c8ad6e --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-iPadDemo/Pods-iPadDemo.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJFullscreenPopGesture" "${PODS_ROOT}/Headers/Public/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public/SJRouter" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/SJVideoPlayer" "${PODS_ROOT}/Headers/Public/YYModel" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SJBaseVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit-68d28646" "${PODS_CONFIGURATION_BUILD_DIR}/SJVideoPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" +OTHER_LDFLAGS = $(inherited) -ObjC -l"MJRefresh" -l"Masonry" -l"SJBaseVideoPlayer" -l"SJUIKit-68d28646" -l"SJVideoPlayer" -l"YYModel" -framework "AVFoundation" -framework "CoreFoundation" -framework "Foundation" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/SJBaseVideoPlayer/SJBaseVideoPlayer.debug.xcconfig b/Example/Pods/Target Support Files/SJBaseVideoPlayer/SJBaseVideoPlayer.debug.xcconfig index b8947298b..bb1b1ec12 100644 --- a/Example/Pods/Target Support Files/SJBaseVideoPlayer/SJBaseVideoPlayer.debug.xcconfig +++ b/Example/Pods/Target Support Files/SJBaseVideoPlayer/SJBaseVideoPlayer.debug.xcconfig @@ -1,7 +1,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJBaseVideoPlayer GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" 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/SJBaseVideoPlayer/SJBaseVideoPlayer.release.xcconfig b/Example/Pods/Target Support Files/SJBaseVideoPlayer/SJBaseVideoPlayer.release.xcconfig index b8947298b..bb1b1ec12 100644 --- a/Example/Pods/Target Support Files/SJBaseVideoPlayer/SJBaseVideoPlayer.release.xcconfig +++ b/Example/Pods/Target Support Files/SJBaseVideoPlayer/SJBaseVideoPlayer.release.xcconfig @@ -1,7 +1,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJBaseVideoPlayer GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" 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/SJMediaCacheServer/SJMediaCacheServer.debug.xcconfig b/Example/Pods/Target Support Files/SJMediaCacheServer/SJMediaCacheServer.debug.xcconfig index 81d7bee34..ef57f12e4 100644 --- a/Example/Pods/Target Support Files/SJMediaCacheServer/SJMediaCacheServer.debug.xcconfig +++ b/Example/Pods/Target Support Files/SJMediaCacheServer/SJMediaCacheServer.debug.xcconfig @@ -1,7 +1,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJMediaCacheServer GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" 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/SJMediaCacheServer/SJMediaCacheServer.release.xcconfig b/Example/Pods/Target Support Files/SJMediaCacheServer/SJMediaCacheServer.release.xcconfig index 81d7bee34..ef57f12e4 100644 --- a/Example/Pods/Target Support Files/SJMediaCacheServer/SJMediaCacheServer.release.xcconfig +++ b/Example/Pods/Target Support Files/SJMediaCacheServer/SJMediaCacheServer.release.xcconfig @@ -1,7 +1,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJMediaCacheServer GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/SJMediaCacheServer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" 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/SJUIKit-68d28646/SJUIKit-68d28646-dummy.m b/Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646-dummy.m new file mode 100644 index 000000000..8aca5de7a --- /dev/null +++ b/Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_SJUIKit_68d28646 : NSObject +@end +@implementation PodsDummy_SJUIKit_68d28646 +@end diff --git a/Example/Pods/Target Support Files/SJUIKit/SJUIKit-prefix.pch b/Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646-prefix.pch similarity index 100% rename from Example/Pods/Target Support Files/SJUIKit/SJUIKit-prefix.pch rename to Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646-prefix.pch diff --git a/Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646.debug.xcconfig b/Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646.debug.xcconfig new file mode 100644 index 000000000..a3062fab4 --- /dev/null +++ b/Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit-68d28646 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJUIKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/SJUIKit +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646.release.xcconfig b/Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646.release.xcconfig new file mode 100644 index 000000000..a3062fab4 --- /dev/null +++ b/Example/Pods/Target Support Files/SJUIKit-68d28646/SJUIKit-68d28646.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit-68d28646 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJUIKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/SJUIKit +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660-dummy.m b/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660-dummy.m new file mode 100644 index 000000000..cb6e53eca --- /dev/null +++ b/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_SJUIKit_98d45660 : NSObject +@end +@implementation PodsDummy_SJUIKit_98d45660 +@end diff --git a/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660-prefix.pch b/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660-prefix.pch new file mode 100644 index 000000000..beb2a2441 --- /dev/null +++ b/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660-prefix.pch @@ -0,0 +1,12 @@ +#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/SJUIKit/SJUIKit.debug.xcconfig b/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660.debug.xcconfig similarity index 98% rename from Example/Pods/Target Support Files/SJUIKit/SJUIKit.debug.xcconfig rename to Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660.debug.xcconfig index 03bbb91cd..2296a6e2c 100644 --- a/Example/Pods/Target Support Files/SJUIKit/SJUIKit.debug.xcconfig +++ b/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660.debug.xcconfig @@ -1,5 +1,5 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit-98d45660 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJUIKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Example/Pods/Target Support Files/SJUIKit/SJUIKit.release.xcconfig b/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660.release.xcconfig similarity index 98% rename from Example/Pods/Target Support Files/SJUIKit/SJUIKit.release.xcconfig rename to Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660.release.xcconfig index 03bbb91cd..2296a6e2c 100644 --- a/Example/Pods/Target Support Files/SJUIKit/SJUIKit.release.xcconfig +++ b/Example/Pods/Target Support Files/SJUIKit-98d45660/SJUIKit-98d45660.release.xcconfig @@ -1,5 +1,5 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJUIKit-98d45660 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJUIKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/YYModel" PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Example/Pods/Target Support Files/SJUIKit/SJUIKit-dummy.m b/Example/Pods/Target Support Files/SJUIKit/SJUIKit-dummy.m deleted file mode 100644 index f4189564e..000000000 --- a/Example/Pods/Target Support Files/SJUIKit/SJUIKit-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SJUIKit : NSObject -@end -@implementation PodsDummy_SJUIKit -@end diff --git a/Example/Pods/Target Support Files/SJVideoPlayer/SJVideoPlayer.debug.xcconfig b/Example/Pods/Target Support Files/SJVideoPlayer/SJVideoPlayer.debug.xcconfig index 71dd6cb3f..295180778 100644 --- a/Example/Pods/Target Support Files/SJVideoPlayer/SJVideoPlayer.debug.xcconfig +++ b/Example/Pods/Target Support Files/SJVideoPlayer/SJVideoPlayer.debug.xcconfig @@ -1,7 +1,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJVideoPlayer GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJVideoPlayer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/SJVideoPlayer" "${PODS_ROOT}/Headers/Public/YYModel" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJVideoPlayer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/SJVideoPlayer" "${PODS_ROOT}/Headers/Public/YYModel" 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/SJVideoPlayer/SJVideoPlayer.release.xcconfig b/Example/Pods/Target Support Files/SJVideoPlayer/SJVideoPlayer.release.xcconfig index 71dd6cb3f..295180778 100644 --- a/Example/Pods/Target Support Files/SJVideoPlayer/SJVideoPlayer.release.xcconfig +++ b/Example/Pods/Target Support Files/SJVideoPlayer/SJVideoPlayer.release.xcconfig @@ -1,7 +1,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SJVideoPlayer GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJVideoPlayer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/SJVideoPlayer" "${PODS_ROOT}/Headers/Public/YYModel" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SJVideoPlayer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SJBaseVideoPlayer" "${PODS_ROOT}/Headers/Public/SJUIKit" "${PODS_ROOT}/Headers/Public/SJVideoPlayer" "${PODS_ROOT}/Headers/Public/YYModel" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/SJVideoPlayer.xcodeproj/project.pbxproj b/Example/SJVideoPlayer.xcodeproj/project.pbxproj index 7dd5481e6..76437c5e7 100644 --- a/Example/SJVideoPlayer.xcodeproj/project.pbxproj +++ b/Example/SJVideoPlayer.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 13FEB85DCAAE0D2C731299D6 /* libPods-SJVideoPlayer_Example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CCD2CA6C02217556CFBFA7AB /* libPods-SJVideoPlayer_Example.a */; }; + 2E5187B651B9ECE360D0557C /* libPods-iPadDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E71EFE1686BFE92368A9E891 /* libPods-iPadDemo.a */; }; 3B070E8C25FC88C300960506 /* SJBaseVideoPlayer+ListPlaybackExtended.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B070E8B25FC88C300960506 /* SJBaseVideoPlayer+ListPlaybackExtended.m */; }; 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; }; @@ -67,12 +68,11 @@ 77788FE422C36D8300E26599 /* SJVideoCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 77788FE222C36D8300E26599 /* SJVideoCollectionViewCell.m */; }; 77788FE522C36D8300E26599 /* SJVideoCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 77788FE322C36D8300E26599 /* SJVideoCollectionViewCell.xib */; }; 77788FEA22C37C0800E26599 /* SJRecommendVideosViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 77788FE922C37C0800E26599 /* SJRecommendVideosViewModel.m */; }; - 77805D6B22BF7DE1007076B9 /* SJiPadDemoViewController1.m in Sources */ = {isa = PBXBuildFile; fileRef = 77805D6922BF7DE1007076B9 /* SJiPadDemoViewController1.m */; }; 77805D6F22BF7EDB007076B9 /* iPadMain.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 77805D6E22BF7EDB007076B9 /* iPadMain.storyboard */; }; 7784A7D1237CF75F000BA67E /* SJTestAliVodPlayerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7784A7CF237CF75F000BA67E /* SJTestAliVodPlayerViewController.m */; }; 7784A7D2237CF75F000BA67E /* SJTestAliVodPlayerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7784A7D0237CF75F000BA67E /* SJTestAliVodPlayerViewController.xib */; }; - 7784A7FA237D3860000BA67E /* SJBarrageTestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7784A7F9237D3860000BA67E /* SJBarrageTestViewController.m */; }; - 7784A7FC237D4E97000BA67E /* SJBarrageTestViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7784A7FB237D4E97000BA67E /* SJBarrageTestViewController.xib */; }; + 7784A7FA237D3860000BA67E /* SJDanmakuTestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7784A7F9237D3860000BA67E /* SJDanmakuTestViewController.m */; }; + 7784A7FC237D4E97000BA67E /* SJDanmakuTestViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7784A7FB237D4E97000BA67E /* SJDanmakuTestViewController.xib */; }; 77A8DDE324B59B3400782C85 /* SJUIScrollViewDemoViewController1.m in Sources */ = {isa = PBXBuildFile; fileRef = 77A8DDE224B59B3400782C85 /* SJUIScrollViewDemoViewController1.m */; }; 77B947F9262991B2001635AA /* DYHCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 77B947F5262991B2001635AA /* DYHCollectionViewCell.m */; }; 77B947FA262991B2001635AA /* DYHPlaybackListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 77B947F7262991B2001635AA /* DYHPlaybackListViewController.m */; }; @@ -88,6 +88,15 @@ A601803C22DB5CAC00ED840D /* SJRotationModeDemoViewController3.m in Sources */ = {isa = PBXBuildFile; fileRef = A601803A22DB5CAC00ED840D /* SJRotationModeDemoViewController3.m */; }; A601803D22DB5CAC00ED840D /* SJRotationModeDemoViewController3.xib in Resources */ = {isa = PBXBuildFile; fileRef = A601803B22DB5CAC00ED840D /* SJRotationModeDemoViewController3.xib */; }; A65FE539248A891700A5D4A6 /* SJKeyboardDemoViewController1.m in Sources */ = {isa = PBXBuildFile; fileRef = A65FE538248A891700A5D4A6 /* SJKeyboardDemoViewController1.m */; }; + A697AC7E287BEF4500569C2B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A697AC7D287BEF4500569C2B /* AppDelegate.m */; }; + A697AC84287BEF4500569C2B /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A697AC83287BEF4500569C2B /* ViewController.m */; }; + A697AC87287BEF4500569C2B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A697AC85287BEF4500569C2B /* Main.storyboard */; }; + A697AC89287BEF4700569C2B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A697AC88287BEF4700569C2B /* Assets.xcassets */; }; + A697AC8C287BEF4700569C2B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A697AC8A287BEF4700569C2B /* LaunchScreen.storyboard */; }; + A697AC8F287BEF4700569C2B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A697AC8E287BEF4700569C2B /* main.m */; }; + A697AC99287BEF4700569C2B /* iPadDemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A697AC98287BEF4700569C2B /* iPadDemoTests.m */; }; + A697ACA3287BEF4800569C2B /* iPadDemoUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = A697ACA2287BEF4800569C2B /* iPadDemoUITests.m */; }; + A697ACA5287BEF4800569C2B /* iPadDemoUITestsLaunchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A697ACA4287BEF4800569C2B /* iPadDemoUITestsLaunchTests.m */; }; A69FD22B22D9F5280031E4E7 /* SJViewController8.m in Sources */ = {isa = PBXBuildFile; fileRef = A69FD22922D9F5280031E4E7 /* SJViewController8.m */; }; A69FD22C22D9F5280031E4E7 /* SJViewController8.xib in Resources */ = {isa = PBXBuildFile; fileRef = A69FD22A22D9F5280031E4E7 /* SJViewController8.xib */; }; A6A208F922AB9E59001ED610 /* SJRotationModeDemoViewController1.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6A208E322AB9E59001ED610 /* SJRotationModeDemoViewController1.xib */; }; @@ -127,10 +136,25 @@ remoteGlobalIDString = 6003F589195388D20070C39A; remoteInfo = SJVideoPlayer; }; + A697AC95287BEF4700569C2B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6003F582195388D10070C39A /* Project object */; + proxyType = 1; + remoteGlobalIDString = A697AC79287BEF4500569C2B; + remoteInfo = iPadDemo; + }; + A697AC9F287BEF4800569C2B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6003F582195388D10070C39A /* Project object */; + proxyType = 1; + remoteGlobalIDString = A697AC79287BEF4500569C2B; + remoteInfo = iPadDemo; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 0913D8D9BFC4EE68E3F1EF64 /* Pods-SJVideoPlayer_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SJVideoPlayer_Example.release.xcconfig"; path = "Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.release.xcconfig"; sourceTree = ""; }; + 29015EDA298D269CBC7AD126 /* Pods-iPadDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iPadDemo.release.xcconfig"; path = "Target Support Files/Pods-iPadDemo/Pods-iPadDemo.release.xcconfig"; sourceTree = ""; }; 3B070E8A25FC88C300960506 /* SJBaseVideoPlayer+ListPlaybackExtended.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SJBaseVideoPlayer+ListPlaybackExtended.h"; sourceTree = ""; }; 3B070E8B25FC88C300960506 /* SJBaseVideoPlayer+ListPlaybackExtended.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "SJBaseVideoPlayer+ListPlaybackExtended.m"; sourceTree = ""; }; 3DE6356926AEF70F060F33F3 /* SJVideoPlayer.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = SJVideoPlayer.podspec; path = ../SJVideoPlayer.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; @@ -235,15 +259,13 @@ 77788FE322C36D8300E26599 /* SJVideoCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SJVideoCollectionViewCell.xib; sourceTree = ""; }; 77788FE822C37C0800E26599 /* SJRecommendVideosViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SJRecommendVideosViewModel.h; sourceTree = ""; }; 77788FE922C37C0800E26599 /* SJRecommendVideosViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJRecommendVideosViewModel.m; sourceTree = ""; }; - 77805D6822BF7DE1007076B9 /* SJiPadDemoViewController1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SJiPadDemoViewController1.h; sourceTree = ""; }; - 77805D6922BF7DE1007076B9 /* SJiPadDemoViewController1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJiPadDemoViewController1.m; sourceTree = ""; }; 77805D6E22BF7EDB007076B9 /* iPadMain.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = iPadMain.storyboard; sourceTree = ""; }; 7784A7CE237CF75F000BA67E /* SJTestAliVodPlayerViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SJTestAliVodPlayerViewController.h; sourceTree = ""; }; 7784A7CF237CF75F000BA67E /* SJTestAliVodPlayerViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJTestAliVodPlayerViewController.m; sourceTree = ""; }; 7784A7D0237CF75F000BA67E /* SJTestAliVodPlayerViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SJTestAliVodPlayerViewController.xib; sourceTree = ""; }; - 7784A7F8237D3860000BA67E /* SJBarrageTestViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SJBarrageTestViewController.h; sourceTree = ""; }; - 7784A7F9237D3860000BA67E /* SJBarrageTestViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJBarrageTestViewController.m; sourceTree = ""; }; - 7784A7FB237D4E97000BA67E /* SJBarrageTestViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SJBarrageTestViewController.xib; sourceTree = ""; }; + 7784A7F8237D3860000BA67E /* SJDanmakuTestViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SJDanmakuTestViewController.h; sourceTree = ""; }; + 7784A7F9237D3860000BA67E /* SJDanmakuTestViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJDanmakuTestViewController.m; sourceTree = ""; }; + 7784A7FB237D4E97000BA67E /* SJDanmakuTestViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SJDanmakuTestViewController.xib; sourceTree = ""; }; 77A8DDE124B59B3400782C85 /* SJUIScrollViewDemoViewController1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SJUIScrollViewDemoViewController1.h; sourceTree = ""; }; 77A8DDE224B59B3400782C85 /* SJUIScrollViewDemoViewController1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJUIScrollViewDemoViewController1.m; sourceTree = ""; }; 77B947F5262991B2001635AA /* DYHCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DYHCollectionViewCell.m; sourceTree = ""; }; @@ -270,6 +292,21 @@ A601803B22DB5CAC00ED840D /* SJRotationModeDemoViewController3.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SJRotationModeDemoViewController3.xib; sourceTree = ""; }; A65FE537248A891700A5D4A6 /* SJKeyboardDemoViewController1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SJKeyboardDemoViewController1.h; sourceTree = ""; }; A65FE538248A891700A5D4A6 /* SJKeyboardDemoViewController1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJKeyboardDemoViewController1.m; sourceTree = ""; }; + A697AC7A287BEF4500569C2B /* iPadDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPadDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + A697AC7C287BEF4500569C2B /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + A697AC7D287BEF4500569C2B /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + A697AC82287BEF4500569C2B /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + A697AC83287BEF4500569C2B /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + A697AC86287BEF4500569C2B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + A697AC88287BEF4700569C2B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + A697AC8B287BEF4700569C2B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + A697AC8D287BEF4700569C2B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A697AC8E287BEF4700569C2B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + A697AC94287BEF4700569C2B /* iPadDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iPadDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + A697AC98287BEF4700569C2B /* iPadDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iPadDemoTests.m; sourceTree = ""; }; + A697AC9E287BEF4800569C2B /* iPadDemoUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iPadDemoUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + A697ACA2287BEF4800569C2B /* iPadDemoUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iPadDemoUITests.m; sourceTree = ""; }; + A697ACA4287BEF4800569C2B /* iPadDemoUITestsLaunchTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iPadDemoUITestsLaunchTests.m; sourceTree = ""; }; A69FD22822D9F5280031E4E7 /* SJViewController8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SJViewController8.h; sourceTree = ""; }; A69FD22922D9F5280031E4E7 /* SJViewController8.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJViewController8.m; sourceTree = ""; }; A69FD22A22D9F5280031E4E7 /* SJViewController8.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SJViewController8.xib; sourceTree = ""; }; @@ -319,6 +356,8 @@ A6F19DFF22D9D8050043B508 /* SJViewController7.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJViewController7.m; sourceTree = ""; }; A6F19E0022D9D8050043B508 /* SJViewController7.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SJViewController7.xib; sourceTree = ""; }; CCD2CA6C02217556CFBFA7AB /* libPods-SJVideoPlayer_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SJVideoPlayer_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E71EFE1686BFE92368A9E891 /* libPods-iPadDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iPadDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + EC7D2ADB76D2D75618F47694 /* Pods-iPadDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iPadDemo.debug.xcconfig"; path = "Target Support Files/Pods-iPadDemo/Pods-iPadDemo.debug.xcconfig"; sourceTree = ""; }; FD50424EAFCFA1AF356F36DF /* Pods-SJVideoPlayer_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SJVideoPlayer_Example.debug.xcconfig"; path = "Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -345,6 +384,28 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + A697AC77287BEF4500569C2B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2E5187B651B9ECE360D0557C /* libPods-iPadDemo.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A697AC91287BEF4700569C2B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A697AC9B287BEF4800569C2B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -353,6 +414,8 @@ children = ( FD50424EAFCFA1AF356F36DF /* Pods-SJVideoPlayer_Example.debug.xcconfig */, 0913D8D9BFC4EE68E3F1EF64 /* Pods-SJVideoPlayer_Example.release.xcconfig */, + EC7D2ADB76D2D75618F47694 /* Pods-iPadDemo.debug.xcconfig */, + 29015EDA298D269CBC7AD126 /* Pods-iPadDemo.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -363,6 +426,9 @@ 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */, 6003F593195388D20070C39A /* Example for SJVideoPlayer */, 6003F5B5195388D20070C39A /* Tests */, + A697AC7B287BEF4500569C2B /* iPadDemo */, + A697AC97287BEF4700569C2B /* iPadDemoTests */, + A697ACA1287BEF4800569C2B /* iPadDemoUITests */, 6003F58C195388D20070C39A /* Frameworks */, 6003F58B195388D20070C39A /* Products */, 02F7066D2C4467A7A42C9C71 /* Pods */, @@ -374,6 +440,9 @@ children = ( 6003F58A195388D20070C39A /* 播放器.app */, 6003F5AE195388D20070C39A /* SJVideoPlayer_Tests.xctest */, + A697AC7A287BEF4500569C2B /* iPadDemo.app */, + A697AC94287BEF4700569C2B /* iPadDemoTests.xctest */, + A697AC9E287BEF4800569C2B /* iPadDemoUITests.xctest */, ); name = Products; sourceTree = ""; @@ -387,6 +456,7 @@ 6003F591195388D20070C39A /* UIKit.framework */, 6003F5AF195388D20070C39A /* XCTest.framework */, CCD2CA6C02217556CFBFA7AB /* libPods-SJVideoPlayer_Example.a */, + E71EFE1686BFE92368A9E891 /* libPods-iPadDemo.a */, ); name = Frameworks; sourceTree = ""; @@ -622,26 +692,19 @@ path = "第三方播放器"; sourceTree = ""; }; - 77805D6722BF7DC6007076B9 /* iPad Demo */ = { - isa = PBXGroup; - children = ( - 77805D6822BF7DE1007076B9 /* SJiPadDemoViewController1.h */, - 77805D6922BF7DE1007076B9 /* SJiPadDemoViewController1.m */, - ); - path = "iPad Demo"; - sourceTree = ""; - }; 77805D6D22BF7EBD007076B9 /* iPhone Demo */ = { isa = PBXGroup; children = ( - 771BFDB825AFE1910026C277 /* App内小窗悬浮 */, + 7700904F24988F6900A99906 /* DY */, + 7740F63C262990EF00A91EBE /* DYH */, A6A208DF22AB9E59001ED610 /* Rotation Control(旋转控制) */, + 771BFDB825AFE1910026C277 /* App内小窗悬浮 */, 77A8DDE024B59B0F00782C85 /* UIScrollVIew */, 77391C0D2467CC2B00443844 /* UITableView */, 77391C0E2467CC3800443844 /* UICollectionView */, A65FE536248A88D200A5D4A6 /* Keyboard */, 77633AB823FD97A000D7A269 /* PlaybackHistory(播放记录) */, - 7784A7F7237D384F000BA67E /* Barrage( 弹幕) */, + 7784A7F7237D384F000BA67E /* Danmaku( 弹幕) */, 77357E5F2375522800B81EE4 /* Subtitles(字幕) */, A6A2555522ABDA8400E42998 /* Add Button Item To Control Layer(添加按钮到控制层) */, A6A2554022ABCE2800E42998 /* Playback List Control(播放列表控制) */, @@ -651,19 +714,20 @@ A6F19DFD22D9D7C30043B508 /* Switch Video Definition(切换清晰度) */, 77E87F6222E84D2B0047A253 /* GIF Screenshot Export */, 7740C1B72350A14200DD7ECE /* CustomControlLayer(自定义控制层) */, + 776EB8D523FF912500085F94 /* 第三方播放器 */, 77F2F5D822FAC41B00EA0B91 /* Other */, ); path = "iPhone Demo"; sourceTree = ""; }; - 7784A7F7237D384F000BA67E /* Barrage( 弹幕) */ = { + 7784A7F7237D384F000BA67E /* Danmaku( 弹幕) */ = { isa = PBXGroup; children = ( - 7784A7F8237D3860000BA67E /* SJBarrageTestViewController.h */, - 7784A7F9237D3860000BA67E /* SJBarrageTestViewController.m */, - 7784A7FB237D4E97000BA67E /* SJBarrageTestViewController.xib */, + 7784A7F8237D3860000BA67E /* SJDanmakuTestViewController.h */, + 7784A7F9237D3860000BA67E /* SJDanmakuTestViewController.m */, + 7784A7FB237D4E97000BA67E /* SJDanmakuTestViewController.xib */, ); - path = "Barrage( 弹幕)"; + path = "Danmaku( 弹幕)"; sourceTree = ""; }; 77A8DDE024B59B0F00782C85 /* UIScrollVIew */ = { @@ -718,37 +782,58 @@ path = Keyboard; sourceTree = ""; }; + A697AC7B287BEF4500569C2B /* iPadDemo */ = { + isa = PBXGroup; + children = ( + A697AC7C287BEF4500569C2B /* AppDelegate.h */, + A697AC7D287BEF4500569C2B /* AppDelegate.m */, + A697AC82287BEF4500569C2B /* ViewController.h */, + A697AC83287BEF4500569C2B /* ViewController.m */, + A697AC85287BEF4500569C2B /* Main.storyboard */, + A697AC88287BEF4700569C2B /* Assets.xcassets */, + A697AC8A287BEF4700569C2B /* LaunchScreen.storyboard */, + A697AC8D287BEF4700569C2B /* Info.plist */, + A697AC8E287BEF4700569C2B /* main.m */, + ); + path = iPadDemo; + sourceTree = ""; + }; + A697AC97287BEF4700569C2B /* iPadDemoTests */ = { + isa = PBXGroup; + children = ( + A697AC98287BEF4700569C2B /* iPadDemoTests.m */, + ); + path = iPadDemoTests; + sourceTree = ""; + }; + A697ACA1287BEF4800569C2B /* iPadDemoUITests */ = { + isa = PBXGroup; + children = ( + A697ACA2287BEF4800569C2B /* iPadDemoUITests.m */, + A697ACA4287BEF4800569C2B /* iPadDemoUITestsLaunchTests.m */, + ); + path = iPadDemoUITests; + sourceTree = ""; + }; A6A208DE22AB9E59001ED610 /* Demos */ = { isa = PBXGroup; children = ( 6003F5A5195388D20070C39A /* SJViewController.h */, 6003F5A6195388D20070C39A /* SJViewController.m */, - 7700904F24988F6900A99906 /* DY */, - 7740F63C262990EF00A91EBE /* DYH */, 77805D6D22BF7EBD007076B9 /* iPhone Demo */, - 77805D6722BF7DC6007076B9 /* iPad Demo */, 7756F57E22E1732D00F9DC7D /* Test */, - 776EB8D523FF912500085F94 /* 第三方播放器 */, ); path = Demos; sourceTree = ""; }; A6A208DF22AB9E59001ED610 /* Rotation Control(旋转控制) */ = { - isa = PBXGroup; - children = ( - A6A208E022AB9E59001ED610 /* Rotate Player View And View Controller */, - ); - path = "Rotation Control(旋转控制)"; - sourceTree = ""; - }; - A6A208E022AB9E59001ED610 /* Rotate Player View And View Controller */ = { isa = PBXGroup; children = ( A6A208E122AB9E59001ED610 /* 1 */, A6A208E522AB9E59001ED610 /* 2 */, A601803322DB5C4200ED840D /* 3 */, ); - path = "Rotate Player View And View Controller"; + path = "Rotation Control(旋转控制)"; sourceTree = ""; }; A6A208E122AB9E59001ED610 /* 1 */ = { @@ -961,6 +1046,61 @@ productReference = 6003F5AE195388D20070C39A /* SJVideoPlayer_Tests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + A697AC79287BEF4500569C2B /* iPadDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = A697ACA6287BEF4800569C2B /* Build configuration list for PBXNativeTarget "iPadDemo" */; + buildPhases = ( + F3755AD3B4CE238197EAECD8 /* [CP] Check Pods Manifest.lock */, + A697AC76287BEF4500569C2B /* Sources */, + A697AC77287BEF4500569C2B /* Frameworks */, + A697AC78287BEF4500569C2B /* Resources */, + 3C0F7DAEF40D93A97A95B8DA /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iPadDemo; + productName = iPadDemo; + productReference = A697AC7A287BEF4500569C2B /* iPadDemo.app */; + productType = "com.apple.product-type.application"; + }; + A697AC93287BEF4700569C2B /* iPadDemoTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = A697ACA9287BEF4800569C2B /* Build configuration list for PBXNativeTarget "iPadDemoTests" */; + buildPhases = ( + A697AC90287BEF4700569C2B /* Sources */, + A697AC91287BEF4700569C2B /* Frameworks */, + A697AC92287BEF4700569C2B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + A697AC96287BEF4700569C2B /* PBXTargetDependency */, + ); + name = iPadDemoTests; + productName = iPadDemoTests; + productReference = A697AC94287BEF4700569C2B /* iPadDemoTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + A697AC9D287BEF4800569C2B /* iPadDemoUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = A697ACAC287BEF4800569C2B /* Build configuration list for PBXNativeTarget "iPadDemoUITests" */; + buildPhases = ( + A697AC9A287BEF4800569C2B /* Sources */, + A697AC9B287BEF4800569C2B /* Frameworks */, + A697AC9C287BEF4800569C2B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + A697ACA0287BEF4800569C2B /* PBXTargetDependency */, + ); + name = iPadDemoUITests; + productName = iPadDemoUITests; + productReference = A697AC9E287BEF4800569C2B /* iPadDemoUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -983,6 +1123,23 @@ 6003F5AD195388D20070C39A = { TestTargetID = 6003F589195388D20070C39A; }; + A697AC79287BEF4500569C2B = { + CreatedOnToolsVersion = 14.0; + DevelopmentTeam = DVCY355DY9; + ProvisioningStyle = Automatic; + }; + A697AC93287BEF4700569C2B = { + CreatedOnToolsVersion = 14.0; + DevelopmentTeam = DVCY355DY9; + ProvisioningStyle = Automatic; + TestTargetID = A697AC79287BEF4500569C2B; + }; + A697AC9D287BEF4800569C2B = { + CreatedOnToolsVersion = 14.0; + DevelopmentTeam = DVCY355DY9; + ProvisioningStyle = Automatic; + TestTargetID = A697AC79287BEF4500569C2B; + }; }; }; buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "SJVideoPlayer" */; @@ -1000,6 +1157,9 @@ targets = ( 6003F589195388D20070C39A /* SJVideoPlayer_Example */, 6003F5AD195388D20070C39A /* SJVideoPlayer_Tests */, + A697AC79287BEF4500569C2B /* iPadDemo */, + A697AC93287BEF4700569C2B /* iPadDemoTests */, + A697AC9D287BEF4800569C2B /* iPadDemoUITests */, ); }; /* End PBXProject section */ @@ -1010,7 +1170,7 @@ buildActionMask = 2147483647; files = ( 776EB8C723FE98D600085F94 /* SJTestPLPlayerViewController.xib in Resources */, - 7784A7FC237D4E97000BA67E /* SJBarrageTestViewController.xib in Resources */, + 7784A7FC237D4E97000BA67E /* SJDanmakuTestViewController.xib in Resources */, 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */, 77391C3D2467F04C00443844 /* SJRecommendVideosCollectionViewCell.xib in Resources */, 7784A7D2237CF75F000BA67E /* SJTestAliVodPlayerViewController.xib in Resources */, @@ -1048,6 +1208,30 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + A697AC78287BEF4500569C2B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A697AC8C287BEF4700569C2B /* LaunchScreen.storyboard in Resources */, + A697AC89287BEF4700569C2B /* Assets.xcassets in Resources */, + A697AC87287BEF4500569C2B /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A697AC92287BEF4700569C2B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A697AC9C287BEF4800569C2B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -1073,6 +1257,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SJVideoPlayer_Example/Pods-SJVideoPlayer_Example-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 3C0F7DAEF40D93A97A95B8DA /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-resources.sh", + "${PODS_ROOT}/MJRefresh/MJRefresh/MJRefresh.bundle", + "${PODS_ROOT}/SJBaseVideoPlayer/SJBaseVideoPlayer/ResourceLoader/SJBaseVideoPlayerResources.bundle", + "${PODS_ROOT}/../../SJVideoPlayer/ResourceLoader/SJVideoPlayer.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MJRefresh.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SJBaseVideoPlayerResources.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SJVideoPlayer.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iPadDemo/Pods-iPadDemo-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; E81B7FEC30068D32F95F4D37 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1095,6 +1301,28 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + F3755AD3B4CE238197EAECD8 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-iPadDemo-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -1117,7 +1345,6 @@ 77F2F5DC22FAC43000EA0B91 /* SJViewController11.m in Sources */, 7740C1BA2350A16700DD7ECE /* SJViewController12.m in Sources */, 7700905D24988F6900A99906 /* SJDYTableViewCell.m in Sources */, - 77805D6B22BF7DE1007076B9 /* SJiPadDemoViewController1.m in Sources */, 77391C262467DF4500443844 /* SJUITableViewDemoViewController7.m in Sources */, 815EB5632535A55D002DAFF4 /* SJUIScrollViewDemoViewController2.m in Sources */, A6A208FF22AB9E59001ED610 /* SJVideoModel.m in Sources */, @@ -1145,7 +1372,7 @@ A6C5D23422AC249800D63D1C /* SJRemoteCommandHandler.m in Sources */, 77B94801262991FC001635AA /* SJDYUserHomepageViewController.m in Sources */, 77357E622375523C00B81EE4 /* SJSubtitlesTestViewController.m in Sources */, - 7784A7FA237D3860000BA67E /* SJBarrageTestViewController.m in Sources */, + 7784A7FA237D3860000BA67E /* SJDanmakuTestViewController.m in Sources */, 77EEC765262417A00066B57D /* SJFloatSmallViewTransitionController.m in Sources */, 77788FDF22C36CF300E26599 /* SJRecommendVideosTableViewCell.m in Sources */, 771BFDBB25AFE1EC0026C277 /* SJFloatModeDemoViewController1.m in Sources */, @@ -1185,6 +1412,33 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + A697AC76287BEF4500569C2B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A697AC84287BEF4500569C2B /* ViewController.m in Sources */, + A697AC7E287BEF4500569C2B /* AppDelegate.m in Sources */, + A697AC8F287BEF4700569C2B /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A697AC90287BEF4700569C2B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A697AC99287BEF4700569C2B /* iPadDemoTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A697AC9A287BEF4800569C2B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A697ACA3287BEF4800569C2B /* iPadDemoUITests.m in Sources */, + A697ACA5287BEF4800569C2B /* iPadDemoUITestsLaunchTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1193,6 +1447,16 @@ target = 6003F589195388D20070C39A /* SJVideoPlayer_Example */; targetProxy = 6003F5B3195388D20070C39A /* PBXContainerItemProxy */; }; + A697AC96287BEF4700569C2B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A697AC79287BEF4500569C2B /* iPadDemo */; + targetProxy = A697AC95287BEF4700569C2B /* PBXContainerItemProxy */; + }; + A697ACA0287BEF4800569C2B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A697AC79287BEF4500569C2B /* iPadDemo */; + targetProxy = A697AC9F287BEF4800569C2B /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -1220,6 +1484,22 @@ name = LaunchScreen.storyboard; sourceTree = ""; }; + A697AC85287BEF4500569C2B /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + A697AC86287BEF4500569C2B /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + A697AC8A287BEF4700569C2B /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + A697AC8B287BEF4700569C2B /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -1329,7 +1609,7 @@ baseConfigurationReference = FD50424EAFCFA1AF356F36DF /* Pods-SJVideoPlayer_Example.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = DVCY355DY9; ENABLE_BITCODE = NO; @@ -1341,7 +1621,7 @@ SJDEBUG, ); INFOPLIST_FILE = "SJVideoPlayer/SJVideoPlayer-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.demo.SJVideoPlayer; PRODUCT_NAME = "播放器"; @@ -1355,9 +1635,9 @@ baseConfigurationReference = 0913D8D9BFC4EE68E3F1EF64 /* Pods-SJVideoPlayer_Example.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = Q6TTFXGP8Q; + DEVELOPMENT_TEAM = DVCY355DY9; ENABLE_BITCODE = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SJVideoPlayer/SJVideoPlayer-Prefix.pch"; @@ -1366,7 +1646,7 @@ "COCOAPODS=1", ); INFOPLIST_FILE = "SJVideoPlayer/SJVideoPlayer-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.demo.SJVideoPlayer; PRODUCT_NAME = "播放器"; @@ -1417,6 +1697,195 @@ }; name = Release; }; + A697ACA7287BEF4800569C2B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EC7D2ADB76D2D75618F47694 /* Pods-iPadDemo.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = DVCY355DY9; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = iPadDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.sanjiang.iPadDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + A697ACA8287BEF4800569C2B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 29015EDA298D269CBC7AD126 /* Pods-iPadDemo.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = DVCY355DY9; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = iPadDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.sanjiang.iPadDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + A697ACAA287BEF4800569C2B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = DVCY355DY9; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.sanjiang.iPadDemoTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iPadDemo.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iPadDemo"; + }; + name = Debug; + }; + A697ACAB287BEF4800569C2B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = DVCY355DY9; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.sanjiang.iPadDemoTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iPadDemo.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iPadDemo"; + }; + name = Release; + }; + A697ACAD287BEF4800569C2B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = DVCY355DY9; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.sanjiang.iPadDemoUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = iPadDemo; + }; + name = Debug; + }; + A697ACAE287BEF4800569C2B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = DVCY355DY9; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.sanjiang.iPadDemoUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = iPadDemo; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1447,6 +1916,33 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + A697ACA6287BEF4800569C2B /* Build configuration list for PBXNativeTarget "iPadDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A697ACA7287BEF4800569C2B /* Debug */, + A697ACA8287BEF4800569C2B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A697ACA9287BEF4800569C2B /* Build configuration list for PBXNativeTarget "iPadDemoTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A697ACAA287BEF4800569C2B /* Debug */, + A697ACAB287BEF4800569C2B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A697ACAC287BEF4800569C2B /* Build configuration list for PBXNativeTarget "iPadDemoUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A697ACAD287BEF4800569C2B /* Debug */, + A697ACAE287BEF4800569C2B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 6003F582195388D10070C39A /* Project object */; diff --git a/Example/SJVideoPlayer.xcodeproj/xcshareddata/xcschemes/SJVideoPlayer-Example.xcscheme b/Example/SJVideoPlayer.xcodeproj/xcshareddata/xcschemes/SJVideoPlayer-Example.xcscheme index f977e51bd..3251bea10 100644 --- a/Example/SJVideoPlayer.xcodeproj/xcshareddata/xcschemes/SJVideoPlayer-Example.xcscheme +++ b/Example/SJVideoPlayer.xcodeproj/xcshareddata/xcschemes/SJVideoPlayer-Example.xcscheme @@ -53,6 +53,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + disableMainThreadChecker = "YES" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Example/SJVideoPlayer.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/xcschememanagement.plist b/Example/SJVideoPlayer.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/xcschememanagement.plist index 8a3192747..f6127cede 100644 --- a/Example/SJVideoPlayer.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Example/SJVideoPlayer.xcodeproj/xcuserdata/changsanjiang.xcuserdatad/xcschemes/xcschememanagement.plist @@ -9,6 +9,11 @@ orderHint 0 + iPadDemo.xcscheme_^#shared#^_ + + orderHint + 15 + diff --git a/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/IDEFindNavigatorScopes.plist b/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/IDEFindNavigatorScopes.plist new file mode 100644 index 000000000..5dd5da85f --- /dev/null +++ b/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/IDEFindNavigatorScopes.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/UserInterfaceState.xcuserstate b/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/UserInterfaceState.xcuserstate index fb485cba7..e28929039 100644 Binary files a/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/UserInterfaceState.xcuserstate and b/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 9f201c461..ca9c64643 100644 --- a/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/Example/SJVideoPlayer.xcworkspace/xcuserdata/changsanjiang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -15,21 +15,5 @@ stopOnStyle = "0"> - - - - diff --git a/Example/SJVideoPlayer/Demos/SJViewController.m b/Example/SJVideoPlayer/Demos/SJViewController.m index c8536782c..2aa8349b3 100644 --- a/Example/SJVideoPlayer/Demos/SJViewController.m +++ b/Example/SJVideoPlayer/Demos/SJViewController.m @@ -92,7 +92,7 @@ - (void)_createDemoData { [m addObject:[[LWZTableSectionShrinker alloc] initWithTitle:@"Add Button Item To Control Layer" titleWhenShrank:nil dataArr:[self _createAddButtonItemToControlLayerDemoItems]]]; - [m addObject:[[LWZTableSectionShrinker alloc] initWithTitle:@"Pop Prompt Control" titleWhenShrank:nil dataArr:[self _createPromptDemoItems]]]; + [m addObject:[[LWZTableSectionShrinker alloc] initWithTitle:@"Text Popup" titleWhenShrank:nil dataArr:[self _createTextPopupDemoItems]]]; [m addObject:[[LWZTableSectionShrinker alloc] initWithTitle:@"Switch Video Definition" titleWhenShrank:nil dataArr:[self _createSwitchVideoDefinitionDemoItems]]]; @@ -223,16 +223,16 @@ - (void)_createDemoData { ]; } -- (NSArray *)_createPromptDemoItems { +- (NSArray *)_createTextPopupDemoItems { return @[ - [[Item alloc] initWithTitle:@"Prompt 1" - subTitle:@"弹出提示(左下角)" - path:@"demo/prompt1"], - - [[Item alloc] initWithTitle:@"Prompt 2" - subTitle:@"弹出提示(中间)" - path:@"demo/prompt2"], + [[Item alloc] initWithTitle:@"TextPopup 1" + subTitle:@"弹出提示(中间)" + path:@"demo/textPopup"], + + [[Item alloc] initWithTitle:@"PromptingPopup 2" + subTitle:@"弹出提示(左下角)" + path:@"demo/promptingPopup"], ]; } @@ -260,9 +260,9 @@ - (void)_createDemoData { [[Item alloc] initWithTitle:@"Test subtitles" subTitle:@"测试 字幕" path:@"subtitles/demo"], - [[Item alloc] initWithTitle:@"Test barrages" + [[Item alloc] initWithTitle:@"Test danmaku" subTitle:@"测试 弹幕" - path:@"barrage/demo"], + path:@"danmaku/demo"], [[Item alloc] initWithTitle:@"Test playback history" subTitle:@"测试 播放记录" path:@"playbackHistory"], diff --git a/Example/SJVideoPlayer/Demos/Test/SJTestViewController.m b/Example/SJVideoPlayer/Demos/Test/SJTestViewController.m index 3005da73d..9fc4bf98b 100644 --- a/Example/SJVideoPlayer/Demos/Test/SJTestViewController.m +++ b/Example/SJVideoPlayer/Demos/Test/SJTestViewController.m @@ -70,10 +70,10 @@ - (void)_setupViews { }]; __weak typeof(self) _self = self; - _player.controlLayerAppearObserver.appearStateDidChangeExeBlock = ^(id _Nonnull mgr) { + _player.controlLayerAppearObserver.onAppearChanged = ^(id _Nonnull mgr) { __strong typeof(_self) self = _self; if ( !self ) return ; - self.player.promptPopupController.bottomMargin = mgr.isAppeared ? self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height : 16; + self.player.promptingPopupController.bottomMargin = mgr.isAppeared ? self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height : 16; }; } diff --git a/Example/SJVideoPlayer/Demos/iPad Demo/SJiPadDemoViewController1.h b/Example/SJVideoPlayer/Demos/iPad Demo/SJiPadDemoViewController1.h deleted file mode 100644 index 0b699d96d..000000000 --- a/Example/SJVideoPlayer/Demos/iPad Demo/SJiPadDemoViewController1.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// SJiPadDemoViewController1.h -// SJVideoPlayer_Example -// -// Created by 畅三江 on 2019/6/23. -// Copyright © 2019 changsanjiang. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SJiPadDemoViewController1 : UIViewController - -@end - -NS_ASSUME_NONNULL_END diff --git a/Example/SJVideoPlayer/Demos/iPad Demo/SJiPadDemoViewController1.m b/Example/SJVideoPlayer/Demos/iPad Demo/SJiPadDemoViewController1.m deleted file mode 100644 index ed6b444b5..000000000 --- a/Example/SJVideoPlayer/Demos/iPad Demo/SJiPadDemoViewController1.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// SJiPadDemoViewController1.m -// SJVideoPlayer_Example -// -// Created by 畅三江 on 2019/6/23. -// Copyright © 2019 changsanjiang. All rights reserved. -// - -#import "SJiPadDemoViewController1.h" -#import -#import -#import -#import "SJSourceURLs.h" -static SJEdgeControlButtonItemTag const SJTestItemTag1 = 100; - -@interface SJiPadDemoViewController1 () -@property (weak, nonatomic) IBOutlet UIView *playerContainerView; -@property (nonatomic, strong) SJVideoPlayer *player; -@end - -@implementation SJiPadDemoViewController1 - -- (void)viewDidLoad { - [super viewDidLoad]; - [self _setupViews]; - [self _addTestItem]; -} - -- (void)testAction { - __weak typeof(self) _self = self; - [_player setFitOnScreen:NO animated:YES completionHandler:^(__kindof SJBaseVideoPlayer * _Nonnull player) { - __strong typeof(_self) self = _self; - if ( !self ) return; - UIViewController *vc = [UIViewController new]; - vc.view.backgroundColor = UIColor.blueColor; - [self.navigationController pushViewController:vc animated:YES]; - }]; -} - -- (void)_setupViews { - _player = [SJVideoPlayer player]; - [_playerContainerView addSubview:_player.view]; - [_player.view mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.offset(0); - }]; - - _player.onlyUsedFitOnScreen = YES; - _player.assetURL = SourceURL0; -} - -- (void)_addTestItem { - SJEdgeControlButtonItem *item = [[SJEdgeControlButtonItem alloc] initWithTitle:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { - make.append(@"Push").textColor(UIColor.greenColor); - }] target:self action:@selector(testAction) tag:SJTestItemTag1]; - - [_player.defaultEdgeControlLayer.rightAdapter addItem:item]; -} - -- (BOOL)prefersStatusBarHidden { - return [self.player vc_prefersStatusBarHidden]; -} - -- (UIStatusBarStyle)preferredStatusBarStyle { - return [self.player vc_preferredStatusBarStyle]; -} - -- (BOOL)prefersHomeIndicatorAutoHidden { - return YES; -} -@end diff --git a/Example/SJVideoPlayer/Demos/iPhone Demo/.DS_Store b/Example/SJVideoPlayer/Demos/iPhone Demo/.DS_Store new file mode 100644 index 000000000..1ae2e386b Binary files /dev/null and b/Example/SJVideoPlayer/Demos/iPhone Demo/.DS_Store differ diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Add Button Item To Control Layer(\346\267\273\345\212\240\346\214\211\351\222\256\345\210\260\346\216\247\345\210\266\345\261\202)/SJViewController2.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Add Button Item To Control Layer(\346\267\273\345\212\240\346\214\211\351\222\256\345\210\260\346\216\247\345\210\266\345\261\202)/SJViewController2.m" index c3a817bae..12e151c47 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Add Button Item To Control Layer(\346\267\273\345\212\240\346\214\211\351\222\256\345\210\260\346\216\247\345\210\266\345\261\202)/SJViewController2.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Add Button Item To Control Layer(\346\267\273\345\212\240\346\214\211\351\222\256\345\210\260\346\216\247\345\210\266\345\261\202)/SJViewController2.m" @@ -11,7 +11,6 @@ #import #import #import "SJSourceURLs.h" -#import "SJRotationManager.h" static SJEdgeControlButtonItemTag const SJTestItemTag1 = 100; static SJEdgeControlButtonItemTag const SJTestImageItemTag = 101; @@ -53,7 +52,7 @@ - (IBAction)addItem:(id)sender { // 以下方法为显示控制层 [_player controlLayerNeedAppear]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已添加到右侧 `text item`"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -66,7 +65,7 @@ - (IBAction)exchangeItem:(id)sender { // 以下方法为显示控制层 [_player controlLayerNeedAppear]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已交换底部 `时长item`与`进度item`的位置"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -78,7 +77,7 @@ - (IBAction)removeItem:(id)sender { // 以下方法为显示控制层 [_player controlLayerNeedAppear]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已删除底部 `分割线item`"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -92,7 +91,7 @@ - (IBAction)imageItem:(id)sender { // 以下方法为显示控制层 [_player controlLayerNeedAppear]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已添加到顶部 `image item`"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -109,7 +108,7 @@ - (IBAction)textItem:(id)sender { // 以下方法为显示控制层 [_player controlLayerNeedAppear]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已添加到顶部 `text item`"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -124,7 +123,7 @@ - (IBAction)customViewItem:(id)sender { // 以下方法为显示控制层 [_player controlLayerNeedAppear]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已添加到顶部 `custom view`"); make.textColor(UIColor.whiteColor); }] duration:3]; diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/1/SJFloatModeDemoViewController1.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/1/SJFloatModeDemoViewController1.m" index 3be0a9af1..c53b7fc9e 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/1/SJFloatModeDemoViewController1.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/1/SJFloatModeDemoViewController1.m" @@ -77,7 +77,7 @@ - (void)viewDidLoad { floatSmallViewTransitionController.automaticallyEnterFloatingMode = YES; _player.floatSmallViewController = floatSmallViewTransitionController; __weak typeof(self) _self = self; - _player.floatSmallViewController.doubleTappedOnTheFloatViewExeBlock = ^(id _Nonnull controller) { + _player.floatSmallViewController.onDoubleTapped = ^(id _Nonnull controller) { __strong typeof(_self) self = _self; if ( self == nil ) return; self.player.isPaused ? [self.player play] : [self.player pause]; @@ -150,7 +150,7 @@ - (SJFloatSmallViewTransitionController *)floatSmallViewTransitionController { // 手动进入 - (void)enterFloatMode { __weak typeof(self) _self = self; - if ( _player.isFullScreen ) { + if ( _player.isFullscreen ) { [_player rotate:SJOrientation_Portrait animated:YES completion:^(__kindof SJBaseVideoPlayer * _Nonnull player) { __strong typeof(_self) self = _self; if ( self == nil ) return; diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/1/SJFloatSmallViewTransitionController.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/1/SJFloatSmallViewTransitionController.m" index d8cdb5844..126822579 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/1/SJFloatSmallViewTransitionController.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/1/SJFloatSmallViewTransitionController.m" @@ -30,8 +30,8 @@ - (instancetype)initWithController:(id)controller; @end @implementation SJFloatSmallViewTransitionControllerObserver -@synthesize appearStateDidChangeExeBlock = _appearStateDidChangeExeBlock; -@synthesize enabledControllerExeBlock = _enabledControllerExeBlock; +@synthesize onAppearChanged = _onAppearChanged; +@synthesize onEnabled = _onEnabled; @synthesize controller = _controller; - (instancetype)initWithController:(id)controller { @@ -41,15 +41,15 @@ - (instancetype)initWithController:(id)controller { sjkvo_observe(controller, @"isAppeared", ^(id _Nonnull target, NSDictionary * _Nullable change) { dispatch_async(dispatch_get_main_queue(), ^{ - if ( self.appearStateDidChangeExeBlock ) - self.appearStateDidChangeExeBlock(target); + if ( self.onAppearChanged ) + self.onAppearChanged(target); }); }); sjkvo_observe(controller, @"enabled", ^(id _Nonnull target, NSDictionary * _Nullable change) { dispatch_async(dispatch_get_main_queue(), ^{ - if ( self.enabledControllerExeBlock ) - self.enabledControllerExeBlock(target); + if ( self.onEnabled ) + self.onEnabled(target); }); }); } @@ -74,8 +74,8 @@ @implementation SJFloatSmallViewTransitionController @synthesize enabled = _enabled; @synthesize slidable = _slidable; @synthesize floatViewShouldAppear = _floatViewShouldAppear; -@synthesize singleTappedOnTheFloatViewExeBlock = _singleTappedOnTheFloatViewExeBlock; -@synthesize doubleTappedOnTheFloatViewExeBlock = _doubleTappedOnTheFloatViewExeBlock; +@synthesize onSingleTapped = _onSingleTapped; +@synthesize onDoubleTapped = _onDoubleTapped; ///// - target 为播放器呈现视图 ///// - targetSuperview 为播放器视图 ///// 当显示小浮窗时, 可以将target添加到小浮窗中 @@ -98,7 +98,7 @@ - (instancetype)init { _layoutInsets = UIEdgeInsetsMake(20, 12, 20, 12); _layoutPosition = SJFloatViewLayoutPositionBottomRight; _enabled = YES; - self.singleTappedOnTheFloatViewExeBlock = ^(id _Nonnull controller) { + self.onSingleTapped = ^(id _Nonnull controller) { SJFloatSmallViewTransitionController *transitionController = (id)controller; [transitionController resume]; }; diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/2/SJFloatModeDemoViewController2.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/2/SJFloatModeDemoViewController2.m" index 5344ed13d..96bf54324 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/2/SJFloatModeDemoViewController2.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/App\345\206\205\345\260\217\347\252\227\346\202\254\346\265\256/2/SJFloatModeDemoViewController2.m" @@ -33,7 +33,7 @@ - (void)coverItemWasTapped:(SJVideoTableViewCell *)cell { __weak typeof(self) _self = self; // 单击小浮窗时的回调 - _player.floatSmallViewController.singleTappedOnTheFloatViewExeBlock = ^(id _Nonnull floatSmallViewController) { + _player.floatSmallViewController.onSingleTapped = ^(id _Nonnull floatSmallViewController) { __strong typeof(_self) self = _self; if ( !self ) return ; [floatSmallViewController dismissFloatView]; @@ -41,7 +41,7 @@ - (void)coverItemWasTapped:(SJVideoTableViewCell *)cell { }; // 双击小浮窗时的回调 - _player.floatSmallViewController.doubleTappedOnTheFloatViewExeBlock = ^(id _Nonnull controller) { + _player.floatSmallViewController.onDoubleTapped = ^(id _Nonnull controller) { __strong typeof(_self) self = _self; if ( !self ) return ; diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/CustomControlLayer(\350\207\252\345\256\232\344\271\211\346\216\247\345\210\266\345\261\202)/SJCustomControlLayerViewController.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/CustomControlLayer(\350\207\252\345\256\232\344\271\211\346\216\247\345\210\266\345\261\202)/SJCustomControlLayerViewController.m" index 63f7b58c4..28a7d1d40 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/CustomControlLayer(\350\207\252\345\256\232\344\271\211\346\216\247\345\210\266\345\261\202)/SJCustomControlLayerViewController.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/CustomControlLayer(\350\207\252\345\256\232\344\271\211\346\216\247\345\210\266\345\261\202)/SJCustomControlLayerViewController.m" @@ -50,7 +50,7 @@ - (void)viewDidLoad { /// - (void)restartControlLayer { _restarted = YES; - if ( self.player.isFullScreen ) [self.player needHiddenStatusBar]; + if ( self.player.isFullscreen ) [self.player needHiddenStatusBar]; sj_view_makeAppear(self.controlView, YES); sj_view_makeAppear(self.rightContainerView, YES); } diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/CustomControlLayer(\350\207\252\345\256\232\344\271\211\346\216\247\345\210\266\345\261\202)/SJViewController12.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/CustomControlLayer(\350\207\252\345\256\232\344\271\211\346\216\247\345\210\266\345\261\202)/SJViewController12.m" index 703999eee..b45be5ccc 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/CustomControlLayer(\350\207\252\345\256\232\344\271\211\346\216\247\345\210\266\345\261\202)/SJViewController12.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/CustomControlLayer(\350\207\252\345\256\232\344\271\211\346\216\247\345\210\266\345\261\202)/SJViewController12.m" @@ -53,7 +53,7 @@ - (void)_addCustomControlLayerToSwitcher { /// 切换控制层 /// - (void)switchControlLayer { - if ( _player.isFullScreen == NO ) { + if ( _player.isFullscreen == NO ) { [_player rotate:SJOrientation_LandscapeLeft animated:YES completion:^(SJVideoPlayer * _Nonnull player) { [player.switcher switchControlLayerForIdentifier:SJTestControlLayerIdentifier]; }]; diff --git a/Example/SJVideoPlayer/Demos/DY/List/SJDYDataProvider.h b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYDataProvider.h similarity index 100% rename from Example/SJVideoPlayer/Demos/DY/List/SJDYDataProvider.h rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYDataProvider.h diff --git a/Example/SJVideoPlayer/Demos/DY/List/SJDYDataProvider.m b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYDataProvider.m similarity index 100% rename from Example/SJVideoPlayer/Demos/DY/List/SJDYDataProvider.m rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYDataProvider.m diff --git a/Example/SJVideoPlayer/Demos/DY/List/SJDYPlaybackListViewController.h b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYPlaybackListViewController.h similarity index 100% rename from Example/SJVideoPlayer/Demos/DY/List/SJDYPlaybackListViewController.h rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYPlaybackListViewController.h diff --git a/Example/SJVideoPlayer/Demos/DY/List/SJDYPlaybackListViewController.m b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYPlaybackListViewController.m similarity index 100% rename from Example/SJVideoPlayer/Demos/DY/List/SJDYPlaybackListViewController.m rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYPlaybackListViewController.m diff --git a/Example/SJVideoPlayer/Demos/DY/List/SJDYTableViewCell.h b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYTableViewCell.h similarity index 100% rename from Example/SJVideoPlayer/Demos/DY/List/SJDYTableViewCell.h rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYTableViewCell.h diff --git a/Example/SJVideoPlayer/Demos/DY/List/SJDYTableViewCell.m b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYTableViewCell.m similarity index 94% rename from Example/SJVideoPlayer/Demos/DY/List/SJDYTableViewCell.m rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYTableViewCell.m index d95e092f1..e7a989cc9 100644 --- a/Example/SJVideoPlayer/Demos/DY/List/SJDYTableViewCell.m +++ b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/List/SJDYTableViewCell.m @@ -63,9 +63,9 @@ - (void)_setupPlayer { }; __weak typeof(_player) _weakPlayer = _player; // 设置仅支持单击手势 - _player.gestureControl.supportedGestureTypes = SJPlayerGestureTypeMask_SingleTap; + _player.gestureController.supportedGestureTypes = SJPlayerGestureTypeMask_SingleTap; // 重定义单击手势的处理 - _player.gestureControl.singleTapHandler = ^(id _Nonnull control, CGPoint location) { + _player.gestureController.singleTapHandler = ^(id _Nonnull control, CGPoint location) { // 此处改为单击暂停或播放 _weakPlayer.isPaused ? [_weakPlayer play] : [_weakPlayer pauseForUser]; }; diff --git a/Example/SJVideoPlayer/Demos/DY/SJDYMainViewController.h b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/SJDYMainViewController.h similarity index 100% rename from Example/SJVideoPlayer/Demos/DY/SJDYMainViewController.h rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/SJDYMainViewController.h diff --git a/Example/SJVideoPlayer/Demos/DY/SJDYMainViewController.m b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/SJDYMainViewController.m similarity index 100% rename from Example/SJVideoPlayer/Demos/DY/SJDYMainViewController.m rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/SJDYMainViewController.m diff --git a/Example/SJVideoPlayer/Demos/DY/UserHomepage/SJDYUserHomepageViewController.h b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/UserHomepage/SJDYUserHomepageViewController.h similarity index 100% rename from Example/SJVideoPlayer/Demos/DY/UserHomepage/SJDYUserHomepageViewController.h rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/UserHomepage/SJDYUserHomepageViewController.h diff --git a/Example/SJVideoPlayer/Demos/DY/UserHomepage/SJDYUserHomepageViewController.m b/Example/SJVideoPlayer/Demos/iPhone Demo/DY/UserHomepage/SJDYUserHomepageViewController.m similarity index 100% rename from Example/SJVideoPlayer/Demos/DY/UserHomepage/SJDYUserHomepageViewController.m rename to Example/SJVideoPlayer/Demos/iPhone Demo/DY/UserHomepage/SJDYUserHomepageViewController.m diff --git a/Example/SJVideoPlayer/Demos/DYH/DYHCollectionViewCell.h b/Example/SJVideoPlayer/Demos/iPhone Demo/DYH/DYHCollectionViewCell.h similarity index 100% rename from Example/SJVideoPlayer/Demos/DYH/DYHCollectionViewCell.h rename to Example/SJVideoPlayer/Demos/iPhone Demo/DYH/DYHCollectionViewCell.h diff --git a/Example/SJVideoPlayer/Demos/DYH/DYHCollectionViewCell.m b/Example/SJVideoPlayer/Demos/iPhone Demo/DYH/DYHCollectionViewCell.m similarity index 94% rename from Example/SJVideoPlayer/Demos/DYH/DYHCollectionViewCell.m rename to Example/SJVideoPlayer/Demos/iPhone Demo/DYH/DYHCollectionViewCell.m index d978ad051..397578367 100644 --- a/Example/SJVideoPlayer/Demos/DYH/DYHCollectionViewCell.m +++ b/Example/SJVideoPlayer/Demos/iPhone Demo/DYH/DYHCollectionViewCell.m @@ -63,9 +63,9 @@ - (void)_setupPlayer { }; __weak typeof(_player) _weakPlayer = _player; // 设置仅支持单击手势 - _player.gestureControl.supportedGestureTypes = SJPlayerGestureTypeMask_SingleTap; + _player.gestureController.supportedGestureTypes = SJPlayerGestureTypeMask_SingleTap; // 重定义单击手势的处理 - _player.gestureControl.singleTapHandler = ^(id _Nonnull control, CGPoint location) { + _player.gestureController.singleTapHandler = ^(id _Nonnull control, CGPoint location) { // 此处改为单击暂停或播放 _weakPlayer.isPaused ? [_weakPlayer play] : [_weakPlayer pauseForUser]; }; diff --git a/Example/SJVideoPlayer/Demos/DYH/DYHPlaybackListViewController.h b/Example/SJVideoPlayer/Demos/iPhone Demo/DYH/DYHPlaybackListViewController.h similarity index 100% rename from Example/SJVideoPlayer/Demos/DYH/DYHPlaybackListViewController.h rename to Example/SJVideoPlayer/Demos/iPhone Demo/DYH/DYHPlaybackListViewController.h diff --git a/Example/SJVideoPlayer/Demos/DYH/DYHPlaybackListViewController.m b/Example/SJVideoPlayer/Demos/iPhone Demo/DYH/DYHPlaybackListViewController.m similarity index 100% rename from Example/SJVideoPlayer/Demos/DYH/DYHPlaybackListViewController.m rename to Example/SJVideoPlayer/Demos/iPhone Demo/DYH/DYHPlaybackListViewController.m diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Barrage( \345\274\271\345\271\225)/SJBarrageTestViewController.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Danmaku( \345\274\271\345\271\225)/SJDanmakuTestViewController.h" similarity index 69% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Barrage( \345\274\271\345\271\225)/SJBarrageTestViewController.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Danmaku( \345\274\271\345\271\225)/SJDanmakuTestViewController.h" index c3907d155..4268302f6 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Barrage( \345\274\271\345\271\225)/SJBarrageTestViewController.h" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Danmaku( \345\274\271\345\271\225)/SJDanmakuTestViewController.h" @@ -1,5 +1,5 @@ // -// SJBarrageTestViewController.h +// SJDanmakuTestViewController.h // SJVideoPlayer_Example // // Created by 畅三江 on 2019/11/14. @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface SJBarrageTestViewController : UIViewController +@interface SJDanmakuTestViewController : UIViewController @end diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Barrage( \345\274\271\345\271\225)/SJBarrageTestViewController.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Danmaku( \345\274\271\345\271\225)/SJDanmakuTestViewController.m" similarity index 69% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Barrage( \345\274\271\345\271\225)/SJBarrageTestViewController.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Danmaku( \345\274\271\345\271\225)/SJDanmakuTestViewController.m" index 155c1ed8d..154a1e87e 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Barrage( \345\274\271\345\271\225)/SJBarrageTestViewController.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Danmaku( \345\274\271\345\271\225)/SJDanmakuTestViewController.m" @@ -1,49 +1,49 @@ // -// SJBarrageTestViewController.m +// SJDanmakuTestViewController.m // SJVideoPlayer_Example // // Created by 畅三江 on 2019/11/14. // Copyright © 2019 changsanjiang. All rights reserved. // -#import "SJBarrageTestViewController.h" +#import "SJDanmakuTestViewController.h" #import #import "SJVideoPlayer.h" #import "Masonry.h" #import "SJSourceURLs.h" #import -#import -#import +#import +#import NS_ASSUME_NONNULL_BEGIN -@interface SJBarrageTestViewController () +@interface SJDanmakuTestViewController () @property (nonatomic, strong) SJVideoPlayer *player; @end -@implementation SJBarrageTestViewController +@implementation SJDanmakuTestViewController - (void)viewDidLoad { [super viewDidLoad]; [self _setupViews]; - SJBarrageQueueController *controller = _player.barrageQueueController; - controller.configuration.delegate = self; + SJDanmakuPopupController *controller = _player.danmakuPopupController; + controller.trackConfiguration.delegate = self; controller.view.clipsToBounds = YES; } -#pragma mark - SJBarrageLineConfigurationDelegate +#pragma mark - SJDanmakuTrackConfigurationDelegate /// 配置移动速率, 这里设置了让偶数行的速率慢一点 -- (CGFloat)barrageLineConfiguration:(SJBarrageLineConfiguration *)configuration rateForLineAtIndex:(NSInteger)index { +- (CGFloat)trackConfiguration:(SJDanmakuTrackConfiguration *)trackConfiguration rateForTrackAtIndex:(NSInteger)index { return index % 2 == 0 ? 1 : 0.9; } #pragma mark - Test - (IBAction)test_pauseOrResume:(UIButton *)sender { - self.player.barrageQueueController.isPaused ? [self.player.barrageQueueController resume] : [self.player.barrageQueueController pause]; - [sender setTitle:self.player.barrageQueueController.isPaused ? @"Resume" : @"Pause" forState:UIControlStateNormal]; + self.player.danmakuPopupController.isPaused ? [self.player.danmakuPopupController resume] : [self.player.danmakuPopupController pause]; + [sender setTitle:self.player.danmakuPopupController.isPaused ? @"Resume" : @"Pause" forState:UIControlStateNormal]; } - (IBAction)test_send1:(id)sender { @@ -55,18 +55,18 @@ - (IBAction)test_send100:(id)sender { } - (IBAction)test_rate:(UISlider *)sender { - SJBarrageQueueController *controller = (id)_player.barrageQueueController; - if ( controller.configuration.delegate == self ) { + SJDanmakuPopupController *controller = (id)_player.danmakuPopupController; + if ( controller.trackConfiguration.delegate == self ) { // 取消使用代理设置速率 - controller.configuration.delegate = nil; + controller.trackConfiguration.delegate = nil; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"使用代理设置速率已被取消, 已改为手动设置!"); make.textColor(UIColor.whiteColor); }] duration:4]; } - controller.configuration.rate = sender.value; + controller.trackConfiguration.rate = sender.value; } - (IBAction)test_changeBounds1:(id)sender { @@ -88,14 +88,14 @@ - (IBAction)test_changeBounds2:(id)sender { } - (IBAction)test_changeLines:(id)sender { - _player.barrageQueueController.numberOfLines = arc4random() % 5 + 1; + _player.danmakuPopupController.numberOfTracks = arc4random() % 5 + 1; } - (void)_test:(NSInteger)count { NSArray *testtitles = @[@"悲哀化身-内蒙专区", @"车迟国@最终幻想-剑侠风骨车迟国", @"老虎222-天竺国", @"今朝醉-云中殿今朝醉-云中殿今朝醉-云中殿", @"杀手阿七-五明宫杀手阿七-五明宫", @"浅墨淋雨桥-剑胆琴心"]; for ( int i = 0 ; i < count ; ++ i ) { - SJBarrageItem *item = [SJBarrageItem.alloc initWithContent:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + SJDanmakuItem *item = [SJDanmakuItem.alloc initWithContent:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(testtitles[arc4random() % testtitles.count]); make.font([UIFont boldSystemFontOfSize:16]); make.textColor(UIColor.whiteColor); @@ -104,7 +104,7 @@ - (void)_test:(NSInteger)count { make.width = -1; }); }]]; - [self.player.barrageQueueController enqueue:item]; + [self.player.danmakuPopupController enqueue:item]; } } @@ -115,8 +115,9 @@ - (void)_setupViews { _player = SJVideoPlayer.player; _player.videoGravity = AVLayerVideoGravityResizeAspectFill; _player.URLAsset = [SJVideoPlayerURLAsset.alloc initWithURL:SourceURL1]; - _player.view.frame = CGRectMake(0, 0, 375, 375); + _player.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, 375); _player.view.clipsToBounds = YES; + _player.defaultEdgeControlLayer.hiddenBackButtonWhenOrientationIsPortrait = YES; [self.view addSubview:_player.view]; } @@ -127,13 +128,11 @@ - (void)viewDidAppear:(BOOL)animated { - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [self.navigationController setNavigationBarHidden:YES animated:YES]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [self.player vc_viewWillDisappear]; - [self.navigationController setNavigationBarHidden:NO animated:YES]; } - (void)viewDidDisappear:(BOOL)animated { @@ -154,13 +153,13 @@ - (BOOL)prefersHomeIndicatorAutoHidden { #import -@interface SJBarrageTestViewController (RouteHandler) +@interface SJDanmakuTestViewController (RouteHandler) @end -@implementation SJBarrageTestViewController (RouteHandler) +@implementation SJDanmakuTestViewController (RouteHandler) + (NSString *)routePath { - return @"barrage/demo"; + return @"danmaku/demo"; } + (void)handleRequest:(SJRouteRequest *)request topViewController:(UIViewController *)topViewController completionHandler:(SJCompletionHandler)completionHandler { diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Barrage( \345\274\271\345\271\225)/SJBarrageTestViewController.xib" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Danmaku( \345\274\271\345\271\225)/SJDanmakuTestViewController.xib" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Barrage( \345\274\271\345\271\225)/SJBarrageTestViewController.xib" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Danmaku( \345\274\271\345\271\225)/SJDanmakuTestViewController.xib" diff --git a/Example/SJVideoPlayer/Demos/iPhone Demo/GIF Screenshot Export/SJViewController10.m b/Example/SJVideoPlayer/Demos/iPhone Demo/GIF Screenshot Export/SJViewController10.m index cf6535b5d..d9aa7d57f 100644 --- a/Example/SJVideoPlayer/Demos/iPhone Demo/GIF Screenshot Export/SJViewController10.m +++ b/Example/SJVideoPlayer/Demos/iPhone Demo/GIF Screenshot Export/SJViewController10.m @@ -28,7 +28,7 @@ - (void)viewDidLoad { _player.defaultEdgeControlLayer.clipsConfig.saveResultToAlbum = YES; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"请旋转至全屏后, 点击右侧剪辑按钮"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -46,14 +46,14 @@ - (void)_setupViews { }]; __weak typeof(self) _self = self; - _player.controlLayerAppearObserver.appearStateDidChangeExeBlock = ^(id _Nonnull mgr) { + _player.controlLayerAppearObserver.onAppearChanged = ^(id _Nonnull mgr) { __strong typeof(_self) self = _self; if ( !self ) return ; if ( mgr.isAppeared ) { - self.player.promptPopupController.bottomMargin = self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height; + self.player.promptingPopupController.bottomMargin = self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height; } else { - self.player.promptPopupController.bottomMargin = 16; + self.player.promptingPopupController.bottomMargin = 16; } }; } diff --git a/Example/SJVideoPlayer/Demos/iPhone Demo/Keyboard/SJKeyboardDemoViewController1.m b/Example/SJVideoPlayer/Demos/iPhone Demo/Keyboard/SJKeyboardDemoViewController1.m index 0d8668570..550c58c10 100644 --- a/Example/SJVideoPlayer/Demos/iPhone Demo/Keyboard/SJKeyboardDemoViewController1.m +++ b/Example/SJVideoPlayer/Demos/iPhone Demo/Keyboard/SJKeyboardDemoViewController1.m @@ -10,7 +10,7 @@ #import #import #import -#import +#import @protocol SJSendCommentViewControllerDelegate; @@ -80,7 +80,7 @@ - (void)presentCommentVC { - (void)sendComment:(NSString *)text { // 创建一条弹幕 - SJBarrageItem *item = [SJBarrageItem.alloc initWithContent:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + SJDanmakuItem *item = [SJDanmakuItem.alloc initWithContent:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(text ?: @"就开始交罚款劳动竞赛"); make.font([UIFont boldSystemFontOfSize:16]); make.textColor(UIColor.whiteColor); @@ -91,7 +91,7 @@ - (void)sendComment:(NSString *)text { }]]; // 发送一条弹幕, 弹幕将自动显示 - [self.player.barrageQueueController enqueue:item]; + [self.player.danmakuPopupController enqueue:item]; } #pragma mark - diff --git a/Example/SJVideoPlayer/Demos/iPhone Demo/Other/SJViewController11.m b/Example/SJVideoPlayer/Demos/iPhone Demo/Other/SJViewController11.m index 45f40e7cc..3ed5f0b08 100644 --- a/Example/SJVideoPlayer/Demos/iPhone Demo/Other/SJViewController11.m +++ b/Example/SJVideoPlayer/Demos/iPhone Demo/Other/SJViewController11.m @@ -26,7 +26,7 @@ - (void)viewDidLoad { [super viewDidLoad]; [self _setupViews]; // 1. 开启所有手势 - _player.gestureControl.supportedGestureTypes |= SJPlayerGestureTypeMask_LongPress; + _player.gestureController.supportedGestureTypes |= SJPlayerGestureTypeMask_LongPress; // 2. 设置长按播放器界面时的播放速率 _player.rateWhenLongPressGestureTriggered = 2.0; } diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/PlaybackHistory(\346\222\255\346\224\276\350\256\260\345\275\225)/SJPlaybackHistoryViewController.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/PlaybackHistory(\346\222\255\346\224\276\350\256\260\345\275\225)/SJPlaybackHistoryViewController.m" index 07c3184f4..10515c481 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/PlaybackHistory(\346\222\255\346\224\276\350\256\260\345\275\225)/SJPlaybackHistoryViewController.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/PlaybackHistory(\346\222\255\346\224\276\350\256\260\345\275\225)/SJPlaybackHistoryViewController.m" @@ -79,7 +79,7 @@ - (void)viewDidLoad { self.player.URLAsset = asset; // - 如果之前播放过, 这里提示一下用户从上次的位置进行播放 if ( record.position != 0 ) { - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append([NSString stringWithFormat:@"从上次的位置 %@ 处开始播放", [self.player stringForSeconds:record.position]]); make.textColor(UIColor.whiteColor); }] duration:5]; diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Pop Prompt(\345\274\271\347\252\227\346\217\220\347\244\272)/SJViewController6.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Pop Prompt(\345\274\271\347\252\227\346\217\220\347\244\272)/SJViewController6.m" index 418fa1a8b..181d4f82b 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Pop Prompt(\345\274\271\347\252\227\346\217\220\347\244\272)/SJViewController6.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Pop Prompt(\345\274\271\347\252\227\346\217\220\347\244\272)/SJViewController6.m" @@ -45,21 +45,21 @@ - (IBAction)show:(id)sender { /// /// 显示富文本提示 /// - [_player.promptPopupController show:text duration:duration]; + [_player.promptingPopupController show:text duration:duration]; } /// /// 清空所有提示 /// - (IBAction)clear:(id)sender { - [_player.promptPopupController clear]; + [_player.promptingPopupController clear]; } /// /// 显示自定义视图 /// - (IBAction)showCustomView:(id)sender { - [_player.promptPopupController showCustomView:SJPopPromptCustomView.new duration:3]; + [_player.promptingPopupController showCustomView:SJPopPromptCustomView.new duration:3]; } #pragma mark - @@ -74,14 +74,14 @@ - (void)_setupViews { }]; __weak typeof(self) _self = self; - _player.controlLayerAppearObserver.appearStateDidChangeExeBlock = ^(id _Nonnull mgr) { + _player.controlLayerAppearObserver.onAppearChanged = ^(id _Nonnull mgr) { __strong typeof(_self) self = _self; if ( !self ) return ; if ( mgr.isAppeared ) { - self.player.promptPopupController.bottomMargin = self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height + 8; + self.player.promptingPopupController.bottomMargin = self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height + 8; } else { - self.player.promptPopupController.bottomMargin = 16; + self.player.promptingPopupController.bottomMargin = 16; } }; } @@ -105,7 +105,7 @@ @interface SJViewController6 (RouteHandler) @implementation SJViewController6 (RouteHandler) + (NSString *)routePath { - return @"demo/prompt1"; + return @"demo/promptingPopup"; } + (void)handleRequest:(SJRouteRequest *)request topViewController:(UIViewController *)topViewController completionHandler:(SJCompletionHandler)completionHandler { diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Pop Prompt(\345\274\271\347\252\227\346\217\220\347\244\272)/SJViewController8.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Pop Prompt(\345\274\271\347\252\227\346\217\220\347\244\272)/SJViewController8.m" index 9ce2afada..577bcd639 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Pop Prompt(\345\274\271\347\252\227\346\217\220\347\244\272)/SJViewController8.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Pop Prompt(\345\274\271\347\252\227\346\217\220\347\244\272)/SJViewController8.m" @@ -35,14 +35,14 @@ - (IBAction)show:(id)sender { }); // show - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(arr[arc4random() % arr.count]); make.textColor(UIColor.whiteColor); }] duration:arc4random() % 10 + 2]; } - (IBAction)hidden:(id)sender { - [_player.prompt hidden]; + [_player.textPopupController hidden]; } @@ -56,10 +56,10 @@ - (void)_setupViews { }]; __weak typeof(self) _self = self; - _player.controlLayerAppearObserver.appearStateDidChangeExeBlock = ^(id _Nonnull mgr) { + _player.controlLayerAppearObserver.onAppearChanged = ^(id _Nonnull mgr) { __strong typeof(_self) self = _self; if ( !self ) return ; - self.player.promptPopupController.bottomMargin = mgr.isAppeared ? self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height : 16; + self.player.promptingPopupController.bottomMargin = mgr.isAppeared ? self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height : 16; }; } @@ -82,7 +82,7 @@ @interface SJViewController8 (RouteHandler) @implementation SJViewController8 (RouteHandler) + (NSString *)routePath { - return @"demo/prompt2"; + return @"demo/textPopup"; } + (void)handleRequest:(SJRouteRequest *)request topViewController:(UIViewController *)topViewController completionHandler:(SJCompletionHandler)completionHandler { diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJRotationModeDemoViewController1.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJRotationModeDemoViewController1.h" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJRotationModeDemoViewController1.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJRotationModeDemoViewController1.h" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJRotationModeDemoViewController1.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJRotationModeDemoViewController1.m" similarity index 87% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJRotationModeDemoViewController1.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJRotationModeDemoViewController1.m" index bb2fa786a..702ab38ee 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJRotationModeDemoViewController1.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJRotationModeDemoViewController1.m" @@ -58,11 +58,11 @@ - (void)_setupViews { }]; __weak typeof(self) _self = self; - _player.rotationObserver.rotationDidStartExeBlock = ^(id _Nonnull mgr) { + _player.rotationObserver.onRotatingChanged = ^(id _Nonnull mgr, BOOL isRotating) { __strong typeof(_self) self = _self; if ( !self ) return ; #ifdef DEBUG - NSLog(@"%d \t %s", (int)__LINE__, __func__); + NSLog(@"onRotatingChanged: %d \t %s", (int)__LINE__, __func__); #endif }; } @@ -70,7 +70,7 @@ - (void)_setupViews { // 手动开启画中画 - (IBAction)startPiP:(id)sender { - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"画中画模式 请在真机(14.0系统)中测试!"); make.textColor(UIColor.whiteColor); }] duration:5]; @@ -107,13 +107,13 @@ - (IBAction)disableAction:(UISwitch *)sender { _player.rotationManager.disabledAutorotation = sender.isOn; if ( sender.isOn ) { - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已禁止自动旋转. 此时旋转设备, 播放器将不会自动旋转"); make.textColor(UIColor.whiteColor); }] duration:3]; } else { - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已开启自动旋转. 此时旋转设备, 播放器将自动旋转"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -124,7 +124,7 @@ - (IBAction)disableAction:(UISwitch *)sender { - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [self.navigationController setNavigationBarHidden:YES animated:NO]; +// [self.navigationController setNavigationBarHidden:YES animated:NO]; } @@ -138,7 +138,7 @@ - (void)viewDidAppear:(BOOL)animated { - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - [self.navigationController setNavigationBarHidden:NO animated:NO]; +// [self.navigationController setNavigationBarHidden:NO animated:NO]; [_player vc_viewWillDisappear]; } @@ -162,7 +162,7 @@ - (BOOL)prefersHomeIndicatorAutoHidden { - (IBAction)clickedPlayButton:(id)sender { if ( _textField.text.length == 0 ) { - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"请输入播放地址!!"); make.textColor(UIColor.whiteColor); }] duration:5]; diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJRotationModeDemoViewController1.xib" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJRotationModeDemoViewController1.xib" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJRotationModeDemoViewController1.xib" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJRotationModeDemoViewController1.xib" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJView.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJView.h" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJView.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJView.h" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJView.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJView.m" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/1/SJView.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/1/SJView.m" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationMode2ViewModel.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationMode2ViewModel.h" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationMode2ViewModel.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationMode2ViewModel.h" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationMode2ViewModel.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationMode2ViewModel.m" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationMode2ViewModel.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationMode2ViewModel.m" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationModeDemoViewController2.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationModeDemoViewController2.h" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationModeDemoViewController2.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationModeDemoViewController2.h" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationModeDemoViewController2.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationModeDemoViewController2.m" similarity index 99% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationModeDemoViewController2.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationModeDemoViewController2.m" index 796cc4cb7..aab4c9e2f 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationModeDemoViewController2.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationModeDemoViewController2.m" @@ -12,8 +12,6 @@ #import #import -#import "SJRotationManager.h" - @interface SJRotationModeDemoViewController2 () @property (weak, nonatomic) IBOutlet UITableView *tableView; @property (nonatomic, strong, nullable) SJRotationMode2ViewModel *viewModel; diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationModeDemoViewController2.xib" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationModeDemoViewController2.xib" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/2/SJRotationModeDemoViewController2.xib" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/2/SJRotationModeDemoViewController2.xib" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/3/SJRotationModeDemoViewController3.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/3/SJRotationModeDemoViewController3.h" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/3/SJRotationModeDemoViewController3.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/3/SJRotationModeDemoViewController3.h" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/3/SJRotationModeDemoViewController3.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/3/SJRotationModeDemoViewController3.m" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/3/SJRotationModeDemoViewController3.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/3/SJRotationModeDemoViewController3.m" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/3/SJRotationModeDemoViewController3.xib" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/3/SJRotationModeDemoViewController3.xib" similarity index 100% rename from "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/Rotate Player View And View Controller/3/SJRotationModeDemoViewController3.xib" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/Rotation Control(\346\227\213\350\275\254\346\216\247\345\210\266)/3/SJRotationModeDemoViewController3.xib" diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Subtitles(\345\255\227\345\271\225)/SJSubtitlesTestViewController.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Subtitles(\345\255\227\345\271\225)/SJSubtitlesTestViewController.m" index b9e004880..9ffd8deb5 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Subtitles(\345\255\227\345\271\225)/SJSubtitlesTestViewController.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Subtitles(\345\255\227\345\271\225)/SJSubtitlesTestViewController.m" @@ -48,9 +48,9 @@ - (void)_test { } asset.subtitles = subtitles; -// self.player.subtitlesPromptController.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8]; -// self.player.subtitlesPromptController.view.layer.cornerRadius = 5; -// self.player.subtitlesPromptController.contentInsets = UIEdgeInsetsMake(12, 22, 12, 22); +// self.player.subtitlePopupController.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8]; +// self.player.subtitlePopupController.view.layer.cornerRadius = 5; +// self.player.subtitlePopupController.contentInsets = UIEdgeInsetsMake(12, 22, 12, 22); self.player.URLAsset = asset; } diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Switch Video Definition(\345\210\207\346\215\242\346\270\205\346\231\260\345\272\246)/SJViewController7.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Switch Video Definition(\345\210\207\346\215\242\346\270\205\346\231\260\345\272\246)/SJViewController7.m" index c3bbb9b89..79900d263 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Switch Video Definition(\345\210\207\346\215\242\346\270\205\346\231\260\345\272\246)/SJViewController7.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Switch Video Definition(\345\210\207\346\215\242\346\270\205\346\231\260\345\272\246)/SJViewController7.m" @@ -89,10 +89,10 @@ - (void)_setupViews { }]; __weak typeof(self) _self = self; - _player.controlLayerAppearObserver.appearStateDidChangeExeBlock = ^(id _Nonnull mgr) { + _player.controlLayerAppearObserver.onAppearChanged = ^(id _Nonnull mgr) { __strong typeof(_self) self = _self; if ( !self ) return ; - self.player.promptPopupController.bottomMargin = mgr.isAppeared ? self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height : 16; + self.player.promptingPopupController.bottomMargin = mgr.isAppeared ? self.player.defaultEdgeControlLayer.bottomContainerView.bounds.size.height : 16; }; } diff --git "a/Example/SJVideoPlayer/Demos/iPhone Demo/Switching Control Layer(\345\210\207\346\215\242\346\216\247\345\210\266\345\261\202)/SJViewController5.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/Switching Control Layer(\345\210\207\346\215\242\346\216\247\345\210\266\345\261\202)/SJViewController5.m" index 0157d4e6a..e75c48ea7 100644 --- "a/Example/SJVideoPlayer/Demos/iPhone Demo/Switching Control Layer(\345\210\207\346\215\242\346\216\247\345\210\266\345\261\202)/SJViewController5.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/Switching Control Layer(\345\210\207\346\215\242\346\216\247\345\210\266\345\261\202)/SJViewController5.m" @@ -26,7 +26,7 @@ - (void)viewDidLoad { - (IBAction)switchToSJLoadFailedControlLayer:(id)sender { [_player.switcher switchControlLayerForIdentifier:SJControlLayer_LoadFailed]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已切换至 加载失败的控制层"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -36,7 +36,7 @@ - (IBAction)switchToSJLoadFailedControlLayer:(id)sender { - (IBAction)swithToSJClipsControlLayer:(id)sender { [_player.switcher switchControlLayerForIdentifier:SJControlLayer_Clips]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已切换至 剪辑的控制层"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -46,7 +46,7 @@ - (IBAction)swithToSJClipsControlLayer:(id)sender { - (IBAction)switchTOSJFloatSmallViewControlLayer:(id)sender { [_player.switcher switchControlLayerForIdentifier:SJControlLayer_FloatSmallView]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已切换至 小浮窗的控制层 (注: 小浮窗控制层, 目前只有右上角一个按钮)"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -56,7 +56,7 @@ - (IBAction)switchTOSJFloatSmallViewControlLayer:(id)sender { - (IBAction)switchToSJMoreSettingControlLayer:(id)sender { [_player.switcher switchControlLayerForIdentifier:SJControlLayer_More]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已切换至 more控制层"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -66,7 +66,7 @@ - (IBAction)switchToSJMoreSettingControlLayer:(id)sender { - (IBAction)switchToSJNotReachableControlLayer:(id)sender { [_player.switcher switchControlLayerForIdentifier:SJControlLayer_NotReachableAndPlaybackStalled]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已切换至 无网无缓冲时的控制层"); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -76,7 +76,7 @@ - (IBAction)switchToSJNotReachableControlLayer:(id)sender { - (IBAction)switchToSJEdgeControlLayer:(id)sender { [_player.switcher switchControlLayerForIdentifier:SJControlLayer_Edge]; - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"已切换至 默认边缘的控制层"); make.textColor(UIColor.whiteColor); }] duration:3]; diff --git a/Example/SJVideoPlayer/Demos/iPhone Demo/UITableView/SJUITableViewDemoViewController7.m b/Example/SJVideoPlayer/Demos/iPhone Demo/UITableView/SJUITableViewDemoViewController7.m index 34a92b3e5..d65eda381 100644 --- a/Example/SJVideoPlayer/Demos/iPhone Demo/UITableView/SJUITableViewDemoViewController7.m +++ b/Example/SJVideoPlayer/Demos/iPhone Demo/UITableView/SJUITableViewDemoViewController7.m @@ -168,23 +168,18 @@ - (nullable __kindof UIView *)viewForHeaderInPageViewController:(SJPageViewContr __strong typeof(_self) self = _self; if ( !self ) return NO; if ( player.isPlaying ) return YES; - if ( player.isFullScreen ) return YES; + if ( player.isFullscreen ) return YES; return self.topView.isHidden; // 竖屏时, topView显示后, 禁止旋转 }; - _player.rotationObserver.rotationDidStartExeBlock = ^(id _Nonnull mgr) { + _player.rotationObserver.onRotatingChanged = ^(id _Nonnull mgr, BOOL isRotating) { __strong typeof(_self) self = _self; - if ( !self ) return; - self.backButton.hidden = YES; // 开始旋转的时候, 隐藏我们自己的返回按钮 - }; - _player.rotationObserver.rotationDidEndExeBlock = ^(id _Nonnull mgr) { - __strong typeof(_self) self = _self; - if ( !self ) return; - self.backButton.hidden = NO; // 完成旋转的时候, 显示我们自己的返回按钮 + if ( !self ) return ; + self.backButton.hidden = isRotating; // 开始旋转的时候, 隐藏我们自己的返回按钮 }; _player.playbackObserver.timeControlStatusDidChangeExeBlock = ^(__kindof SJBaseVideoPlayer * _Nonnull player) { __strong typeof(_self) self = _self; if ( !self ) return; - [player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(player.isPaused ? @"已暂停" : @"正在播放中"); // 提示 make.textColor(UIColor.whiteColor); }] duration:-1]; diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.h" similarity index 100% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.h" diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.m" similarity index 95% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.m" index 37762ed50..b6f95af2a 100644 --- "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.m" @@ -39,7 +39,7 @@ - (void)viewDidLoad { #else // 切换为 Aliplayer, 详见: https://github.com/changsanjiang/SJVideoPlayer/wiki/Use-AliPlayer - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"请按照指南导入AliPlayer"); make.textColor(UIColor.whiteColor); }] duration:-1]; diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.xib" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.xib" similarity index 100% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.xib" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliViewController3.xib" diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.h" similarity index 100% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.h" diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.m" similarity index 95% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.m" index e712a08af..11147bcbf 100644 --- "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.m" @@ -33,7 +33,7 @@ - (void)viewDidLoad { _player.URLAsset = asset; #else // 切换为 AliVodPlayer, 详见: https://github.com/changsanjiang/SJVideoPlayer/wiki/Use-AliVodPlayer - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"请按照指南导入AliVodPlayer"); make.textColor(UIColor.whiteColor); }] duration:-1]; diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.xib" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.xib" similarity index 100% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.xib" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestAliVodPlayerViewController.xib" diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.h" similarity index 100% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.h" diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.m" similarity index 89% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.m" index 5a5c9393b..021e871d1 100644 --- "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.m" @@ -33,12 +33,12 @@ - (void)viewDidLoad { IJKFFOptions *options = [IJKFFOptions optionsByDefault]; controller.options = options; _player.playbackController = controller; - SJVideoPlayerURLAsset *asset = [SJVideoPlayerURLAsset.alloc initWithURL:VideoURL_Level4]; + SJVideoPlayerURLAsset *asset = [SJVideoPlayerURLAsset.alloc initWithURL:[NSURL URLWithString:@"http://ali-gh.live.5gtv.com.cn//live/XP_CCTV1HD.m3u8?t=1&v=100"]]; // asset.trialEndPosition = 30; // 试看30秒 _player.URLAsset = asset; #else // 切换为 ijkplayer, 详见: https://github.com/changsanjiang/SJVideoPlayer/wiki/Use-ijkplayer - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"请按照指南导入ijkplayer"); make.textColor(UIColor.whiteColor); }] duration:-1]; @@ -62,7 +62,9 @@ - (IBAction)pause:(id)sender { [_player pause]; } - (IBAction)next:(id)sender { - _player.URLAsset = [SJVideoPlayerURLAsset.alloc initWithURL:VideoURL_Level1]; +// _player.URLAsset = [SJVideoPlayerURLAsset.alloc initWithURL:VideoURL_Level1]; + + [_player refresh]; } diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.xib" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.xib" similarity index 100% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.xib" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestIJKViewController2.xib" diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.h" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.h" similarity index 100% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.h" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.h" diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.m" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.m" similarity index 95% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.m" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.m" index 981bfc3eb..ab1211c38 100644 --- "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.m" +++ "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.m" @@ -38,7 +38,7 @@ - (void)viewDidLoad { asset.pl_playerOptions = PLPlayerOption.defaultOption; _player.URLAsset = asset; #else - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"请按照指南导入PLPlayer"); make.textColor(UIColor.whiteColor); }] duration:-1]; diff --git "a/Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.xib" "b/Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.xib" similarity index 100% rename from "Example/SJVideoPlayer/Demos/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.xib" rename to "Example/SJVideoPlayer/Demos/iPhone Demo/\347\254\254\344\270\211\346\226\271\346\222\255\346\224\276\345\231\250/SJTestPLPlayerViewController.xib" diff --git a/Example/SJVideoPlayer/SJAppDelegate.m b/Example/SJVideoPlayer/SJAppDelegate.m index 91e28cc3f..ca021611f 100644 --- a/Example/SJVideoPlayer/SJAppDelegate.m +++ b/Example/SJVideoPlayer/SJAppDelegate.m @@ -7,11 +7,8 @@ // #import "SJAppDelegate.h" -#import "SJVideoPlayer.h" - -@protocol SJTestProtocol -@end - +#import "SJVideoPlayer.h" +#import "SJRotationManager_4.h" @implementation SJAppDelegate + (void)initialize { @@ -30,7 +27,7 @@ + (void)initialize { } - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { - return UIInterfaceOrientationMaskAll; + return window.sj_4_supportedInterfaceOrientations; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { @@ -41,8 +38,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; _window.backgroundColor = [UIColor whiteColor]; - NSString *name = UIUserInterfaceIdiomPhone == UI_USER_INTERFACE_IDIOM()?@"Main":@"iPadMain"; - _window.rootViewController = [[UIStoryboard storyboardWithName:name bundle:nil] instantiateInitialViewController]; + _window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateInitialViewController]; [_window makeKeyAndVisible]; @@ -67,24 +63,13 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( #pragma mark - -#warning Configuring rotation control. 请配置旋转控制! +#warning Configuring rotation. 请配置旋转!! -@implementation UIViewController (RotationControl) +@implementation UIViewController (RotationConfiguration) /// /// 控制器是否可以旋转 /// - (BOOL)shouldAutorotate { - // iPhone的demo用到了播放器的旋转, 这里返回NO, 除播放器外, 项目中的其他视图控制器都禁止旋转 - if ( UIUserInterfaceIdiomPhone == UI_USER_INTERFACE_IDIOM() ) { - return NO; - } - - // iPad的demo未用到播放器的旋转, 这里返回YES, 允许所有控制器旋转 - else if ( UIUserInterfaceIdiomPad == UI_USER_INTERFACE_IDIOM() ) { - return YES; - } - - // 如果你的项目仅支持竖屏, 可以直接返回NO, 无需进行上述的判断区分. return NO; } @@ -92,24 +77,12 @@ - (BOOL)shouldAutorotate { /// 控制器旋转支持的方向 /// - (UIInterfaceOrientationMask)supportedInterfaceOrientations { - // 此处为设置 iPhone demo 仅支持竖屏的方向 - if ( UIUserInterfaceIdiomPhone == UI_USER_INTERFACE_IDIOM() ) { - return UIInterfaceOrientationMaskPortrait; - } - - // 此处为设置 iPad demo 仅支持横屏的方向 - else if ( UIUserInterfaceIdiomPad == UI_USER_INTERFACE_IDIOM() ) { - return UIInterfaceOrientationMaskLandscape; - } - - // 如果你的项目仅支持竖屏, 可以直接返回UIInterfaceOrientationMaskPortrait, 无需进行上述的判断区分. return UIInterfaceOrientationMaskPortrait; } - @end -@implementation UITabBarController (RotationControl) +@implementation UITabBarController (RotationConfiguration) - (UIViewController *)sj_topViewController { if ( self.selectedIndex == NSNotFound ) return self.viewControllers.firstObject; @@ -129,7 +102,7 @@ - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { } @end -@implementation UINavigationController (RotationControl) +@implementation UINavigationController (RotationConfiguration) - (BOOL)shouldAutorotate { return self.topViewController.shouldAutorotate; } diff --git a/Example/SJVideoPlayer/SJVideoPlayer-Info.plist b/Example/SJVideoPlayer/SJVideoPlayer-Info.plist index e3f774110..29b379753 100644 --- a/Example/SJVideoPlayer/SJVideoPlayer-Info.plist +++ b/Example/SJVideoPlayer/SJVideoPlayer-Info.plist @@ -49,10 +49,5 @@ UIInterfaceOrientationPortrait - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - diff --git a/Example/iPadDemo/AppDelegate.h b/Example/iPadDemo/AppDelegate.h new file mode 100644 index 000000000..9470ee059 --- /dev/null +++ b/Example/iPadDemo/AppDelegate.h @@ -0,0 +1,16 @@ +// +// AppDelegate.h +// iPadDemo +// +// Created by 畅三江 on 2022/7/11. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end + diff --git a/Example/iPadDemo/AppDelegate.m b/Example/iPadDemo/AppDelegate.m new file mode 100644 index 000000000..fc1ff2332 --- /dev/null +++ b/Example/iPadDemo/AppDelegate.m @@ -0,0 +1,30 @@ +// +// AppDelegate.m +// iPadDemo +// +// Created by 畅三江 on 2022/7/11. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import "AppDelegate.h" +#import "ViewController.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + + _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + _window.backgroundColor = [UIColor whiteColor]; + _window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateInitialViewController]; + [_window makeKeyAndVisible]; + + // Override point for customization after application launch. + return YES; +} + +@end diff --git a/Example/iPadDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/Example/iPadDemo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 000000000..eb8789700 --- /dev/null +++ b/Example/iPadDemo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/iPadDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/iPadDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..13613e3ee --- /dev/null +++ b/Example/iPadDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/iPadDemo/Assets.xcassets/Contents.json b/Example/iPadDemo/Assets.xcassets/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/Example/iPadDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/iPadDemo/Base.lproj/LaunchScreen.storyboard b/Example/iPadDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..865e9329f --- /dev/null +++ b/Example/iPadDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/iPadDemo/Base.lproj/Main.storyboard b/Example/iPadDemo/Base.lproj/Main.storyboard new file mode 100644 index 000000000..1b5a12b52 --- /dev/null +++ b/Example/iPadDemo/Base.lproj/Main.storyboard @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/iPadDemo/Info.plist b/Example/iPadDemo/Info.plist new file mode 100644 index 000000000..0c67376eb --- /dev/null +++ b/Example/iPadDemo/Info.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/Example/iPadDemo/ViewController.h b/Example/iPadDemo/ViewController.h new file mode 100644 index 000000000..62214fe15 --- /dev/null +++ b/Example/iPadDemo/ViewController.h @@ -0,0 +1,15 @@ +// +// ViewController.h +// iPadDemo +// +// Created by 畅三江 on 2022/7/11. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + +@end + diff --git a/Example/iPadDemo/ViewController.m b/Example/iPadDemo/ViewController.m new file mode 100644 index 000000000..158d33912 --- /dev/null +++ b/Example/iPadDemo/ViewController.m @@ -0,0 +1,70 @@ +// +// ViewController.m +// iPadDemo +// +// Created by 畅三江 on 2022/7/11. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import "ViewController.h" +#import "SJVideoPlayer.h" + +@interface ViewController () +@property (weak, nonatomic) IBOutlet UIView *playerSuperview; +@property (nonatomic, strong) SJVideoPlayer *player; +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + _player = [SJVideoPlayer player]; + _player.onlyFitOnScreen = YES; + + SJVideoPlayerURLAsset *asset = [SJVideoPlayerURLAsset.alloc initWithURL:[NSURL URLWithString:@"https://dh2.v.netease.com/2017/cg/fxtpty.mp4"]]; + asset.title = @"标题 标题 标题 标题 标题 标题 标题 标题 标题 标题 标题"; + _player.URLAsset = asset; + + _player.view.frame = _playerSuperview.bounds; + _player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + [_playerSuperview addSubview:_player.view]; + // Do any additional setup after loading the view. +} + +- (UIStatusBarStyle)preferredStatusBarStyle { + return _player.isFitOnScreen ? UIStatusBarStyleLightContent : UIStatusBarStyleDefault; +} + +- (BOOL)prefersStatusBarHidden { + if ( !_player.fitOnScreenManager.isTransitioning && _player.isFitOnScreen ) { + return !_player.controlLayerAppearManager.isAppeared; + } + return NO; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [_player vc_viewDidAppear]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + [_player vc_viewWillDisappear]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + [_player vc_viewDidDisappear]; +} +@end + +@implementation UINavigationController (StatusBarConfiguration) +- (nullable UIViewController *)childViewControllerForStatusBarStyle { + return self.topViewController; +} + +- (nullable UIViewController *)childViewControllerForStatusBarHidden { + return self.topViewController; +} +@end + diff --git a/Example/iPadDemo/main.m b/Example/iPadDemo/main.m new file mode 100644 index 000000000..35995be57 --- /dev/null +++ b/Example/iPadDemo/main.m @@ -0,0 +1,19 @@ +// +// main.m +// iPadDemo +// +// Created by 畅三江 on 2022/7/11. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + @autoreleasepool { + // Setup code that might create autoreleased objects goes here. + appDelegateClassName = NSStringFromClass([AppDelegate class]); + } + return UIApplicationMain(argc, argv, nil, appDelegateClassName); +} diff --git a/Example/iPadDemoTests/iPadDemoTests.m b/Example/iPadDemoTests/iPadDemoTests.m new file mode 100644 index 000000000..2e6ab7913 --- /dev/null +++ b/Example/iPadDemoTests/iPadDemoTests.m @@ -0,0 +1,37 @@ +// +// iPadDemoTests.m +// iPadDemoTests +// +// Created by 畅三江 on 2022/7/11. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import + +@interface iPadDemoTests : XCTestCase + +@end + +@implementation iPadDemoTests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end diff --git a/Example/iPadDemoUITests/iPadDemoUITests.m b/Example/iPadDemoUITests/iPadDemoUITests.m new file mode 100644 index 000000000..deda24b82 --- /dev/null +++ b/Example/iPadDemoUITests/iPadDemoUITests.m @@ -0,0 +1,47 @@ +// +// iPadDemoUITests.m +// iPadDemoUITests +// +// Created by 畅三江 on 2022/7/11. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import + +@interface iPadDemoUITests : XCTestCase + +@end + +@implementation iPadDemoUITests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + self.continueAfterFailure = NO; + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // UI tests must launch the application that they test. + XCUIApplication *app = [[XCUIApplication alloc] init]; + [app launch]; + + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testLaunchPerformance { + if (@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *)) { + // This measures how long it takes to launch your application. + [self measureWithMetrics:@[[[XCTApplicationLaunchMetric alloc] init]] block:^{ + [[[XCUIApplication alloc] init] launch]; + }]; + } +} + +@end diff --git a/Example/iPadDemoUITests/iPadDemoUITestsLaunchTests.m b/Example/iPadDemoUITests/iPadDemoUITestsLaunchTests.m new file mode 100644 index 000000000..7b61f2090 --- /dev/null +++ b/Example/iPadDemoUITests/iPadDemoUITestsLaunchTests.m @@ -0,0 +1,38 @@ +// +// iPadDemoUITestsLaunchTests.m +// iPadDemoUITests +// +// Created by 畅三江 on 2022/7/11. +// Copyright © 2022 changsanjiang. All rights reserved. +// + +#import + +@interface iPadDemoUITestsLaunchTests : XCTestCase + +@end + +@implementation iPadDemoUITestsLaunchTests + ++ (BOOL)runsForEachTargetApplicationUIConfiguration { + return YES; +} + +- (void)setUp { + self.continueAfterFailure = NO; +} + +- (void)testLaunch { + XCUIApplication *app = [[XCUIApplication alloc] init]; + [app launch]; + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + XCTAttachment *attachment = [XCTAttachment attachmentWithScreenshot:XCUIScreen.mainScreen.screenshot]; + attachment.name = @"Launch Screen"; + attachment.lifetime = XCTAttachmentLifetimeKeepAlways; + [self addAttachment:attachment]; +} + +@end diff --git a/Omni/.DS_Store b/Omni/.DS_Store new file mode 100644 index 000000000..16d1b2479 Binary files /dev/null and b/Omni/.DS_Store differ diff --git a/SJVideoPlayer.podspec b/SJVideoPlayer.podspec index b7cdb5643..b23f19f89 100644 --- a/SJVideoPlayer.podspec +++ b/SJVideoPlayer.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'SJVideoPlayer' - s.version = '3.3.3' + s.version = '3.4.0' s.summary = 'video player.' s.description = 'https://github.com/changsanjiang/SJVideoPlayer/blob/master/README.md' s.homepage = 'https://github.com/changsanjiang/SJVideoPlayer' @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.platform = :ios, '9.0' s.source = { :git => 'https://github.com/changsanjiang/SJVideoPlayer.git', :tag => "v#{s.version}" } s.requires_arc = true - s.dependency 'SJBaseVideoPlayer', '>= 3.6.0' + s.dependency 'SJBaseVideoPlayer', '>= 3.7.0' s.source_files = 'SJVideoPlayer/*.{h,m}' diff --git a/SJVideoPlayer/Common/Configs/SJVideoPlayerConfigurations.m b/SJVideoPlayer/Common/Configs/SJVideoPlayerConfigurations.m index 7422c2e7c..bd45813b5 100644 --- a/SJVideoPlayer/Common/Configs/SJVideoPlayerConfigurations.m +++ b/SJVideoPlayer/Common/Configs/SJVideoPlayerConfigurations.m @@ -128,8 +128,8 @@ @interface SJVideoPlayerControlLayerResources : NSObject -#import +#import NS_ASSUME_NONNULL_BEGIN @protocol SJSpeedupPlaybackPopupView diff --git a/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItem.h b/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItem.h index 0e7389117..eb960b0c4 100644 --- a/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItem.h +++ b/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItem.h @@ -7,7 +7,7 @@ // #import -#import +#import typedef NSInteger SJEdgeControlButtonItemTag; @class SJBaseVideoPlayer, SJEdgeControlButtonItemAction; diff --git a/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemAdapter.h b/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemAdapter.h index 4116fd41a..07111dd80 100644 --- a/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemAdapter.h +++ b/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemAdapter.h @@ -33,6 +33,7 @@ NS_ASSUME_NONNULL_BEGIN - (nullable SJEdgeControlButtonItem *)itemAtIndex:(NSInteger)index; - (nullable SJEdgeControlButtonItem *)itemForTag:(SJEdgeControlButtonItemTag)tag; - (NSInteger)indexOfItemForTag:(SJEdgeControlButtonItemTag)tag; +- (NSInteger)indexOfItem:(SJEdgeControlButtonItem *)item; - (nullable NSArray *)itemsWithRange:(NSRange)range; - (BOOL)isHiddenWithRange:(NSRange)range; // 此范围的items是否已隐藏 - (BOOL)itemContainsPoint:(CGPoint)point; // 某个点是否在item中 diff --git a/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemAdapter.m b/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemAdapter.m index fcaeed460..025d0d18b 100644 --- a/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemAdapter.m +++ b/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemAdapter.m @@ -78,6 +78,10 @@ - (NSInteger)indexOfItemForTag:(SJEdgeControlButtonItemTag)tag { return index; } +- (NSInteger)indexOfItem:(SJEdgeControlButtonItem *)item { + return [_items indexOfObject:item]; +} + - (nullable NSArray *)itemsWithRange:(NSRange)range { return NSMaxRange(range) <= _items.count ? [_items subarrayWithRange:range] : nil; } @@ -264,18 +268,24 @@ - (void)layoutSubviews { - (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event { SJEdgeControlButtonItem *_Nullable item = [self itemAtPoint:point]; - if ( item == nil ) - return NO; - - if ( item.isHidden == YES || item.alpha < 0.01 ) - return NO; - - if ( item.customView == nil && item.actions == nil ) - return NO; - + if ( item != nil ) { + NSInteger index = [self indexOfItem:item]; + SJEdgeControlButtonItemView *view = _views[index]; + if ( index != NSNotFound ) return [view pointInside:[self convertPoint:point toView:view] withEvent:event]; + } return [super pointInside:point withEvent:event]; } +- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event { + SJEdgeControlButtonItem *_Nullable item = [self itemAtPoint:point]; + if ( item != nil ) { + NSInteger index = [self indexOfItem:item]; + SJEdgeControlButtonItemView *view = _views[index]; + if ( index != NSNotFound ) return [view hitTest:[self convertPoint:point toView:view] withEvent:event]; + } + return [super hitTest:point withEvent:event]; +} + #pragma mark - diff --git a/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemView.m b/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemView.m index 4e6dc9b21..357f7c47b 100644 --- a/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemView.m +++ b/SJVideoPlayer/Common/Utils/Adapters/Core/SJEdgeControlButtonItemView.m @@ -8,20 +8,12 @@ #import "SJEdgeControlButtonItemView.h" -NS_ASSUME_NONNULL_BEGIN @interface _SJItemCustomViewContainerView : UIView - (nullable __kindof UIView *)customView; @end @implementation _SJItemCustomViewContainerView -- (void)layoutSubviews { - [super layoutSubviews]; - for ( UIView *subview in self.subviews ) { - subview.frame = self.bounds; - } -} - - (void)removeCustomView { UIView *_Nullable customView = self.customView; if ( customView != nil ) { @@ -32,6 +24,8 @@ - (void)removeCustomView { - (void)addCustomView:(UIView *)customView { if ( self.customView != customView ) { [self removeCustomView]; + customView.frame = self.bounds; + customView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self addSubview:customView]; } } @@ -61,6 +55,23 @@ - (instancetype)initWithFrame:(CGRect)frame { return self; } +- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event { + if ( [super pointInside:point withEvent:event] ) { + return [self _shouldPerformAction]; + } + return NO; +} + +- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event { + if ( [self pointInside:point withEvent:event] ) { + if ( _item.customView != nil && _item.actions == nil ) { + return [_item.customView hitTest:[self convertPoint:point toView:_item.customView] withEvent:event]; + } + return self; + } + return [super hitTest:point withEvent:event]; +} + - (void)performAction { [_item performActions]; } @@ -97,6 +108,7 @@ - (void)reloadItemIfNeeded { } else { _containerView = [_SJItemCustomViewContainerView.alloc initWithFrame:self.bounds]; + _containerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self addSubview:_containerView]; } @@ -112,6 +124,7 @@ - (void)reloadItemIfNeeded { else { _itemImageView = [[UIImageView alloc] initWithFrame:self.bounds]; _itemImageView.contentMode = UIViewContentModeCenter; + _itemImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self addSubview:_itemImageView]; } @@ -128,6 +141,7 @@ - (void)reloadItemIfNeeded { } else { _itemTitleLabel = [[UILabel alloc] initWithFrame:self.bounds]; + _itemTitleLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self addSubview:_itemTitleLabel]; } @@ -145,11 +159,16 @@ - (void)reloadItemIfNeeded { #pragma mark - -- (void)layoutSubviews { - [super layoutSubviews]; - for ( UIView *subview in self.subviews ) { - subview.frame = self.bounds; - } +- (BOOL)_shouldPerformAction { + if ( _item == nil ) + return NO; + + if ( _item.isHidden == YES || _item.alpha < 0.01 ) + return NO; + + if ( _item.customView == nil && _item.actions == nil ) + return NO; + + return YES; } @end -NS_ASSUME_NONNULL_END diff --git a/SJVideoPlayer/Common/Utils/Adapters/SJEdgeControlLayerAdapters.h b/SJVideoPlayer/Common/Utils/Adapters/SJEdgeControlLayerAdapters.h index 373d78950..3e2898324 100644 --- a/SJVideoPlayer/Common/Utils/Adapters/SJEdgeControlLayerAdapters.h +++ b/SJVideoPlayer/Common/Utils/Adapters/SJEdgeControlLayerAdapters.h @@ -14,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN struct SJ_Screen { CGFloat max; CGFloat min; - BOOL is_iPhoneX; + BOOL is_iPhoneXSeries; }; @interface SJEdgeControlLayerAdapters : UIView { @@ -52,7 +52,7 @@ struct SJ_Screen { @property (nonatomic) BOOL autoAdjustTopSpacing; // 自动调整顶部间距, 让出状态栏 /// default is Yes. -@property (nonatomic) BOOL autoAdjustLayoutWhenDeviceIsiPhoneX; // 自动调整布局, 如果是iPhone X +@property (nonatomic) BOOL autoAdjustLayoutWhenDeviceIsIPhoneXSeries; // 自动调整布局, 如果是iPhone X #ifdef DEBUG @property (nonatomic) BOOL showBackgroundColor; diff --git a/SJVideoPlayer/Common/Utils/Adapters/SJEdgeControlLayerAdapters.m b/SJVideoPlayer/Common/Utils/Adapters/SJEdgeControlLayerAdapters.m index 3e71ce445..85ab9bccc 100644 --- a/SJVideoPlayer/Common/Utils/Adapters/SJEdgeControlLayerAdapters.m +++ b/SJVideoPlayer/Common/Utils/Adapters/SJEdgeControlLayerAdapters.m @@ -21,6 +21,18 @@ #import "SJEdgeControlLayerAdapters.h" NS_ASSUME_NONNULL_BEGIN + +FOUNDATION_STATIC_INLINE BOOL +_isIPhoneXSeries(void) { + if (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPhone) { + if ( @available(iOS 11.0, *) ) { + UIWindow *window = [UIApplication sharedApplication].delegate.window; + return window.safeAreaInsets.bottom > 0.0; + } + } + return NO; +} + @interface SJEdgeControlLayerAdapters () @property (nonatomic, readonly) BOOL isFitOnScreen; @end @@ -37,16 +49,14 @@ - (instancetype)initWithFrame:(CGRect)frame { CGFloat screenH = UIScreen.mainScreen.bounds.size.height; CGFloat max = MAX(screenW, screenH); CGFloat min = MIN(screenW, screenH); - BOOL is_iPhoneX = (((float)((int)(min / max * 100))) / 100) == - (((float)((int)(1125.0 / 2436 * 100))) / 100); - _screen = (struct SJ_Screen){max, min, is_iPhoneX}; + _screen = (struct SJ_Screen){max, min, _isIPhoneXSeries()}; _topHeight = _leftWidth = _bottomHeight = _rightWidth = 49; _topMargin = 4; - [self _observeOrientationChangeOfStatusBarNotify]; + [self _observeNotifies]; self.autoAdjustTopSpacing = YES; - self.autoAdjustLayoutWhenDeviceIsiPhoneX = YES; + self.autoAdjustLayoutWhenDeviceIsIPhoneXSeries = YES; return self; } @@ -55,18 +65,31 @@ - (void)dealloc { } - (BOOL)isFitOnScreen { - return (_screen.min == self.bounds.size.width) && (_screen.max == self.bounds.size.height); + return ( _screen.min == self.bounds.size.width && _screen.max == self.bounds.size.height ) || + ( _screen.min == self.bounds.size.height && _screen.max == self.bounds.size.width ); } -- (void)layoutSubviews { - [super layoutSubviews]; - [self _updateLayoutIfNeeded]; - _centerAdapter.itemFillSizeForFrameLayout = self.bounds.size; +- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event { + UIView *view = [super hitTest:point withEvent:event]; + /// 自身不消费事件, 由子视图消费; + return view == self ? nil : view; +} + +- (void)setFrame:(CGRect)frame { + [super setFrame:frame]; + [self _updateLayout]; } -- (void)_updateLayoutIfNeeded { +- (void)setBounds:(CGRect)bounds { + [super setBounds:bounds]; + [self _updateLayout]; +} + +- (void)_updateLayout { + _centerAdapter.itemFillSizeForFrameLayout = self.bounds.size; + CGRect curr = self.bounds; - if ( _screen.is_iPhoneX && _autoAdjustLayoutWhenDeviceIsiPhoneX ) { + if ( _screen.is_iPhoneXSeries && _autoAdjustLayoutWhenDeviceIsIPhoneXSeries ) { if ( !CGRectEqualToRect(_beforeBounds, curr) ) { CGFloat viewW = curr.size.width; CGFloat viewH = curr.size.height; @@ -74,7 +97,7 @@ - (void)_updateLayoutIfNeeded { BOOL isFullscreen = (viewW == _screen.max) && (viewH == _screen.min); if ( isFullscreen ) { - [self _updateLayout_isFullScreen_iPhone_X]; + [self _updateLayout_isFullscreen_iPhone_X]; } else { [self _updateLayout_isNormal_iPhone_X]; @@ -85,6 +108,12 @@ - (void)_updateLayoutIfNeeded { [self _updateTopLayout:nil]; } _beforeBounds = curr; + + if ( self.window != nil ) { + [UIView animateWithDuration:0.3 animations:^{ + [self layoutIfNeeded]; + }]; + } } - (void)_updateLayout_isNormal_iPhone_X { @@ -123,7 +152,7 @@ - (void)_updateLayout_isNormal_iPhone_X { } } -- (void)_updateLayout_isFullScreen_iPhone_X { +- (void)_updateLayout_isFullscreen_iPhone_X { if (@available(iOS 11.0, *)) { CGFloat safeWidth = ceil(_screen.min * 16 / 9.0); CGFloat safeLeftMargin = ceil((_screen.max - safeWidth) * 0.5); @@ -168,7 +197,7 @@ - (void)_updateLayout_isFullScreen_iPhone_X { } } -- (void)_observeOrientationChangeOfStatusBarNotify { +- (void)_observeNotifies { __weak typeof(self) _self = self; _notifyToken = [NSNotificationCenter.defaultCenter addObserverForName:UIApplicationWillChangeStatusBarOrientationNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { __strong typeof(_self) self = _self; @@ -179,7 +208,7 @@ - (void)_observeOrientationChangeOfStatusBarNotify { - (void)_updateTopLayout:(nullable NSNotification *)notify { if ( !_topAdapter ) return; - if ( _screen.is_iPhoneX && _autoAdjustLayoutWhenDeviceIsiPhoneX ) return; + if ( _screen.is_iPhoneXSeries && _autoAdjustLayoutWhenDeviceIsIPhoneXSeries ) return; [UIView animateWithDuration:0 animations:^{} completion:^(BOOL finished) { UIInterfaceOrientation orientation = notify?[notify.userInfo[UIApplicationStatusBarOrientationUserInfoKey] integerValue]: UIApplication.sharedApplication.statusBarOrientation; switch ( orientation ) { @@ -192,7 +221,7 @@ - (void)_updateTopLayout:(nullable NSNotification *)notify { make.left.equalTo(self.topContainerView.mas_safeAreaLayoutGuideLeft); make.right.equalTo(self.topContainerView.mas_safeAreaLayoutGuideRight); } else { - make.top.offset(self.topMargin + ((self.isFitOnScreen && self.autoAdjustTopSpacing)?20:0)); + make.top.offset(self.topMargin + ((self.isFitOnScreen && self.autoAdjustTopSpacing) ? 20 : 0)); make.left.right.offset(0); } make.bottom.offset(0); @@ -203,7 +232,7 @@ - (void)_updateTopLayout:(nullable NSNotification *)notify { case UIInterfaceOrientationLandscapeLeft: case UIInterfaceOrientationLandscapeRight: { [self.topAdapter.view mas_remakeConstraints:^(MASConstraintMaker *make) { - make.top.offset(self.topMargin + (self.autoAdjustTopSpacing?20:0)); // 统一 20 + make.top.offset(self.topMargin + (self.isFitOnScreen && self.autoAdjustTopSpacing ? 20 : 0)); // 统一 20 if (@available(iOS 11.0, *)) { make.left.equalTo(self.topContainerView.mas_safeAreaLayoutGuideLeft); make.right.equalTo(self.topContainerView.mas_safeAreaLayoutGuideRight); @@ -430,7 +459,7 @@ - (void)setRightWidth:(CGFloat)rightWidth { - (void)setTopMargin:(CGFloat)topMargin { _topMargin = topMargin; - [self _updateLayoutIfNeeded]; + [self _updateLayout]; } - (void)setLeftMargin:(CGFloat)leftMargin { diff --git a/SJVideoPlayer/Common/Utils/SJVideoPlayerControlMaskView.m b/SJVideoPlayer/Common/Utils/SJVideoPlayerControlMaskView.m index ffbbd94f3..9b82a7c1d 100755 --- a/SJVideoPlayer/Common/Utils/SJVideoPlayerControlMaskView.m +++ b/SJVideoPlayer/Common/Utils/SJVideoPlayerControlMaskView.m @@ -44,4 +44,7 @@ - (void)cleanColors { maskGradientLayer.colors = nil; } +- (void)layoutSubviews { + [super layoutSubviews]; +} @end diff --git a/SJVideoPlayer/ControlLayers/SJClipsControlLayer/Core/ControlLayer/SJClipsResultsControlLayer.m b/SJVideoPlayer/ControlLayers/SJClipsControlLayer/Core/ControlLayer/SJClipsResultsControlLayer.m index cd24f2087..b9352497e 100644 --- a/SJVideoPlayer/ControlLayers/SJClipsControlLayer/Core/ControlLayer/SJClipsResultsControlLayer.m +++ b/SJVideoPlayer/ControlLayers/SJClipsControlLayer/Core/ControlLayer/SJClipsResultsControlLayer.m @@ -120,7 +120,7 @@ - (void)_getScreenshot:(void(^)(UIImage *_Nullable img))block { if ( block ) block(self.player.screenshot); } else { - [self.player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [self.player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(@"处理中"); make.textColor(UIColor.whiteColor); }] duration:-1]; @@ -128,7 +128,7 @@ - (void)_getScreenshot:(void(^)(UIImage *_Nullable img))block { [self.player screenshotWithTime:self.player.currentTime completion:^(__kindof SJBaseVideoPlayer * _Nonnull videoPlayer, UIImage * _Nullable image, NSError * _Nullable error) { __strong typeof(_self) self = _self; if ( !self ) return; - [videoPlayer.prompt hidden]; + [videoPlayer.textPopupController hidden]; if ( block ) block(image); }]; } @@ -216,7 +216,7 @@ - (void)_results { [self _uploadResultIfNeeded]; if ( self.parameters.saveResultToAlbum ) { - [self.player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [self.player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(strings.albumSavingScreenshotToAlbumPrompt); make.textColor(UIColor.whiteColor); }] duration:-1]; @@ -224,7 +224,7 @@ - (void)_results { __strong typeof(_self) self = _self; if ( !self ) return ; if ( r ) { - [self.player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [self.player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(strings.albumSavedToAlbumPrompt); make.textColor(UIColor.whiteColor); }]]; @@ -233,7 +233,7 @@ - (void)_results { } } else { - [self.player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [self.player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(failed.toString); make.textColor(UIColor.whiteColor); }]]; @@ -426,7 +426,7 @@ - (void)_handleClickedShareItemEvent:(SJClipsResultShareItem *)item { case SJClipsExportStateUnknown: case SJClipsExportStateCancelled: return; case SJClipsExportStateFailed: { - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(strings.exportsExportFailedPrompt); make.textColor(UIColor.whiteColor); }]]; @@ -434,7 +434,7 @@ - (void)_handleClickedShareItemEvent:(SJClipsResultShareItem *)item { return; case SJClipsExportStateExporting: { - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(strings.exportsExportingPrompt); make.textColor(UIColor.whiteColor); }]]; @@ -452,7 +452,7 @@ - (void)_handleClickedShareItemEvent:(SJClipsResultShareItem *)item { case SJClipsResultUploadStateUnknown: break; case SJClipsResultUploadStateCancelled: break; case SJClipsResultUploadStateFailed: { - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(strings.uploadsUploadFailedPrompt); make.textColor(UIColor.whiteColor); }]]; @@ -463,7 +463,7 @@ - (void)_handleClickedShareItemEvent:(SJClipsResultShareItem *)item { } break; case SJClipsResultUploadStateUploading: { - [_player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(strings.uploadsUploadingPrompt); make.textColor(UIColor.whiteColor); }]]; @@ -563,7 +563,7 @@ - (SJBaseVideoPlayer *)exportedVideoPlayer { for ( UIView *view in _exportedVideoPlayer.view.subviews ) { view.backgroundColor = [UIColor clearColor]; } - _exportedVideoPlayer.gestureControl.supportedGestureTypes = SJPlayerGestureTypeMask_None; + _exportedVideoPlayer.gestureController.supportedGestureTypes = SJPlayerGestureTypeMask_None; _exportedVideoPlayer.rotationManager.disabledAutorotation = YES; _exportedVideoPlayer.playbackObserver.playbackDidFinishExeBlock = ^(SJBaseVideoPlayer * _Nonnull player) { [player replay]; diff --git a/SJVideoPlayer/ControlLayers/SJClipsControlLayer/SJClipsControlLayer.m b/SJVideoPlayer/ControlLayers/SJClipsControlLayer/SJClipsControlLayer.m index b990719c7..b47239e31 100644 --- a/SJVideoPlayer/ControlLayers/SJClipsControlLayer/SJClipsControlLayer.m +++ b/SJVideoPlayer/ControlLayers/SJClipsControlLayer/SJClipsControlLayer.m @@ -91,7 +91,7 @@ - (void)exportGIFItemWasTapped { - (void)_start:(SJVideoPlayerClipsOperation)operation { if ( _player.assetStatus != SJAssetStatusReadyToPlay ) { - [self.player.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [self.player.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(SJVideoPlayerConfigurations.shared.localizedStrings.operationFailedPrompt); make.textColor(UIColor.whiteColor); }]]; diff --git a/SJVideoPlayer/ControlLayers/SJEdgeControlLayer/SJEdgeControlLayer.h b/SJVideoPlayer/ControlLayers/SJEdgeControlLayer/SJEdgeControlLayer.h index dc90db36d..3a462781f 100644 --- a/SJVideoPlayer/ControlLayers/SJEdgeControlLayer/SJEdgeControlLayer.h +++ b/SJVideoPlayer/ControlLayers/SJEdgeControlLayer/SJEdgeControlLayer.h @@ -113,17 +113,10 @@ NS_ASSUME_NONNULL_BEGIN /// @property (nonatomic) BOOL automaticallyPerformRotationOrFitOnScreen; -/// -/// 是否仅在竖屏全屏与竖屏小屏之间切换, 不触发旋转. -/// -/// 设置为YES后, 将会禁止旋转. -/// -@property (nonatomic) BOOL onlyUsedFitOnScreen; - /// /// 处于小屏时, 当点击全屏按钮后, 是否先竖屏撑满全屏. /// -@property (nonatomic) BOOL usesFitOnScreenFirst; +@property (nonatomic) BOOL needsFitOnScreenFirst; @property (nonatomic, weak, nullable) id delegate; @end diff --git a/SJVideoPlayer/ControlLayers/SJEdgeControlLayer/SJEdgeControlLayer.m b/SJVideoPlayer/ControlLayers/SJEdgeControlLayer/SJEdgeControlLayer.m index 2181c6a9a..da2072bcd 100644 --- a/SJVideoPlayer/ControlLayers/SJEdgeControlLayer/SJEdgeControlLayer.m +++ b/SJVideoPlayer/ControlLayers/SJEdgeControlLayer/SJEdgeControlLayer.m @@ -41,9 +41,7 @@ #pragma mark - Top -@interface SJEdgeControlLayer () { - CGSize _previousSize; -} +@interface SJEdgeControlLayer () @property (nonatomic, weak, nullable) SJBaseVideoPlayer *videoPlayer; @property (nonatomic, strong, readonly) SJTimerControl *lockStateTappedTimerControl; @@ -56,6 +54,8 @@ @interface SJEdgeControlLayer () { @property (nonatomic, strong, nullable) id reachabilityObserver; @property (nonatomic, strong, readonly) SJTimerControl *dateTimerControl API_AVAILABLE(ios(11.0)); // refresh date for custom status bar @property (nonatomic, strong, readonly) SJEdgeControlButtonItem *pictureInPictureItem API_AVAILABLE(ios(14.0)); + +@property (nonatomic) BOOL usesFitOnScreen; @end @implementation SJEdgeControlLayer @@ -81,17 +81,6 @@ - (void)dealloc { [NSNotificationCenter.defaultCenter removeObserver:self]; } -- (void)layoutSubviews { - [super layoutSubviews]; - if ( !CGSizeEqualToSize(_previousSize, self.bounds.size) ) { - if (@available(iOS 11.0, *)) { - [self _updateAppearStateForCustomStatusBar]; - } - [self _updateLayoutForBottomProgressIndicator]; - } - _previousSize = self.bounds.size; -} - #pragma mark - /// @@ -144,12 +133,12 @@ - (void)_playItemWasTapped { } - (void)_fullItemWasTapped { - if ( _onlyUsedFitOnScreen ) { + if ( _videoPlayer.onlyFitOnScreen || _usesFitOnScreen ) { [_videoPlayer setFitOnScreen:!_videoPlayer.isFitOnScreen]; return; } - if ( _usesFitOnScreenFirst && !_videoPlayer.isFitOnScreen ) { + if ( _needsFitOnScreenFirst && !_videoPlayer.isFitOnScreen ) { [_videoPlayer setFitOnScreen:YES]; return; } @@ -238,7 +227,7 @@ - (void)controlLayerNeedAppear:(__kindof SJBaseVideoPlayer *)videoPlayer { if ( videoPlayer.isLockedScreen ) return; - [self _updateAppearStateForResidentBackButtonIfNeeded]; + [self _updateAppearStateForFixedBackButtonIfNeeded]; [self _updateAppearStateForContainerViews]; [self _reloadAdaptersIfNeeded]; [self _updateContentForBottomCurrentTimeItemIfNeeded]; @@ -253,18 +242,19 @@ - (void)controlLayerNeedDisappear:(__kindof SJBaseVideoPlayer *)videoPlayer { if ( videoPlayer.isLockedScreen ) return; - [self _updateAppearStateForResidentBackButtonIfNeeded]; + [self _updateAppearStateForFixedBackButtonIfNeeded]; [self _updateAppearStateForContainerViews]; [self _updateAppearStateForBottomProgressIndicatorIfNeeded]; } - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer prepareToPlay:(SJVideoPlayerURLAsset *)asset { + _usesFitOnScreen = NO; [self _reloadSizeForBottomTimeLabel]; [self _updateContentForBottomDurationItemIfNeeded]; [self _updateContentForBottomCurrentTimeItemIfNeeded]; [self _updateContentForBottomProgressSliderItemIfNeeded]; [self _updateContentForBottomProgressIndicatorIfNeeded]; - [self _updateAppearStateForResidentBackButtonIfNeeded]; + [self _updateAppearStateForFixedBackButtonIfNeeded]; [self _updateAppearStateForBottomProgressIndicatorIfNeeded]; [self _reloadAdaptersIfNeeded]; [self _showOrHiddenLoadingView]; @@ -276,6 +266,7 @@ - (void)videoPlayerPlaybackStatusDidChange:(__kindof SJBaseVideoPlayer *)videoPl [self _updateContentForBottomCurrentTimeItemIfNeeded]; [self _updateContentForBottomDurationItemIfNeeded]; [self _updateContentForBottomProgressIndicatorIfNeeded]; + [self _updateContentForBottomProgressSliderItemIfNeeded]; } - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer pictureInPictureStatusDidChange:(SJPictureInPictureStatus)status API_AVAILABLE(ios(14.0)) { @@ -333,22 +324,28 @@ - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer playbackTypeDidCha } - (BOOL)canTriggerRotationOfVideoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer { - if ( _onlyUsedFitOnScreen ) - return NO; - if ( _usesFitOnScreenFirst ) + if ( _needsFitOnScreenFirst ) return videoPlayer.isFitOnScreen; return YES; } - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer willRotateView:(BOOL)isFull { - [self _updateAppearStateForResidentBackButtonIfNeeded]; + [self _updateAppearStateForBottomProgressIndicatorIfNeeded]; + [self _updateAppearStateForFixedBackButtonIfNeeded]; + [self _updateAppearStateForContainerViews]; + [self _reloadAdaptersIfNeeded]; +} + +- (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer didEndRotation:(BOOL)isFull { + [self _updateAppearStateForBottomProgressIndicatorIfNeeded]; + [self _updateAppearStateForFixedBackButtonIfNeeded]; [self _updateAppearStateForContainerViews]; [self _reloadAdaptersIfNeeded]; } - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer willFitOnScreen:(BOOL)isFitOnScreen { - [self _updateAppearStateForResidentBackButtonIfNeeded]; + [self _updateAppearStateForFixedBackButtonIfNeeded]; [self _updateAppearStateForContainerViews]; [self _reloadAdaptersIfNeeded]; } @@ -430,8 +427,8 @@ - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer longPressGestureSt } - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer presentationSizeDidChange:(CGSize)size { - if ( _automaticallyPerformRotationOrFitOnScreen && !videoPlayer.isFullScreen && !videoPlayer.isFitOnScreen ) { - _onlyUsedFitOnScreen = size.width < size.height; + if ( _automaticallyPerformRotationOrFitOnScreen && !videoPlayer.isFullscreen && !videoPlayer.isFitOnScreen ) { + _usesFitOnScreen = size.width < size.height; } } @@ -449,7 +446,7 @@ - (void)tappedPlayerOnTheLockedState:(__kindof SJBaseVideoPlayer *)videoPlayer { } - (void)lockedVideoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer { - [self _updateAppearStateForResidentBackButtonIfNeeded]; + [self _updateAppearStateForFixedBackButtonIfNeeded]; [self _updateAppearStateForBottomProgressIndicatorIfNeeded]; [self _updateAppearStateForContainerViews]; [self _reloadAdaptersIfNeeded]; @@ -471,14 +468,14 @@ - (void)videoPlayer:(SJBaseVideoPlayer *)videoPlayer reachabilityChanged:(SJNetw switch ( status ) { case SJNetworkStatus_NotReachable: { - [_videoPlayer.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_videoPlayer.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(SJVideoPlayerConfigurations.shared.localizedStrings.unstableNetworkPrompt); make.textColor(UIColor.whiteColor); }] duration:3]; } break; case SJNetworkStatus_ReachableViaWWAN: { - [_videoPlayer.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [_videoPlayer.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(SJVideoPlayerConfigurations.shared.localizedStrings.cellularNetworkPrompt); make.textColor(UIColor.whiteColor); }] duration:3]; @@ -497,6 +494,14 @@ - (NSString *)stringForSeconds:(NSInteger)secs { #pragma mark - +- (void)setHiddenBackButtonWhenOrientationIsPortrait:(BOOL)hiddenBackButtonWhenOrientationIsPortrait { + if ( _hiddenBackButtonWhenOrientationIsPortrait != hiddenBackButtonWhenOrientationIsPortrait ) { + _hiddenBackButtonWhenOrientationIsPortrait = hiddenBackButtonWhenOrientationIsPortrait; + [self _updateAppearStateForFixedBackButtonIfNeeded]; + [self _reloadTopAdapterIfNeeded]; + } +} + - (void)setFixesBackItem:(BOOL)fixesBackItem { if ( fixesBackItem == _fixesBackItem ) return; @@ -509,7 +514,7 @@ - (void)setFixesBackItem:(BOOL)fixesBackItem { make.width.equalTo(self.topAdapter.view.mas_height); }]; - [self _updateAppearStateForResidentBackButtonIfNeeded]; + [self _updateAppearStateForFixedBackButtonIfNeeded]; [self _reloadTopAdapterIfNeeded]; } else { @@ -579,7 +584,7 @@ - (void)setShouldShowCustomStatusBar:(BOOL (^)(SJEdgeControlLayer * _Nonnull))sh [self _updateAppearStateForCustomStatusBar]; } -- (void)setspeedupPlaybackPopupView:(UIView *)speedupPlaybackPopupView { +- (void)setSpeedupPlaybackPopupView:(UIView *)speedupPlaybackPopupView { if ( _speedupPlaybackPopupView != speedupPlaybackPopupView ) { [_speedupPlaybackPopupView removeFromSuperview]; _speedupPlaybackPopupView = speedupPlaybackPopupView; @@ -593,15 +598,6 @@ - (void)setAutomaticallyShowsPictureInPictureItem:(BOOL)automaticallyShowsPictur } } -- (void)setOnlyUsedFitOnScreen:(BOOL)onlyUsedFitOnScreen { - if ( onlyUsedFitOnScreen != _onlyUsedFitOnScreen ) { - _onlyUsedFitOnScreen = onlyUsedFitOnScreen; - if ( _onlyUsedFitOnScreen ) { - _automaticallyPerformRotationOrFitOnScreen = NO; - } - } -} - #pragma mark - setup view - (void)_setupView { @@ -644,6 +640,8 @@ - (SJProgressSlider *)bottomProgressIndicator { UIColor *trackColor = sources.bottomIndicatorTrackColor ?: sources.progressTrackColor; _bottomProgressIndicator.traceImageView.backgroundColor = traceColor; _bottomProgressIndicator.trackImageView.backgroundColor = trackColor; + _bottomProgressIndicator.frame = CGRectMake(0, self.bounds.size.height - _bottomProgressIndicatorHeight, self.bounds.size.width, _bottomProgressIndicatorHeight); + _bottomProgressIndicator.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; return _bottomProgressIndicator; } @@ -719,11 +717,14 @@ - (SJEdgeControlButtonItem *)pictureInPictureItem API_AVAILABLE(ios(14.0)) { @synthesize shouldShowCustomStatusBar = _shouldShowCustomStatusBar; - (BOOL (^)(SJEdgeControlLayer * _Nonnull))shouldShowCustomStatusBar { if ( _shouldShowCustomStatusBar == nil ) { - BOOL is_iPhoneX = _screen.is_iPhoneX; + BOOL is_iPhoneXSeries = _screen.is_iPhoneXSeries; [self setShouldShowCustomStatusBar:^BOOL(SJEdgeControlLayer * _Nonnull controlLayer) { + if ( UIUserInterfaceIdiomPad == UI_USER_INTERFACE_IDIOM() ) return NO; + if ( controlLayer.videoPlayer.isFitOnScreen ) return NO; + if ( controlLayer.videoPlayer.rotationManager.isRotating ) return NO; - BOOL isFullscreen = controlLayer.videoPlayer.isFullScreen; + BOOL isFullscreen = controlLayer.videoPlayer.isFullscreen; if ( isFullscreen == NO ) { CGRect bounds = UIScreen.mainScreen.bounds; if ( bounds.size.width > bounds.size.height ) @@ -742,7 +743,7 @@ - (SJEdgeControlButtonItem *)pictureInPictureItem API_AVAILABLE(ios(14.0)) { /// 11 仅 iPhone X 显示自定义状态栏 /// else if ( @available(iOS 11.0, *) ) { - shouldShow = is_iPhoneX; + shouldShow = is_iPhoneXSeries; } } return shouldShow; @@ -974,9 +975,10 @@ - (void)_updateAppearStateForBottomProgressIndicatorIfNeeded { if ( _bottomProgressIndicator == nil ) return; - _videoPlayer.isControlLayerAppeared && !_videoPlayer.isLockedScreen ? - sj_view_makeDisappear(_bottomProgressIndicator, YES) : - sj_view_makeAppear(_bottomProgressIndicator, YES); + BOOL hidden = (_videoPlayer.isControlLayerAppeared && !_videoPlayer.isLockedScreen) || (_videoPlayer.isRotating); + + hidden ? sj_view_makeDisappear(_bottomProgressIndicator, NO) : + sj_view_makeAppear(_bottomProgressIndicator, NO); } - (void)_updateAppearStateForCustomStatusBar NS_AVAILABLE_IOS(11.0) { @@ -991,12 +993,12 @@ - (void)_updateAppearStateForCustomStatusBar NS_AVAILABLE_IOS(11.0) { [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_reloadCustomStatusBarIfNeeded) name:UIDeviceBatteryLevelDidChangeNotification object:nil]; [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_reloadCustomStatusBarIfNeeded) name:UIDeviceBatteryStateDidChangeNotification object:nil]; + CGFloat containerW = self.topContainerView.frame.size.width; + CGFloat statusBarW = self.topAdapter.frame.size.width; + CGFloat startX = (containerW - statusBarW) * 0.5; + self.customStatusBar.frame = CGRectMake(startX, 0, self.topAdapter.bounds.size.width, 20); + self.customStatusBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; [self.topContainerView addSubview:self.customStatusBar]; - [self.customStatusBar mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.offset(0); - make.left.right.equalTo(self.topAdapter); - make.height.offset(20); - }]; } } @@ -1032,7 +1034,7 @@ - (void)_reloadAdaptersIfNeeded { - (void)_reloadTopAdapterIfNeeded { if ( sj_view_isDisappeared(_topContainerView) ) return; id sources = SJVideoPlayerConfigurations.shared.resources; - BOOL isFullscreen = _videoPlayer.isFullScreen; + BOOL isFullscreen = _videoPlayer.isFullscreen; BOOL isFitOnScreen = _videoPlayer.isFitOnScreen; BOOL isPlayOnScrollView = _videoPlayer.isPlayOnScrollView; BOOL isSmallscreen = !isFullscreen && !isFitOnScreen; @@ -1042,8 +1044,10 @@ - (void)_reloadTopAdapterIfNeeded { SJEdgeControlButtonItem *backItem = [self.topAdapter itemForTag:SJEdgeControlLayerTopItem_Back]; if ( backItem != nil ) { if ( _fixesBackItem ) { - backItem.alpha = 0; - backItem.image = nil; + if ( !isFullscreen && _hiddenBackButtonWhenOrientationIsPortrait ) + backItem.hidden = YES; + else + backItem.hidden = NO; } else { if ( isFullscreen || isFitOnScreen ) @@ -1052,9 +1056,15 @@ - (void)_reloadTopAdapterIfNeeded { backItem.hidden = YES; else backItem.hidden = isPlayOnScrollView; - - if ( backItem.hidden == NO ) - backItem.image = sources.backImage; + } + + if ( backItem.hidden == NO ) { + backItem.alpha = 1.0; + backItem.image = _fixesBackItem ? nil : sources.backImage; + } + else { + backItem.alpha = 0; + backItem.image = nil; } } } @@ -1106,13 +1116,14 @@ - (void)_reloadTopAdapterIfNeeded { - (void)_reloadLeftAdapterIfNeeded { if ( sj_view_isDisappeared(_leftContainerView) ) return; - BOOL isFullscreen = _videoPlayer.isFullScreen; + BOOL isFullscreen = _videoPlayer.isFullscreen; BOOL isLockedScreen = _videoPlayer.isLockedScreen; + BOOL showsLockItem = isFullscreen && !_videoPlayer.rotationManager.isRotating; SJEdgeControlButtonItem *lockItem = [self.leftAdapter itemForTag:SJEdgeControlLayerLeftItem_Lock]; if ( lockItem != nil ) { - lockItem.hidden = !isFullscreen; - if ( lockItem.hidden == NO ) { + lockItem.hidden = !showsLockItem; + if ( showsLockItem ) { id sources = SJVideoPlayerConfigurations.shared.resources; lockItem.image = isLockedScreen ? sources.lockImage : sources.unlockImage; } @@ -1159,7 +1170,7 @@ - (void)_reloadBottomAdapterIfNeeded { { SJEdgeControlButtonItem *fullItem = [self.bottomAdapter itemForTag:SJEdgeControlLayerBottomItem_Full]; if ( fullItem != nil && fullItem.hidden == NO ) { - BOOL isFullscreen = _videoPlayer.isFullScreen; + BOOL isFullscreen = _videoPlayer.isFullscreen; BOOL isFitOnScreen = _videoPlayer.isFitOnScreen; fullItem.image = (isFullscreen || isFitOnScreen) ? sources.smallScreenImage : sources.fullscreenImage; } @@ -1279,18 +1290,21 @@ - (void)_updateCurrentTimeForDraggingProgressPopupViewIfNeeded { _draggingProgressPopupView.currentTime = _videoPlayer.currentTime; } -- (void)_updateAppearStateForResidentBackButtonIfNeeded { +- (void)_updateAppearStateForFixedBackButtonIfNeeded { if ( !_fixesBackItem ) return; BOOL isFitOnScreen = _videoPlayer.isFitOnScreen; - BOOL isFull = _videoPlayer.isFullScreen; + BOOL isFullscreen = _videoPlayer.isFullscreen; BOOL isLockedScreen = _videoPlayer.isLockedScreen; if ( isLockedScreen ) { _fixedBackButton.hidden = YES; } + else if ( _hiddenBackButtonWhenOrientationIsPortrait && !isFullscreen ) { + _fixedBackButton.hidden = YES; + } else { BOOL isPlayOnScrollView = _videoPlayer.isPlayOnScrollView; - _fixedBackButton.hidden = isPlayOnScrollView && !isFitOnScreen && !isFull; + _fixedBackButton.hidden = isPlayOnScrollView && !isFitOnScreen && !isFullscreen; } } @@ -1327,7 +1341,7 @@ - (void)_updateForDraggingProgressPopupView { SJDraggingProgressPopupViewStyle style = SJDraggingProgressPopupViewStyleNormal; if ( !_videoPlayer.URLAsset.isM3u8 && [_videoPlayer.playbackController respondsToSelector:@selector(screenshotWithTime:size:completion:)] ) { - if ( _videoPlayer.isFullScreen ) { + if ( _videoPlayer.isFullscreen ) { style = SJDraggingProgressPopupViewStyleFullscreen; } else if ( _videoPlayer.isFitOnScreen ) { @@ -1377,7 +1391,7 @@ - (void)_showOrRemoveBottomProgressIndicator { - (void)_updateLayoutForBottomProgressIndicator { if ( _bottomProgressIndicator == nil ) return; _bottomProgressIndicator.trackHeight = _bottomProgressIndicatorHeight; - _bottomProgressIndicator.frame = (CGRect){0, self.bounds.size.height - _bottomProgressIndicatorHeight, self.bounds.size.width, _bottomProgressIndicatorHeight}; + _bottomProgressIndicator.frame = CGRectMake(0, self.bounds.size.height - _bottomProgressIndicatorHeight, self.bounds.size.width, _bottomProgressIndicatorHeight); } - (void)_showOrHiddenLoadingView { diff --git a/SJVideoPlayer/ControlLayers/SJFloatSmallViewControlLayer/SJFloatSmallViewControlLayer.m b/SJVideoPlayer/ControlLayers/SJFloatSmallViewControlLayer/SJFloatSmallViewControlLayer.m index 2c6907b82..e0da3b82a 100644 --- a/SJVideoPlayer/ControlLayers/SJFloatSmallViewControlLayer/SJFloatSmallViewControlLayer.m +++ b/SJVideoPlayer/ControlLayers/SJFloatSmallViewControlLayer/SJFloatSmallViewControlLayer.m @@ -31,35 +31,6 @@ - (instancetype)initWithFrame:(CGRect)frame { return self; } -- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event { - for ( UIGestureRecognizer *gesture in self.controlView.superview.superview.gestureRecognizers ) { - if ( [gesture isKindOfClass:UITapGestureRecognizer.class] && gesture.isEnabled ) { - SJEdgeControlButtonItem *_Nullable item = [self.topAdapter itemAtPoint:[self convertPoint:point toView:self.topAdapter.view]]; - - if ( item == nil && self->_leftAdapter != nil ) { - item = [self->_leftAdapter itemAtPoint:[self convertPoint:point toView:self->_leftAdapter.view]]; - } - if ( item == nil && self->_bottomAdapter != nil ) { - item = [self->_bottomAdapter itemAtPoint:[self convertPoint:point toView:self->_bottomAdapter.view]]; - } - if ( item == nil && self->_rightAdapter != nil ) { - item = [self->_rightAdapter itemAtPoint:[self convertPoint:point toView:self->_rightAdapter.view]]; - } - if ( item == nil && self->_centerAdapter != nil ) { - item = [self->_centerAdapter itemAtPoint:[self convertPoint:point toView:self->_centerAdapter.view]]; - } - - if ( item.actions != nil || item.customView != nil ) { - gesture.enabled = NO; - dispatch_async(dispatch_get_main_queue(), ^{ - gesture.enabled = YES; - }); - } - } - } - return [super hitTest:point withEvent:event]; -} - - (UIView *)controlView { return self; } diff --git a/SJVideoPlayer/ControlLayers/SJMoreSettingControlLayer/SJMoreSettingControlLayer.m b/SJVideoPlayer/ControlLayers/SJMoreSettingControlLayer/SJMoreSettingControlLayer.m index b5affdb21..a4d995fad 100644 --- a/SJVideoPlayer/ControlLayers/SJMoreSettingControlLayer/SJMoreSettingControlLayer.m +++ b/SJVideoPlayer/ControlLayers/SJMoreSettingControlLayer/SJMoreSettingControlLayer.m @@ -68,7 +68,7 @@ - (void)exitControlLayer { - (void)restartControlLayer { _restarted = YES; - if ( self.videoPlayer.isFullScreen ) + if ( self.videoPlayer.isFullscreen ) [self.videoPlayer needHiddenStatusBar]; [self _refreshValueForSliderItems]; sj_view_makeAppear(self.controlView, YES); @@ -88,7 +88,7 @@ - (BOOL)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer gestureRecognizerS } } else if ( type == SJPlayerGestureType_Pan && !CGRectContainsPoint(self.rightContainerView.frame, location) ) { - return videoPlayer.gestureControl.movingDirection == SJPanGestureMovingDirection_V; + return videoPlayer.gestureController.movingDirection == SJPanGestureMovingDirection_V; } else if ( type == SJPlayerGestureType_DoubleTap ) return YES; @@ -109,7 +109,7 @@ - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer brightnessChanged: } - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer rateChanged:(float)rate { - [videoPlayer.prompt show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [videoPlayer.textPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append([NSString stringWithFormat:@"%.0f %%", rate * 100]); make.textColor(UIColor.whiteColor); }]]; diff --git a/SJVideoPlayer/ControlLayers/SJNotReachableControlLayer/SJNotReachableControlLayer.m b/SJVideoPlayer/ControlLayers/SJNotReachableControlLayer/SJNotReachableControlLayer.m index c1a804b5b..004876b2e 100644 --- a/SJVideoPlayer/ControlLayers/SJNotReachableControlLayer/SJNotReachableControlLayer.m +++ b/SJVideoPlayer/ControlLayers/SJNotReachableControlLayer/SJNotReachableControlLayer.m @@ -110,9 +110,10 @@ - (BOOL)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer gestureRecognizerS - (void)controlLayerNeedAppear:(__kindof SJBaseVideoPlayer *)videoPlayer {} - (void)controlLayerNeedDisappear:(__kindof SJBaseVideoPlayer *)videoPlayer {} -- (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer willRotateView:(BOOL)isFull { - [self _updateItems:videoPlayer]; +- (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer onRotationTransitioningChanged:(BOOL)isTransitioning { + if ( isTransitioning ) [self _updateItems:videoPlayer]; } + - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer willFitOnScreen:(BOOL)isFitOnScreen { [self _updateItems:videoPlayer]; } @@ -120,7 +121,7 @@ - (void)videoPlayer:(__kindof SJBaseVideoPlayer *)videoPlayer willFitOnScreen:(B - (void)_updateItems:(__kindof SJBaseVideoPlayer *)videoPlayer { SJEdgeControlButtonItem *backItem = [_topAdapter itemForTag:SJNotReachableControlLayerTopItem_Back]; BOOL isFitOnScreen = videoPlayer.isFitOnScreen; - BOOL isFull = videoPlayer.isFullScreen; + BOOL isFull = videoPlayer.isFullscreen; if ( backItem ) { if ( isFull || isFitOnScreen ) diff --git a/SJVideoPlayer/ControlLayers/SJSwitchVideoDefinitionControlLayer/SJSwitchVideoDefinitionControlLayer.m b/SJVideoPlayer/ControlLayers/SJSwitchVideoDefinitionControlLayer/SJSwitchVideoDefinitionControlLayer.m index d6ca59955..c62f24767 100644 --- a/SJVideoPlayer/ControlLayers/SJSwitchVideoDefinitionControlLayer/SJSwitchVideoDefinitionControlLayer.m +++ b/SJVideoPlayer/ControlLayers/SJSwitchVideoDefinitionControlLayer/SJSwitchVideoDefinitionControlLayer.m @@ -65,7 +65,7 @@ - (void)exitControlLayer { - (void)restartControlLayer { _restarted = YES; - if ( self.videoPlayer.isFullScreen ) + if ( self.videoPlayer.isFullscreen ) [self.videoPlayer needHiddenStatusBar]; [self _refreshItems]; [self.rightAdapter reload]; diff --git a/SJVideoPlayer/SJVideoPlayer.h b/SJVideoPlayer/SJVideoPlayer.h index dc8d83a07..2aa7f230f 100644 --- a/SJVideoPlayer/SJVideoPlayer.h +++ b/SJVideoPlayer/SJVideoPlayer.h @@ -183,17 +183,10 @@ NS_ASSUME_NONNULL_BEGIN /// @property (nonatomic) BOOL automaticallyPerformRotationOrFitOnScreen; -/// -/// 是否仅在竖屏全屏与竖屏小屏之间切换, 不触发旋转. -/// -/// 设置为YES后, 将会禁止旋转. -/// -@property (nonatomic) BOOL onlyUsedFitOnScreen; - /// /// 处于小屏时, 当点击全屏按钮后, 是否先竖屏撑满全屏. /// -@property (nonatomic) BOOL usesFitOnScreenFirst; +@property (nonatomic) BOOL needsFitOnScreenFirst; @end diff --git a/SJVideoPlayer/SJVideoPlayer.m b/SJVideoPlayer/SJVideoPlayer.m index 4490943b4..ae1bab7e4 100644 --- a/SJVideoPlayer/SJVideoPlayer.m +++ b/SJVideoPlayer/SJVideoPlayer.m @@ -97,7 +97,7 @@ - (void)dealloc { } + (NSString *)version { - return @"v3.3.2"; + return @"v3.4.0"; } + (instancetype)player { @@ -109,7 +109,6 @@ - (instancetype)init { if ( !self ) return nil; [self.switcher switchControlLayerForIdentifier:SJControlLayer_Edge]; // 切换到添加的控制层 self.defaultEdgeControlLayer.showsMoreItem = YES; // 显示更多按钮 - self.defaultEdgeControlLayer.hiddenBottomProgressIndicator = NO; // 显示底部进度条 return self; } @@ -167,7 +166,7 @@ - (void)_definitionItemWasTapped:(SJEdgeControlButtonItem *)definitionItem { /// 点击了返回按钮 /// - (void)_backButtonWasTapped { - if ( self.isFullScreen && ![self _whetherToSupportOnlyOneOrientation] ) { + if ( self.isFullscreen && ![self _whetherToSupportOnlyOneOrientation] ) { [self rotate]; } else if ( self.isFitOnScreen ) { @@ -316,21 +315,21 @@ - (SJVideoDefinitionSwitchingInfoObserver *)sj_switchingInfoObserver { case SJDefinitionSwitchStatusUnknown: break; case SJDefinitionSwitchStatusSwitching: { - [self.promptPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [self.promptingPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append([NSString stringWithFormat:@"%@ %@", SJVideoPlayerConfigurations.shared.localizedStrings.definitionSwitchingPrompt, info.switchingAsset.definition_fullName]); make.textColor(UIColor.whiteColor); }]]; } break; case SJDefinitionSwitchStatusFinished: { - [self.promptPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [self.promptingPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append([NSString stringWithFormat:@"%@ %@", SJVideoPlayerConfigurations.shared.localizedStrings.definitionSwitchSuccessfullyPrompt, info.currentPlayingAsset.definition_fullName]); make.textColor(UIColor.whiteColor); }]]; } break; case SJDefinitionSwitchStatusFailed: { - [self.promptPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { + [self.promptingPopupController show:[NSAttributedString sj_UIKitText:^(id _Nonnull make) { make.append(SJVideoPlayerConfigurations.shared.localizedStrings.definitionSwitchFailedPrompt); make.textColor(UIColor.whiteColor); }]]; @@ -407,7 +406,7 @@ - (void)_initializeFloatSmallViewControllerObserverIfNeeded:(nullable id _Nonnull controller) { + _sj_floatSmallViewControllerObserver.onAppearChanged = ^(id _Nonnull controller) { __strong typeof(_self) self = _self; if ( !self ) return ; if ( controller.isAppeared ) { @@ -419,7 +418,7 @@ - (void)_initializeFloatSmallViewControllerObserverIfNeeded:(nullable id _Nonnull mgr) { + _sj_appearManagerObserver.onAppearChanged = ^(id _Nonnull mgr) { __strong typeof(_self) self = _self; if ( !self ) return ; // refresh edge button items @@ -544,9 +543,13 @@ - (void)_updateContentForDefinitionItemIfNeeded { - (void)_updateAppearStateForMoteItemIfNeeded { if ( _moreItem != nil ) { - BOOL isHidden = !self.isFullScreen; + BOOL isHidden = NO; + // 如果已经显示, 则小屏的时候隐藏; + if ( !self.moreItem.isHidden ) isHidden = !self.isFullscreen; + else isHidden = !(self.isFullscreen && !self.rotationManager.isRotating); + if ( isHidden != self.moreItem.isHidden ) { - self.moreItem.hidden = !self.isFullScreen; + self.moreItem.hidden = isHidden; [self.defaultEdgeControlLayer.topAdapter reload]; } } @@ -583,7 +586,7 @@ - (void)_updateAppearStateForClipsItemIfNeeded { if (@available(iOS 14.0, *)) { isPictureInPictureEnabled = self.playbackController.pictureInPictureStatus != SJPictureInPictureStatusUnknown; } - BOOL isHidden = (self.URLAsset == nil) || !self.isFullScreen || isUnsupportedFormat || isPictureInPictureEnabled; + BOOL isHidden = (self.URLAsset == nil) || !self.isFullscreen || isUnsupportedFormat || isPictureInPictureEnabled; if ( isHidden != _clipsItem.isHidden ) { _clipsItem.hidden = isHidden; [_defaultEdgeControlLayer.rightAdapter reload]; @@ -692,18 +695,11 @@ - (BOOL)automaticallyPerformRotationOrFitOnScreen { return self.defaultEdgeControlLayer.automaticallyPerformRotationOrFitOnScreen; } -- (void)setOnlyUsedFitOnScreen:(BOOL)onlyUsedFitOnScreen { - self.defaultEdgeControlLayer.onlyUsedFitOnScreen = onlyUsedFitOnScreen; +- (void)setNeedsFitOnScreenFirst:(BOOL)needsFitOnScreenFirst { + self.defaultEdgeControlLayer.needsFitOnScreenFirst = needsFitOnScreenFirst; } -- (BOOL)onlyUsedFitOnScreen { - return self.defaultEdgeControlLayer.onlyUsedFitOnScreen; -} - -- (void)setUsesFitOnScreenFirst:(BOOL)usesFitOnScreenFirst { - self.defaultEdgeControlLayer.usesFitOnScreenFirst = usesFitOnScreenFirst; -} -- (BOOL)usesFitOnScreenFirst { - return self.defaultEdgeControlLayer.usesFitOnScreenFirst; +- (BOOL)needsFitOnScreenFirst { + return self.defaultEdgeControlLayer.needsFitOnScreenFirst; } @end