Browse Source

编译警告处理Mixed ObjC ABI

Steven 4 months ago
parent
commit
df46b74b2f
100 changed files with 6265 additions and 5174 deletions
  1. 0 4
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. 29 45
      KulexiuForStudent/Podfile.lock
  3. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.framework/AlipaySDK
  4. 40 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/Info.plist
  5. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK
  6. 0 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK-inside-Info.plist
  7. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_back@2x.png
  8. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_refresh@2x.png
  9. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/bar@2x.png
  10. 1 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/bridge.js
  11. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/refresh@2x.png
  12. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/refresh_click@2x.png
  13. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/shutdown@2x.png
  14. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/shutdown_click@2x.png
  15. 0 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AFServiceCenter.h
  16. 0 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AFServiceResponse.h
  17. 0 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/APayAuthInfo.h
  18. 28 5
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AlipaySDK.h
  19. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK
  20. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK-inside-Info.plist
  21. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_back@2x.png
  22. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_refresh@2x.png
  23. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/bar@2x.png
  24. 1 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/bridge.js
  25. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/refresh@2x.png
  26. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/refresh_click@2x.png
  27. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/shutdown@2x.png
  28. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/shutdown_click@2x.png
  29. 56 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AFServiceCenter.h
  30. 43 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AFServiceResponse.h
  31. 33 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/APayAuthInfo.h
  32. 246 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AlipaySDK.h
  33. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeDirectory
  34. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeRequirements
  35. BIN
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeRequirements-1
  36. 319 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeResources
  37. 0 0
      KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeSignature
  38. 1 1
      KulexiuForStudent/Pods/AlipaySDK-iOS/LICENSE
  39. BIN
      KulexiuForStudent/Pods/Bugly/Bugly.framework/Bugly
  40. 1 1
      KulexiuForStudent/Pods/Bugly/Bugly.framework/Headers/Bugly.h
  41. 41 0
      KulexiuForStudent/Pods/Bugly/Bugly.framework/PrivacyInfo.xcprivacy
  42. 1 0
      KulexiuForStudent/Pods/Headers/Private/White_YYModel/NSObject+White_YYModel.h
  43. 1 0
      KulexiuForStudent/Pods/Headers/Private/White_YYModel/White_YYClassInfo.h
  44. 1 0
      KulexiuForStudent/Pods/Headers/Private/White_YYModel/White_YYModel.h
  45. 0 1
      KulexiuForStudent/Pods/Headers/Private/Whiteboard/NSObject+YY.h
  46. 1 0
      KulexiuForStudent/Pods/Headers/Private/Whiteboard/WhiteAudioEffectMixerBridge.h
  47. 1 0
      KulexiuForStudent/Pods/Headers/Private/Whiteboard/WhiteProjectorStaticImageInfo.h
  48. 0 1
      KulexiuForStudent/Pods/Headers/Private/Whiteboard/WhiteSocket+Private.h
  49. 0 1
      KulexiuForStudent/Pods/Headers/Private/Whiteboard/WhiteSocket.h
  50. 0 1
      KulexiuForStudent/Pods/Headers/Private/YYModel/NSObject+YYModel.h
  51. 0 1
      KulexiuForStudent/Pods/Headers/Private/YYModel/YYClassInfo.h
  52. 0 1
      KulexiuForStudent/Pods/Headers/Private/YYModel/YYModel.h
  53. 1 0
      KulexiuForStudent/Pods/Headers/Public/White_YYModel/NSObject+White_YYModel.h
  54. 1 0
      KulexiuForStudent/Pods/Headers/Public/White_YYModel/White_YYClassInfo.h
  55. 1 0
      KulexiuForStudent/Pods/Headers/Public/White_YYModel/White_YYModel.h
  56. 0 1
      KulexiuForStudent/Pods/Headers/Public/Whiteboard/NSObject+YY.h
  57. 1 0
      KulexiuForStudent/Pods/Headers/Public/Whiteboard/WhiteAudioEffectMixerBridge.h
  58. 1 0
      KulexiuForStudent/Pods/Headers/Public/Whiteboard/WhiteProjectorStaticImageInfo.h
  59. 0 1
      KulexiuForStudent/Pods/Headers/Public/Whiteboard/WhiteSocket.h
  60. 0 1
      KulexiuForStudent/Pods/Headers/Public/YYModel/NSObject+YYModel.h
  61. 0 1
      KulexiuForStudent/Pods/Headers/Public/YYModel/YYClassInfo.h
  62. 0 1
      KulexiuForStudent/Pods/Headers/Public/YYModel/YYModel.h
  63. 29 45
      KulexiuForStudent/Pods/Manifest.lock
  64. 4811 4809
      KulexiuForStudent/Pods/Pods.xcodeproj/project.pbxproj
  65. 0 58
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/YYModel.xcscheme
  66. 3 3
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist
  67. 12 0
      KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Base/QCloudCOSXMLEndPoint.m
  68. 2 2
      KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/QCloudCOSXMLVersion.h
  69. 2 2
      KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/QCloudCOSXMLVersion.m
  70. 20 3
      KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Transfer/request/QCloudCOSXMLUploadObjectRequest.m
  71. 0 3
      KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Transfer/request/QCloudGetObjectRequest.h
  72. 0 16
      KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Transfer/request/QCloudGetObjectRequest.m
  73. 3 3
      KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Transfer/request/QCloudListMultipartRequest.m
  74. 4 0
      KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCLOUDRestNet/CoreRequest/QCloudHTTPRequest.m
  75. 6 1
      KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCLOUDRestNet/SessionSupport/QCloudHTTPSessionManager.m
  76. 3 1
      KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudClientBase/Request/QCloudBizHTTPRequest.h
  77. 14 0
      KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudClientBase/Request/QCloudBizHTTPRequest.m
  78. 5 0
      KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudClientBase/Service/QCloudConfiguration.h
  79. 2 2
      KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudCoreVersion.h
  80. 2 2
      KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudCoreVersion.m
  81. 0 1
      KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QualityAssurance/QualityDataUploader.m
  82. 7 3
      KulexiuForStudent/Pods/RSKImageCropper/README.md
  83. 6 3
      KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController.h
  84. 39 21
      KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController.m
  85. 61 6
      KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageScrollView.h
  86. 172 71
      KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageScrollView.m
  87. 32 0
      KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageScrollViewDelegate.h
  88. 6 2
      KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKInternalUtility.h
  89. 6 1
      KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKTouchView.h
  90. 6 2
      KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/UIImage+RSKImageCropper.h
  91. 2 2
      KulexiuForStudent/Pods/TZImagePickerController/README.md
  92. 1 1
      KulexiuForStudent/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h
  93. 2 2
      KulexiuForStudent/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m
  94. 2 2
      KulexiuForStudent/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
  95. 121 0
      KulexiuForStudent/Pods/Target Support Files/AlipaySDK-iOS/AlipaySDK-iOS-xcframeworks.sh
  96. 1 3
      KulexiuForStudent/Pods/Target Support Files/AlipaySDK-iOS/AlipaySDK-iOS.debug.xcconfig
  97. 1 3
      KulexiuForStudent/Pods/Target Support Files/AlipaySDK-iOS/AlipaySDK-iOS.release.xcconfig
  98. 15 15
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests-acknowledgements.markdown
  99. 16 16
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests-acknowledgements.plist
  100. 2 3
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests.debug.xcconfig

+ 0 - 4
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -8002,7 +8002,6 @@
 					"-l\"TUISearch\"",
 					"-l\"TYCyclePagerView\"",
 					"-l\"Whiteboard\"",
-					"-l\"YYModel\"",
 					"-l\"c++\"",
 					"-l\"iconv\"",
 					"-l\"icucore\"",
@@ -8179,7 +8178,6 @@
 					"-l\"TUISearch\"",
 					"-l\"TYCyclePagerView\"",
 					"-l\"Whiteboard\"",
-					"-l\"YYModel\"",
 					"-l\"c++\"",
 					"-l\"iconv\"",
 					"-l\"icucore\"",
@@ -8502,7 +8500,6 @@
 					"-l\"TUISearch\"",
 					"-l\"TYCyclePagerView\"",
 					"-l\"Whiteboard\"",
-					"-l\"YYModel\"",
 					"-l\"c++\"",
 					"-l\"iconv\"",
 					"-l\"icucore\"",
@@ -8783,7 +8780,6 @@
 					"-l\"TUISearch\"",
 					"-l\"TYCyclePagerView\"",
 					"-l\"Whiteboard\"",
-					"-l\"YYModel\"",
 					"-l\"c++\"",
 					"-l\"iconv\"",
 					"-l\"icucore\"",

+ 29 - 45
KulexiuForStudent/Podfile.lock

@@ -14,8 +14,8 @@ PODS:
   - AFNetworking/Serialization (4.0.1)
   - AFNetworking/UIKit (4.0.1):
     - AFNetworking/NSURLSession
-  - AlipaySDK-iOS (15.8.8)
-  - Bugly (2.5.93)
+  - AlipaySDK-iOS (15.8.16)
+  - Bugly (2.6.1)
   - CHIPageControl (0.2):
     - CHIPageControl/Aji (= 0.2)
     - CHIPageControl/Aleppo (= 0.2)
@@ -68,13 +68,13 @@ PODS:
   - MBProgressHUD (1.2.0)
   - MJExtension (3.3.0)
   - MJRefresh (3.1.17)
-  - NTLBridge (3.1.5)
-  - QCloudCore/WithoutMTA (6.4.4)
-  - QCloudCOSXML/Transfer (6.4.4):
-    - QCloudCore/WithoutMTA (= 6.4.4)
+  - NTLBridge (3.1.6)
+  - QCloudCore/WithoutMTA (6.4.5)
+  - QCloudCOSXML/Transfer (6.4.5):
+    - QCloudCore/WithoutMTA (= 6.4.5)
   - Reachability (3.7.6)
   - ReactiveObjC (3.1.1)
-  - RSKImageCropper (4.0.0)
+  - RSKImageCropper (5.0.0)
   - SDWebImage (5.16.0):
     - SDWebImage/Core (= 5.16.0)
   - SDWebImage/Core (5.16.0)
@@ -264,35 +264,19 @@ PODS:
     - TXLiteAVSDK_Professional/Professional (= 11.7.15304)
   - TXLiteAVSDK_Professional/Professional (11.7.15304)
   - TYCyclePagerView (1.2.0)
-  - TZImagePickerController (3.8.7):
-    - TZImagePickerController/Basic (= 3.8.7)
-    - TZImagePickerController/Location (= 3.8.7)
-  - TZImagePickerController/Basic (3.8.7)
-  - TZImagePickerController/Location (3.8.7)
-  - Whiteboard (2.16.69):
-    - Whiteboard/Whiteboard-YYModel (= 2.16.69)
-  - Whiteboard/Base (2.16.69):
+  - TZImagePickerController (3.8.8):
+    - TZImagePickerController/Basic (= 3.8.8)
+    - TZImagePickerController/Location (= 3.8.8)
+  - TZImagePickerController/Basic (3.8.8)
+  - TZImagePickerController/Location (3.8.8)
+  - White_YYModel (1.0.6)
+  - Whiteboard (2.16.107):
+    - Whiteboard/Whiteboard-Basic (= 2.16.107)
+  - Whiteboard/Resource (2.16.107)
+  - Whiteboard/Whiteboard-Basic (2.16.107):
     - NTLBridge (~> 3.1.4)
-    - Whiteboard/Object
-  - Whiteboard/Converter (2.16.69):
-    - Whiteboard/Object
-  - Whiteboard/Model (2.16.69):
-    - YYModel
-  - Whiteboard/NativeReplayer (2.16.69):
-    - Whiteboard/Replayer
-  - Whiteboard/Object (2.16.69):
-    - Whiteboard/Model
-  - Whiteboard/Replayer (2.16.69):
-    - Whiteboard/Base
-  - Whiteboard/Resource (2.16.69)
-  - Whiteboard/Room (2.16.69):
-    - Whiteboard/Base
-  - Whiteboard/Whiteboard-YYModel (2.16.69):
-    - Whiteboard/Converter
-    - Whiteboard/NativeReplayer
+    - White_YYModel
     - Whiteboard/Resource
-    - Whiteboard/Room
-  - YYModel (1.0.4)
 
 DEPENDENCIES:
   - AlipaySDK-iOS
@@ -351,8 +335,8 @@ SPEC REPOS:
     - TXLiteAVSDK_Professional
     - TYCyclePagerView
     - TZImagePickerController
+    - White_YYModel
     - Whiteboard
-    - YYModel
 
 EXTERNAL SOURCES:
   KSCloudAccompanyLibrary:
@@ -362,8 +346,8 @@ EXTERNAL SOURCES:
 
 SPEC CHECKSUMS:
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
-  AlipaySDK-iOS: 9289d94792535cd14c5c241c720a7e981edd7035
-  Bugly: b8715e6ec4004b7f7fbffab0643ba80545aee3da
+  AlipaySDK-iOS: 5e6011fbd546e7db6b43c1f527d164ee63f3d7cb
+  Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
   CHIPageControl: a787bf7205c9b7e7fbfc412be36c5e8636b68f86
   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
   CocoaHTTPServer: 71538be9be526cf950cb4d9c9465153ea45cac99
@@ -380,12 +364,12 @@ SPEC CHECKSUMS:
   MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
   MJExtension: 01704cca2b60a214c10761b6491eab74069d68a9
   MJRefresh: ee5b68f639775462faba4db0fd243baf4d42c2cf
-  NTLBridge: e94dc18242476b0238c10213a5438d9b9a59fcce
-  QCloudCore: 9b13ad49cf5fc4537f416811f31c41cf46d8f3c2
-  QCloudCOSXML: b24d8a1225e4b3270d36bbcfa66478fedc1c6de6
+  NTLBridge: 6ef7f3c1fc956f2e2d701a89828d51674bd479c7
+  QCloudCore: a1c543624fe34c5e98c92b7faf421a23f57ad5e3
+  QCloudCOSXML: 8185a7a51c7dce6ff1a25c725907f6beb270cd01
   Reachability: fd0ecd23705e2599e4cceeb943222ae02296cbc6
   ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
-  RSKImageCropper: 90dfe482402fb8a40cabd5fea65186d9102cc425
+  RSKImageCropper: d75b28a83673edb7bef40ad6287835cdcb732093
   SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
   SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
   SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
@@ -398,10 +382,10 @@ SPEC CHECKSUMS:
   TXIMSDK_Plus_iOS: 4fe66054d3bc6953f21562c5b2bcce5526ba589f
   TXLiteAVSDK_Professional: 60add29dbe52bed7d828f1d68d88487d9f16e9d1
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
-  TZImagePickerController: 5f35bb7266552e36ca834bafa955b869fe086124
-  Whiteboard: 9d5a68d3738bd0ba8cd98820c506d13108976696
-  YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
+  TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
+  White_YYModel: 4ed7b231471784ec709d4db954e1ca61a4fbe54d
+  Whiteboard: edf8398203cadc352008b9f0ea614650b6d4d0c2
 
 PODFILE CHECKSUM: 221b3b2657d58b6f5db27102245d3177b9eed01f
 
-COCOAPODS: 1.15.2
+COCOAPODS: 1.16.2

BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.framework/AlipaySDK


+ 40 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/Info.plist

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>AvailableLibraries</key>
+	<array>
+		<dict>
+			<key>LibraryIdentifier</key>
+			<string>ios-arm64</string>
+			<key>LibraryPath</key>
+			<string>AlipaySDK.framework</string>
+			<key>SupportedArchitectures</key>
+			<array>
+				<string>arm64</string>
+			</array>
+			<key>SupportedPlatform</key>
+			<string>ios</string>
+		</dict>
+		<dict>
+			<key>LibraryIdentifier</key>
+			<string>ios-arm64_x86_64-simulator</string>
+			<key>LibraryPath</key>
+			<string>AlipaySDK.framework</string>
+			<key>SupportedArchitectures</key>
+			<array>
+				<string>arm64</string>
+				<string>x86_64</string>
+			</array>
+			<key>SupportedPlatform</key>
+			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
+		</dict>
+	</array>
+	<key>CFBundlePackageType</key>
+	<string>XFWK</string>
+	<key>XCFrameworkFormatVersion</key>
+	<string>1.0</string>
+</dict>
+</plist>

BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK


+ 0 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.framework/AlipaySDK-inside-Info.plist → KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK-inside-Info.plist


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_back@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_refresh@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/bar@2x.png


+ 1 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/bridge.js

@@ -0,0 +1 @@
+!function(){if(!window.AlipayJSBridge){window.alipayjsbridgeSetTitle=function(e){document.title=e,t("alipayjsbridge://setTitle?title="+encodeURIComponent(e))},window.alipayjsbridgeRefresh=function(){t("alipayjsbridge://onRefresh?")},window.alipayjsbridgeBack=function(){t("alipayjsbridge://onBack?")},window.alipayjsbridgeExit=function(e){t("alipayjsbridge://onExit?bsucc="+e)},window.alipayjsbridgeShowBackButton=function(e){t("alipayjsbridge://showBackButton?bshow="+e)},window.AlipayJSBridge={version:"2.0",addListener:function(e,i){a[e]=i},hasListener:function(e){if(!a[e])return!1;return!0},callListener:function(e,i,n){var t;n&&(t=function(e){var i="";e&&(i=encodeURIComponent(JSON.stringify(e)));var a="func=h5JsFuncCallback&cbId="+n+"&data="+i;o(a)});var r=a[e];r?r(i,t):console.log("AlipayJSBridge: no h5JsFunc ",e+i)},callNativeFunc:function(e,a,t){var r="";t&&(r="cb_"+i+++"_"+(new Date).getTime(),n[r]=t);var d="";a&&(d=encodeURIComponent(JSON.stringify(a)));o("func="+e+"&cbId="+r+"&data="+d)},callBackFromNativeFunc:function(e,i){var a=n[e];a&&(a(i),delete n[i])}};var e,i=1,n={},a={};window.CustomEvent?e=new CustomEvent("alipayjsbridgeready"):(e=document.createEvent("Event")).initEvent("alipayjsbridgeready",!0,!0),document.dispatchEvent(e),setTimeout(function(){if(window.AlipayJSBridgeInitArray){var e=window.AlipayJSBridgeInitArray;delete window.AlipayJSBridgeInitArray;for(var i=0;i<e.length;i++)try{e[i](AlipayJSBridge)}catch(e){setTimeout(function(){throw e})}}},0)}function t(e){window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.MQPJSBridgeScheme&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage(e)}function o(e){t("alipayjsbridge://callNativeFunc?"+e)}}();

BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/refresh@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/refresh_click@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/shutdown@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/AlipaySDK.bundle/shutdown_click@2x.png


+ 0 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.framework/Headers/AFServiceCenter.h → KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AFServiceCenter.h


+ 0 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.framework/Headers/AFServiceResponse.h → KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AFServiceResponse.h


+ 0 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.framework/Headers/APayAuthInfo.h → KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/APayAuthInfo.h


+ 28 - 5
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.framework/Headers/AlipaySDK.h → KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64/AlipaySDK.framework/Headers/AlipaySDK.h

@@ -9,7 +9,7 @@
 
 ////////////////////////////////////////////////////////
 ///////////////// 支付宝标准版本支付SDK ///////////////////
-///////// version:15.8.11  modify:2022.07.26///////////
+///////// version:15.8.16  modify:2023.08.02///////////
 ////////////////////////////////////////////////////////
 
 #import <UIKit/UIKit.h>
@@ -52,10 +52,9 @@ typedef enum {
 /**
  *  支付接口
  *
- *  @param orderStr        支付订单信息字串
- *  @param schemeStr       调用支付的app注册在info.plist中的scheme
- *  @param completionBlock 支付结果回调Block,用于wap支付结果回调
-                           跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ *  @param orderStr                支付订单信息字串
+ *  @param schemeStr              调用支付的app注册在info.plist中的scheme
+ *  @param completionBlock 支付结果回调Block,用于wap支付结果回调,跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
  */
 - (void)payOrder:(NSString *)orderStr
       fromScheme:(NSString *)schemeStr
@@ -84,6 +83,30 @@ typedef enum {
 - (void)processOrderWithPaymentResult:(NSURL *)resultUrl
                       standbyCallback:(CompletionBlock)completionBlock;
 
+
+/**
+ *  商户接入UniversalLink支付接口使用该接口
+ *
+ *  @param orderStr                  支付订单信息字串
+ *  @param schemeStr                调用支付的app注册在info.plist中的scheme
+ *  @param universalLink       调用支付的app关联的universalLink,如'https://render.alipay.com/'
+ *  @param completionBlock   支付结果回调Block,用于wap支付结果回调,跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ */
+- (void) payOrder:(NSString *)orderStr
+       fromScheme:(NSString *)schemeStr
+fromUniversalLink:(NSString *)universalLink
+         callback:(CompletionBlock)completionBlock;
+
+
+/**
+ *  处理支付宝app支付后通过universalLink跳回商户app携带的支付结果处理
+ *
+ *  @param userActivity            系统接口传入的userActivity
+ *  @param completionBlock     支付结果回调 为nil时默认使用支付接口的completionBlock
+ */
+- (void)handleOpenUniversalLink:(NSUserActivity *)userActivity standbyCallback:(CompletionBlock)completionBlock;
+
+
 /**
  *  获取交易token。
  *

BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK-inside-Info.plist


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_back@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/alipay_msp_refresh@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/bar@2x.png


+ 1 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/bridge.js

@@ -0,0 +1 @@
+!function(){if(!window.AlipayJSBridge){window.alipayjsbridgeSetTitle=function(e){document.title=e,t("alipayjsbridge://setTitle?title="+encodeURIComponent(e))},window.alipayjsbridgeRefresh=function(){t("alipayjsbridge://onRefresh?")},window.alipayjsbridgeBack=function(){t("alipayjsbridge://onBack?")},window.alipayjsbridgeExit=function(e){t("alipayjsbridge://onExit?bsucc="+e)},window.alipayjsbridgeShowBackButton=function(e){t("alipayjsbridge://showBackButton?bshow="+e)},window.AlipayJSBridge={version:"2.0",addListener:function(e,i){a[e]=i},hasListener:function(e){if(!a[e])return!1;return!0},callListener:function(e,i,n){var t;n&&(t=function(e){var i="";e&&(i=encodeURIComponent(JSON.stringify(e)));var a="func=h5JsFuncCallback&cbId="+n+"&data="+i;o(a)});var r=a[e];r?r(i,t):console.log("AlipayJSBridge: no h5JsFunc ",e+i)},callNativeFunc:function(e,a,t){var r="";t&&(r="cb_"+i+++"_"+(new Date).getTime(),n[r]=t);var d="";a&&(d=encodeURIComponent(JSON.stringify(a)));o("func="+e+"&cbId="+r+"&data="+d)},callBackFromNativeFunc:function(e,i){var a=n[e];a&&(a(i),delete n[i])}};var e,i=1,n={},a={};window.CustomEvent?e=new CustomEvent("alipayjsbridgeready"):(e=document.createEvent("Event")).initEvent("alipayjsbridgeready",!0,!0),document.dispatchEvent(e),setTimeout(function(){if(window.AlipayJSBridgeInitArray){var e=window.AlipayJSBridgeInitArray;delete window.AlipayJSBridgeInitArray;for(var i=0;i<e.length;i++)try{e[i](AlipayJSBridge)}catch(e){setTimeout(function(){throw e})}}},0)}function t(e){window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.MQPJSBridgeScheme&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage(e)}function o(e){t("alipayjsbridge://callNativeFunc?"+e)}}();

BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/refresh@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/refresh_click@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/shutdown@2x.png


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/AlipaySDK.bundle/shutdown_click@2x.png


+ 56 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AFServiceCenter.h

@@ -0,0 +1,56 @@
+//
+//  AFServiceCenter.h
+//  AFServiceSDK
+//
+//  Created by jiajunchen on 02/01/2018.
+//  Copyright © 2018 antfin. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class AFServiceResponse;
+
+/**
+ SDK支持的业务枚举值
+
+ - AFServiceEInvoice: 电子发票
+ - AFServiceAuth: 账户授权
+ */
+typedef NS_ENUM(NSUInteger, AFService) {
+    AFServiceEInvoice,
+    AFServiceAuth,
+    AFServiceDeduct
+};
+
+
+extern NSString * const kAFServiceOptionBizParams;      // 钱包服务调用入参
+extern NSString * const kAFServiceOptionCallbackScheme; // 业务回跳当前app的scheme
+extern NSString * const kAFServiceOptionNotUseLanding;  // 不使用支付宝提示下载页做补偿,为true时需要商户自己处理用户未安装支付宝的情况
+extern NSString * const kAFServiceBizParamsKeyUrl;      // 独立签约入参url
+
+typedef void(^AFServiceResultBlock)(AFServiceResponse *response);
+
+@interface AFServiceCenter : NSObject
+
+/**
+ 调用钱包服务
+
+ @param service 业务service, 见AFService枚举值
+ @param params  参数Dictionary, key值详情参见kAFServiceOptionBizParams、kAFServiceOptionCallbackScheme注释
+ @param block   业务结果回调的block, block参数是AFServiceResponse类型,业务结果通过result属性获取,如果未用户未安装支付宝并且kAFServiceOptionNotUseLanding未设置为true,会使用H5landing页做补偿,这种情况下不会有block回调结果。
+ */
++ (void)callService:(AFService)service
+         withParams:(NSDictionary *)params
+      andCompletion:(AFServiceResultBlock)block;
+
+
+/**
+ 处理钱包服务回跳APP的URL
+
+ @param url 回跳URL
+ @param block 业务结果回掉的block,详情见调用接口入参上的block。注意此接口上的block只有在跳转钱包后,当前APP被系统回收的情况下回跳才生效
+ */
++ (void)handleResponseURL:(NSURL *)url
+           withCompletion:(AFServiceResultBlock)block;
+
+@end

+ 43 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AFServiceResponse.h

@@ -0,0 +1,43 @@
+//
+//  AFServiceResponse.h
+//  AFServiceSDK
+//
+//  Created by jiajunchen on 08/01/2018.
+//  Copyright © 2018 antfin. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/**
+ 钱包服务调用结果状态吗
+
+ - AFResSuccess: 默认值,业务调用成功,结果数据参见result字段
+ - AFResInvalidService: service枚举值错误
+ - AFResInvalidURL: 钱包回跳URL错误
+ - AFResRepeatCall: 业务重复调用(3s内)
+ - AFResOpenURLErr: 跳转失败
+ */
+typedef NS_ENUM(NSUInteger, AFResCode) {
+    AFResSuccess = 0,
+    AFResInvalidService = 100,
+    AFResInvalidURL,
+    AFResRepeatCall,
+    AFResOpenURLErr,
+};
+
+
+@interface AFServiceResponse : NSObject
+
+
+/**
+ 业务调用状态吗
+ */
+@property (nonatomic, assign) AFResCode responseCode;
+
+
+/**
+ 业务结果Dictionary, 内容请参考具体业务方接入文档
+ */
+@property (readonly) NSDictionary *result;
+
+@end

+ 33 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/APayAuthInfo.h

@@ -0,0 +1,33 @@
+//
+//  APAuthInfo.h
+//  APAuth
+//
+//  Created by antfin on 17-10-24.
+//  Copyright (c) 2017年 AntFin. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface APayAuthInfo : NSObject
+
+@property(nonatomic, copy)NSString *appID;
+@property(nonatomic, copy)NSString *pid;
+@property(nonatomic, copy)NSString *redirectUri;
+
+/**
+ *  初始化AuthInfo
+ *
+ *  @param appIDStr     应用ID
+ *  @param pidStr       商户ID   可不填
+ *  @param uriStr       授权的应用回调地址  比如:alidemo://auth
+ *
+ *  @return authinfo实例
+ */
+- (id)initWithAppID:(NSString *)appIDStr
+                pid:(NSString *)pidStr
+        redirectUri:(NSString *)uriStr;
+
+- (NSString *)description;
+- (NSString *)wapDescription;
+
+@end

+ 246 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/Headers/AlipaySDK.h

@@ -0,0 +1,246 @@
+//
+//  AlipaySDK.h
+//  AlipaySDK
+//
+//  Created by antfin on 17-10-24.
+//  Copyright (c) 2017年 AntFin. All rights reserved.
+//
+
+
+////////////////////////////////////////////////////////
+///////////////// 支付宝标准版本支付SDK ///////////////////
+///////// version:15.8.16  modify:2023.08.02///////////
+////////////////////////////////////////////////////////
+
+#import <UIKit/UIKit.h>
+#import "APayAuthInfo.h"
+#import "AFServiceCenter.h"
+#import "AFServiceResponse.h"
+
+typedef void(^CompletionBlock)(NSDictionary *resultDic);
+
+typedef enum {
+    ALIPAY_TIDFACTOR_IMEI,
+    ALIPAY_TIDFACTOR_IMSI,
+    ALIPAY_TIDFACTOR_TID,
+    ALIPAY_TIDFACTOR_CLIENTKEY,
+    ALIPAY_TIDFACTOR_VIMEI,
+    ALIPAY_TIDFACTOR_VIMSI,
+    ALIPAY_TIDFACTOR_CLIENTID,
+    ALIPAY_TIDFACTOR_APDID,
+    ALIPAY_TIDFACTOR_MAX
+} AlipayTidFactor;
+
+@interface AlipaySDK : NSObject
+
+/**
+ *  创建支付单例服务
+ *
+ *  @return 返回单例对象
+ */
++ (AlipaySDK *)defaultService;
+
+/**
+ *  用于设置SDK使用的window,如果没有自行创建window无需设置此接口
+ */
+@property (nonatomic, weak) UIWindow *targetWindow;
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝支付相关接口/////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  支付接口
+ *
+ *  @param orderStr                支付订单信息字串
+ *  @param schemeStr              调用支付的app注册在info.plist中的scheme
+ *  @param completionBlock 支付结果回调Block,用于wap支付结果回调,跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ */
+- (void)payOrder:(NSString *)orderStr
+      fromScheme:(NSString *)schemeStr
+        callback:(CompletionBlock)completionBlock;
+
+/**
+ *  支付接口 v2
+ *
+ *  @param orderStr        支付订单信息字串
+ *  @param dynamicLaunch   是否使用动态配置策略跳转支付宝支付
+ *  @param schemeStr       调用支付的app注册在info.plist中的scheme
+ *  @param completionBlock 支付结果回调Block,用于wap支付结果回调
+ 跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ */
+- (void)payOrder:(NSString *)orderStr
+   dynamicLaunch:(BOOL)dynamicLaunch
+      fromScheme:(NSString *)schemeStr
+        callback:(CompletionBlock)completionBlock;
+
+/**
+ *  处理支付宝app支付后跳回商户app携带的支付结果Url
+ *
+ *  @param resultUrl        支付宝app返回的支付结果url
+ *  @param completionBlock  支付结果回调 为nil时默认使用支付接口的completionBlock
+ */
+- (void)processOrderWithPaymentResult:(NSURL *)resultUrl
+                      standbyCallback:(CompletionBlock)completionBlock;
+
+
+/**
+ *  商户接入UniversalLink支付接口使用该接口
+ *
+ *  @param orderStr                  支付订单信息字串
+ *  @param schemeStr                调用支付的app注册在info.plist中的scheme
+ *  @param universalLink       调用支付的app关联的universalLink,如'https://render.alipay.com/'
+ *  @param completionBlock   支付结果回调Block,用于wap支付结果回调,跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
+ */
+- (void) payOrder:(NSString *)orderStr
+       fromScheme:(NSString *)schemeStr
+fromUniversalLink:(NSString *)universalLink
+         callback:(CompletionBlock)completionBlock;
+
+
+/**
+ *  处理支付宝app支付后通过universalLink跳回商户app携带的支付结果处理
+ *
+ *  @param userActivity            系统接口传入的userActivity
+ *  @param completionBlock     支付结果回调 为nil时默认使用支付接口的completionBlock
+ */
+- (void)handleOpenUniversalLink:(NSUserActivity *)userActivity standbyCallback:(CompletionBlock)completionBlock;
+
+
+/**
+ *  获取交易token。
+ *
+ *  @return 交易token,若无则为空。
+ */
+- (NSString *)fetchTradeToken;
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝授权 2.0 相关接口////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  快登授权2.0
+ *
+ *  @param infoStr          授权请求信息字串
+ *  @param schemeStr        调用授权的app注册在info.plist中的scheme
+ *  @param completionBlock  授权结果回调,需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果
+ *                          若在授权过程中,调用方应用被系统终止则此block无效(此时会调用'processAuth_V2Result:standbyCallback:'传入的standbyCallback)
+ */
+- (void)auth_V2WithInfo:(NSString *)infoStr
+             fromScheme:(NSString *)schemeStr
+               callback:(CompletionBlock)completionBlock;
+
+/**
+ *  处理支付宝app授权后跳回商户app携带的授权结果Url
+ *
+ *  @param resultUrl        支付宝app返回的授权结果url
+ *  @param completionBlock  授权结果回调,用于处理跳转支付宝授权过程中商户APP被系统终止的情况
+ */
+- (void)processAuth_V2Result:(NSURL *)resultUrl
+             standbyCallback:(CompletionBlock)completionBlock;
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝授权 1.0 相关接口////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+/**
+ *  快登授权
+ *  @param authInfo         授权相关信息
+ *  @param completionBlock  授权结果回调,若在授权过程中,调用方应用被系统终止,则此block无效,
+                            需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果
+ */
+- (void)authWithInfo:(APayAuthInfo *)authInfo
+            callback:(CompletionBlock)completionBlock;
+
+/**
+ *  处理支付宝app授权后跳回商户app携带的授权结果Url
+ *
+ *  @param resultUrl        支付宝app返回的授权结果url
+ *  @param completionBlock  授权结果回调
+ */
+- (void)processAuthResult:(NSURL *)resultUrl
+          standbyCallback:(CompletionBlock)completionBlock;
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝 h5 支付转 native 支付接口////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ *  从h5链接中获取订单串并支付接口(自版本15.4.0起,推荐使用该接口)
+ *
+ *  @param urlStr     拦截的 url string
+ *
+ *  @return YES为成功获取订单信息并发起支付流程;NO为无法获取订单信息,输入url是普通url
+ */
+- (BOOL)payInterceptorWithUrl:(NSString *)urlStr
+                   fromScheme:(NSString *)schemeStr
+                     callback:(CompletionBlock)completionBlock;
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝 tid 相关信息获取接口/////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  获取当前tid相关信息
+ *
+ *  @return tid相关信息
+ */
+- (NSString*)queryTidFactor:(AlipayTidFactor)factor;
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////支付宝支付环境相关信息接口//////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  是否已经使用过
+ *
+ *  @return YES为已经使用过,NO反之
+ */
+- (BOOL)isLogined;
+
+/**
+ *  获取当前版本号
+ *
+ *  @return 当前版本字符串
+ */
+- (NSString *)currentVersion;
+
+/**
+ *  測試所用,realse包无效
+ *
+ *  @param url  测试环境
+ */
+- (void)setUrl:(NSString *)url;
+
+/**
+ *  支付前主动更新本地配置
+ *
+ *  @param block 更新请求结果回调
+ */
+- (void)fetchSdkConfigWithBlock:(void(^)(BOOL success))block;
+
+
+typedef void(^APLogBlock)(NSString *log);
+
+/**
+*   接收AlipaySDK的log信息
+*
+*  @param logBlock 打印log的回调block
+*/
++ (void)startLogWithBlock:(APLogBlock)logBlock;
+
+/**
+*   停止输出log,会释放logBlock
+*
+*
+*/
++ (void)stopLog;
+
+@end

BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeDirectory


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeRequirements


BIN
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeRequirements-1


+ 319 - 0
KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeResources

@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>files</key>
+	<dict>
+		<key>AlipaySDK-inside-Info.plist</key>
+		<data>
+		1eNodgoJjexIXNkgnNN0zvMoQWI=
+		</data>
+		<key>AlipaySDK.bundle/alipay_msp_back@2x.png</key>
+		<data>
+		9QmweA7IyncTPWZIOx5ECL2ne4o=
+		</data>
+		<key>AlipaySDK.bundle/alipay_msp_refresh@2x.png</key>
+		<data>
+		ivQn6LWpOB8BoUbNdxsIvfbJbuM=
+		</data>
+		<key>AlipaySDK.bundle/bar@2x.png</key>
+		<data>
+		ENmQmLXuSOxBy844XKkdTedcv2Y=
+		</data>
+		<key>AlipaySDK.bundle/bridge.js</key>
+		<data>
+		sgZ31kacqvJAHbN7Ywt45Mglc6o=
+		</data>
+		<key>AlipaySDK.bundle/refresh@2x.png</key>
+		<data>
+		MrXCB0ZUwnx4+zfw1X2jzlNdDc4=
+		</data>
+		<key>AlipaySDK.bundle/refresh_click@2x.png</key>
+		<data>
+		Q5O/60AWCbG5LfvVC3+guPjpeFs=
+		</data>
+		<key>AlipaySDK.bundle/shutdown@2x.png</key>
+		<data>
+		Z3Jf5aw1lVPaKemSw8qXPabBLcw=
+		</data>
+		<key>AlipaySDK.bundle/shutdown_click@2x.png</key>
+		<data>
+		v8pstv1HbmoW3gdlKZzSqn31WHY=
+		</data>
+		<key>Headers/AFServiceCenter.h</key>
+		<data>
+		AQaJpNuFjISlEnxg4oc++V6HKDs=
+		</data>
+		<key>Headers/AFServiceResponse.h</key>
+		<data>
+		kmXpMRX3EHJQ2GcKHGTF42sh5W0=
+		</data>
+		<key>Headers/APayAuthInfo.h</key>
+		<data>
+		gJOMjyPrvesSF0hKcHM3CVMNDJQ=
+		</data>
+		<key>Headers/AlipaySDK.h</key>
+		<data>
+		8XwC+MqQpDbmMpi+DX1Rqs4rmm4=
+		</data>
+		<key>Info.plist</key>
+		<data>
+		8zhFy4JJEZW3WMNlkPg+bXYE9Gc=
+		</data>
+		<key>en.lproj/InfoPlist.strings</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			zmV6UqBSo6r1NOz798vd5O4zTBA=
+			</data>
+			<key>optional</key>
+			<true/>
+		</dict>
+	</dict>
+	<key>files2</key>
+	<dict>
+		<key>AlipaySDK-inside-Info.plist</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			1eNodgoJjexIXNkgnNN0zvMoQWI=
+			</data>
+			<key>hash2</key>
+			<data>
+			BrDPBL2W2wSe1mgUv7agJTpxXb/lKF3XOJfP0w2hoNc=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/alipay_msp_back@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			9QmweA7IyncTPWZIOx5ECL2ne4o=
+			</data>
+			<key>hash2</key>
+			<data>
+			pqv6sMiIl+QnblEyN3FQCDRwbxFEJpY5Roe80rSkaA4=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/alipay_msp_refresh@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			ivQn6LWpOB8BoUbNdxsIvfbJbuM=
+			</data>
+			<key>hash2</key>
+			<data>
+			eSIZGIUsqcDz03r9ISTu2jNwTz0msn0tSSEOTq8KYz0=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/bar@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			ENmQmLXuSOxBy844XKkdTedcv2Y=
+			</data>
+			<key>hash2</key>
+			<data>
+			38AV6Lw9+K+g+t7MHjtEKIJarVILLcTXm0o58ki9C3Q=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/bridge.js</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			sgZ31kacqvJAHbN7Ywt45Mglc6o=
+			</data>
+			<key>hash2</key>
+			<data>
+			5Sf9BPwyQ3bHoIdJYsGubF6CsgDuqngeWVkh3Ggm5Rc=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/refresh@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			MrXCB0ZUwnx4+zfw1X2jzlNdDc4=
+			</data>
+			<key>hash2</key>
+			<data>
+			mR8Iqbh2To/+bYNWFk0IbpoorNfzg31HgUB8v89EphQ=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/refresh_click@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			Q5O/60AWCbG5LfvVC3+guPjpeFs=
+			</data>
+			<key>hash2</key>
+			<data>
+			qkSv6KIv4z3l+TmK/G5Gms3oYZripYuLCK2rB2rmyhY=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/shutdown@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			Z3Jf5aw1lVPaKemSw8qXPabBLcw=
+			</data>
+			<key>hash2</key>
+			<data>
+			mWjeqq55Ym3S0vhMp13qIXpvbIkaeheRy9CnDbpcqhQ=
+			</data>
+		</dict>
+		<key>AlipaySDK.bundle/shutdown_click@2x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			v8pstv1HbmoW3gdlKZzSqn31WHY=
+			</data>
+			<key>hash2</key>
+			<data>
+			dE2ndHqk8MuNrgTt2yHONxfP38nq2HUgB4t2jKRl8SI=
+			</data>
+		</dict>
+		<key>Headers/AFServiceCenter.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			AQaJpNuFjISlEnxg4oc++V6HKDs=
+			</data>
+			<key>hash2</key>
+			<data>
+			6LTn9ui9fej1+gAIMRA0A8tYete1h+5FyCKvdDubNTY=
+			</data>
+		</dict>
+		<key>Headers/AFServiceResponse.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			kmXpMRX3EHJQ2GcKHGTF42sh5W0=
+			</data>
+			<key>hash2</key>
+			<data>
+			Asp+7KYSwYGi9WCHRSYYiTb3SBRlkdfI0FVEIYrI3gg=
+			</data>
+		</dict>
+		<key>Headers/APayAuthInfo.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			gJOMjyPrvesSF0hKcHM3CVMNDJQ=
+			</data>
+			<key>hash2</key>
+			<data>
+			YdDScCCH/DS/7WgISrrhBnFB06W7eY1H1UQNRFImM2w=
+			</data>
+		</dict>
+		<key>Headers/AlipaySDK.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			8XwC+MqQpDbmMpi+DX1Rqs4rmm4=
+			</data>
+			<key>hash2</key>
+			<data>
+			JzobtSIFkFOPENnZPYwM6VyyesCbgdsUTeeQZV4+ZXY=
+			</data>
+		</dict>
+		<key>en.lproj/InfoPlist.strings</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			zmV6UqBSo6r1NOz798vd5O4zTBA=
+			</data>
+			<key>hash2</key>
+			<data>
+			kmHsztpgjvF0JW5f3HdMHm49z1M0CcG8OT1JDQHHE/E=
+			</data>
+			<key>optional</key>
+			<true/>
+		</dict>
+	</dict>
+	<key>rules</key>
+	<dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^version.plist$</key>
+		<true/>
+	</dict>
+	<key>rules2</key>
+	<dict>
+		<key>.*\.dSYM($|/)</key>
+		<dict>
+			<key>weight</key>
+			<real>11</real>
+		</dict>
+		<key>^(.*/)?\.DS_Store$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>2000</real>
+		</dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^Info\.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^PkgInfo$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^embedded\.provisionprofile$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^version\.plist$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+	</dict>
+</dict>
+</plist>

+ 0 - 0
KulexiuForStudent/Pods/Whiteboard/Whiteboard/Resource/aae95af → KulexiuForStudent/Pods/AlipaySDK-iOS/AlipaySDK.xcframework/ios-arm64_x86_64-simulator/AlipaySDK.framework/_CodeSignature/CodeSignature


+ 1 - 1
KulexiuForStudent/Pods/AlipaySDK-iOS/LICENSE

@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2018 Antfin
+Copyright (c) 2023 Antfin
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal

BIN
KulexiuForStudent/Pods/Bugly/Bugly.framework/Bugly


+ 1 - 1
KulexiuForStudent/Pods/Bugly/Bugly.framework/Headers/Bugly.h

@@ -1,7 +1,7 @@
 //
 //  Bugly.h
 //
-//  Version: 2.5(93)
+//  Version: 2.6(1)
 //
 //  Copyright (c) 2017年 Tencent. All rights reserved.
 //

+ 41 - 0
KulexiuForStudent/Pods/Bugly/Bugly.framework/PrivacyInfo.xcprivacy

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>NSPrivacyAccessedAPITypes</key>
+	<array>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>C617.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>35F9.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>E174.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>CA92.1</string>
+			</array>
+		</dict>
+	</array>
+</dict>
+</plist>

+ 1 - 0
KulexiuForStudent/Pods/Headers/Private/White_YYModel/NSObject+White_YYModel.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/NSObject+White_YYModel.h

+ 1 - 0
KulexiuForStudent/Pods/Headers/Private/White_YYModel/White_YYClassInfo.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/White_YYClassInfo.h

+ 1 - 0
KulexiuForStudent/Pods/Headers/Private/White_YYModel/White_YYModel.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/White_YYModel.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Private/Whiteboard/NSObject+YY.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Model/NSObject+YY.h

+ 1 - 0
KulexiuForStudent/Pods/Headers/Private/Whiteboard/WhiteAudioEffectMixerBridge.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Displayer/WhiteAudioEffectMixerBridge.h

+ 1 - 0
KulexiuForStudent/Pods/Headers/Private/Whiteboard/WhiteProjectorStaticImageInfo.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Converter/Projector/WhiteProjectorStaticImageInfo.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Private/Whiteboard/WhiteSocket+Private.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Room/WhiteSocket+Private.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Private/Whiteboard/WhiteSocket.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Room/WhiteSocket.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Private/YYModel/NSObject+YYModel.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/NSObject+YYModel.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Private/YYModel/YYClassInfo.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/YYClassInfo.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Private/YYModel/YYModel.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/YYModel.h

+ 1 - 0
KulexiuForStudent/Pods/Headers/Public/White_YYModel/NSObject+White_YYModel.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/NSObject+White_YYModel.h

+ 1 - 0
KulexiuForStudent/Pods/Headers/Public/White_YYModel/White_YYClassInfo.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/White_YYClassInfo.h

+ 1 - 0
KulexiuForStudent/Pods/Headers/Public/White_YYModel/White_YYModel.h

@@ -0,0 +1 @@
+../../../White_YYModel/White_YYModel/White_YYModel.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Public/Whiteboard/NSObject+YY.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Model/NSObject+YY.h

+ 1 - 0
KulexiuForStudent/Pods/Headers/Public/Whiteboard/WhiteAudioEffectMixerBridge.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Displayer/WhiteAudioEffectMixerBridge.h

+ 1 - 0
KulexiuForStudent/Pods/Headers/Public/Whiteboard/WhiteProjectorStaticImageInfo.h

@@ -0,0 +1 @@
+../../../Whiteboard/Whiteboard/Classes/Converter/Projector/WhiteProjectorStaticImageInfo.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Public/Whiteboard/WhiteSocket.h

@@ -1 +0,0 @@
-../../../Whiteboard/Whiteboard/Classes/Room/WhiteSocket.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Public/YYModel/NSObject+YYModel.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/NSObject+YYModel.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Public/YYModel/YYClassInfo.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/YYClassInfo.h

+ 0 - 1
KulexiuForStudent/Pods/Headers/Public/YYModel/YYModel.h

@@ -1 +0,0 @@
-../../../YYModel/YYModel/YYModel.h

+ 29 - 45
KulexiuForStudent/Pods/Manifest.lock

@@ -14,8 +14,8 @@ PODS:
   - AFNetworking/Serialization (4.0.1)
   - AFNetworking/UIKit (4.0.1):
     - AFNetworking/NSURLSession
-  - AlipaySDK-iOS (15.8.8)
-  - Bugly (2.5.93)
+  - AlipaySDK-iOS (15.8.16)
+  - Bugly (2.6.1)
   - CHIPageControl (0.2):
     - CHIPageControl/Aji (= 0.2)
     - CHIPageControl/Aleppo (= 0.2)
@@ -68,13 +68,13 @@ PODS:
   - MBProgressHUD (1.2.0)
   - MJExtension (3.3.0)
   - MJRefresh (3.1.17)
-  - NTLBridge (3.1.5)
-  - QCloudCore/WithoutMTA (6.4.4)
-  - QCloudCOSXML/Transfer (6.4.4):
-    - QCloudCore/WithoutMTA (= 6.4.4)
+  - NTLBridge (3.1.6)
+  - QCloudCore/WithoutMTA (6.4.5)
+  - QCloudCOSXML/Transfer (6.4.5):
+    - QCloudCore/WithoutMTA (= 6.4.5)
   - Reachability (3.7.6)
   - ReactiveObjC (3.1.1)
-  - RSKImageCropper (4.0.0)
+  - RSKImageCropper (5.0.0)
   - SDWebImage (5.16.0):
     - SDWebImage/Core (= 5.16.0)
   - SDWebImage/Core (5.16.0)
@@ -264,35 +264,19 @@ PODS:
     - TXLiteAVSDK_Professional/Professional (= 11.7.15304)
   - TXLiteAVSDK_Professional/Professional (11.7.15304)
   - TYCyclePagerView (1.2.0)
-  - TZImagePickerController (3.8.7):
-    - TZImagePickerController/Basic (= 3.8.7)
-    - TZImagePickerController/Location (= 3.8.7)
-  - TZImagePickerController/Basic (3.8.7)
-  - TZImagePickerController/Location (3.8.7)
-  - Whiteboard (2.16.69):
-    - Whiteboard/Whiteboard-YYModel (= 2.16.69)
-  - Whiteboard/Base (2.16.69):
+  - TZImagePickerController (3.8.8):
+    - TZImagePickerController/Basic (= 3.8.8)
+    - TZImagePickerController/Location (= 3.8.8)
+  - TZImagePickerController/Basic (3.8.8)
+  - TZImagePickerController/Location (3.8.8)
+  - White_YYModel (1.0.6)
+  - Whiteboard (2.16.107):
+    - Whiteboard/Whiteboard-Basic (= 2.16.107)
+  - Whiteboard/Resource (2.16.107)
+  - Whiteboard/Whiteboard-Basic (2.16.107):
     - NTLBridge (~> 3.1.4)
-    - Whiteboard/Object
-  - Whiteboard/Converter (2.16.69):
-    - Whiteboard/Object
-  - Whiteboard/Model (2.16.69):
-    - YYModel
-  - Whiteboard/NativeReplayer (2.16.69):
-    - Whiteboard/Replayer
-  - Whiteboard/Object (2.16.69):
-    - Whiteboard/Model
-  - Whiteboard/Replayer (2.16.69):
-    - Whiteboard/Base
-  - Whiteboard/Resource (2.16.69)
-  - Whiteboard/Room (2.16.69):
-    - Whiteboard/Base
-  - Whiteboard/Whiteboard-YYModel (2.16.69):
-    - Whiteboard/Converter
-    - Whiteboard/NativeReplayer
+    - White_YYModel
     - Whiteboard/Resource
-    - Whiteboard/Room
-  - YYModel (1.0.4)
 
 DEPENDENCIES:
   - AlipaySDK-iOS
@@ -351,8 +335,8 @@ SPEC REPOS:
     - TXLiteAVSDK_Professional
     - TYCyclePagerView
     - TZImagePickerController
+    - White_YYModel
     - Whiteboard
-    - YYModel
 
 EXTERNAL SOURCES:
   KSCloudAccompanyLibrary:
@@ -362,8 +346,8 @@ EXTERNAL SOURCES:
 
 SPEC CHECKSUMS:
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
-  AlipaySDK-iOS: 9289d94792535cd14c5c241c720a7e981edd7035
-  Bugly: b8715e6ec4004b7f7fbffab0643ba80545aee3da
+  AlipaySDK-iOS: 5e6011fbd546e7db6b43c1f527d164ee63f3d7cb
+  Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
   CHIPageControl: a787bf7205c9b7e7fbfc412be36c5e8636b68f86
   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
   CocoaHTTPServer: 71538be9be526cf950cb4d9c9465153ea45cac99
@@ -380,12 +364,12 @@ SPEC CHECKSUMS:
   MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
   MJExtension: 01704cca2b60a214c10761b6491eab74069d68a9
   MJRefresh: ee5b68f639775462faba4db0fd243baf4d42c2cf
-  NTLBridge: e94dc18242476b0238c10213a5438d9b9a59fcce
-  QCloudCore: 9b13ad49cf5fc4537f416811f31c41cf46d8f3c2
-  QCloudCOSXML: b24d8a1225e4b3270d36bbcfa66478fedc1c6de6
+  NTLBridge: 6ef7f3c1fc956f2e2d701a89828d51674bd479c7
+  QCloudCore: a1c543624fe34c5e98c92b7faf421a23f57ad5e3
+  QCloudCOSXML: 8185a7a51c7dce6ff1a25c725907f6beb270cd01
   Reachability: fd0ecd23705e2599e4cceeb943222ae02296cbc6
   ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
-  RSKImageCropper: 90dfe482402fb8a40cabd5fea65186d9102cc425
+  RSKImageCropper: d75b28a83673edb7bef40ad6287835cdcb732093
   SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
   SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
   SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
@@ -398,10 +382,10 @@ SPEC CHECKSUMS:
   TXIMSDK_Plus_iOS: 4fe66054d3bc6953f21562c5b2bcce5526ba589f
   TXLiteAVSDK_Professional: 60add29dbe52bed7d828f1d68d88487d9f16e9d1
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
-  TZImagePickerController: 5f35bb7266552e36ca834bafa955b869fe086124
-  Whiteboard: 9d5a68d3738bd0ba8cd98820c506d13108976696
-  YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
+  TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
+  White_YYModel: 4ed7b231471784ec709d4db954e1ca61a4fbe54d
+  Whiteboard: edf8398203cadc352008b9f0ea614650b6d4d0c2
 
 PODFILE CHECKSUM: 221b3b2657d58b6f5db27102245d3177b9eed01f
 
-COCOAPODS: 1.15.2
+COCOAPODS: 1.16.2

File diff suppressed because it is too large
+ 4811 - 4809
KulexiuForStudent/Pods/Pods.xcodeproj/project.pbxproj


+ 0 - 58
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/YYModel.xcscheme

@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1610"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "84B44807A12996D487A4A591A481D6A0"
-               BuildableName = "libYYModel.a"
-               BlueprintName = "YYModel"
-               ReferencedContainer = "container:Pods.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Release"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>

+ 3 - 3
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -239,17 +239,17 @@
 			<key>isShown</key>
 			<false/>
 		</dict>
-		<key>Whiteboard-Whiteboard.xcscheme</key>
+		<key>White_YYModel.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 		</dict>
-		<key>Whiteboard.xcscheme</key>
+		<key>Whiteboard-Whiteboard.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 		</dict>
-		<key>YYModel.xcscheme</key>
+		<key>Whiteboard.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>

+ 12 - 0
KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Base/QCloudCOSXMLEndPoint.m

@@ -78,6 +78,18 @@
     } else {
         regionNametmp = self.regionName;
     }
+    
+    if ([self.serviceName isEqualToString:@"myqcloud.com"]) {
+        NSParameterAssert(regionNametmp);
+        static NSString *regularExpression = @"[a-zA-Z0-9.-]*";
+        BOOL isLegal = [regionNametmp matchesRegularExpression:regularExpression];
+        NSAssert(isLegal, @"Region name contains illegal character! It can only contains a-z, A-Z, 0-9, '.' and '-' ");
+        if (!isLegal) {
+            QCloudLogDebug(@"Region %@ contains illeagal character, setter returns immediately", regionName);
+            return nil;
+        }
+    }
+    
     NSURL *serverURL;
 
     serverURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@.cos.%@.%@", scheme, formattedBucketName, regionNametmp, self.serviceName]];

+ 2 - 2
KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/QCloudCOSXMLVersion.h

@@ -5,7 +5,7 @@
 
 #ifndef QCloudCOSXMLModuleVersion_h
 #define QCloudCOSXMLModuleVersion_h
-#define QCloudCOSXMLModuleVersionNumber 604004
+#define QCloudCOSXMLModuleVersionNumber 604005
 
 //dependency
 
@@ -13,4 +13,4 @@
 FOUNDATION_EXTERN NSString * const QCloudCOSXMLModuleVersion;
 FOUNDATION_EXTERN NSString * const QCloudCOSXMLModuleName;
 
-#endif
+#endif

+ 2 - 2
KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/QCloudCOSXMLVersion.m

@@ -1,5 +1,5 @@
 #import "QCloudCOSXMLVersion.h"
-NSString * const QCloudCOSXMLModuleVersion = @"6.4.4";
+NSString * const QCloudCOSXMLModuleVersion = @"6.4.5";
 NSString * const QCloudCOSXMLModuleName = @"QCloudCOSXML";
 @interface QCloudQCloudCOSXMLLoad : NSObject
 @end
@@ -26,4 +26,4 @@ NSString * const QCloudCOSXMLModuleName = @"QCloudCOSXML";
 #pragma clang diagnostic pop
     }
 }
-@end
+@end

+ 20 - 3
KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Transfer/request/QCloudCOSXMLUploadObjectRequest.m

@@ -213,7 +213,7 @@ NSString *const QCloudUploadResumeDataKey = @"__QCloudUploadResumeDataKey__";
     QCloudLogDebug(@"resume startPartNumber =   offset =  %ld %ld", startPartNumber, uploadedSize);
 }
 
-- (void)resumeUpload {
+-(void)listParts:(QCloudListPartsResult *)input finish:(void (^_Nullable)(QCloudListPartsResult *_Nullable, NSError *_Nullable))finishBlock{
     QCloudListMultipartRequest *request = [QCloudListMultipartRequest new];
     request.timeoutInterval = self.timeoutInterval;
     request.enableQuic = self.enableQuic;
@@ -222,6 +222,7 @@ NSString *const QCloudUploadResumeDataKey = @"__QCloudUploadResumeDataKey__";
     request.regionName = self.regionName;
     request.bucket = self.bucket;
     request.uploadId = self.uploadId;
+    request.partNumberMarker = input.nextNumberMarker;
     request.retryPolicy.delegate = self;
     __weak typeof(request) weakRequest = request;
     __weak typeof(self) weakSelf = self;
@@ -229,12 +230,28 @@ NSString *const QCloudUploadResumeDataKey = @"__QCloudUploadResumeDataKey__";
         __strong typeof(weakSelf) strongSelf = weakSelf;
         __strong typeof(weakRequest) strongRequst = weakRequest;
         [strongSelf.requstMetricArray addObject:@ { [NSString stringWithFormat:@"%@", strongRequst] : weakRequest.benchMarkMan.tastMetrics }];
-
-        [weakSelf continueMultiUpload:result];
+        if (input && input.parts.count > 0 && result && result.parts) {
+            NSMutableArray * tempParts = input.parts.mutableCopy;
+            [tempParts addObjectsFromArray:result.parts];
+            result.parts = tempParts.copy;
+        }
+        if (result.nextNumberMarker) {
+            [self listParts:result finish:finishBlock];
+        }else{
+            finishBlock(result,error);
+        }
     }];
 
     [self.transferManager.cosService ListMultipart:request];
 }
+
+- (void)resumeUpload {
+    __weak typeof(self) weakSelf = self;
+    [self listParts:nil finish:^(QCloudListPartsResult * _Nullable result, NSError * _Nullable error) {
+        __strong typeof(weakSelf) strongSelf = weakSelf;
+        [weakSelf continueMultiUpload:result];
+    }];
+}
 - (void)fakeStart {
     [self.benchMarkMan benginWithKey:kTaskTookTime];
     if (self.uploadId) {

+ 0 - 3
KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Transfer/request/QCloudGetObjectRequest.h

@@ -132,9 +132,6 @@ RFC 2616 中定义的指定文件下载范围,以字节(bytes)为单位
 */
 @property (strong, nonatomic) NSString *object;
 
-/// 是否禁用路径检查,默认不禁用。
-@property (assign, nonatomic)  BOOL objectKeySimplifyCheck;
-
 /**
 存储桶名
 */

+ 0 - 16
KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Transfer/request/QCloudGetObjectRequest.m

@@ -204,21 +204,5 @@ NS_ASSUME_NONNULL_BEGIN
     return [array copy];
 }
 
-- (NSString *)simplifyPath:(NSString *)path {
-    NSArray *names = [path componentsSeparatedByString:@"/"];
-    NSMutableArray *stack = [NSMutableArray array];
-    for (NSString *name in names) {
-        if ([name isEqualToString:@".."]) {
-            if (stack.count > 0) {
-                [stack removeLastObject];
-            }
-        } else if (name.length > 0 && ![name isEqualToString:@"."]) {
-            [stack addObject:name];
-        }
-    }
-    return [@"/" stringByAppendingString:[stack componentsJoinedByString:@"/"]];
-}
-
-
 @end
 NS_ASSUME_NONNULL_END

+ 3 - 3
KulexiuForStudent/Pods/QCloudCOSXML/QCloudCOSXML/Classes/Transfer/request/QCloudListMultipartRequest.m

@@ -104,13 +104,13 @@ NS_ASSUME_NONNULL_BEGIN
     }
     [self.requestData setParameter:self.uploadId withKey:@"uploadId"];
     if (self.maxPartsCount) {
-        [self.requestData setValue:self.maxPartsCount forHTTPHeaderField:@"max-parts"];
+        [self.requestData setParameter:self.maxPartsCount withKey:@"max-parts"];
     }
     if (self.partNumberMarker) {
-        [self.requestData setValue:self.partNumberMarker forHTTPHeaderField:@"part-number-marker"];
+        [self.requestData setParameter:self.partNumberMarker withKey:@"part-number-marker"];
     }
     if (self.encodingType) {
-        [self.requestData setValue:self.encodingType forHTTPHeaderField:@"Encoding-Type"];
+        [self.requestData setParameter:self.encodingType withKey:@"Encoding-Type"];
     }
     NSMutableArray *__pathComponents = [NSMutableArray arrayWithArray:self.requestData.URIComponents];
     if (self.object)

+ 4 - 0
KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCLOUDRestNet/CoreRequest/QCloudHTTPRequest.m

@@ -132,6 +132,10 @@
         return nil;
     }
 
+    if (self.isRetry) {
+        [self.requestData setValue:@"true" forHTTPHeaderField:@"x-cos-sdk-retry"];
+    }
+    
     [self.benchMarkMan benginWithKey:kCalculateMD5STookTime];
     NSURLRequest *request = [self.requestSerializer requestWithData:self.requestData error:error];
     if ([request.allHTTPHeaderFields objectForKey:@"Content-MD5"]) {

+ 6 - 1
KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCLOUDRestNet/SessionSupport/QCloudHTTPSessionManager.m

@@ -227,10 +227,15 @@ QCloudThreadSafeMutableDictionary *QCloudBackgroundSessionManagerCache(void) {
         
        #endif
     }
-}
+} 
 
 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse *)response newRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLRequest * _Nullable))completionHandler{
+    
     QCloudURLSessionTaskData *taskData = [self taskDataForTask:task];
+    if (!taskData.httpRequest.runOnService.configuration.enableGlobalRedirection) {
+        completionHandler(nil);
+        return;
+    }
     if(![taskData.httpRequest needChangeHost] || taskData.httpRequest.runOnService.configuration.disableChangeHost == YES || [response.allHeaderFields.allKeys containsObject:@"x-cos-request-id"] || [request.URL.absoluteURL.host rangeOfString:@"tencentcos.cn"].length > 0){
         completionHandler(request);
     }else{

+ 3 - 1
KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudClientBase/Request/QCloudBizHTTPRequest.h

@@ -31,6 +31,8 @@ extern _Nonnull QCloudResponseSerializerBlock QCloudResponseCOSNormalRSPSerilize
 // 若 request中设置了 credential ,则不回调该代理方法。
 @property (nonatomic, strong) id<QCloudSignatureProvider> signatureProvider;
 
+/// 是否禁用路径检查,默认不禁用。
+@property (assign, nonatomic)  BOOL objectKeySimplifyCheck;
 
 /*
  在进行HTTP请求的时候,可以通过设置该参数来设置自定义的一些头部信息。
@@ -66,7 +68,7 @@ extern _Nonnull QCloudResponseSerializerBlock QCloudResponseCOSNormalRSPSerilize
 - (void)loadQCloudSignature;
 - (void)setCOSServerSideEncyption;
 - (void)setCOSServerSideEncyptionWithCustomerKey:(NSString *)customerKey;
-;
+- (NSString *)simplifyPath:(NSString *)path;
 @end
 
 NS_ASSUME_NONNULL_END

+ 14 - 0
KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudClientBase/Request/QCloudBizHTTPRequest.m

@@ -247,6 +247,20 @@ NSString *EncrytNSDataMD5Base64(NSData *data) {
     self.customHeaders[@"x-cos-server-side-encryption-customer-key-MD5"] = base64md5key;
 }
 
+- (NSString *)simplifyPath:(NSString *)path {
+    NSArray *names = [path componentsSeparatedByString:@"/"];
+    NSMutableArray *stack = [NSMutableArray array];
+    for (NSString *name in names) {
+        if ([name isEqualToString:@".."]) {
+            if (stack.count > 0) {
+                [stack removeLastObject];
+            }
+        } else if (name.length > 0 && ![name isEqualToString:@"."]) {
+            [stack addObject:name];
+        }
+    }
+    return [@"/" stringByAppendingString:[stack componentsJoinedByString:@"/"]];
+}
 @end
 
 NS_ASSUME_NONNULL_END

+ 5 - 0
KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudClientBase/Service/QCloudConfiguration.h

@@ -21,6 +21,9 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, assign) BOOL enableQuic;
 
+/// 是否允许重定向 默认不允许
+@property (nonatomic, assign) BOOL enableGlobalRedirection;
+
 // 禁用主备域名切换。默认不禁用。NO:不禁用 YES:禁用
 @property (nonatomic, assign) BOOL disableChangeHost;
 
@@ -33,6 +36,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 /// 是否全局禁用HTTPS验证,默认为NO 不禁用。
 @property (nonatomic, assign) BOOL disableGlobalAuthentication;
+
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 2 - 2
KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudCoreVersion.h

@@ -5,7 +5,7 @@
 
 #ifndef QCloudCoreModuleVersion_h
 #define QCloudCoreModuleVersion_h
-#define QCloudCoreModuleVersionNumber 604004
+#define QCloudCoreModuleVersionNumber 604005
 
 //dependency
 
@@ -13,4 +13,4 @@
 FOUNDATION_EXTERN NSString * const QCloudCoreModuleVersion;
 FOUNDATION_EXTERN NSString * const QCloudCoreModuleName;
 
-#endif
+#endif

+ 2 - 2
KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QCloudCoreVersion.m

@@ -1,5 +1,5 @@
 #import "QCloudCoreVersion.h"
-NSString * const QCloudCoreModuleVersion = @"6.4.4";
+NSString * const QCloudCoreModuleVersion = @"6.4.5";
 NSString * const QCloudCoreModuleName = @"QCloudCore";
 @interface QCloudQCloudCoreLoad : NSObject
 @end
@@ -26,4 +26,4 @@ NSString * const QCloudCoreModuleName = @"QCloudCore";
 #pragma clang diagnostic pop
     }
 }
-@end
+@end

+ 0 - 1
KulexiuForStudent/Pods/QCloudCore/QCloudCore/Classes/Base/QualityAssurance/QualityDataUploader.m

@@ -387,7 +387,6 @@ static NSString * sdkBridge = @"";
     //当前网络状况
     paramter[kQCloudQualityNetworkTypeKey] = QCloudNetworkSituationToString([QCloudNetEnv shareEnv].currentNetStatus);
 #if defined(DEBUG) && DEBUG
-  
 #else
     [self startReportWithEventKey:eventKey serviceKey:nil paramters:[paramter copy]];
 #endif

+ 7 - 3
KulexiuForStudent/Pods/RSKImageCropper/README.md

@@ -93,7 +93,7 @@ Then implement the delegate functions.
 
 ## DataSource
 
-`RSKImageCropViewControllerDataSource` provides three data source methods. The method `imageCropViewControllerCustomMaskRect:` asks the data source a custom rect for the mask. The method `imageCropViewControllerCustomMaskPath:` asks the data source a custom path for the mask. The method `imageCropViewControllerCustomMovementRect:` asks the data source a custom rect in which the image can be moved. To use them, implement the data source in your view controller.
+`RSKImageCropViewControllerDataSource` provides three data source methods. The method `imageCropViewControllerCustomMaskRect:` asks the data source for a custom rect for the mask. The method `imageCropViewControllerCustomMaskPath:` asks the data source for a custom path for the mask. The method `imageCropViewControllerCustomMovementRect:` asks the data source for a custom rect in which the image can be moved. To use them, implement the data source in your view controller.
 
 ```objective-c
 @interface ViewController () <RSKImageCropViewControllerDataSource>
@@ -181,13 +181,17 @@ Then implement the data source functions.
 
 ## Coming Soon
 
-- If you would like to request a new feature, feel free to raise as an issue.
+- If you would like to request a new feature, feel free to raise an issue.
 
 ## Demo
 
 Build and run the `RSKImageCropperExample` project in Xcode to see `RSKImageCropper` in action.
 Have fun. Fork and send pull requests. Figure out hooks for customization.
 
+## Privacy
+
+`RSKImageCropper` doesn't require a privacy manifest. According to [information received from Apple](https://developer.apple.com/forums/thread/746481?answerId=782256022#782256022), we should avoid adding an empty privacy manifest to our frameworks.
+
 ## Contact
 
 Ruslan Skorb
@@ -198,4 +202,4 @@ Ruslan Skorb
 
 ## License
 
-This project is is available under the MIT license. See the LICENSE file for more info. Attribution by linking to the [project page](https://github.com/ruslanskorb/RSKImageCropper) is appreciated.
+This project is available under the MIT license. See the LICENSE file for more info. Attribution by linking to the [project page](https://github.com/ruslanskorb/RSKImageCropper) is appreciated.

+ 6 - 3
KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController.h

@@ -24,7 +24,7 @@
 
 #import <UIKit/UIKit.h>
 
-NS_ASSUME_NONNULL_BEGIN
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 @protocol RSKImageCropViewControllerDataSource;
 @protocol RSKImageCropViewControllerDelegate;
@@ -38,6 +38,7 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
     RSKImageCropModeCustom
 };
 
+NS_SWIFT_UI_ACTOR
 @interface RSKImageCropViewController : UIViewController
 
 /**
@@ -58,7 +59,7 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 /**
  Zooms to a specific area of the image so that it is visible.
  
- @param rect A rectangle defining an area of the image.
+ @param rect A rectangle defining an area of the image. The rectangle should be in the coordinate space of the image crop view controller's view.
  @param animated YES if the scrolling should be animated, NO if it should be immediate.
  */
 - (void)zoomToRect:(CGRect)rect animated:(BOOL)animated;
@@ -299,6 +300,7 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 /**
  The `RSKImageCropViewControllerDataSource` protocol is adopted by an object that provides a custom rect and a custom path for the mask and a custom movement rect for the image.
  */
+NS_SWIFT_UI_ACTOR
 @protocol RSKImageCropViewControllerDataSource <NSObject>
 
 /**
@@ -333,6 +335,7 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 /**
  The `RSKImageCropViewControllerDelegate` protocol defines messages sent to a image crop view controller delegate when crop image was canceled or the original image was cropped.
  */
+NS_SWIFT_UI_ACTOR
 @protocol RSKImageCropViewControllerDelegate <NSObject>
 
 /**
@@ -359,4 +362,4 @@ typedef NS_ENUM(NSUInteger, RSKImageCropMode) {
 
 @end
 
-NS_ASSUME_NONNULL_END
+NS_HEADER_AUDIT_END(nullability, sendability)

+ 39 - 21
KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageCropViewController.m

@@ -194,7 +194,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 {
     [super viewDidLayoutSubviews];
     
-    if (!self.imageScrollView.zoomView) {
+    if (!self.imageScrollView.image) {
         [self displayImage];
     }
 }
@@ -552,7 +552,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
     if (_cropMode != cropMode) {
         _cropMode = cropMode;
         
-        if (self.imageScrollView.zoomView) {
+        if (self.imageScrollView.image) {
             [self reset:NO];
         }
     }
@@ -577,10 +577,14 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
         [clipPath appendPath:maskPath];
         clipPath.usesEvenOddFillRule = YES;
         
-        CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"path"];
-        pathAnimation.duration = [CATransaction animationDuration];
-        pathAnimation.timingFunction = [CATransaction animationTimingFunction];
-        [self.maskLayer addAnimation:pathAnimation forKey:@"path"];
+        CAAnimation *animation = (CAAnimation *)[self.overlayView actionForLayer:self.overlayView.layer forKey:@"backgroundColor"];
+        if ([animation isKindOfClass:[CAAnimation class]]) {
+            CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"path"];
+            pathAnimation.duration = animation.duration;
+            pathAnimation.timingFunction = animation.timingFunction;
+            
+            [self.maskLayer addAnimation:pathAnimation forKey:@"path"];
+        }
         
         self.maskLayer.path = [clipPath CGPath];
     }
@@ -624,7 +628,11 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 
 - (void)handleDoubleTap:(UITapGestureRecognizer *)gestureRecognizer
 {
-    [self reset:YES];
+    if (self.imageScrollView.zoomScale == self.zoomScaleDefaultValue) {
+        [self.imageScrollView zoomToLocation:[gestureRecognizer locationInView:self.imageScrollView] animated:YES];
+    } else {
+        [self reset:YES];
+    }
 }
 
 - (void)handleRotation:(UIRotationGestureRecognizer *)gestureRecognizer
@@ -648,6 +656,8 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 
 - (void)zoomToRect:(CGRect)rect animated:(BOOL)animated
 {
+    rect = [self.imageScrollView convertRect:rect fromView:self.view];
+    rect = [self.imageScrollView convertRect:rect toCoordinateSpace:self.imageScrollView.imageViewCoordinateSpace];
     [self.imageScrollView zoomToRect:rect animated:animated];
 }
 
@@ -672,6 +682,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
     [self resetRotation];
     [self resetZoomScale];
     [self resetContentOffset];
+    [self centerImage];
     
     if (animated) {
         [UIView commitAnimations];
@@ -681,7 +692,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 - (void)resetContentOffset
 {
     CGSize boundsSize = self.imageScrollView.bounds.size;
-    CGRect frameToCenter = self.imageScrollView.zoomView.frame;
+    CGRect frameToCenter = self.imageScrollView.imageViewFrame;
     
     CGPoint contentOffset;
     if (CGRectGetWidth(frameToCenter) > boundsSize.width) {
@@ -705,13 +716,18 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 
 - (void)resetZoomScale
 {
+    self.imageScrollView.zoomScale = self.zoomScaleDefaultValue;
+}
+
+- (CGFloat)zoomScaleDefaultValue
+{
     CGFloat zoomScale;
     if (CGRectGetWidth(self.view.bounds) > CGRectGetHeight(self.view.bounds)) {
         zoomScale = CGRectGetHeight(self.view.bounds) / self.originalImage.size.height;
     } else {
         zoomScale = CGRectGetWidth(self.view.bounds) / self.originalImage.size.width;
     }
-    self.imageScrollView.zoomScale = zoomScale;
+    return zoomScale;
 }
 
 - (NSArray *)intersectionPointsOfLineSegment:(RSKLineSegment)lineSegment withRect:(CGRect)rect
@@ -753,7 +769,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
 - (void)displayImage
 {
     if (self.originalImage) {
-        [self.imageScrollView displayImage:self.originalImage];
+        self.imageScrollView.image = self.originalImage;
         [self reset:NO];
 
         if ([self.delegate respondsToSelector:@selector(imageCropViewControllerDidDisplayImage:)]) {
@@ -762,9 +778,9 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
     }
 }
 
-- (void)centerImageScrollViewZoomView
+- (void)centerImage
 {
-    // center imageScrollView.zoomView as it becomes smaller than the size of the screen
+    // center the image view of the imageScrollView as it becomes smaller than the size of the imageScrollView
     
     CGPoint contentOffset = self.imageScrollView.contentOffset;
     
@@ -859,7 +875,7 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
     self.imageScrollView.transform = CGAffineTransformIdentity;
     
     self.imageScrollView.frame = frame;
-    [self centerImageScrollViewZoomView];
+    [self centerImage];
     
     self.imageScrollView.transform = transform;
 }
@@ -886,10 +902,11 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
             
             CGSize maskSize = CGSizeMake(diameter, diameter);
             
-            self.maskRect = CGRectMake((viewWidth - maskSize.width) * 0.5f,
-                                       (viewHeight - maskSize.height) * 0.5f,
-                                       maskSize.width,
-                                       maskSize.height);
+            CGRect maskRect = CGRectMake(floor((viewWidth - maskSize.width) * 0.5f),
+                                         floor((viewHeight - maskSize.height) * 0.5f),
+                                         maskSize.width,
+                                         maskSize.height);
+            self.maskRect = CGRectIntegral(maskRect);
             break;
         }
         case RSKImageCropModeSquare: {
@@ -905,10 +922,11 @@ static const CGFloat kLayoutImageScrollViewAnimationDuration = 0.25;
             
             CGSize maskSize = CGSizeMake(length, length);
             
-            self.maskRect = CGRectMake((viewWidth - maskSize.width) * 0.5f,
-                                       (viewHeight - maskSize.height) * 0.5f,
-                                       maskSize.width,
-                                       maskSize.height);
+            CGRect maskRect = CGRectMake(floor((viewWidth - maskSize.width) * 0.5f),
+                                         floor((viewHeight - maskSize.height) * 0.5f),
+                                         maskSize.width,
+                                         maskSize.height);
+            self.maskRect = CGRectIntegral(maskRect);
             break;
         }
         case RSKImageCropModeCustom: {

+ 61 - 6
KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageScrollView.h

@@ -1,7 +1,7 @@
 /*
      File: RSKImageScrollView.h
  Abstract: Centers image within the scroll view and configures image sizing and display.
-  Version: 1.3 modified by Ruslan Skorb on 8/24/14.
+  Version: 1.5 modified by Ruslan Skorb on 11/26/24.
  
  Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple
  Inc. ("Apple") in consideration of your agreement to the following
@@ -42,23 +42,78 @@
  POSSIBILITY OF SUCH DAMAGE.
  
  Copyright (C) 2012 Apple Inc. All Rights Reserved.
+ Copyright (C) 2014-present Ruslan Skorb. All Rights Reserved.
  
  */
 
 #import <UIKit/UIKit.h>
 
-NS_ASSUME_NONNULL_BEGIN
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 @protocol RSKImageScrollViewDelegate;
 
+/**
+ A view that allows the scrolling and zooming of its image.
+ */
+NS_SWIFT_UI_ACTOR
 @interface RSKImageScrollView : UIScrollView
 
-@property (nonatomic, nullable, weak) id<RSKImageScrollViewDelegate> imageScrollViewDelegate;
-@property (nonatomic, nullable, strong) UIImageView *zoomView;
+/**
+ A Boolean value that determines whether the image will always fill the available space. Default value is `NO`.
+ */
 @property (nonatomic, assign) BOOL aspectFill;
 
-- (void)displayImage:(UIImage *)image;
+/**
+ An image for scrolling and zooming. Default value is `nil`.
+ */
+@property (nonatomic, nullable, strong) UIImage *image;
+
+/**
+ The delegate of the image scroll view.
+ 
+ @discussion The delegate must adopt the `RSKImageScrollViewDelegate` protocol. The `RSKImageScrollView` class, which doesn’t retain the delegate, invokes each protocol method the delegate implements.
+ */
+@property (nonatomic, nullable, weak) id<RSKImageScrollViewDelegate> imageScrollViewDelegate;
+
+/**
+ The logical dimensions, in points, of the image. Default value is `CGSizeZero`.
+ 
+ @discussion Can be set to a value different from `image.size`.
+*/
+@property (nonatomic, assign) CGSize imageSize;
+
+/**
+ The background color of the image view. Default value is `nil`, which results in a transparent color.
+ 
+ @discussion Changes to this property can be animated.
+ */
+@property (nonatomic, nullable, strong) UIColor *imageViewBackgroundColor;
+
+/**
+ The coordinate space of the image view.
+ */
+@property (nonatomic, readonly) id<UICoordinateSpace> imageViewCoordinateSpace;
+
+/**
+ The current frame of the image view in the coordinate space of the image scroll view.
+ */
+@property (nonatomic, readonly) CGRect imageViewFrame;
+
+/**
+ Sets the current scale factor applied to the image and offset from the image’s origin to the initial value.
+ 
+ @param animated `YES` to animate the transition to the new scale and content offset, `NO` to make the transition immediate.
+ */
+- (void)setInitialZoomScaleAndContentOffsetAnimated:(BOOL)animated;
+
+/**
+ Zooms to a specific location in the image so that it’s visible in the image scroll view.
+ 
+ @param location A point defining a location in the image. The point should be in the coordinate space of the image scroll view.
+ @param animated `YES` if the scrolling should be animated, `NO` if it should be immediate.
+ */
+- (void)zoomToLocation:(CGPoint)location animated:(BOOL)animated;
 
 @end
 
-NS_ASSUME_NONNULL_END
+NS_HEADER_AUDIT_END(nullability, sendability)

+ 172 - 71
KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageScrollView.m

@@ -1,7 +1,7 @@
 /*
      File: RSKImageScrollView.m
  Abstract: Centers image within the scroll view and configures image sizing and display.
-  Version: 1.3 modified by Ruslan Skorb on 8/24/14.
+  Version: 1.5 modified by Ruslan Skorb on 11/26/24.
  
  Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple
  Inc. ("Apple") in consideration of your agreement to the following
@@ -42,6 +42,7 @@
  POSSIBILITY OF SUCH DAMAGE.
  
  Copyright (C) 2012 Apple Inc. All Rights Reserved.
+ Copyright (C) 2014-present Ruslan Skorb. All Rights Reserved.
  
  */
 
@@ -55,7 +56,8 @@
 @interface RSKImageScrollView () <UIScrollViewDelegate>
 {
     CGSize _imageSize;
-
+    UIImageView *_imageView;
+    
     CGPoint _pointToCenterAfterResize;
     CGFloat _scaleToRestoreAfterResize;
 }
@@ -70,11 +72,14 @@
     if (self)
     {
         _aspectFill = NO;
+        _imageView = [[UIImageView alloc] init];
         self.showsVerticalScrollIndicator = NO;
         self.showsHorizontalScrollIndicator = NO;
         self.scrollsToTop = NO;
         self.decelerationRate = UIScrollViewDecelerationRateFast;
         self.delegate = self;
+        
+        [self addSubview:_imageView];
     }
     return self;
 }
@@ -83,7 +88,7 @@
 {
     [super didAddSubview:subview];
     
-    [self centerZoomView];
+    [self centerImageView];
 }
 
 - (void)setAspectFill:(BOOL)aspectFill
@@ -91,18 +96,91 @@
     if (_aspectFill != aspectFill) {
         _aspectFill = aspectFill;
         
-        if (_zoomView) {
+        if (_imageView.image) {
             [self setMaxMinZoomScalesForCurrentBounds];
             
             if (self.zoomScale < self.minimumZoomScale) {
                 self.zoomScale = self.minimumZoomScale;
+            } else if (self.zoomScale > self.maximumZoomScale) {
+                self.zoomScale = self.maximumZoomScale;
             }
         }
     }
 }
 
+- (UIImage *)image
+{
+    return _imageView.image;
+}
+
+- (void)setImage:(UIImage *)image
+{
+    _imageView.image = image;
+    
+    if (CGSizeEqualToSize(_imageSize, CGSizeZero)) {
+        self.imageSize = image.size;
+    }
+}
+
+- (UIColor *)imageViewBackgroundColor
+{
+    return _imageView.backgroundColor;
+}
+
+- (void)setImageViewBackgroundColor:(UIColor *)imageViewBackgroundColor
+{
+    _imageView.backgroundColor = imageViewBackgroundColor;
+}
+
+- (id<UICoordinateSpace>)imageViewCoordinateSpace
+{
+    return [_imageView coordinateSpace];
+}
+
+- (CGRect)imageViewFrame
+{
+    return _imageView.frame;
+}
+
+- (void)setImageSize:(CGSize)imageSize
+{
+    _imageSize = imageSize;
+    
+    self.zoomScale = 1.0f;
+    _imageView.frame = CGRectMake(0.0f, 0.0f, imageSize.width, imageSize.height);
+    self.contentSize = imageSize;
+    [self setMaxMinZoomScalesForCurrentBounds];
+    [self setInitialZoomScale];
+    [self setInitialContentOffset];
+    [self centerImageView];
+}
+
+- (void)setInitialZoomScaleAndContentOffsetAndCenterImageView
+{
+    [self setInitialZoomScale];
+    [self setInitialContentOffset];
+    [self centerImageView];
+}
+
+- (void)setInitialZoomScaleAndContentOffsetAnimated:(BOOL)animated
+{
+    if (animated) {
+        UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationCurveEaseInOut;
+        [UIView animateWithDuration:0.4f delay:0.0f options:options animations:^{
+            [self setInitialZoomScaleAndContentOffsetAndCenterImageView];
+        } completion:nil];
+    } else {
+        [self setInitialZoomScaleAndContentOffsetAndCenterImageView];
+    }
+}
+
 - (void)setFrame:(CGRect)frame
 {
+    if (CGSizeEqualToSize(self.contentSize, CGSizeZero)) {
+        [super setFrame:frame];
+        return;
+    }
+    
     BOOL sizeChanging = !CGSizeEqualToSize(frame.size, self.frame.size);
     
     if (sizeChanging) {
@@ -115,98 +193,116 @@
         [self recoverFromResizing];
     }
     
-    [self centerZoomView];
+    [self centerImageView];
+}
+
+- (void)zoomToLocation:(CGPoint)location animated:(BOOL)animated
+{
+    CGPoint locationInImageView = [_imageView convertPoint:location fromView:self];
+    CGSize size = CGSizeMake(self.bounds.size.width / MIN(self.zoomScale * 5.0f, self.maximumZoomScale),
+                             self.bounds.size.height / MIN(self.zoomScale * 5.0f, self.maximumZoomScale));
+    CGPoint origin = CGPointMake(locationInImageView.x - size.width * 0.5f,
+                                 locationInImageView.y - size.height * 0.5f);
+    CGRect rect = CGRectMake(origin.x, origin.y, size.width, size.height);
+    
+    [self zoomToRect:rect animated:animated];
 }
 
 #pragma mark - UIScrollViewDelegate
 
 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
 {
-    return _zoomView;
+    return _imageView;
+}
+
+- (void)scrollViewDidScroll:(UIScrollView *)scrollView
+{
+    if ([self.imageScrollViewDelegate respondsToSelector:@selector(imageScrollViewDidScroll)]) {
+        [self.imageScrollViewDelegate imageScrollViewDidScroll];
+    }
 }
 
 - (void)scrollViewDidZoom:(__unused UIScrollView *)scrollView
 {
-    [self centerZoomView];
+    [self centerImageView];
 }
 
 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
 {
-    [self.imageScrollViewDelegate imageScrollViewWillBeginDragging];
+    if ([self.imageScrollViewDelegate respondsToSelector:@selector(imageScrollViewWillBeginDragging)]) {
+        [self.imageScrollViewDelegate imageScrollViewWillBeginDragging];
+    }
 }
 
 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
 {
-    [self.imageScrollViewDelegate imageScrollViewDidEndDragging:decelerate];
+    if ([self.imageScrollViewDelegate respondsToSelector:@selector(imageScrollViewDidEndDragging:)]) {
+        [self.imageScrollViewDelegate imageScrollViewDidEndDragging:decelerate];
+    }
 }
 
 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
 {
-    [self.imageScrollViewDelegate imageScrollViewDidEndDecelerating];
+    if ([self.imageScrollViewDelegate respondsToSelector:@selector(imageScrollViewDidEndDecelerating)]) {
+        [self.imageScrollViewDelegate imageScrollViewDidEndDecelerating];
+    }
 }
 
 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
 {
-    [self.imageScrollViewDelegate imageScrollViewWillBeginZooming];
+    if ([self.imageScrollViewDelegate respondsToSelector:@selector(imageScrollViewWillBeginZooming)]) {
+        [self.imageScrollViewDelegate imageScrollViewWillBeginZooming];
+    }
 }
 
 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
 {
-    [self.imageScrollViewDelegate imageScrollViewDidEndZooming];
+    if ([self.imageScrollViewDelegate respondsToSelector:@selector(imageScrollViewDidEndZooming)]) {
+        [self.imageScrollViewDelegate imageScrollViewDidEndZooming];
+    }
 }
 
-#pragma mark - Center zoomView within scrollView
+#pragma mark - Center imageView within scrollView
 
-- (void)centerZoomView
+- (void)centerImageView
 {
-    // center zoomView as it becomes smaller than the size of the screen
+    // center imageView as it becomes smaller than the size of the screen
+    
+    CGFloat top = 0.0f;
+    CGFloat left = 0.0f;
     
-    CGFloat top = 0;
-    CGFloat left = 0;
-
     // center vertically
     if (self.contentSize.height < CGRectGetHeight(self.bounds)) {
         top = (CGRectGetHeight(self.bounds) - self.contentSize.height) * 0.5f;
     }
-
+    
     // center horizontally
     if (self.contentSize.width < CGRectGetWidth(self.bounds)) {
         left = (CGRectGetWidth(self.bounds) - self.contentSize.width) * 0.5f;
     }
     
-    self.contentInset = UIEdgeInsetsMake(top, left, top, left);
+    UIEdgeInsets contentInset = UIEdgeInsetsMake(top, left, top, left);
+    
+    if (!UIEdgeInsetsEqualToEdgeInsets(self.contentInset, contentInset)) {
+        self.contentInset = contentInset;
+    }
 }
 
 #pragma mark - Configure scrollView to display new image
 
-- (void)displayImage:(UIImage *)image
+- (void)setMaxMinZoomScalesForCurrentBounds
 {
-    // clear view for the previous image
-    [_zoomView removeFromSuperview];
-    _zoomView = nil;
-    
-    // reset our zoomScale to 1.0 before doing any further calculations
-    self.zoomScale = 1.0;
-    
-    // make views to display the new image
-    _zoomView = [[UIImageView alloc] initWithImage:image];
-    [self addSubview:_zoomView];
+    if (CGSizeEqualToSize(self.bounds.size, CGSizeZero)) {
+        return;
+    }
     
-    [self configureForImageSize:image.size];
-}
+    if (CGSizeEqualToSize(_imageSize, CGSizeZero)) {
+        self.maximumZoomScale = 1.0f;
+        self.minimumZoomScale = 1.0f;
 
-- (void)configureForImageSize:(CGSize)imageSize
-{
-    _imageSize = imageSize;
-    self.contentSize = imageSize;
-    [self setMaxMinZoomScalesForCurrentBounds];
-    [self setInitialZoomScale];
-    [self setInitialContentOffset];
-    self.contentInset = UIEdgeInsetsZero;
-}
-
-- (void)setMaxMinZoomScalesForCurrentBounds
-{
+        return;
+    }
+    
     CGSize boundsSize = self.bounds.size;
     
     // calculate min/max zoomscale
@@ -214,17 +310,17 @@
     CGFloat yScale = boundsSize.height / _imageSize.height;   // the scale needed to perfectly fit the image height-wise
     
     CGFloat minScale;
-    if (!self.aspectFill) {
-        minScale = MIN(xScale, yScale); // use minimum of these to allow the image to become fully visible
-    } else {
+    if (_aspectFill) {
         minScale = MAX(xScale, yScale); // use maximum of these to allow the image to fill the screen
+    } else {
+        minScale = MIN(xScale, yScale); // use minimum of these to allow the image to become fully visible
     }
     
     CGFloat maxScale = MAX(xScale, yScale);
     
     // Image must fit/fill the screen, even if its size is smaller.
-    CGFloat xImageScale = maxScale*_imageSize.width / boundsSize.width;
-    CGFloat yImageScale = maxScale*_imageSize.height / boundsSize.height;
+    CGFloat xImageScale = maxScale * _imageSize.width / boundsSize.width;
+    CGFloat yImageScale = maxScale * _imageSize.height / boundsSize.height;
     
     CGFloat maxImageScale = MAX(xImageScale, yImageScale);
     
@@ -242,31 +338,27 @@
 
 - (void)setInitialZoomScale
 {
-    CGSize boundsSize = self.bounds.size;
-    CGFloat xScale = boundsSize.width  / _imageSize.width;    // the scale needed to perfectly fit the image width-wise
-    CGFloat yScale = boundsSize.height / _imageSize.height;   // the scale needed to perfectly fit the image height-wise
-    CGFloat scale = MAX(xScale, yScale);
-    self.zoomScale = scale;
+    if (self.zoomScale != self.minimumZoomScale) {
+        self.zoomScale = self.minimumZoomScale;
+    }
 }
 
 - (void)setInitialContentOffset
 {
     CGSize boundsSize = self.bounds.size;
-    CGRect frameToCenter = self.zoomView.frame;
+    CGRect frameToCenter = _imageView.frame;
     
-    CGPoint contentOffset;
+    CGPoint contentOffset = self.contentOffset;
     if (CGRectGetWidth(frameToCenter) > boundsSize.width) {
         contentOffset.x = (CGRectGetWidth(frameToCenter) - boundsSize.width) * 0.5f;
-    } else {
-        contentOffset.x = 0;
     }
     if (CGRectGetHeight(frameToCenter) > boundsSize.height) {
         contentOffset.y = (CGRectGetHeight(frameToCenter) - boundsSize.height) * 0.5f;
-    } else {
-        contentOffset.y = 0;
     }
     
-    [self setContentOffset:contentOffset];
+    if (!CGPointEqualToPoint(self.contentOffset, contentOffset)) {
+        self.contentOffset = contentOffset;
+    }
 }
 
 #pragma mark -
@@ -276,13 +368,13 @@
 
 - (void)prepareToResize
 {
-    if (_zoomView == nil) {
+    if (_imageView == nil) {
         return;
     }
     
     CGPoint boundsCenter = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
-    _pointToCenterAfterResize = [self convertPoint:boundsCenter toView:self.zoomView];
-
+    _pointToCenterAfterResize = [self convertPoint:boundsCenter toView:_imageView];
+    
     _scaleToRestoreAfterResize = self.zoomScale;
     
     // If we're at the minimum zoom scale, preserve that by returning 0, which will be converted to the minimum
@@ -293,7 +385,7 @@
 
 - (void)recoverFromResizing
 {
-    if (_zoomView == nil) {
+    if (_imageView == nil) {
         return;
     }
     
@@ -306,12 +398,12 @@
     // Step 2: restore center point, first making sure it is within the allowable range.
     
     // 2a: convert our desired center point back to our own coordinate space
-    CGPoint boundsCenter = [self convertPoint:_pointToCenterAfterResize fromView:self.zoomView];
-
+    CGPoint boundsCenter = [self convertPoint:_pointToCenterAfterResize fromView:_imageView];
+    
     // 2b: calculate the content offset that would yield that center point
-    CGPoint offset = CGPointMake(boundsCenter.x - self.bounds.size.width / 2.0,
-                                 boundsCenter.y - self.bounds.size.height / 2.0);
-
+    CGPoint offset = CGPointMake(boundsCenter.x - self.bounds.size.width * 0.5f,
+                                 boundsCenter.y - self.bounds.size.height * 0.5f);
+    
     // 2c: restore offset, adjusted to be within the allowable range
     CGPoint maxOffset = [self maximumContentOffset];
     CGPoint minOffset = [self minimumContentOffset];
@@ -322,6 +414,15 @@
     realMaxOffset = MIN(maxOffset.y, offset.y);
     offset.y = MAX(minOffset.y, realMaxOffset);
     
+    if (self.contentSize.height < self.bounds.size.height) {
+        
+        offset.y = -(self.bounds.size.height - self.contentSize.height) * 0.5f;
+    }
+    if (self.contentSize.width < self.bounds.size.width) {
+        
+        offset.x = -(self.bounds.size.width - self.contentSize.width) * 0.5f;
+    }
+    
     self.contentOffset = offset;
 }
 

+ 32 - 0
KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKImageScrollViewDelegate.h

@@ -26,12 +26,44 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+/**
+ The interface for the delegate of an image scroll view.
+ */
+NS_SWIFT_UI_ACTOR
 @protocol RSKImageScrollViewDelegate <NSObject>
 
+@optional
+
+/**
+ Tells the delegate when the user scrolls the image within the image scroll view.
+ */
+- (void)imageScrollViewDidScroll;
+
+/**
+ Tells the delegate when the image scroll view is about to start scrolling the image.
+ */
 - (void)imageScrollViewWillBeginDragging;
+
+/**
+ Tells the delegate when dragging ended in the image scroll view.
+ 
+ @param willDecelerate `YES` if the scrolling movement will continue, but decelerate, after a touch-up gesture during a dragging operation. If the value is `NO`, scrolling stops immediately upon touch-up.
+ */
 - (void)imageScrollViewDidEndDragging:(BOOL)willDecelerate;
+
+/**
+ Tells the delegate that the image scroll view ended decelerating the scrolling movement.
+ */
 - (void)imageScrollViewDidEndDecelerating;
+
+/**
+ Tells the delegate that zooming of the image in the image scroll view is about to commence.
+ */
 - (void)imageScrollViewWillBeginZooming;
+
+/**
+ Tells the delegate when zooming of the image in the image scroll view completed.
+ */
 - (void)imageScrollViewDidEndZooming;
 
 @end

+ 6 - 2
KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKInternalUtility.h

@@ -24,6 +24,8 @@
 
 #import <Foundation/Foundation.h>
 
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
 /**
  Returns a localized version of the string designated by the specified key and residing in the RSKImageCropper table.
  
@@ -39,11 +41,13 @@ FOUNDATION_EXPORT NSString * RSKLocalizedString(NSString *key, NSString *comment
 /**
  Returns the NSBundle object for returning localized strings.
  
- @return The NSBundle object for returning localized strings.
+ @return The NSBundle object for returning localized strings, or nil if the bundle is not found on the system.
  
  @discussion We assume a convention of a bundle named RSKImageCropperStrings.bundle, otherwise we
  return the bundle associated with the RSKInternalUtility class.
  */
-+ (NSBundle *)bundleForStrings;
++ (nullable NSBundle *)bundleForStrings;
 
 @end
+
+NS_HEADER_AUDIT_END(nullability, sendability)

+ 6 - 1
KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/RSKTouchView.h

@@ -24,8 +24,13 @@
 
 #import <UIKit/UIKit.h>
 
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+NS_SWIFT_UI_ACTOR
 @interface RSKTouchView : UIView
 
-@property (weak, nonatomic) UIView *receiver;
+@property (weak, nonatomic, nullable) UIView *receiver;
 
 @end
+
+NS_HEADER_AUDIT_END(nullability, sendability)

+ 6 - 2
KulexiuForStudent/Pods/RSKImageCropper/RSKImageCropper/UIImage+RSKImageCropper.h

@@ -24,12 +24,16 @@
 
 #import <UIKit/UIKit.h>
 
+NS_ASSUME_NONNULL_BEGIN
+
 @interface UIImage (RSKImageCropper)
 
 // Fix the orientation of the image.
-- (UIImage *)fixOrientation;
+- (nullable UIImage *)fixOrientation;
 
 // Rotate the image clockwise around the center by the angle, in radians.
-- (UIImage *)rotateByAngle:(CGFloat)angleInRadians;
+- (nullable UIImage *)rotateByAngle:(CGFloat)angleInRadians;
 
 @end
+
+NS_ASSUME_NONNULL_END

+ 2 - 2
KulexiuForStudent/Pods/TZImagePickerController/README.md

@@ -8,7 +8,7 @@
  
 ## 重要提示1:提issue前,请先对照Demo、常见问题自查!Demo正常说明你可以升级下新版试试。          
  
-## 重要提示2:3.8.7版本修复了iOS18下无照片的问题       
+## 重要提示2:3.8.8版本修复了iOS18下无照片和openURL失效的问题       
      关于iOS14模拟器的问题
  PHAuthorizationStatusLimited授权模式下,iOS14模拟器有bug,未授权照片无法显示,真机正常,暂可忽略:https://github.com/banchichen/TZImagePickerController/issues/1347 
  
@@ -123,7 +123,7 @@ A:不要去拿PHImageFileURLKey,没用的,只有通过Photos框架才能
 
 ## 六. Release Notes 最近更新     
 
-**3.8.7 支持iOS18** [#1686](https://github.com/banchichen/TZImagePickerController/issues/1686)               
+**3.8.8 支持iOS18,修复openURL的失效问题** [#1686](https://github.com/banchichen/TZImagePickerController/issues/1686)               
 **3.8.5 新增隐私清单文件** [#1675](https://github.com/banchichen/TZImagePickerController/pull/1675)               
 **3.8.4 支持使用不带定位代码的版本** [#1606](https://github.com/banchichen/TZImagePickerController/pull/1606)               
 3.8.1 iOS14下可添加访问更多照片,详见PR内的评论 [#1526](https://github.com/banchichen/TZImagePickerController/pull/1526)               

+ 1 - 1
KulexiuForStudent/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h

@@ -4,7 +4,7 @@
 //
 //  Created by 谭真 on 15/12/24.
 //  Copyright © 2015年 谭真. All rights reserved.
-//  version 3.8.7 - 2024.08.14
+//  version 3.8.8 - 2024.10.27
 //  更多信息,请前往项目的github地址:https://github.com/banchichen/TZImagePickerController
 
 /*

+ 2 - 2
KulexiuForStudent/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m

@@ -4,7 +4,7 @@
 //
 //  Created by 谭真 on 15/12/24.
 //  Copyright © 2015年 谭真. All rights reserved.
-//  version 3.8.7 - 2024.08.14
+//  version 3.8.8 - 2024.10.27
 //  更多信息,请前往项目的github地址:https://github.com/banchichen/TZImagePickerController
 
 #import "TZImagePickerController.h"
@@ -658,7 +658,7 @@
 }
 
 - (void)settingBtnClick {
-    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
+    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
 }
 
 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {

+ 2 - 2
KulexiuForStudent/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m

@@ -797,7 +797,7 @@ static CGFloat itemMargin = 5;
         UIAlertAction *cancelAct = [UIAlertAction actionWithTitle:[NSBundle tz_localizedStringForKey:@"Cancel"] style:UIAlertActionStyleCancel handler:nil];
         [alertController addAction:cancelAct];
         UIAlertAction *settingAct = [UIAlertAction actionWithTitle:[NSBundle tz_localizedStringForKey:@"Setting"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
+            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
         }];
         [alertController addAction:settingAct];
         [self.navigationController presentViewController:alertController animated:YES completion:nil];
@@ -816,7 +816,7 @@ static CGFloat itemMargin = 5;
 }
 
 - (void)openSettingsApplication {
-    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
+    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
 }
 
 - (void)addMorePhoto {

+ 121 - 0
KulexiuForStudent/Pods/Target Support Files/AlipaySDK-iOS/AlipaySDK-iOS-xcframeworks.sh

@@ -0,0 +1,121 @@
+#!/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
+
+
+# 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 .*.??????")
+
+
+variant_for_slice()
+{
+  case "$1" in
+  "AlipaySDK.xcframework/ios-arm64")
+    echo ""
+    ;;
+  "AlipaySDK.xcframework/ios-arm64_x86_64-simulator")
+    echo "simulator"
+    ;;
+  esac
+}
+
+archs_for_slice()
+{
+  case "$1" in
+  "AlipaySDK.xcframework/ios-arm64")
+    echo "arm64"
+    ;;
+  "AlipaySDK.xcframework/ios-arm64_x86_64-simulator")
+    echo "arm64 x86_64"
+    ;;
+  esac
+}
+
+copy_dir()
+{
+  local source="$1"
+  local destination="$2"
+
+  # Use filter instead of exclude so missing patterns don't throw errors.
+  echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" \"${source}*\" \"${destination}\""
+  rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" "${source}"/* "${destination}"
+}
+
+SELECT_SLICE_RETVAL=""
+
+select_slice() {
+  local xcframework_name="$1"
+  xcframework_name="${xcframework_name##*/}"
+  local paths=("${@:2}")
+  # Locate the correct slice of the .xcframework for the current architectures
+  local target_path=""
+
+  # Split archs on space so we can find a slice that has all the needed archs
+  local target_archs=$(echo $ARCHS | tr " " "\n")
+
+  local target_variant=""
+  if [[ "$PLATFORM_NAME" == *"simulator" ]]; then
+    target_variant="simulator"
+  fi
+  if [[ ! -z ${EFFECTIVE_PLATFORM_NAME+x} && "$EFFECTIVE_PLATFORM_NAME" == *"maccatalyst" ]]; then
+    target_variant="maccatalyst"
+  fi
+  for i in ${!paths[@]}; do
+    local matched_all_archs="1"
+    local slice_archs="$(archs_for_slice "${xcframework_name}/${paths[$i]}")"
+    local slice_variant="$(variant_for_slice "${xcframework_name}/${paths[$i]}")"
+    for target_arch in $target_archs; do
+      if ! [[ "${slice_variant}" == "$target_variant" ]]; then
+        matched_all_archs="0"
+        break
+      fi
+
+      if ! echo "${slice_archs}" | tr " " "\n" | grep -F -q -x "$target_arch"; then
+        matched_all_archs="0"
+        break
+      fi
+    done
+
+    if [[ "$matched_all_archs" == "1" ]]; then
+      # Found a matching slice
+      echo "Selected xcframework slice ${paths[$i]}"
+      SELECT_SLICE_RETVAL=${paths[$i]}
+      break
+    fi
+  done
+}
+
+install_xcframework() {
+  local basepath="$1"
+  local name="$2"
+  local package_type="$3"
+  local paths=("${@:4}")
+
+  # Locate the correct slice of the .xcframework for the current architectures
+  select_slice "${basepath}" "${paths[@]}"
+  local target_path="$SELECT_SLICE_RETVAL"
+  if [[ -z "$target_path" ]]; then
+    echo "warning: [CP] $(basename ${basepath}): Unable to find matching slice in '${paths[@]}' for the current build architectures ($ARCHS) and platform (${EFFECTIVE_PLATFORM_NAME-${PLATFORM_NAME}})."
+    return
+  fi
+  local source="$basepath/$target_path"
+
+  local destination="${PODS_XCFRAMEWORKS_BUILD_DIR}/${name}"
+
+  if [ ! -d "$destination" ]; then
+    mkdir -p "$destination"
+  fi
+
+  copy_dir "$source/" "$destination"
+  echo "Copied $source to $destination"
+}
+
+install_xcframework "${PODS_ROOT}/AlipaySDK-iOS/AlipaySDK.xcframework" "AlipaySDK-iOS" "framework" "ios-arm64" "ios-arm64_x86_64-simulator"
+

+ 1 - 3
KulexiuForStudent/Pods/Target Support Files/AlipaySDK-iOS/AlipaySDK-iOS.debug.xcconfig

@@ -1,7 +1,6 @@
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS
-EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AlipaySDK-iOS"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
@@ -12,4 +11,3 @@ PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkInterme
 PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
 SKIP_INSTALL = YES
 USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
-VALID_ARCHS = x86_64 armv7 arm64

+ 1 - 3
KulexiuForStudent/Pods/Target Support Files/AlipaySDK-iOS/AlipaySDK-iOS.release.xcconfig

@@ -1,7 +1,6 @@
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AlipaySDK-iOS
-EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AlipaySDK-iOS"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AlipaySDK-iOS" "${PODS_XCFRAMEWORKS_BUILD_DIR}/AlipaySDK-iOS"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
@@ -12,4 +11,3 @@ PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkInterme
 PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
 SKIP_INSTALL = YES
 USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
-VALID_ARCHS = x86_64 armv7 arm64

+ 15 - 15
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests-acknowledgements.markdown

@@ -28,7 +28,7 @@ THE SOFTWARE.
 
 MIT License
 
-Copyright (c) 2018 Antfin
+Copyright (c) 2023 Antfin
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -603,9 +603,11 @@ SOFTWARE.
 
 
 
-## Whiteboard
+## White_YYModel
 
-Copyright (c) 2018 leavesster <a412739861@qq.com>
+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
@@ -614,23 +616,22 @@ 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 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.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
 
 
-## YYModel
 
-The MIT License (MIT)
+## Whiteboard
 
-Copyright (c) 2015 ibireme <ibireme@gmail.com>
+Copyright (c) 2018 leavesster <a412739861@qq.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
@@ -639,17 +640,16 @@ 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 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.
-
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
 
 
 ## lottie-ios

+ 16 - 16
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests-acknowledgements.plist

@@ -45,7 +45,7 @@ THE SOFTWARE.
 			<key>FooterText</key>
 			<string>MIT License
 
-Copyright (c) 2018 Antfin
+Copyright (c) 2023 Antfin
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -826,7 +826,9 @@ SOFTWARE.
 		</dict>
 		<dict>
 			<key>FooterText</key>
-			<string>Copyright (c) 2018 leavesster &lt;a412739861@qq.com&gt;
+			<string>The MIT License (MIT)
+
+Copyright (c) 2015 ibireme &lt;ibireme@gmail.com&gt;
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -835,29 +837,28 @@ 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 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.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
 </string>
 			<key>License</key>
 			<string>MIT</string>
 			<key>Title</key>
-			<string>Whiteboard</string>
+			<string>White_YYModel</string>
 			<key>Type</key>
 			<string>PSGroupSpecifier</string>
 		</dict>
 		<dict>
 			<key>FooterText</key>
-			<string>The MIT License (MIT)
-
-Copyright (c) 2015 ibireme &lt;ibireme@gmail.com&gt;
+			<string>Copyright (c) 2018 leavesster &lt;a412739861@qq.com&gt;
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -866,22 +867,21 @@ 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 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.
-
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
 </string>
 			<key>License</key>
 			<string>MIT</string>
 			<key>Title</key>
-			<string>YYModel</string>
+			<string>Whiteboard</string>
 			<key>Type</key>
 			<string>PSGroupSpecifier</string>
 		</dict>

File diff suppressed because it is too large
+ 2 - 3
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests.debug.xcconfig


Some files were not shown because too many files changed in this diff